Documentation
¶
Index ¶
- Variables
- func Conn2Conn(c, rc net.Conn, bufsize, timeout int)
- func EchoClient(server string, times int) error
- func ErrorReply(r *socks5.Request, c *net.TCPConn, e error) error
- func GetAddressFromURL(s string) (string, error)
- func Link(kind, server string, v url.Values) string
- func ListHasDomain(ds map[string]byte, domain string, c *cache.Cache) bool
- func ListHasIP(c4, c6 []*net.IPNet, i net.IP, c *cache.Cache, geo []string) bool
- func NextNonce(b []byte)
- func ParseLink(link string) (kind, server string, v url.Values, err error)
- func QUICDialTCP(src, dst, addr, host string, tc *tls.Config, idleTime int) (net.Conn, error)
- func QUICDialUDP(src, dst, addr, host string, tc *tls.Config, idleTime int) (net.Conn, error)
- func ReadCIDRList(url string) ([]*net.IPNet, error)
- func ReadData(url string) ([]byte, error)
- func ReadDomainList(url string) (map[string]byte, error)
- func ReadList(url string) ([]string, error)
- func Resolve4(host string) (string, error)
- func Resolve6(host string) (string, error)
- func Socks5Test(s, u, p, domain, a, ds string) error
- func WaitReadErr(conn net.Conn)
- func WebSocketDial(src, dst, addr, host, path string, tc *tls.Config, timeout int) (net.Conn, error)
- type BrookLink
- func (blk *BrookLink) CreateExchanger(network, src string, dstb []byte, tcptimeout, udptimeout int) (Exchanger, net.Conn, error)
- func (x *BrookLink) ListenAndServe() error
- func (x *BrookLink) PrepareSocks5Server(addr, ip string, tcptimeout, udptimeout int) error
- func (x *BrookLink) Shutdown() error
- func (x *BrookLink) TCPHandle(s *socks5.Server, c *net.TCPConn, r *socks5.Request) error
- func (x *BrookLink) UDPHandle(s *socks5.Server, addr *net.UDPAddr, d *socks5.Datagram) error
- type Client
- type ConnFirst
- type DHCPServer
- type EchoServer
- type Error
- type Exchanger
- func NewPacketClient(password []byte, src string, server net.Conn, timeout int, dstb []byte) (Exchanger, error)
- func NewPacketServer(password []byte, src string, client net.Conn, timeout int, dstb []byte) (Exchanger, error)
- func NewSimplePacketClient(password []byte, src string, server net.Conn, timeout int, dst []byte) (Exchanger, error)
- func NewSimplePacketServer(password []byte, src string, client net.Conn, timeout int, dst []byte) (Exchanger, error)
- func NewSimpleStreamClient(network string, password []byte, src string, server net.Conn, timeout int, ...) (Exchanger, error)
- func NewSimpleStreamServer(password []byte, src string, client net.Conn, timeout, udptimeout int) (Exchanger, error)
- func NewStreamClient(network string, password []byte, src string, server net.Conn, timeout int, ...) (Exchanger, error)
- func NewStreamServer(password []byte, src string, client net.Conn, timeout, udptimeout int) (Exchanger, error)
- type NATTable
- type PAC
- type PacketClient
- type PacketConn
- func (c *PacketConn) Close() error
- func (c *PacketConn) In(b []byte) error
- func (c *PacketConn) LocalAddr() net.Addr
- func (c *PacketConn) Read(b []byte) (int, error)
- func (c *PacketConn) RemoteAddr() net.Addr
- func (c *PacketConn) SetDeadline(t time.Time) error
- func (c *PacketConn) SetReadDeadline(t time.Time) error
- func (c *PacketConn) SetWriteDeadline(t time.Time) error
- func (c *PacketConn) Write(b []byte) (int, error)
- type PacketConnFactory
- type PacketServer
- type PacketServerConnFactory
- type QUICClient
- type QUICConn
- func (c *QUICConn) Close() error
- func (c *QUICConn) LocalAddr() net.Addr
- func (c *QUICConn) Read(b []byte) (int, error)
- func (c *QUICConn) RemoteAddr() net.Addr
- func (c *QUICConn) SetDeadline(t time.Time) error
- func (c *QUICConn) SetReadDeadline(t time.Time) error
- func (c *QUICConn) SetWriteDeadline(t time.Time) error
- func (c *QUICConn) Write(b []byte) (int, error)
- type QUICServer
- type Relay
- type RelayOverBrook
- type Server
- type SimplePacketClient
- type SimplePacketServer
- type SimplePacketServerConnFactory
- type SimpleStreamClient
- type SimpleStreamServer
- type Socks5Server
- type Socks5ToHTTP
- type StreamClient
- type StreamServer
- type Tproxy
- type UDPServerConnFactory
- type WSClient
- type WSServer
Constants ¶
This section is empty.
Variables ¶
View Source
var ClientGate func(ex Exchanger) (Exchanger, error) = func(ex Exchanger) (Exchanger, error) { return ex, nil }
View Source
var DHCPServerGate func(inmt string, in dhcp4.Packet, outmt string, ip net.IP, err error) = func(inmt string, in dhcp4.Packet, outmt string, ip net.IP, err error) {
}
View Source
var DNSGate func(addr *net.UDPAddr, m *dns.Msg, l1 *net.UDPConn) (done bool, err error) = func(addr *net.UDPAddr, m *dns.Msg, l1 *net.UDPConn) (done bool, err error) { if m.Question[0].Qtype == dns.TypeHTTPS || m.Question[0].Qtype == dns.TypeSVCB { m1 := &dns.Msg{} m1.SetReply(m) m1.Authoritative = true m1.Answer = append(m1.Answer, &dns.SOA{ Hdr: dns.RR_Header{Name: m.Question[0].Name, Rrtype: dns.TypeSOA, Class: dns.ClassINET, Ttl: 60}, Ns: "txthinking.com.", Mbox: "cloud.txthinking.com.", Serial: uint32((time.Now().Year() * 10000) + (int(time.Now().Month()) * 100) + (time.Now().Day())*100), Refresh: 21600, Retry: 3600, Expire: 259200, Minttl: 300, }) m1b, err := m1.PackBuffer(nil) if err != nil { return false, err } if _, err := l1.WriteToUDP(m1b, addr); err != nil { return false, err } return true, nil } return false, nil }
View Source
var DialTCP func(network string, laddr, raddr string) (net.Conn, error) = func(network string, laddr, raddr string) (net.Conn, error) { var la, ra *net.TCPAddr if laddr != "" { var err error la, err = net.ResolveTCPAddr(network, laddr) if err != nil { return nil, err } } a, err := Resolve(network, raddr) if err != nil { return nil, err } ra = a.(*net.TCPAddr) return net.DialTCP(network, la, ra) }
View Source
var DialUDP func(network string, laddr, raddr string) (net.Conn, error) = func(network string, laddr, raddr string) (net.Conn, error) { var la, ra *net.UDPAddr if laddr != "" { var err error la, err = net.ResolveUDPAddr(network, laddr) if err != nil { return nil, err } } a, err := Resolve(network, raddr) if err != nil { return nil, err } ra = a.(*net.UDPAddr) return net.DialUDP(network, la, ra) }
View Source
var ListenUDP func(network string, laddr *net.UDPAddr) (*net.UDPConn, error) = net.ListenUDP
View Source
var Log func(err error) = func(err error) { log.Println(err) }
View Source
var NATDial func(network string, src, dst, addr string) (net.Conn, error) = func(network string, src, dst, addr string) (net.Conn, error) { s := NAT.Get(src, dst) var c net.Conn var err error if network == "tcp" { c, err = DialTCP(network, s, addr) } if network == "udp" { c, err = DialUDP(network, s, addr) } if err != nil { if !strings.Contains(err.Error(), "address already in use") && !strings.Contains(err.Error(), "can't assign requested address") { return nil, err } if network == "tcp" { c, err = DialTCP(network, "", addr) } if network == "udp" { c, err = DialUDP(network, "", addr) } s = "" } if err != nil { return nil, err } if s == "" { NAT.Set(src, dst, c.LocalAddr().String()) } return c, nil }
View Source
var NATListenUDP func(network string, src, dst string) (*net.UDPConn, error) = func(network string, src, dst string) (*net.UDPConn, error) { var laddr *net.UDPAddr s := NAT.Get(src, dst) if s != "" { var err error laddr, err = net.ResolveUDPAddr("udp", s) if err != nil { return nil, err } } c, err := ListenUDP("udp", laddr) if err != nil { if !strings.Contains(err.Error(), "address already in use") && !strings.Contains(err.Error(), "can't assign requested address") { return nil, err } c, err = ListenUDP("udp", nil) s = "" } if err != nil { return nil, err } if s == "" { NAT.Set(src, dst, c.LocalAddr().String()) } return c, nil }
View Source
var Resolve func(network string, addr string) (net.Addr, error) = func(network string, addr string) (net.Addr, error) { if network == "tcp" { return net.ResolveTCPAddr("tcp", addr) } return net.ResolveUDPAddr("udp", addr) }
Functions ¶
func EchoClient ¶
func GetAddressFromURL ¶
func QUICDialTCP ¶
func QUICDialUDP ¶
func Socks5Test ¶
func WaitReadErr ¶
Types ¶
type BrookLink ¶
type BrookLink struct { Kind string Address string Host string Path string Password []byte V url.Values Tc *tls.Config S5 *socks5.Server Pcf *PacketConnFactory TCPTimeout int UDPTimeout int }
func NewBrookLink ¶
func (*BrookLink) CreateExchanger ¶
func (*BrookLink) ListenAndServe ¶
func (*BrookLink) PrepareSocks5Server ¶
type Client ¶
type Client struct { Server *socks5.Server ServerAddress string Password []byte TCPTimeout int UDPTimeout int UDPOverTCP bool PacketConnFactory *PacketConnFactory }
func (*Client) ListenAndServe ¶
type DHCPServer ¶
type DHCPServer struct { Listen net.PacketConn ServerIP net.IP Start net.IP Count int Leases map[int]string Options dhcp4.Options Cache string }
func NewDHCPServer ¶
func (*DHCPServer) ListenAndServe ¶
func (h *DHCPServer) ListenAndServe() error
func (*DHCPServer) ServeDHCP ¶
func (h *DHCPServer) ServeDHCP(p dhcp4.Packet, msgType dhcp4.MessageType, options dhcp4.Options) (d dhcp4.Packet)
func (*DHCPServer) Shutdown ¶
func (h *DHCPServer) Shutdown() error
type EchoServer ¶
type EchoServer struct { Addr string RunnerGroup *runnergroup.RunnerGroup }
func NewEchoServer ¶
func NewEchoServer(addr string) (*EchoServer, error)
func (*EchoServer) ListenAndServe ¶
func (s *EchoServer) ListenAndServe() error
func (*EchoServer) Shutdown ¶
func (s *EchoServer) Shutdown() error
type Exchanger ¶
type Exchanger interface { Network() string Src() string Dst() string Exchange(remote net.Conn) error Clean() }
func NewPacketClient ¶
func NewPacketServer ¶
func NewSimplePacketClient ¶
func NewSimplePacketServer ¶
func NewSimpleStreamClient ¶
func NewSimpleStreamServer ¶
func NewStreamClient ¶
type PAC ¶
type PAC struct { Addr string File string Proxy string DomainURL string DomainData []byte HTTPServer *http.Server Body []byte }
func (*PAC) ListenAndServe ¶
func (*PAC) WriteToFile ¶
func (*PAC) WriteToStdout ¶
type PacketClient ¶
type PacketClient struct { Server net.Conn Password []byte RB []byte WB []byte Timeout int // contains filtered or unexported fields }
func (*PacketClient) Clean ¶
func (s *PacketClient) Clean()
func (*PacketClient) Dst ¶
func (s *PacketClient) Dst() string
func (*PacketClient) Network ¶
func (s *PacketClient) Network() string
func (*PacketClient) Src ¶
func (s *PacketClient) Src() string
type PacketConn ¶
type PacketConn struct { First []byte InCh chan []byte Done chan byte W func([]byte) (int, error) Clean func() Timeout int }
func NewPacketConn ¶
func (*PacketConn) Close ¶
func (c *PacketConn) Close() error
func (*PacketConn) In ¶
func (c *PacketConn) In(b []byte) error
func (*PacketConn) LocalAddr ¶
func (c *PacketConn) LocalAddr() net.Addr
func (*PacketConn) RemoteAddr ¶
func (c *PacketConn) RemoteAddr() net.Addr
func (*PacketConn) SetDeadline ¶
func (c *PacketConn) SetDeadline(t time.Time) error
func (*PacketConn) SetReadDeadline ¶
func (c *PacketConn) SetReadDeadline(t time.Time) error
func (*PacketConn) SetWriteDeadline ¶
func (c *PacketConn) SetWriteDeadline(t time.Time) error
type PacketConnFactory ¶
type PacketConnFactory struct { Conns map[string]*PacketConn Lock *sync.Mutex }
func NewPacketConnFactory ¶
func NewPacketConnFactory() *PacketConnFactory
type PacketServer ¶
type PacketServer struct { Client net.Conn Password []byte RB []byte WB []byte Timeout int // contains filtered or unexported fields }
func (*PacketServer) Clean ¶
func (s *PacketServer) Clean()
func (*PacketServer) Dst ¶
func (s *PacketServer) Dst() string
func (*PacketServer) Network ¶
func (s *PacketServer) Network() string
func (*PacketServer) Src ¶
func (s *PacketServer) Src() string
type PacketServerConnFactory ¶
type PacketServerConnFactory struct { Conns map[string]*PacketConn Lock *sync.Mutex }
func NewPacketServerConnFactory ¶
func NewPacketServerConnFactory() *PacketServerConnFactory
type QUICClient ¶
type QUICClient struct { Server *socks5.Server ServerHost string ServerAddress string TLSConfig *tls.Config Password []byte TCPTimeout int UDPTimeout int WithoutBrook bool PacketConnFactory *PacketConnFactory }
func NewQUICClient ¶
func NewQUICClient(addr, ip, server, password string, tcpTimeout, udpTimeout int, withoutbrook bool) (*QUICClient, error)
func (*QUICClient) ListenAndServe ¶
func (x *QUICClient) ListenAndServe() error
func (*QUICClient) Shutdown ¶
func (x *QUICClient) Shutdown() error
type QUICConn ¶
type QUICConn struct { UDPConn *net.UDPConn Conn quic.Connection Stream quic.Stream LAddr net.Addr RAddr net.Addr }
func (*QUICConn) RemoteAddr ¶
type QUICServer ¶
type QUICServer struct { Password []byte Domain string Addr string TCPTimeout int UDPTimeout int Cert []byte CertKey []byte RunnerGroup *runnergroup.RunnerGroup WithoutBrook bool UDPServerConnFactory UDPServerConnFactory }
func NewQUICServer ¶
func NewQUICServer(addr, password, domain string, tcpTimeout, udpTimeout int, withoutbrook bool) (*QUICServer, error)
func (*QUICServer) ListenAndServe ¶
func (s *QUICServer) ListenAndServe() error
func (*QUICServer) Shutdown ¶
func (s *QUICServer) Shutdown() error
func (*QUICServer) TCPHandle ¶
func (s *QUICServer) TCPHandle(ss Exchanger) error
func (*QUICServer) UDPHandle ¶
func (s *QUICServer) UDPHandle(ss Exchanger) error
type Relay ¶
type Relay struct { From string To string Dstb []byte TCPTimeout int UDPTimeout int Pcf *PacketConnFactory RunnerGroup *runnergroup.RunnerGroup IsDNS bool }
func (*Relay) ListenAndServe ¶
type RelayOverBrook ¶
type RelayOverBrook struct { From string Link string TCPTimeout int UDPTimeout int RunnerGroup *runnergroup.RunnerGroup IsDNS bool // contains filtered or unexported fields }
func NewRelayOverBrook ¶
func NewRelayOverBrook(from, link, to string, tcpTimeout, udpTimeout int) (*RelayOverBrook, error)
func (*RelayOverBrook) ListenAndServe ¶
func (s *RelayOverBrook) ListenAndServe() error
func (*RelayOverBrook) Shutdown ¶
func (s *RelayOverBrook) Shutdown() error
type Server ¶
type Server struct { Addr string Password []byte TCPTimeout int UDPTimeout int RunnerGroup *runnergroup.RunnerGroup }
func (*Server) ListenAndServe ¶
func (*Server) UDPOverTCPHandle ¶
type SimplePacketClient ¶
type SimplePacketClient struct { Server net.Conn Password []byte RB []byte WB []byte Timeout int // contains filtered or unexported fields }
func (*SimplePacketClient) Clean ¶
func (s *SimplePacketClient) Clean()
func (*SimplePacketClient) Dst ¶
func (s *SimplePacketClient) Dst() string
func (*SimplePacketClient) Network ¶
func (s *SimplePacketClient) Network() string
func (*SimplePacketClient) Src ¶
func (s *SimplePacketClient) Src() string
type SimplePacketServer ¶
type SimplePacketServer struct { Client net.Conn Password []byte RB []byte WB []byte Timeout int // contains filtered or unexported fields }
func (*SimplePacketServer) Clean ¶
func (s *SimplePacketServer) Clean()
func (*SimplePacketServer) Dst ¶
func (s *SimplePacketServer) Dst() string
func (*SimplePacketServer) Network ¶
func (s *SimplePacketServer) Network() string
func (*SimplePacketServer) Src ¶
func (s *SimplePacketServer) Src() string
type SimplePacketServerConnFactory ¶
type SimplePacketServerConnFactory struct { Conns map[string]*PacketConn Lock *sync.Mutex }
func NewSimplePacketServerConnFactory ¶
func NewSimplePacketServerConnFactory() *SimplePacketServerConnFactory
type SimpleStreamClient ¶
type SimpleStreamClient struct { Server net.Conn Timeout int RB []byte WB []byte // contains filtered or unexported fields }
func (*SimpleStreamClient) Clean ¶
func (s *SimpleStreamClient) Clean()
func (*SimpleStreamClient) Dst ¶
func (s *SimpleStreamClient) Dst() string
func (*SimpleStreamClient) Network ¶
func (s *SimpleStreamClient) Network() string
func (*SimpleStreamClient) Src ¶
func (s *SimpleStreamClient) Src() string
type SimpleStreamServer ¶
type SimpleStreamServer struct { Client net.Conn Timeout int RB []byte WB []byte // contains filtered or unexported fields }
func (*SimpleStreamServer) Clean ¶
func (s *SimpleStreamServer) Clean()
func (*SimpleStreamServer) Dst ¶
func (s *SimpleStreamServer) Dst() string
func (*SimpleStreamServer) Network ¶
func (s *SimpleStreamServer) Network() string
func (*SimpleStreamServer) Src ¶
func (s *SimpleStreamServer) Src() string
type Socks5Server ¶
func NewSocks5Server ¶
func NewSocks5Server(addr, ip, userName, password string, tcpTimeout, udpTimeout int) (*Socks5Server, error)
func (*Socks5Server) ListenAndServe ¶
func (x *Socks5Server) ListenAndServe() error
func (*Socks5Server) Shutdown ¶
func (x *Socks5Server) Shutdown() error
type Socks5ToHTTP ¶
func NewSocks5ToHTTP ¶
func NewSocks5ToHTTP(addr, socks5addr, socks5username, socks5password string, tcpTimeout int) (*Socks5ToHTTP, error)
func (*Socks5ToHTTP) ListenAndServe ¶
func (s *Socks5ToHTTP) ListenAndServe() error
func (*Socks5ToHTTP) Shutdown ¶
func (s *Socks5ToHTTP) Shutdown() error
type StreamClient ¶
type StreamClient struct { Server net.Conn RB []byte WB []byte Timeout int // contains filtered or unexported fields }
func (*StreamClient) Clean ¶
func (c *StreamClient) Clean()
func (*StreamClient) Dst ¶
func (s *StreamClient) Dst() string
func (*StreamClient) Network ¶
func (s *StreamClient) Network() string
func (*StreamClient) Read ¶
func (c *StreamClient) Read() (int, error)
func (*StreamClient) Src ¶
func (s *StreamClient) Src() string
func (*StreamClient) Write ¶
func (c *StreamClient) Write(l int) error
type StreamServer ¶
type StreamServer struct { Client net.Conn RB []byte WB []byte Timeout int // contains filtered or unexported fields }
func (*StreamServer) Clean ¶
func (s *StreamServer) Clean()
func (*StreamServer) Dst ¶
func (s *StreamServer) Dst() string
func (*StreamServer) Network ¶
func (s *StreamServer) Network() string
func (*StreamServer) Read ¶
func (s *StreamServer) Read() (int, error)
func (*StreamServer) Src ¶
func (s *StreamServer) Src() string
func (*StreamServer) Write ¶
func (s *StreamServer) Write(l int) error
type Tproxy ¶
type Tproxy struct { Addr string Blk *BrookLink TCPTimeout int UDPTimeout int RunnerGroup *runnergroup.RunnerGroup }
func (*Tproxy) ClearAutoScripts ¶
func (*Tproxy) ListenAndServe ¶
func (*Tproxy) RunAutoScripts ¶
type UDPServerConnFactory ¶
type WSClient ¶
type WSClient struct { Server *socks5.Server ServerHost string ServerAddress string TLSConfig *tls.Config Password []byte TCPTimeout int UDPTimeout int Path string WithoutBrook bool PacketConnFactory *PacketConnFactory }
func NewWSClient ¶
func (*WSClient) ListenAndServe ¶
Source Files
¶
- brooklink.go
- client.go
- dhcpserver.go
- dial.go
- dnsserver.go
- echoclient.go
- echoserver.go
- error.go
- exchanger.go
- init.go
- link.go
- list.go
- log.go
- nat.go
- nonce.go
- pac.go
- packetclient.go
- packetconn.go
- packetserver.go
- packetserverconn.go
- quic.go
- quicclient.go
- quicserver.go
- relay.go
- relayoverbrook.go
- resolve.go
- server.go
- simplepacketclient.go
- simplepacketserver.go
- simplepacketserverconn.go
- simplestreamclient.go
- simplestreamserver.go
- socks5.go
- socks5test.go
- socks5tohttp.go
- streamclient.go
- streamserver.go
- tproxy_linux.go
- util.go
- waitreaderr.go
- websocket.go
- wsclient.go
- wsserver.go
Click to show internal directories.
Click to hide internal directories.