Documentation
¶
Index ¶
- Constants
- func Regist(name string, s Service, args interface{})
- type HTTP
- func (s *HTTP) CheckArgs()
- func (s *HTTP) Clean()
- func (s *HTTP) ConnectSSH() (err error)
- func (s *HTTP) InitBasicAuth() (err error)
- func (s *HTTP) InitOutConnPool()
- func (s *HTTP) InitService()
- func (s *HTTP) IsBasicAuth() bool
- func (s *HTTP) IsDeadLoop(inLocalAddr string, host string) bool
- func (s *HTTP) OutToTCP(useProxy bool, address string, inConn *net.Conn, req *utils.HTTPRequest) (err interface{})
- func (s *HTTP) Start(args interface{}) (err error)
- func (s *HTTP) StopService()
- type HTTPArgs
- type MuxBridge
- type MuxBridgeArgs
- type MuxClient
- func (s *MuxClient) CheckArgs()
- func (s *MuxClient) Clean()
- func (s *MuxClient) InitService()
- func (s *MuxClient) ServeConn(inConn *smux.Stream, localAddr, ID string)
- func (s *MuxClient) ServeUDP(inConn *smux.Stream, localAddr, ID string)
- func (s *MuxClient) Start(args interface{}) (err error)
- func (s *MuxClient) StopService()
- type MuxClientArgs
- type MuxServer
- func (s *MuxServer) CheckArgs()
- func (s *MuxServer) Clean()
- func (s *MuxServer) GetConn() (conn net.Conn, err error)
- func (s *MuxServer) GetOutConn() (outConn net.Conn, ID string, err error)
- func (s *MuxServer) InitService()
- func (s *MuxServer) Start(args interface{}) (err error)
- func (s *MuxServer) UDPConnDeamon()
- type MuxServerArgs
- type MuxServerManager
- type MuxUDPItem
- type ServerConn
- type Service
- func NewHTTP() Service
- func NewMuxBridge() Service
- func NewMuxClient() Service
- func NewMuxServer() Service
- func NewMuxServerManager() Service
- func NewSocks() Service
- func NewTCP() Service
- func NewTunnelBridge() Service
- func NewTunnelClient() Service
- func NewTunnelServer() Service
- func NewTunnelServerManager() Service
- func NewUDP() Service
- type ServiceItem
- type Socks
- func (s *Socks) CheckArgs()
- func (s *Socks) Clean()
- func (s *Socks) ConnectSSH() (err error)
- func (s *Socks) InitBasicAuth() (err error)
- func (s *Socks) InitService()
- func (s *Socks) IsBasicAuth() bool
- func (s *Socks) IsDeadLoop(inLocalAddr string, host string) bool
- func (s *Socks) Start(args interface{}) (err error)
- func (s *Socks) StopService()
- func (s *Socks) UDPKey() []byte
- type SocksArgs
- type TCP
- type TCPArgs
- type TunnelBridge
- type TunnelBridgeArgs
- type TunnelClient
- func (s *TunnelClient) CheckArgs()
- func (s *TunnelClient) Clean()
- func (s *TunnelClient) GetConn() (conn net.Conn, err error)
- func (s *TunnelClient) GetInConn(typ uint8, data ...string) (outConn net.Conn, err error)
- func (s *TunnelClient) InitService()
- func (s *TunnelClient) ServeConn(localAddr, ID, serverID string)
- func (s *TunnelClient) ServeUDP(localAddr, ID, serverID string)
- func (s *TunnelClient) Start(args interface{}) (err error)
- func (s *TunnelClient) StopService()
- type TunnelClientArgs
- type TunnelServer
- func (s *TunnelServer) CheckArgs()
- func (s *TunnelServer) Clean()
- func (s *TunnelServer) GetConn() (conn net.Conn, err error)
- func (s *TunnelServer) GetOutConn(typ uint8) (outConn net.Conn, ID string, err error)
- func (s *TunnelServer) InitService()
- func (s *TunnelServer) Start(args interface{}) (err error)
- func (s *TunnelServer) UDPConnDeamon()
- type TunnelServerArgs
- type TunnelServerManager
- func (s *TunnelServerManager) CheckArgs()
- func (s *TunnelServerManager) Clean()
- func (s *TunnelServerManager) GetConn() (conn net.Conn, err error)
- func (s *TunnelServerManager) GetOutConn(typ uint8) (outConn net.Conn, ID string, err error)
- func (s *TunnelServerManager) InitService()
- func (s *TunnelServerManager) Start(args interface{}) (err error)
- func (s *TunnelServerManager) StopService()
- type UDP
- func (s *UDP) CheckArgs()
- func (s *UDP) Clean()
- func (s *UDP) GetConn(connKey string) (conn net.Conn, isNew bool, err error)
- func (s *UDP) InitOutConnPool()
- func (s *UDP) InitService()
- func (s *UDP) OutToTCP(packet []byte, localAddr, srcAddr *net.UDPAddr) (err error)
- func (s *UDP) OutToUDP(packet []byte, localAddr, srcAddr *net.UDPAddr) (err error)
- func (s *UDP) Start(args interface{}) (err error)
- func (s *UDP) StopService()
- type UDPArgs
- type UDPItem
Constants ¶
View Source
const ( TYPE_TCP = "tcp" TYPE_UDP = "udp" TYPE_HTTP = "http" TYPE_TLS = "tls" TYPE_KCP = "kcp" CONN_CLIENT_CONTROL = uint8(1) CONN_CLIENT_HEARBEAT = uint8(2) CONN_SERVER_HEARBEAT = uint8(3) CONN_SERVER = uint8(4) CONN_CLIENT = uint8(5) CONN_SERVER_MUX = uint8(6) CONN_CLIENT_MUX = uint8(7) )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type HTTP ¶
type HTTP struct {
// contains filtered or unexported fields
}
func (*HTTP) ConnectSSH ¶
func (*HTTP) InitBasicAuth ¶
func (*HTTP) InitOutConnPool ¶
func (s *HTTP) InitOutConnPool()
func (*HTTP) InitService ¶
func (s *HTTP) InitService()
func (*HTTP) IsBasicAuth ¶
func (*HTTP) StopService ¶
func (s *HTTP) StopService()
type HTTPArgs ¶
type HTTPArgs struct {
Parent *string
CertFile *string
KeyFile *string
CertBytes []byte
KeyBytes []byte
Local *string
Always *bool
HTTPTimeout *int
Interval *int
Blocked *string
Direct *string
AuthFile *string
Auth *[]string
AuthURL *string
AuthURLOkCode *int
AuthURLTimeout *int
AuthURLRetry *int
ParentType *string
LocalType *string
Timeout *int
PoolSize *int
CheckParentInterval *int
SSHKeyFile *string
SSHKeyFileSalt *string
SSHPassword *string
SSHUser *string
SSHKeyBytes []byte
SSHAuthMethod ssh.AuthMethod
KCPMethod *string
KCPKey *string
LocalIPS *[]string
}
type MuxBridge ¶
type MuxBridge struct {
// contains filtered or unexported fields
}
func (*MuxBridge) InitService ¶
func (s *MuxBridge) InitService()
func (*MuxBridge) StopService ¶
func (s *MuxBridge) StopService()
type MuxBridgeArgs ¶
type MuxClient ¶
type MuxClient struct {
// contains filtered or unexported fields
}
func (*MuxClient) InitService ¶
func (s *MuxClient) InitService()
func (*MuxClient) StopService ¶
func (s *MuxClient) StopService()
type MuxClientArgs ¶
type MuxServer ¶
type MuxServer struct {
// contains filtered or unexported fields
}
func (*MuxServer) GetOutConn ¶
func (*MuxServer) InitService ¶
func (s *MuxServer) InitService()
func (*MuxServer) UDPConnDeamon ¶
func (s *MuxServer) UDPConnDeamon()
type MuxServerArgs ¶
type MuxServerManager ¶
type MuxServerManager struct {
// contains filtered or unexported fields
}
func (*MuxServerManager) CheckArgs ¶
func (s *MuxServerManager) CheckArgs()
func (*MuxServerManager) Clean ¶
func (s *MuxServerManager) Clean()
func (*MuxServerManager) InitService ¶
func (s *MuxServerManager) InitService()
func (*MuxServerManager) Start ¶
func (s *MuxServerManager) Start(args interface{}) (err error)
func (*MuxServerManager) StopService ¶
func (s *MuxServerManager) StopService()
type MuxUDPItem ¶
type MuxUDPItem struct {
// contains filtered or unexported fields
}
type ServerConn ¶
type Service ¶
type Service interface {
Start(args interface{}) (err error)
Clean()
}
func NewMuxBridge ¶
func NewMuxBridge() Service
func NewMuxClient ¶
func NewMuxClient() Service
func NewMuxServer ¶
func NewMuxServer() Service
func NewMuxServerManager ¶
func NewMuxServerManager() Service
func NewTunnelBridge ¶
func NewTunnelBridge() Service
func NewTunnelClient ¶
func NewTunnelClient() Service
func NewTunnelServer ¶
func NewTunnelServer() Service
func NewTunnelServerManager ¶
func NewTunnelServerManager() Service
type ServiceItem ¶
func Run ¶
func Run(name string, args ...interface{}) (service *ServiceItem, err error)
type Socks ¶
type Socks struct {
// contains filtered or unexported fields
}
func (*Socks) ConnectSSH ¶
func (*Socks) InitBasicAuth ¶
func (*Socks) InitService ¶
func (s *Socks) InitService()
func (*Socks) IsBasicAuth ¶
func (*Socks) StopService ¶
func (s *Socks) StopService()
type SocksArgs ¶
type SocksArgs struct {
Parent *string
ParentType *string
Local *string
LocalType *string
CertFile *string
KeyFile *string
CertBytes []byte
KeyBytes []byte
SSHKeyFile *string
SSHKeyFileSalt *string
SSHPassword *string
SSHUser *string
SSHKeyBytes []byte
SSHAuthMethod ssh.AuthMethod
Timeout *int
Always *bool
Interval *int
Blocked *string
Direct *string
AuthFile *string
Auth *[]string
AuthURL *string
AuthURLOkCode *int
AuthURLTimeout *int
AuthURLRetry *int
KCPMethod *string
KCPKey *string
UDPParent *string
UDPLocal *string
LocalIPS *[]string
}
type TCP ¶
type TCP struct {
// contains filtered or unexported fields
}
func (*TCP) InitOutConnPool ¶
func (s *TCP) InitOutConnPool()
func (*TCP) InitService ¶
func (s *TCP) InitService()
func (*TCP) StopService ¶
func (s *TCP) StopService()
type TCPArgs ¶
type TunnelBridge ¶
type TunnelBridge struct {
// contains filtered or unexported fields
}
func (*TunnelBridge) CheckArgs ¶
func (s *TunnelBridge) CheckArgs()
func (*TunnelBridge) Clean ¶
func (s *TunnelBridge) Clean()
func (*TunnelBridge) InitService ¶
func (s *TunnelBridge) InitService()
func (*TunnelBridge) Start ¶
func (s *TunnelBridge) Start(args interface{}) (err error)
func (*TunnelBridge) StopService ¶
func (s *TunnelBridge) StopService()
type TunnelBridgeArgs ¶
type TunnelClient ¶
type TunnelClient struct {
// contains filtered or unexported fields
}
func (*TunnelClient) CheckArgs ¶
func (s *TunnelClient) CheckArgs()
//close all connection
s.cm.RemoveAll()
if s.ctrlConn != nil {
s.ctrlConn.Close()
}
utils.CloseConn(&heartbeatConn)
heartbeatConn, err := s.GetInConn(CONN_CLIENT_HEARBEAT, ID)
if err != nil {
log.Printf("heartbeat connection err: %s, retrying...", err)
time.Sleep(time.Second * 3)
utils.CloseConn(&heartbeatConn)
continue
}
log.Printf("heartbeat connection created,id:%s", ID)
writeDie := make(chan bool)
readDie := make(chan bool)
go func() {
for {
heartbeatConn.SetWriteDeadline(time.Now().Add(time.Second * 3))
_, err = heartbeatConn.Write([]byte{0x00})
heartbeatConn.SetWriteDeadline(time.Time{})
if err != nil {
log.Printf("heartbeat connection write err %s", err)
break
}
time.Sleep(time.Second * 3)
}
close(writeDie)
}()
go func() {
for {
signal := make([]byte, 1)
heartbeatConn.SetReadDeadline(time.Now().Add(time.Second * 6))
_, err := heartbeatConn.Read(signal)
heartbeatConn.SetReadDeadline(time.Time{})
if err != nil {
log.Printf("heartbeat connection read err: %s", err)
break
} else {
//log.Printf("heartbeat from bridge")
}
}
close(readDie)
}()
select {
case <-readDie:
case <-writeDie:
}
}
}()
}
func (*TunnelClient) Clean ¶
func (s *TunnelClient) Clean()
func (*TunnelClient) InitService ¶
func (s *TunnelClient) InitService()
func (*TunnelClient) ServeConn ¶
func (s *TunnelClient) ServeConn(localAddr, ID, serverID string)
func (*TunnelClient) ServeUDP ¶
func (s *TunnelClient) ServeUDP(localAddr, ID, serverID string)
func (*TunnelClient) Start ¶
func (s *TunnelClient) Start(args interface{}) (err error)
func (*TunnelClient) StopService ¶
func (s *TunnelClient) StopService()
type TunnelClientArgs ¶
type TunnelServer ¶
type TunnelServer struct {
// contains filtered or unexported fields
}
func (*TunnelServer) CheckArgs ¶
func (s *TunnelServer) CheckArgs()
func (*TunnelServer) Clean ¶
func (s *TunnelServer) Clean()
func (*TunnelServer) GetOutConn ¶
func (*TunnelServer) InitService ¶
func (s *TunnelServer) InitService()
func (*TunnelServer) Start ¶
func (s *TunnelServer) Start(args interface{}) (err error)
func (*TunnelServer) UDPConnDeamon ¶
func (s *TunnelServer) UDPConnDeamon()
type TunnelServerArgs ¶
type TunnelServerManager ¶
type TunnelServerManager struct {
// contains filtered or unexported fields
}
func (*TunnelServerManager) CheckArgs ¶
func (s *TunnelServerManager) CheckArgs()
func (*TunnelServerManager) Clean ¶
func (s *TunnelServerManager) Clean()
func (*TunnelServerManager) GetConn ¶
func (s *TunnelServerManager) GetConn() (conn net.Conn, err error)
func (*TunnelServerManager) GetOutConn ¶
func (s *TunnelServerManager) InitHeartbeatDeamon() {
log.Printf("heartbeat started")
go func() {
var heartbeatConn net.Conn
var ID string
for {
//close all connection
s.cm.Remove(ID)
utils.CloseConn(&heartbeatConn)
heartbeatConn, ID, err := s.GetOutConn(CONN_SERVER_HEARBEAT)
if err != nil {
log.Printf("heartbeat connection err: %s, retrying...", err)
time.Sleep(time.Second * 3)
utils.CloseConn(&heartbeatConn)
continue
}
log.Printf("heartbeat connection created,id:%s", ID)
writeDie := make(chan bool)
readDie := make(chan bool)
go func() {
for {
heartbeatConn.SetWriteDeadline(time.Now().Add(time.Second * 3))
_, err = heartbeatConn.Write([]byte{0x00})
heartbeatConn.SetWriteDeadline(time.Time{})
if err != nil {
log.Printf("heartbeat connection write err %s", err)
break
}
time.Sleep(time.Second * 3)
}
close(writeDie)
}()
go func() {
for {
signal := make([]byte, 1)
heartbeatConn.SetReadDeadline(time.Now().Add(time.Second * 6))
_, err := heartbeatConn.Read(signal)
heartbeatConn.SetReadDeadline(time.Time{})
if err != nil {
log.Printf("heartbeat connection read err: %s", err)
break
} else {
// log.Printf("heartbeat from bridge")
}
}
close(readDie)
}()
select {
case <-readDie:
case <-writeDie:
}
}
}()
}
func (*TunnelServerManager) InitService ¶
func (s *TunnelServerManager) InitService()
func (*TunnelServerManager) Start ¶
func (s *TunnelServerManager) Start(args interface{}) (err error)
func (*TunnelServerManager) StopService ¶
func (s *TunnelServerManager) StopService()
type UDP ¶
type UDP struct {
// contains filtered or unexported fields
}
func (*UDP) InitOutConnPool ¶
func (s *UDP) InitOutConnPool()
func (*UDP) InitService ¶
func (s *UDP) InitService()
func (*UDP) StopService ¶
func (s *UDP) StopService()
Click to show internal directories.
Click to hide internal directories.