brook

package module
v0.0.0-...-d329b08 Latest Latest
Warning

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

Go to latest
Published: May 31, 2019 License: GPL-3.0 Imports: 27 Imported by: 0

README

Brook

Build Status Go Report Card Wiki

Brook


v20190601
  • New macOS/Windows GUI client.

Table of Contents

What is Brook

Brook is a cross-platform proxy/vpn software.
Brook's goal is to keep it simple, stupid and not detectable.

Download

Download Server/Client OS Arch Remark
brook Server & Client Linux amd64 CLI
brook_linux_386 Server & Client Linux 386 CLI
brook_linux_arm64 Server & Client Linux arm64 CLI
brook_linux_arm5 Server & Client Linux arm5 CLI
brook_linux_arm6 Server & Client Linux arm6 CLI
brook_linux_arm7 Server & Client Linux arm7 CLI
brook_linux_mips Server & Client Linux mips CLI
brook_linux_mipsle Server & Client Linux mipsle CLI
brook_linux_mips64 Server & Client Linux mips64 CLI
brook_linux_mips64le Server & Client Linux mips64le CLI
brook_linux_ppc64 Server & Client Linux ppc64 CLI
brook_linux_ppc64le Server & Client Linux ppc64le CLI
brook_darwin_amd64 Server & Client MacOS amd64 CLI
brook_windows_amd64.exe Server & Client Windows amd64 CLI
brook_windows_386.exe Server & Client Windows 386 CLI
Brook.dmg Client MacOS amd64 GUI
Brook.exe Client Windows amd64 GUI
App Store Client iOS - GUI
Brook.apk(No Google Play) Client Android - GUI

See wiki for more tutorials

Packages

ArchLinux
sudo pacman -S brook
MacOS(GUI)
brew cask install brook

Brook

NAME:
   Brook - A Cross-Platform Proxy/VPN Software

USAGE:
   brook [global options] command [command options] [arguments...]

VERSION:
   20190601

AUTHOR:
   Cloud <cloud@txthinking.com>

COMMANDS:
     server        Run as server mode
     servers       Run as multiple servers mode
     client        Run as client mode
     tunnel        Run as tunnel mode on client-side
     tproxy        Run as tproxy mode on client-side, transparent proxy, only works on Linux
     vpn           Run as VPN mode on client-side
     ssserver      Run as shadowsocks server mode, fixed method is aes-256-cfb
     ssservers     Run as shadowsocks multiple servers mode, fixed method is aes-256-cfb
     ssclient      Run as shadowsocks client mode, fixed method is aes-256-cfb
     socks5        Run as raw socks5 server
     relay         Run as relay mode
     relays        Run as multiple relays mode
     link          Print brook link
     qr            Print brook server QR code
     socks5tohttp  Convert socks5 to http proxy
     systemproxy   Set system proxy with pac url, or remove, only works on MacOS/Windows
     help, h       Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --debug, -d               Enable debug
   --listen value, -l value  Listen address for debug (default: ":6060")
   --help, -h                show help
   --version, -v             print the version
Server
# Run as a brook server
$ brook server -l :9999 -p password
# Run as multiple brook servers
$ brook servers -l ":9999 password" -l ":8888 password"

If you run a public/shared server, do not forget this parameter --tcpDeadline

Client (CLI)
# Run as brook client, start a socks5 proxy socks5://127.0.0.1:1080
$ brook client -l 127.0.0.1:1080 -i 127.0.0.1 -s server_address:port -p password
# Run as brook client, start a http(s) proxy http(s)://127.0.0.1:8080
$ brook client -l 127.0.0.1:8080 -i 127.0.0.1 -s server_address:port -p password --http
Client (GUI)

See wiki

Tunnel
# Run as tunnel 127.0.0.1:5 to 1.2.3.4:5
$ brook tunnel -l 127.0.0.1:5 -t 1.2.3.4:5 -s server_address:port -p password
Tproxy (usually used on Linux router box)

See wiki

VPN
# Run as VPN to proxy all TCP/UDP. [ROOT privileges required].
$ sudo brook vpn -l 127.0.0.1:1080 -s server_address:port -p password

See wiki for more tutorials

Relay
# Run as relay to 1.2.3.4:5
$ brook relay -l :5 -r 1.2.3.4:5
Socks5
# Run as a raw socks5 server 1.2.3.4:1080
$ brook socks5 -l :1080 -i 1.2.3.4
Socks5 to HTTP
# Convert socks5://127.0.0.1:1080 to http(s)://127.0.0.1:8080 proxy
$ brook socks5tohttp -l 127.0.0.1:8080 -s 127.0.0.1:1080
Shadowsocks
# Run as a shadowsocks server
$ brook ssserver -l :9999 -p password
# Run as multiple shadowsocks servers
$ brook ssservers -l ":9999 password" -l ":8888 password"

If you run a public/shared server, do not forget this parameter --tcpDeadline

# Run as shadowsocks client, start a socks5 proxy socks5://127.0.0.1:1080
$ brook ssclient -l 127.0.0.1:1080 -i 127.0.0.1 -s server_address:port -p password
# Run as shadowsocks client, start a http(s) proxy http(s)://127.0.0.1:8080
$ brook ssclient -l 127.0.0.1:8080 -i 127.0.0.1 -s server_address:port -p password --http

Fixed method is aes-256-cfb

See wiki for more tutorials

Contributing

Please read CONTRIBUTING.md first

License

Licensed under The GPLv3 License

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Debug bool = false

Functions

func Decrypt

func Decrypt(p, b []byte) (a byte, addr, port, data []byte, err error)

Decrypt data.

func EnableDebug

func EnableDebug()

EnableDebug.

func Encrypt

func Encrypt(p, b []byte) ([]byte, error)

Encrypt data.

func ErrorReply

func ErrorReply(r *socks5.Request, c *net.TCPConn, e error) error

func GetKey

func GetKey(p, n []byte) ([]byte, error)

GetKey.

func IncrementNonce

func IncrementNonce(n []byte) []byte

IncrementNonce loves your compute to use Little Endian.

func Link(server, password string) string

Link

func MakeSSKey

func MakeSSKey(password string) []byte

MakeSSKey used to make shadowsocks aes-256-cfb key.

func PrepareKey

func PrepareKey(p []byte) ([]byte, []byte, error)

PrepareKey.

func QR

func QR(server, password string)

QR generate and print QR code.

func ReadFrom

func ReadFrom(c *net.TCPConn, k, n []byte, hasTime bool) ([]byte, []byte, error)

ReadFrom.

func RunClient

func RunClient(address, ip, server, password string, tcpTimeout, tcpDeadline, udpDeadline, udpSessionTime int) error

RunClient used to make a new Client and start a socks5 proxy to listen.

func RunClientAsHTTP

func RunClientAsHTTP(address, ip, server, password string, tcpTimeout, tcpDeadline, udpDeadline, udpSessionTime int) error

RunClientAsHTTP used to make a new Client and start a http proxy to listen.

func RunRelay

func RunRelay(address, remote string, tcpTimeout, tcpDeadline, udpDeadline int) error

RunRelay used to make a new Relay and start to listen.

func RunSSClient

func RunSSClient(address, ip, server, password string, tcpTimeout, tcpDeadline, udpDeadline, udpSessionTime int) error

RunSSClient used to make a new Client and start a socks5 proxy to listen.

func RunSSClientAsHTTP

func RunSSClientAsHTTP(address, ip, server, password string, tcpTimeout, tcpDeadline, udpDeadline, udpSessionTime int) error

RunSSClientAsHTTP used to make a new Client and start a http proxy to listen.

func RunSSServer

func RunSSServer(address, password string, tcpTimeout, tcpDeadline, udpDeadline int) error

RunSSServer used to make a new Server and start to listen.

func RunServer

func RunServer(address, password string, tcpTimeout, tcpDeadline, udpDeadline int) error

RunServer used to make a new Server and start to listen.

func RunSocks5Server

func RunSocks5Server(address, ip, username, password string, tcpTimeout, tcpDeadline, udpDeadline, udpSessionTime int) error

RunSocks5Server used to make a new Socks5Server and start a raw socks5 proxy to listen.

func RunSocks5ToHTTP

func RunSocks5ToHTTP(address, socks5 string, timeout, deadline int) error

RunSocks5ToHTTP used to make a new Socks5ToHTTP and start a http proxy to listen.

func RunSystemProxy

func RunSystemProxy(remove bool, pac string) error

RunSystemProxy used to set/remove system proxy.

func RunTproxy

func RunTproxy(address, server, password string, tcpTimeout, tcpDeadline, udpDeadline int) error

