Documentation
¶
Index ¶
- Constants
- Variables
- func ApplyDefaultOptions(opts *RelayRuleOptions)
- func ValidateOptions(opts *RelayRuleOptions) error
- type BaseProxy
- func (p *BaseProxy) GetBuffer(isUDP bool, size int) []byte
- func (p *BaseProxy) GetDescription() string
- func (p *BaseProxy) GetLastUpdateTime() time.Time
- func (p *BaseProxy) GetRateLimit() (inLimit, outLimit float64)
- func (p *BaseProxy) GetStatus() (bool, string)
- func (p *BaseProxy) GetTrafficIn() int64
- func (p *BaseProxy) GetTrafficInRate() float64
- func (p *BaseProxy) GetTrafficOut() int64
- func (p *BaseProxy) GetTrafficOutRate() float64
- func (p *BaseProxy) GetType() string
- func (p *BaseProxy) IsRunning() bool
- func (p *BaseProxy) PutBuffer(buf []byte, isUDP bool)
- func (p *BaseProxy) ReceiveDataCallback(size int64)
- func (p *BaseProxy) SendDataCallback(size int64)
- func (p *BaseProxy) SetDescription(desc string)
- func (p *BaseProxy) SetRateLimit(inLimit, outLimit float64)
- type BaseProxyConf
- type CreateProxyOptions
- type GlobalManager
- func (gm *GlobalManager) GetBufferPool() *_BufferPool
- func (gm *GlobalManager) GetCounters() *_GlobalCounters
- func (gm *GlobalManager) GetManager() *proxyManager
- func (gm *GlobalManager) GetOrSetLogger(customLogger ...Logger) Logger
- func (gm *GlobalManager) GetProxyKey(proxyType, listenIP string, listenPort int) string
- func (gm *GlobalManager) GetSecurityManager() *_SecurityManager
- func (gm *GlobalManager) GetTCPListener(addr string) (net.Listener, error)
- func (gm *GlobalManager) GetUDPConn(addr string) (net.PacketConn, error)
- type Logger
- type Manager
- type ManagerOptions
- type Proxy
- type ProxyInfo
- type RelayRuleOptions
- type SafeCheck
- type TCPProxy
- type TCPUDPProxyCommonConf
- func (p *TCPUDPProxyCommonConf) AddCurrentConnections(delta int64)
- func (p *TCPUDPProxyCommonConf) GetCurrentConnections() int64
- func (p *TCPUDPProxyCommonConf) GetID() int
- func (p *TCPUDPProxyCommonConf) GetKey() string
- func (p *TCPUDPProxyCommonConf) GetListenAddress() string
- func (p *TCPUDPProxyCommonConf) GetListenIP() string
- func (p *TCPUDPProxyCommonConf) GetListenPort() int
- func (p *TCPUDPProxyCommonConf) GetSafeMode() string
- func (p *TCPUDPProxyCommonConf) GetTargetAddress() string
- func (p *TCPUDPProxyCommonConf) SafeCheck(remoteAddr string) bool
- func (p *TCPUDPProxyCommonConf) SetMaxConnections(max int64)
- func (p *TCPUDPProxyCommonConf) String() string
- type UDPProxy
- func (p *UDPProxy) CheckReadTargetDataRoutineLimit() error
- func (p *UDPProxy) CheckTargetUDPConnectSessions()
- func (p *UDPProxy) Forwarder(replyCh chan *udpPackage)
- func (p *UDPProxy) GetStatus() (ok bool)
- func (p *UDPProxy) GetTargetUDPAddr() *net.UDPAddr
- func (p *UDPProxy) GetUDPPacketSize() int
- func (p *UDPProxy) ListenHandler(ln net.PacketConn)
- func (p *UDPProxy) ReadFromTargetOnce() bool
- func (p *UDPProxy) Restart() error
- func (p *UDPProxy) SetUDPPacketSize(size int)
- func (p *UDPProxy) Start() error
- func (p *UDPProxy) Stop() error
Constants ¶
const ( SafeModeNone = "" // 不启用安全检查 SafeModeWhitelist = "white" // 白名单模式 SafeModeBlacklist = "black" // 黑名单模式 )
SafeCheckMode 安全检查模式
Variables ¶
var DefaultRelayRuleOptions = RelayRuleOptions{ UDPPackageSize: _DefaultUDPPackageSize, SingleProxyMaxUDPReadTargetDataRoutineCount: _DefaultUDPMaxRoutineCount, UDPProxyPerformanceMode: true, UDPShortMode: false, UDPBufferSize: _DefaultUDPBufferSize, UDPQueueSize: _DefaultUDPQueueSize, SingleProxyMaxTCPConnections: _TCPUDPDefaultSingleProxyMaxConnections, SafeMode: SafeModeNone, InRateLimit: 0, OutRateLimit: 0, }
DefaultRelayRuleOptions 默认的转发规则选项
Functions ¶
func ApplyDefaultOptions ¶
func ApplyDefaultOptions(opts *RelayRuleOptions)
ApplyDefaultOptions 应用默认选项
func ValidateOptions ¶
func ValidateOptions(opts *RelayRuleOptions) error
ValidateOptions 验证配置选项的合理性
Types ¶
type BaseProxy ¶
type BaseProxy struct {
// TCPUDPProxyCommonConf 包含TCP和UDP代理共用的配置
TCPUDPProxyCommonConf
// RelayRuleOptions 字段
RelayRuleOptions RelayRuleOptions
// contains filtered or unexported fields
}
BaseProxy TCP、UDP协议的基础代理结构体
func (*BaseProxy) GetDescription ¶
GetDescription 获取代理的描述信息
func (*BaseProxy) GetLastUpdateTime ¶
GetLastUpdateTime 获取最后一次流量统计的更新时间
func (*BaseProxy) GetRateLimit ¶
GetRateLimit 获取当前的入站和出站速率限制
@return float64, float64 入站限制和出站限制(KB/s)
func (*BaseProxy) SetDescription ¶
SetDescription 设置代理的描述信息
func (*BaseProxy) SetRateLimit ¶
SetRateLimit 设置入站和出站的速率限制
@param inLimit float64 入站限制(KB/s)
@param outLimit float64 出站限制(KB/s)
type BaseProxyConf ¶
type BaseProxyConf struct {
// 流量统计
TrafficIn int64 // 入站总流量计数器
TrafficOut int64 // 出站总流量计数器
ProxyType string // 代理类型 (tcp/tcp4/tcp6/udp/udp4/udp6)
// contains filtered or unexported fields
}
BaseProxyConf 基础代理配置结构体
func (*BaseProxyConf) GetTrafficIn ¶
func (p *BaseProxyConf) GetTrafficIn() int64
GetTrafficIn 获取入站总流量
@return int64 入站总流量大小
func (*BaseProxyConf) GetTrafficOut ¶
func (p *BaseProxyConf) GetTrafficOut() int64
GetTrafficOut 获取出站总流量
@return int64 出站总流量大小
func (*BaseProxyConf) ReceiveDataCallback ¶
func (p *BaseProxyConf) ReceiveDataCallback(nw int64)
ReceiveDataCallback 处理接收数据的回调
@param nw int64 接收到的数据大小
func (*BaseProxyConf) SendDataCallback ¶
func (p *BaseProxyConf) SendDataCallback(nw int64)
SendDataCallback 处理发送数据的回调
@param nw int64 发送的数据大小
type CreateProxyOptions ¶
type CreateProxyOptions struct {
ProxyType string // 代理类型
ListenIP string // 监听IP
ListenPort int // 监听端口
TargetAddressList []string // 目标地址列表
RelayOptions RelayRuleOptions // 转发规则选项
}
CreateProxyOptions 创建代理的选项
type GlobalManager ¶
type GlobalManager struct {
// contains filtered or unexported fields
}
GlobalManager 全局管理器
func (*GlobalManager) GetBufferPool ¶
func (gm *GlobalManager) GetBufferPool() *_BufferPool
GetBufferPool 获取缓冲池管理器
func (*GlobalManager) GetCounters ¶
func (gm *GlobalManager) GetCounters() *_GlobalCounters
GetCounters 获取全局计数器
func (*GlobalManager) GetManager ¶
func (gm *GlobalManager) GetManager() *proxyManager
GetManager 获取指定代理
func (*GlobalManager) GetOrSetLogger ¶
func (gm *GlobalManager) GetOrSetLogger(customLogger ...Logger) Logger
GetOrSetLogger 设置或者获取默认日志记录器
@param customLogger ...Logger 自定义的日志记录器
@return Logger 返回设置的日志记录器
func (*GlobalManager) GetProxyKey ¶
func (gm *GlobalManager) GetProxyKey(proxyType, listenIP string, listenPort int) string
GetProxyKey 生成代理的唯一标识键
func (*GlobalManager) GetSecurityManager ¶
func (gm *GlobalManager) GetSecurityManager() *_SecurityManager
GetSecurityManager 获取安全管理器
func (*GlobalManager) GetTCPListener ¶
func (gm *GlobalManager) GetTCPListener(addr string) (net.Listener, error)
GetTCPListener 获取TCP监听器
func (*GlobalManager) GetUDPConn ¶
func (gm *GlobalManager) GetUDPConn(addr string) (net.PacketConn, error)
GetUDPConn 获取UDP连接
type Logger ¶
type Logger interface {
Debugf(format string, args ...any)
Infof(format string, args ...any)
Warnf(format string, args ...any)
Errorf(format string, args ...any)
}
Logger 日志接口
type Manager ¶
type Manager interface {
// 代理管理方法
AddProxy(proxy Proxy)
RemoveProxy(id int, proxyType string)
GetProxy(id int, proxyType string) (Proxy, bool)
GetAllProxiesList() map[int]ProxyInfo
// TCP代理相关方法
GetTCPProxy(id int) (*TCPProxy, bool)
GetAllTCPProxies() map[int]*TCPProxy
RemoveTCPProxy(id int)
// UDP代理相关方法
GetUDPProxy(id int) (*UDPProxy, bool)
GetAllUDPProxies() map[int]*UDPProxy
RemoveUDPProxy(id int)
// 网络连接方法
GetTCPListener(addr string) (net.Listener, error)
GetUDPConn(addr string) (net.PacketConn, error)
// CreateProxy 创建新的代理实例
CreateProxy(opts CreateProxyOptions) (Proxy, error)
}
Manager 代理管理器接口
type Proxy ¶
type Proxy interface {
// 基本控制方法
Start() error // 启动代理
Stop() error // 停止代理
Restart() error // 重启代理
IsRunning() bool // 检查代理是否正在运行
// 流量统计相关方法
ReceiveDataCallback(int64) // 接收数据时的回调函数
SendDataCallback(int64) // 发送数据时的回调函数
GetTrafficIn() int64 // 获取入站总流量
GetTrafficOut() int64 // 获取出站总流量
GetTrafficInRate() float64 // 获取入站流量速率
GetTrafficOutRate() float64 // 获取出站流量速率
// 状态查询方法
GetTargetAddress() string // 获取目标地址
GetType() string // 获取代理类型
GetStatus() (ok bool) // 获取代理状态
GetCurrentConnections() int64 // 获取当前连接数
// 配置相关方法
GetListenIP() string // 获取监听IP
GetListenPort() int // 获取监听端口
GetKey() string // 获取代理唯一标识
GetID() int // 获取代理ID
GetDescription() string // 获取代理描述
GetLastUpdateTime() time.Time // 获取代理最后更新时间
// 安全相关方法
SafeCheck(ip string) bool // IP安全检查
SetRateLimit(inLimit, outLimit float64) // 设置流量限制
GetRateLimit() (float64, float64) // 获取流量限制
String() string // 获取代理的字符串表示
}
Proxy 接口定义了代理的基本操作
type ProxyInfo ¶
type ProxyInfo struct {
ID int `json:"proxyId" toml:"proxyId"`
Type string `json:"proxyType" toml:"proxyType"`
ListenAddr string `json:"listenAddr" toml:"listenAddr"`
RemoteAddr string `json:"remoteAddr" toml:"remoteAddr"`
Status bool `json:"proxyStatus" toml:"proxyStatus"`
RateIn float64 `json:"rateIn" toml:"rateIn"`
RateOut float64 `json:"rateOut" toml:"rateOut"`
TrafficIn int64 `json:"trafficIn" toml:"trafficIn"`
TrafficOut int64 `json:"trafficOut" toml:"trafficOut"`
RateLimit _RateLimit `json:"rateLimit" toml:"rateLimit"`
UpdateTime time.Time `json:"updateTime" toml:"updateTime"`
Description string `json:"description" toml:"description"`
Connections int64 `json:"connections" toml:"connections"`
}
ProxyInfo 代理信息结构体
type RelayRuleOptions ¶
type RelayRuleOptions struct {
// UDPPackageSize UDP包大小,用于设置缓冲区大小
UDPPackageSize int `json:"UDPPackageSize,omitempty"`
// SingleProxyMaxTCPConnections 单个TCP代理允许的最大连接数
SingleProxyMaxTCPConnections int64 `json:"SingleProxyMaxTCPConnections,omitempty"`
// SingleProxyMaxUDPReadTargetDataRoutineCount 单个UDP代理允许的最大目标数据读取协程数
SingleProxyMaxUDPReadTargetDataRoutineCount int64 `json:"SingleProxyMaxUDPReadTargetDataRoutineCount"`
// UDPProxyPerformanceMode UDP代理性能模式开关,启用时会优化性能
UDPProxyPerformanceMode bool `json:"UDPProxyPerformanceMode,omitempty"`
// UDPShortMode UDP短连接模式开关,启用时会优化短连接场景
UDPShortMode bool `json:"UDPShortMode,omitempty"`
// SafeMode 安全模式设置,用于控制访问限制
SafeMode string `json:"SafeMode,omitempty"`
// InRateLimit 入站流量限制(单位:KB/s)
InRateLimit float64 `json:"InRateLimit,omitempty"`
// OutRateLimit 出站流量限制(单位:KB/s)
OutRateLimit float64 `json:"OutRateLimit,omitempty"`
// UDPBufferSize UDP缓冲区大小
UDPBufferSize int `json:"UDPBufferSize,omitempty"`
// UDPQueueSize UDP队列大小
UDPQueueSize int `json:"UDPQueueSize,omitempty"`
Description string `json:"Description,omitempty"`
}
RelayRuleOptions 定义了转发规则的配置选项
type TCPProxy ¶
type TCPProxy struct {
BaseProxy
// contains filtered or unexported fields
}
TCPProxy TCP代理实现
func CreateTCPProxy ¶
func CreateTCPProxy(proxyType, listenIP string, listenPort int, targetAddressList []string, options RelayRuleOptions) (*TCPProxy, error)
CreateTCPProxy 创建新的TCP代理实例
func (*TCPProxy) CheckConnectionsLimit ¶
CheckConnectionsLimit 检查是否超过连接数限制
type TCPUDPProxyCommonConf ¶
type TCPUDPProxyCommonConf struct {
CurrentConnectionsCount int64
SingleProxyMaxConnections int64
BaseProxyConf
// contains filtered or unexported fields
}
func (*TCPUDPProxyCommonConf) AddCurrentConnections ¶
func (p *TCPUDPProxyCommonConf) AddCurrentConnections(delta int64)
AddCurrentConnections 增加当前全局连接数
func (*TCPUDPProxyCommonConf) GetCurrentConnections ¶
func (p *TCPUDPProxyCommonConf) GetCurrentConnections() int64
GetCurrentConnections 获取当前连接数
func (*TCPUDPProxyCommonConf) GetListenAddress ¶
func (p *TCPUDPProxyCommonConf) GetListenAddress() string
GetListenAddress 获取监听地址
func (*TCPUDPProxyCommonConf) GetListenIP ¶
func (p *TCPUDPProxyCommonConf) GetListenIP() string
GetListenIP 获取监听IP
func (*TCPUDPProxyCommonConf) GetListenPort ¶
func (p *TCPUDPProxyCommonConf) GetListenPort() int
GetListenPort 获取监听端口
func (*TCPUDPProxyCommonConf) GetSafeMode ¶
func (p *TCPUDPProxyCommonConf) GetSafeMode() string
GetSafeMode 获取安全模式
func (*TCPUDPProxyCommonConf) GetTargetAddress ¶
func (p *TCPUDPProxyCommonConf) GetTargetAddress() string
GetTargetAddress 获取目标地址
func (*TCPUDPProxyCommonConf) SafeCheck ¶
func (p *TCPUDPProxyCommonConf) SafeCheck(remoteAddr string) bool
SafeCheck 执行安全检查
func (*TCPUDPProxyCommonConf) SetMaxConnections ¶
func (p *TCPUDPProxyCommonConf) SetMaxConnections(max int64)
SetMaxConnections 设置最大连接数
func (*TCPUDPProxyCommonConf) String ¶
func (p *TCPUDPProxyCommonConf) String() string
String 返回代理的字符串表示
type UDPProxy ¶
type UDPProxy struct {
BaseProxy
Upm bool
ShortMode bool
SingleProxyMaxUDPReadTargetDatagoroutineCount int64
// contains filtered or unexported fields
}
UDPProxy UDP代理实现
func CreateUDPProxy ¶
func CreateUDPProxy(proxyType, listenIP string, listenPort int, targetAddressList []string, options RelayRuleOptions) (*UDPProxy, error)
CreateUDPProxy 创建新的UDP代理实例
func (*UDPProxy) CheckReadTargetDataRoutineLimit ¶
CheckReadTargetDataRoutineLimit 检查读取目标数据的例程限制
func (*UDPProxy) CheckTargetUDPConnectSessions ¶
func (p *UDPProxy) CheckTargetUDPConnectSessions()
CheckTargetUDPConnectSessions 检查目标UDP连接会话
func (*UDPProxy) GetTargetUDPAddr ¶
GetTargetUDPAddr 获取目标UDP地址
func (*UDPProxy) GetUDPPacketSize ¶
GetUDPPacketSize 获取UDP包大小
func (*UDPProxy) ListenHandler ¶
func (p *UDPProxy) ListenHandler(ln net.PacketConn)
ListenHandler 监听处理器
func (*UDPProxy) ReadFromTargetOnce ¶
ReadFromTargetOnce 判断是否只从目标读取一次
func (*UDPProxy) SetUDPPacketSize ¶
SetUDPPacketSize 设置UDP包大小