Versions in this module Expand all Collapse all v1 v1.0.0 Oct 13, 2023 Changes in this version + var ClientGate func(ex Exchanger) (Exchanger, error) = func(ex Exchanger) (Exchanger, error) + 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) + 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) + var DOHGate func(m *dns.Msg, w http.ResponseWriter, r *http.Request) (done bool, err error) = func(m *dns.Msg, w http.ResponseWriter, r *http.Request) (done bool, err error) + var DialTCP func(network string, laddr, raddr string) (net.Conn, error) = func(network string, laddr, raddr string) (net.Conn, error) + var DialUDP func(network string, laddr, raddr string) (net.Conn, error) = func(network string, laddr, raddr string) (net.Conn, error) + var ListenUDP func(network string, laddr *net.UDPAddr) (*net.UDPConn, error) = net.ListenUDP + var Log func(err error) = func(err error) + var NAT = &NATTable + var NATDial func(network string, src, dst, addr string) (net.Conn, error) = func(network string, src, dst, addr string) (net.Conn, error) + var NATListenUDP func(network string, src, dst string) (*net.UDPConn, error) = func(network string, src, dst string) (*net.UDPConn, error) + var Resolve func(network string, addr string) (net.Addr, error) = func(network string, addr string) (net.Addr, error) + var ServerGate func(ex Exchanger) (Exchanger, error) = func(ex Exchanger) (Exchanger, error) + var TproxyGate func(conn net.Conn) (net.Conn, error) = func(conn net.Conn) (net.Conn, error) + func Conn2Conn(c, rc net.Conn, bufsize, timeout int) + func DHCPListen(iface string) (net.PacketConn, error) + 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 struct + Address string + Host string + Kind string + Password []byte + Path string + Pcf *PacketConnFactory + S5 *socks5.Server + TCPTimeout int + TLSFingerprint utls.ClientHelloID + Tc *tls.Config + UDPTimeout int + V url.Values + func NewBrookLink(link string) (*BrookLink, error) + 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 struct + PacketConnFactory *PacketConnFactory + Password []byte + Server *socks5.Server + ServerAddress string + TCPTimeout int + UDPOverTCP bool + UDPTimeout int + func NewClient(addr, ip, server, password string, tcpTimeout, udpTimeout int) (*Client, error) + func (x *Client) ListenAndServe() error + func (x *Client) Shutdown() error + func (x *Client) TCPHandle(s *socks5.Server, c *net.TCPConn, r *socks5.Request) error + func (x *Client) UDPHandle(s *socks5.Server, addr *net.UDPAddr, d *socks5.Datagram) error + type ConnFirst struct + First []byte + func (c *ConnFirst) Read(b []byte) (int, error) + type DHCPServer struct + Cache string + Count int + Leases map[int]string + Listen net.PacketConn + Options dhcp4.Options + ServerIP net.IP + Start net.IP + func NewDHCPServer(iface, serverip, start, mask string, count int, gateway string, ...) (*DHCPServer, error) + func (h *DHCPServer) ListenAndServe() error + func (h *DHCPServer) ServeDHCP(p dhcp4.Packet, msgType dhcp4.MessageType, options dhcp4.Options) (d dhcp4.Packet) + func (h *DHCPServer) Shutdown() error + type DNSClient struct + Server string + func (c *DNSClient) A(domain string) (net.IP, error) + func (c *DNSClient) AAAA(domain string) (net.IP, error) + func (c *DNSClient) Exchange(m *dns.Msg) (*dns.Msg, error) + type DOHClient struct + Client *http.Client + DOH string + func NewDOHClient(doh string) (*DOHClient, error) + func (c *DOHClient) A(domain string) (net.IP, error) + func (c *DOHClient) AAAA(domain string) (net.IP, error) + func (c *DOHClient) Exchange(m *dns.Msg) (*dns.Msg, error) + type DOHServer struct + Addr string + Cert []byte + CertKey []byte + DNSClient *DNSClient + DOHClient *DOHClient + Domain string + HTTPServer *http.Server + Path string + func NewDOHServer(addr, domain, path, to string, tcpTimeout, udpTimeout int) (*DOHServer, error) + func (s *DOHServer) ListenAndServe() error + func (s *DOHServer) ServeHTTP(w http.ResponseWriter, r *http.Request) + func (s *DOHServer) Shutdown() error + type EchoServer struct + Addr string + RunnerGroup *runnergroup.RunnerGroup + func NewEchoServer(addr string) (*EchoServer, error) + func (s *EchoServer) ListenAndServe() error + func (s *EchoServer) Shutdown() error + func (s *EchoServer) TCPHandle(c *net.TCPConn) error + func (s *EchoServer) UDPHandle(addr *net.UDPAddr, b []byte, l1 *net.UDPConn) error + type Error map[string]string + func (e Error) Error() string + type Exchanger interface + Clean func() + Dst func() string + Exchange func(remote net.Conn) error + Network func() string + Src func() string + 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 struct + Lock *sync.Mutex + Table map[string]string + func (n *NATTable) Get(src, dst string) string + func (n *NATTable) Set(src, dst, addr string) + type PAC struct + Addr string + Body []byte + DomainData []byte + DomainURL string + File string + HTTPServer *http.Server + Proxy string + func NewPAC(addr, file, proxy, domainURL string) *PAC + func (p *PAC) ListenAndServe() error + func (p *PAC) MakeBody() (io.Reader, error) + func (p *PAC) ServeHTTP(w http.ResponseWriter, r *http.Request) + func (p *PAC) Shutdown() error + func (p *PAC) WriteToFile() error + func (p *PAC) WriteToStdout() error + type PacketClient struct + Password []byte + RB []byte + Server net.Conn + Timeout int + WB []byte + func (c *PacketClient) Exchange(local net.Conn) error + func (s *PacketClient) Clean() + func (s *PacketClient) Dst() string + func (s *PacketClient) Network() string + func (s *PacketClient) Src() string + type PacketConn struct + Clean func() + Done chan byte + First []byte + InCh chan []byte + Timeout int + W func([]byte) (int, error) + func NewPacketConn(fb []byte, w func([]byte) (int, error), timeout int, clean func()) *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 struct + Conns map[string]*PacketConn + Lock *sync.Mutex + func NewPacketConnFactory() *PacketConnFactory + func (f *PacketConnFactory) Handle(addr *net.UDPAddr, dstb, data []byte, w func([]byte) (int, error), timeout int) (net.Conn, error) + type PacketServer struct + Client net.Conn + Password []byte + RB []byte + Timeout int + WB []byte + func (s *PacketServer) Clean() + func (s *PacketServer) Dst() string + func (s *PacketServer) Exchange(remote net.Conn) error + func (s *PacketServer) Network() string + func (s *PacketServer) Src() string + type PacketServerConnFactory struct + Conns map[string]*PacketConn + Lock *sync.Mutex + func NewPacketServerConnFactory() *PacketServerConnFactory + func (f *PacketServerConnFactory) Handle(addr *net.UDPAddr, b, p []byte, w func([]byte) (int, error), timeout int) (net.Conn, []byte, error) + type QUICClient struct + PacketConnFactory *PacketConnFactory + Password []byte + Server *socks5.Server + ServerAddress string + ServerHost string + TCPTimeout int + TLSConfig *tls.Config + UDPTimeout int + WithoutBrook bool + func NewQUICClient(addr, ip, server, password string, tcpTimeout, udpTimeout int, ...) (*QUICClient, error) + func (x *QUICClient) ListenAndServe() error + func (x *QUICClient) Shutdown() error + func (x *QUICClient) TCPHandle(s *socks5.Server, c *net.TCPConn, r *socks5.Request) error + func (x *QUICClient) UDPHandle(s *socks5.Server, addr *net.UDPAddr, d *socks5.Datagram) error + type QUICConn struct + Conn quic.Connection + LAddr net.Addr + RAddr net.Addr + Stream quic.Stream + UDPConn *net.UDPConn + 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 struct + Addr string + Cert []byte + CertKey []byte + Domain string + Password []byte + RunnerGroup *runnergroup.RunnerGroup + TCPTimeout int + UDPServerConnFactory UDPServerConnFactory + UDPTimeout int + WithoutBrook bool + func NewQUICServer(addr, password, domain string, tcpTimeout, udpTimeout int, withoutbrook bool) (*QUICServer, error) + func (s *QUICServer) ListenAndServe() error + func (s *QUICServer) Shutdown() error + func (s *QUICServer) TCPHandle(ss Exchanger) error + func (s *QUICServer) UDPHandle(ss Exchanger) error + type Relay struct + Dstb []byte + From string + IsDNS bool + Pcf *PacketConnFactory + RunnerGroup *runnergroup.RunnerGroup + TCPTimeout int + To string + UDPTimeout int + func NewRelay(from, to string, tcpTimeout, udpTimeout int) (*Relay, error) + func (s *Relay) ListenAndServe() error + func (s *Relay) Shutdown() error + func (s *Relay) TCPHandle(c *net.TCPConn) error + func (s *Relay) UDPHandle(addr *net.UDPAddr, b []byte, l1 *net.UDPConn) error + type RelayOverBrook struct + From string + IsDNS bool + Link string + RunnerGroup *runnergroup.RunnerGroup + TCPTimeout int + UDPTimeout int + func NewRelayOverBrook(from, link, to string, tcpTimeout, udpTimeout int) (*RelayOverBrook, error) + func (s *RelayOverBrook) ListenAndServe() error + func (s *RelayOverBrook) Shutdown() error + func (s *RelayOverBrook) TCPHandle(c *net.TCPConn) error + func (s *RelayOverBrook) UDPHandle(addr *net.UDPAddr, b []byte, l1 *net.UDPConn) error + type Server struct + Addr string + Password []byte + RunnerGroup *runnergroup.RunnerGroup + TCPTimeout int + UDPTimeout int + func NewServer(addr, password string, tcpTimeout, udpTimeout int) (*Server, error) + func (s *Server) ListenAndServe() error + func (s *Server) Shutdown() error + func (s *Server) TCPHandle(ss Exchanger) error + func (s *Server) UDPHandle(ss Exchanger) error + func (s *Server) UDPOverTCPHandle(ss Exchanger) error + type SimplePacketClient struct + Password []byte + RB []byte + Server net.Conn + Timeout int + WB []byte + func (c *SimplePacketClient) Exchange(local net.Conn) error + func (s *SimplePacketClient) Clean() + func (s *SimplePacketClient) Dst() string + func (s *SimplePacketClient) Network() string + func (s *SimplePacketClient) Src() string + type SimplePacketServer struct + Client net.Conn + Password []byte + RB []byte + Timeout int + WB []byte + func (s *SimplePacketServer) Clean() + func (s *SimplePacketServer) Dst() string + func (s *SimplePacketServer) Exchange(remote net.Conn) error + func (s *SimplePacketServer) Network() string + func (s *SimplePacketServer) Src() string + type SimplePacketServerConnFactory struct + Conns map[string]*PacketConn + Lock *sync.Mutex + func NewSimplePacketServerConnFactory() *SimplePacketServerConnFactory + func (f *SimplePacketServerConnFactory) Handle(addr *net.UDPAddr, b, p []byte, w func([]byte) (int, error), timeout int) (net.Conn, []byte, error) + type SimpleStreamClient struct + RB []byte + Server net.Conn + Timeout int + WB []byte + func (c *SimpleStreamClient) Exchange(local net.Conn) error + func (s *SimpleStreamClient) Clean() + func (s *SimpleStreamClient) Dst() string + func (s *SimpleStreamClient) Network() string + func (s *SimpleStreamClient) Src() string + type SimpleStreamServer struct + Client net.Conn + RB []byte + Timeout int + WB []byte + func (s *SimpleStreamServer) Clean() + func (s *SimpleStreamServer) Dst() string + func (s *SimpleStreamServer) Exchange(remote net.Conn) error + func (s *SimpleStreamServer) Network() string + func (s *SimpleStreamServer) Src() string + type Socks5Server struct + Server *socks5.Server + func NewSocks5Server(addr, ip, userName, password string, tcpTimeout, udpTimeout int) (*Socks5Server, error) + func (x *Socks5Server) ListenAndServe() error + func (x *Socks5Server) Shutdown() error + type Socks5ToHTTP struct + Addr string + Dial proxy.Dialer + Listen *net.TCPListener + TCPTimeout int + func NewSocks5ToHTTP(addr, socks5addr, socks5username, socks5password string, tcpTimeout int) (*Socks5ToHTTP, error) + func (s *Socks5ToHTTP) Handle(c *net.TCPConn) error + func (s *Socks5ToHTTP) ListenAndServe() error + func (s *Socks5ToHTTP) Shutdown() error + type StreamClient struct + RB []byte + Server net.Conn + Timeout int + WB []byte + func (c *StreamClient) Clean() + func (c *StreamClient) Exchange(local net.Conn) error + func (c *StreamClient) Read() (int, error) + func (c *StreamClient) Write(l int) error + func (s *StreamClient) Dst() string + func (s *StreamClient) Network() string + func (s *StreamClient) Src() string + type StreamServer struct + Client net.Conn + RB []byte + Timeout int + WB []byte + func (s *StreamServer) Clean() + func (s *StreamServer) Dst() string + func (s *StreamServer) Exchange(remote net.Conn) error + func (s *StreamServer) Network() string + func (s *StreamServer) Read() (int, error) + func (s *StreamServer) Src() string + func (s *StreamServer) Write(l int) error + type Tproxy struct — darwin/amd64, js/wasm, windows/amd64 + func (s *Tproxy) Shutdown() error + type Tproxy struct — linux/amd64 + Addr string + Blk *BrookLink + RunnerGroup *runnergroup.RunnerGroup + TCPTimeout int + UDPTimeout int + func NewTproxy(addr, link string, tcpTimeout, udpTimeout int) (*Tproxy, error) + func (s *Tproxy) ClearAutoScripts() error + func (s *Tproxy) ListenAndServe() error + func (s *Tproxy) RunAutoScripts() error + func (s *Tproxy) TCPHandle(c0 *net.TCPConn) error + func (s *Tproxy) UDPHandle(c *net.UDPConn, b []byte) error + type UDPServerConnFactory interface + Handle func(addr *net.UDPAddr, b, p []byte, w func([]byte) (int, error), timeout int) (net.Conn, []byte, error) + type WSClient struct + PacketConnFactory *PacketConnFactory + Password []byte + Path string + Server *socks5.Server + ServerAddress string + ServerHost string + TCPTimeout int + TLSConfig *tls.Config + TLSFingerprint utls.ClientHelloID + UDPTimeout int + WithoutBrook bool + func NewWSClient(addr, ip, server, password string, tcpTimeout, udpTimeout int, ...) (*WSClient, error) + func (x *WSClient) ListenAndServe() error + func (x *WSClient) Shutdown() error + func (x *WSClient) TCPHandle(s *socks5.Server, c *net.TCPConn, r *socks5.Request) error + func (x *WSClient) UDPHandle(s *socks5.Server, addr *net.UDPAddr, d *socks5.Datagram) error + type WSServer struct + Addr string + Cert []byte + CertKey []byte + Domain string + HTTPServer *http.Server + Password []byte + Path string + TCPTimeout int + UDPTimeout int + WithoutBrook bool + XForwardedFor bool + func NewWSServer(addr, password, domain, path string, tcpTimeout, udpTimeout int, ...) (*WSServer, error) + func (s *WSServer) ListenAndServe() error + func (s *WSServer) ServeHTTP(w http.ResponseWriter, r *http.Request) + func (s *WSServer) Shutdown() error + func (s *WSServer) TCPHandle(ss Exchanger) error + func (s *WSServer) UDPHandle(ss Exchanger) error