RunTproxy used to start a tproxy.

func RunTunnel

func RunTunnel(address, to, server, password string, tcpTimeout, tcpDeadline, udpDeadline int) error

RunTunnel used to start a tunnel.

func RunVPN

func RunVPN(address, server, password, dns string, tcpTimeout, tcpDeadline, udpDeadline, udpSessionTime int, tunDevice, tunIP, tunGateway, tunMask string) error

RunVPN used to make a new VPN and start.

func WriteTo

func WriteTo(c *net.TCPConn, d, k, n []byte, needTime bool) ([]byte, error)

WriteTo.

Types

type CipherConn

type CipherConn struct {
	// contains filtered or unexported fields
}

CipherConn is the encrypted connection.

func NewCipherConn

func NewCipherConn(c net.Conn, key []byte, iv []byte) (*CipherConn, error)

NewCipherConn returns a new CipherConn, iv length must be equal aes.BlockSize.

func (*CipherConn) Close

func (c *CipherConn) Close() error

Close is just like net.Conn interface.

func (*CipherConn) LocalAddr

func (c *CipherConn) LocalAddr() net.Addr

LocalAddr is just like net.Conn interface.

func (*CipherConn) Read

func (c *CipherConn) Read(b []byte) (n int, err error)

Read is just like net.Conn interface.

func (*CipherConn) RemoteAddr

func (c *CipherConn) RemoteAddr() net.Addr

RemoteAddr is just like net.Conn interface.

func (*CipherConn) SetDeadline

func (c *CipherConn) SetDeadline(t time.Time) error

SetDeadline is just like net.Conn interface.

func (*CipherConn) SetReadDeadline

func (c *CipherConn) SetReadDeadline(t time.Time) error

SetReadDeadline is just like net.Conn interface.

func (*CipherConn) SetWriteDeadline

func (c *CipherConn) SetWriteDeadline(t time.Time) error

SetWriteDeadline is just like net.Conn interface.

func (*CipherConn) Write

func (c *CipherConn) Write(b []byte) (n int, err error)

Write is just like net.Conn interface.

type Client

type Client struct {
	Server          *socks5.Server
	RemoteAddr      string
	Password        []byte
	TCPTimeout      int
	TCPDeadline     int
	UDPDeadline     int
	TCPListen       *net.TCPListener
	Socks5Middleman plugin.Socks5Middleman
	HTTPMiddleman   plugin.HTTPMiddleman
}

Client.

func NewClient

func NewClient(addr, ip, server, password string, tcpTimeout, tcpDeadline, udpDeadline, udpSessionTime int) (*Client, error)

NewClient returns a new Client.

func (*Client) HTTPHandle

func (x *Client) HTTPHandle(c *net.TCPConn) error

HTTPHandle handles http request.

func (*Client) ListenAndServe

func (x *Client) ListenAndServe() error

ListenAndServe will let client start a socks5 proxy.

func (*Client) ListenAndServeHTTP

func (x *Client) ListenAndServeHTTP() error

ListenAndServeHTTP will let client start a http proxy.

func (*Client) SetHTTPMiddleman

func (x *Client) SetHTTPMiddleman(m plugin.HTTPMiddleman)

SetHTTPMiddleman sets httpmiddleman plugin.

func (*Client) SetSocks5Middleman

func (x *Client) SetSocks5Middleman(m plugin.Socks5Middleman)

SetSocks5Middleman sets socks5middleman plugin.

func (*Client) Shutdown

func (x *Client) Shutdown() error

Shutdown used to stop the client.

func (*Client) TCPHandle

func (x *Client) TCPHandle(s *socks5.Server, c *net.TCPConn, r *socks5.Request) error

TCPHandle handles tcp request.

func (*Client) UDPHandle

func (x *Client) UDPHandle(s *socks5.Server, addr *net.UDPAddr, d *socks5.Datagram) error

UDPHandle handles udp request.

type Relay

type Relay struct {
	TCPAddr       *net.TCPAddr
	UDPAddr       *net.UDPAddr
	RemoteTCPAddr *net.TCPAddr
	RemoteUDPAddr *net.UDPAddr
	TCPListen     *net.TCPListener
	UDPConn       *net.UDPConn
	UDPExchanges  *cache.Cache
	TCPDeadline   int
	TCPTimeout    int
	UDPDeadline   int
}

