comm

package
v0.9.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2019 License: MIT Imports: 9 Imported by: 0

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

View Source
const (
	UNKNOWNTxt  = "UNKNOWN"
	TCPTxt      = "TCP"
	DNSTxt      = "DNS"
	DNS6Txt     = "DNS6"
	LOCATIONTxt = "LOCATION"
	CHECKTxt    = "CHECK"
	BINDTxt     = "BIND"
)

ET子协议的名字

View Source
const (
	ProxyENABLE = iota
	ProxySMART
	ErrorProxyStatus
)

代理的状态

View Source
const (
	UncertainDomain = iota
	ProxyDomain
	DirectDomain
)

域名的类型

View Source
const (
	ProxyEnableText      = "ENABLE"
	ProxySmartText       = "SMART"
	ErrorProxyStatusText = "ERROR"
)

代理状态对应的文本

Variables

View Source
var Connect2Remote func(tunnel *tunnel.Tunnel) error

Connect2Remote 连接到远端

View Source
var DirectDomains trie.StringTrie

DirectDomains 强制直连的域名列表

View Source
var EtNames map[CMDType]string

EtNames ET子协议的名字

View Source
var EtProxyStatus map[string]int

EtProxyStatus ET代理状态

View Source
var EtProxyStatusText map[int]string

EtProxyStatusText ET代理状态对应的文本

View Source
var EtTypes map[string]CMDType

EtTypes ET子协议的类型

View Source
var HostsCache = make(map[string]string)

HostsCache 本地Hosts

View Source
var ProtocolCompatibleVersion, _ = version.CreateVersion("1.3")

ProtocolCompatibleVersion 作为Handler可兼容的最低协议版本号

View Source
var ProtocolVersion, _ = version.CreateVersion("1.5")

ProtocolVersion 作为Sender使用的协议版本号

View Source
var ProxyDomains trie.StringTrie

ProxyDomains 强制代理的域名列表

View Source
var SubHandlers map[string]Handler

SubHandlers 子协议处理器

View Source
var SubSenders map[CMDType]Sender

SubSenders 子协议发射器

View Source
var Timeout time.Duration

Timeout 超时长度

Functions

func AddSubHandler

func AddSubHandler(h Handler)

AddSubHandler 添加ET子协议handler

func AddSubSender

func AddSubSender(s Sender)

AddSubSender 添加子协议Sender

func FormatEtType

func FormatEtType(src CMDType) string

FormatEtType 得到ET请求类型对应的字符串

func FormatProxyStatus

func FormatProxyStatus(status int) string

FormatProxyStatus 格式化ProxyStatus

func ParseProxyStatus

func ParseProxyStatus(status string) (int, error)

ParseProxyStatus 识别ProxyStatus

func SendQueryReq

func SendQueryReq(req string) (reply string, err error)

SendQueryReq 发送查询请求 查询类请求的发射过程都是类似的 连接 - 发送请求 - 得到反馈 - 关闭连接 区别仅仅在请求命令的内容

func TypeOfDomain added in v0.9.3

func TypeOfDomain(domain string) (status int)

TypeOfDomain 域名的类型(强制代理/强制直连/不确定)

Types

type Arg

type Arg struct {
	ConnArg
	UsersArg
	SmartArg
	IPType string `label:"4/6/46/64 采用什么DNS解析模式"`
}

Arg 启动ET协议需要的的参数集 此参数集用于启动和配置ET协议服务

var ETArg *Arg

ETArg 运行ET协议所需的公共参数集

type CMDType added in v0.9.6

type CMDType int

CMDType ET子协议的命令类型

const (
	UNKNOWN CMDType = iota
	TCP
	DNS
	DNS6
	LOCATION
	CHECK
	BIND
)

ET子协议的类型

func NetOPType2ETOPType

func NetOPType2ETOPType(netOPType mynet.OpType) CMDType

NetOPType2ETOPType 将net网络操作类型转化为ET网络操作类型 此函数供sender使用

func ParseEtType

func ParseEtType(src string) CMDType

ParseEtType 得到字符串对应的ET请求类型

type ConnArg

type ConnArg struct {
	RemoteIPE string // IP:Port
	Head      string // 协议头
}

ConnArg 连接相关参数集

type Handler

type Handler interface {
	Handle(req string, tunnel *tunnel.Tunnel) error // 处理业务
	Type() CMDType                                  // ET子协议的类型
	Name() string                                   // ET子协议的名字
}

Handler ET子协议的handler接口

func GetHandler

func GetHandler(subReq string) (Handler, error)

GetHandler 根据特征头获取相应Handler

type NetArg

type NetArg struct {
	NetConnArg
	NetSmartArg
	TheType      int    // 网络请求的类型
	BindDelegate func() // BIND操作会用到的委托
	Tunnel       *tunnel.Tunnel
}

NetArg ET协议工作需要的参数集 此参数集用于在协议间传递消息

func ParseNetArg

func ParseNetArg(e *mynet.Arg) (*NetArg, error)

ParseNetArg 将通用的net.Arg转化为ET专用NetArg

type NetConnArg

type NetConnArg struct {
	Domain string
	IP     string
	Port   string
}

NetConnArg NetArg中关于连接的部分

type NetSmartArg added in v0.9.3

type NetSmartArg struct {
	Location   string // 所在地,用于识别是否使用代理
	DomainType int    // 域名的类型(强制代理/强制直连/不确定)
}

NetSmartArg 与智能分流相关的参数

type Sender

type Sender interface {
	Send(e *NetArg) error //发送流程
	Type() CMDType        // ET子协议的类型
	Name() string         // ET子协议的名字
}

Sender ET子协议的sender

type SmartArg

type SmartArg struct {
	ProxyStatus   int
	LocalLocation string
}

SmartArg 智能模式需要的参数集

type UsersArg

type UsersArg struct {
	LocalUser  *user.ValidUser
	ValidUsers map[string]*user.ValidUser
}

UsersArg 用户系统使用的参数集

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL