Documentation ¶
Overview ¶
* @Author: EagleXiang * @LastEditors: EagleXiang * @Email: eagle.xiang@outlook.com * @Github: https://github.com/eaglexiang * @Date: 2019-04-03 20:30:09 * @LastEditTime: 2019-04-03 20:30:14
Index ¶
- Constants
- Variables
- func AddSubHandler(h Handler)
- func AddSubSender(s Sender)
- func FormatEtType(src CMDType) string
- func FormatProxyStatus(status int) string
- func ParseProxyStatus(status string) (int, error)
- func SendQueryReq(req string) (reply string, err error)
- func TypeOfDomain(domain string) (status int)
- type Arg
- type CMDType
- type ConnArg
- type Handler
- type NetArg
- type NetConnArg
- type NetSmartArg
- type Sender
- type SmartArg
- type UsersArg
Constants ¶
const ( UNKNOWNTxt = "UNKNOWN" TCPTxt = "TCP" DNSTxt = "DNS" DNS6Txt = "DNS6" LOCATIONTxt = "LOCATION" CHECKTxt = "CHECK" BINDTxt = "BIND" )
ET子协议的名字
const ( ProxyENABLE = iota ProxySMART ErrorProxyStatus )
代理的状态
const ( UncertainDomain = iota ProxyDomain DirectDomain )
域名的类型
const ( ProxyEnableText = "ENABLE" ProxySmartText = "SMART" ErrorProxyStatusText = "ERROR" )
代理状态对应的文本
Variables ¶
var Connect2Remote func(tunnel *tunnel.Tunnel) error
Connect2Remote 连接到远端
var DirectDomains trie.StringTrie
DirectDomains 强制直连的域名列表
var EtNames map[CMDType]string
EtNames ET子协议的名字
var EtProxyStatus map[string]int
EtProxyStatus ET代理状态
var EtProxyStatusText map[int]string
EtProxyStatusText ET代理状态对应的文本
var EtTypes map[string]CMDType
EtTypes ET子协议的类型
var HostsCache = make(map[string]string)
HostsCache 本地Hosts
var ProtocolCompatibleVersion, _ = version.CreateVersion("1.3")
ProtocolCompatibleVersion 作为Handler可兼容的最低协议版本号
var ProtocolVersion, _ = version.CreateVersion("1.5")
ProtocolVersion 作为Sender使用的协议版本号
var ProxyDomains trie.StringTrie
ProxyDomains 强制代理的域名列表
var SubHandlers map[string]Handler
SubHandlers 子协议处理器
var SubSenders map[CMDType]Sender
SubSenders 子协议发射器
var Timeout time.Duration
Timeout 超时长度
Functions ¶
func ParseProxyStatus ¶
ParseProxyStatus 识别ProxyStatus
func SendQueryReq ¶
SendQueryReq 发送查询请求 查询类请求的发射过程都是类似的 连接 - 发送请求 - 得到反馈 - 关闭连接 区别仅仅在请求命令的内容
func TypeOfDomain ¶ added in v0.9.3
TypeOfDomain 域名的类型(强制代理/强制直连/不确定)
Types ¶
type CMDType ¶ added in v0.9.6
type CMDType int
CMDType ET子协议的命令类型
func NetOPType2ETOPType ¶
NetOPType2ETOPType 将net网络操作类型转化为ET网络操作类型 此函数供sender使用
type Handler ¶
type Handler interface { Handle(req string, tunnel *tunnel.Tunnel) error // 处理业务 Type() CMDType // ET子协议的类型 Name() string // ET子协议的名字 }
Handler ET子协议的handler接口
type NetArg ¶
type NetArg struct { NetConnArg NetSmartArg TheType int // 网络请求的类型 BindDelegate func() // BIND操作会用到的委托 Tunnel *tunnel.Tunnel }
NetArg ET协议工作需要的参数集 此参数集用于在协议间传递消息
type NetConnArg ¶
NetConnArg NetArg中关于连接的部分
type NetSmartArg ¶ added in v0.9.3
type NetSmartArg struct { Location string // 所在地,用于识别是否使用代理 DomainType int // 域名的类型(强制代理/强制直连/不确定) }
NetSmartArg 与智能分流相关的参数