Relay is relay server.

func NewRelay

func NewRelay(addr, remote string, tcpTimeout, tcpDeadline, udpDeadline int) (*Relay, error)

NewRelay returns a Relay.

func (*Relay) ListenAndServe

func (s *Relay) ListenAndServe() error

Run server.

func (*Relay) RunTCPServer

func (s *Relay) RunTCPServer() error

RunTCPServer starts tcp server.

func (*Relay) RunUDPServer

func (s *Relay) RunUDPServer() error

RunUDPServer starts udp server.

func (*Relay) Shutdown

func (s *Relay) Shutdown() error

Shutdown server.

func (*Relay) TCPHandle

func (s *Relay) TCPHandle(c *net.TCPConn) error

TCPHandle handles request.

func (*Relay) UDPHandle

func (s *Relay) UDPHandle(addr *net.UDPAddr, b []byte) error

UDPHandle handles packet.

type SSClient

type SSClient struct {
	Server          *socks5.Server
	RemoteAddr      string
	Password        []byte
	TCPTimeout      int
	TCPDeadline     int
	UDPDeadline     int
	TCPListen       *net.TCPListener
	Socks5Middleman plugin.Socks5Middleman
	HTTPMiddleman   plugin.HTTPMiddleman
}

SSClient.

func NewSSClient

func NewSSClient(addr, ip, server, password string, tcpTimeout, tcpDeadline, udpDeadline, udpSessionTime int) (*SSClient, error)

NewSSClient returns a new SSClient.

func (*SSClient) Decrypt

func (x *SSClient) Decrypt(cd []byte) (a byte, addr, port, data []byte, err error)

Decrypt data.

func (*SSClient) Encrypt

func (x *SSClient) Encrypt(rawdata []byte) ([]byte, error)

Encrypt data.

func (*SSClient) HTTPHandle

func (x *SSClient) HTTPHandle(c *net.TCPConn) error

HTTPHandle handles http request.

func (*SSClient) ListenAndServe

func (x *SSClient) ListenAndServe() error

ListenAndServe will let client start a socks5 proxy.

func (*SSClient) ListenAndServeHTTP

func (x *SSClient) ListenAndServeHTTP() error

ListenAndServeHTTP will let client start a http proxy.

func (*SSClient) SetHTTPMiddleman

func (x *SSClient) SetHTTPMiddleman(m plugin.HTTPMiddleman)

SetHTTPMiddleman sets httpmiddleman plugin.

func (*SSClient) SetSocks5Middleman

func (x *SSClient) SetSocks5Middleman(m plugin.Socks5Middleman)

SetSocks5Middleman sets socks5middleman plugin.

func (*SSClient) Shutdown

func (x *SSClient) Shutdown() error

Shutdown used to stop the client.

func (*SSClient) TCPHandle

func (x *SSClient) TCPHandle(s *socks5.Server, c *net.TCPConn, r *socks5.Request) error

TCPHandle handles tcp request.

func (*SSClient) UDPHandle

func (x *SSClient) UDPHandle(s *socks5.Server, addr *net.UDPAddr, d *socks5.Datagram) error

UDPHandle handles udp request.

func (*SSClient) WrapCipherConn

func (x *SSClient) WrapCipherConn(conn *net.TCPConn) (*CipherConn, error)

WrapChiperConn makes a chiper conn.

type SSServer

type SSServer struct {
	Password     []byte
	TCPAddr      *net.TCPAddr
	UDPAddr      *net.UDPAddr
	TCPListen    *net.TCPListener
	UDPConn      *net.UDPConn
	UDPExchanges *cache.Cache
	TCPDeadline  int
	TCPTimeout   int
	UDPDeadline  int
}

SSServer.

func NewSSServer

func NewSSServer(addr, password string, tcpTimeout, tcpDeadline, udpDeadline int) (*SSServer, error)

NewSSServer.

func (*SSServer) Decrypt

func (s *SSServer) Decrypt(cd []byte) (a byte, addr, port, data []byte, err error)

Decrypt data.

func (*SSServer) Encrypt

func (s *SSServer) Encrypt(a byte, h, p, d []byte) ([]byte, error)

Encrypt data.

func (*SSServer) ListenAndServe

func (s *SSServer) ListenAndServe() error

ListenAndServe server.

func (*SSServer) RunTCPServer

func (s *SSServer) RunTCPServer() error

RunTCPServer starts tcp server.

func (*SSServer) RunUDPServer

func (s *SSServer) RunUDPServer() error

RunUDPServer starts udp server.

func (*SSServer) Shutdown

func (s *SSServer) Shutdown() error

Shutdown server.

func (*SSServer) TCPHandle

func (s *SSServer) TCPHandle(c *net.TCPConn) error

TCPHandle handles request.

func (*SSServer) UDPHandle

func (s *SSServer) UDPHandle(addr *net.UDPAddr, b []byte) error

UDPHandle handles packet.

func (*SSServer) WrapCipherConn

func (s *SSServer) WrapCipherConn(conn net.Conn) (*CipherConn, error)

WrapChiperConn makes a chiper conn.

type Server

type Server struct {
	Password     []byte
	TCPAddr      *net.TCPAddr
	UDPAddr      *net.UDPAddr
	TCPListen    *net.TCPListener
	UDPConn      *net.UDPConn
	UDPExchanges *cache.Cache
	TCPDeadline  int
	TCPTimeout   int
	UDPDeadline  int
}

Server.

func NewServer

func NewServer(addr, password string, tcpTimeout, tcpDeadline, udpDeadline int) (*Server, error)

NewServer.

func (*Server) ListenAndServe

func (s *Server) ListenAndServe() error

Run server.

func (*Server) RunTCPServer

func (s *Server) RunTCPServer() error

RunTCPServer starts tcp server.

func (*Server) RunUDPServer

func (s *Server) RunUDPServer() error

RunUDPServer starts udp server.

func (*Server) Shutdown

func (s *Server) Shutdown() error

Shutdown server.

func (*Server) TCPHandle

func (s *Server) TCPHandle(c *net.TCPConn) error

TCPHandle handles request.

func (*Server) UDPHandle

func (s *Server) UDPHandle(addr *net.UDPAddr, b []byte) error

UDPHandle handles packet.

type Socks5Server

type Socks5Server struct {
	Server          *socks5.Server
	Socks5Middleman plugin.Socks5Middleman
	TCPTimeout      int
	TCPDeadline     int
	UDPDeadline     int
	UDPSessionTime  int
	ForwardAddress  string
	ForwardUserName string
	ForwardPassword string
	Cache           *cache.Cache
}

Socks5Server is raw socks5 server.

func NewSocks5Server

func NewSocks5Server(addr, ip, userName, password string, tcpTimeout, tcpDeadline, udpDeadline, udpSessionTime int) (*Socks5Server, error)

NewSocks5Server returns a new Socks5Server.

func (*Socks5Server) ListenAndForward

func (x *Socks5Server) ListenAndForward(addr, username, password string) error

ListenAndForward will let client start a proxy to listen and forward to another socks5.

func (*Socks5Server) ListenAndServe

func (x *Socks5Server) ListenAndServe() error

ListenAndServe will let client start to listen and serve.

func (*Socks5Server) SetSocks5Middleman

func (x *Socks5Server) SetSocks5Middleman(m plugin.Socks5Middleman)

SetSocks5Middleman sets socks5middleman plugin.

func (*Socks5Server) Shutdown

func (x *Socks5Server) Shutdown() error

Shutdown used to stop the client.

func (*Socks5Server) TCPHandle

func (x *Socks5Server) TCPHandle(s *socks5.Server, c *net.TCPConn, r *socks5.Request) error

TCPHandle handles tcp request.

func (*Socks5Server) UDPHandle

func (x *Socks5Server) UDPHandle(s *socks5.Server, addr *net.UDPAddr, d *socks5.Datagram) error

UDPHandle handles udp request.

type Socks5ToHTTP

type Socks5ToHTTP struct {
	Addr          *net.TCPAddr
	Socks5Address string
	Dial          proxy.Dialer
	Timeout       int
	Deadline      int
	Listen        *net.TCPListener
	HTTPMiddleman plugin.HTTPMiddleman
}

func NewSocks5ToHTTP

func NewSocks5ToHTTP(addr, socks5addr string, timeout, deadline int) (*Socks5ToHTTP, error)

func (*Socks5ToHTTP) Handle

func (s *Socks5ToHTTP) Handle(c *net.TCPConn) error

func (*Socks5ToHTTP) ListenAndServe

func (s *Socks5ToHTTP) ListenAndServe() error

func (*Socks5ToHTTP) SetHTTPMiddleman

func (s *Socks5ToHTTP) SetHTTPMiddleman(m plugin.HTTPMiddleman)

SetHTTPMiddleman sets httpmiddleman plugin.

func (*Socks5ToHTTP) Shutdown

func (s *Socks5ToHTTP) Shutdown() error

type Tproxy

type Tproxy struct {
	TCPAddr       *net.TCPAddr
	UDPAddr       *net.UDPAddr
	RemoteTCPAddr *net.TCPAddr
	RemoteUDPAddr *net.UDPAddr
	Password      []byte
	TCPListen     *net.TCPListener
	UDPConn       *net.UDPConn
	UDPExchanges  *cache.Cache
	TCPDeadline   int
	TCPTimeout    int
	UDPDeadline   int
}

Tproxy.

func NewTproxy

func NewTproxy(addr, remote, password string, tcpTimeout, tcpDeadline, udpDeadline int) (*Tproxy, error)

NewTproxy.

func (*Tproxy) ListenAndServe

func (s *Tproxy) ListenAndServe() error

Run server.

func (*Tproxy) RunTCPServer

func (s *Tproxy) RunTCPServer() error

RunTCPServer starts tcp server.

func (*Tproxy) RunUDPServer

func (s *Tproxy) RunUDPServer() error

RunUDPServer starts udp server.

func (*Tproxy) Shutdown

func (s *Tproxy) Shutdown() error

Shutdown server.

func (*Tproxy) TCPHandle

func (s *Tproxy) TCPHandle(c *net.TCPConn) error

TCPHandle handles request.

func (*Tproxy) UDPHandle

func (s *Tproxy) UDPHandle(addr, daddr *net.UDPAddr, b []byte) error

type Tunnel

type Tunnel struct {
	TCPAddr       *net.TCPAddr
	UDPAddr       *net.UDPAddr
	ToAddr        string
	RemoteTCPAddr *net.TCPAddr
	RemoteUDPAddr *net.UDPAddr
	Password      []byte
	TCPListen     *net.TCPListener
	UDPConn       *net.UDPConn
	UDPExchanges  *cache.Cache
	TCPDeadline   int
	TCPTimeout    int
	UDPDeadline   int
}

Tunnel.

func NewTunnel

func NewTunnel(addr, to, remote, password string, tcpTimeout, tcpDeadline, udpDeadline int) (*Tunnel, error)

NewTunnel.

func (*Tunnel) ListenAndServe

func (s *Tunnel) ListenAndServe() error

Run server.

func (*Tunnel) RunTCPServer

func (s *Tunnel) RunTCPServer() error

RunTCPServer starts tcp server.

func (*Tunnel) RunUDPServer

func (s *Tunnel) RunUDPServer() error

RunUDPServer starts udp server.

func (*Tunnel) Shutdown

func (s *Tunnel) Shutdown() error

Shutdown server.

func (*Tunnel) TCPHandle

func (s *Tunnel) TCPHandle(c *net.TCPConn) error

TCPHandle handles request.

func (*Tunnel) UDPHandle

func (s *Tunnel) UDPHandle(addr *net.UDPAddr, b []byte) error

UDPHandle handles packet.

type UDPExchange

type UDPExchange struct {
	RemoteConn *net.UDPConn
	LocalConn  *net.UDPConn
}

type VPN

type VPN struct {
	Client             *Client
	Tunnel             *Tunnel
	Tun                *gotun2socks.Tun2Socks
	ServerIP           string
	TunGateway         string
	OriginalDNSServers []string
}

VPN.

func NewVPN

func NewVPN(addr, server, password, dns string, tcpTimeout, tcpDeadline, udpDeadline, udpSessionTime int, tunDevice, tunIP, tunGateway, tunMask string) (*VPN, error)

NewVPN.

func (*VPN) AddRoutes

func (v *VPN) AddRoutes() error

AddRoutes adds routes.

func (*VPN) DeleteRoutes

func (v *VPN) DeleteRoutes() error

DeleteRoutes deletes routes.

func (*VPN) ListenAndServe

func (v *VPN) ListenAndServe() error

ListenAndServe starts to run VPN.

func (*VPN) Shutdown

func (v *VPN) Shutdown() error

Shutdown stops VPN.

Directories

Path Synopsis
cli

Jump to

Keyboard shortcuts

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