Documentation
¶
Index ¶
- Constants
- Variables
- func NewFullChunkedReadWriter(id string, reqBody io.WriteCloser, serverResp io.ReadCloser) io.ReadWriteCloser
- func NewHalfChunkedReadWriter(ctx context.Context, id string, client *http.Client, method, target string, ...) io.ReadWriteCloser
- func NewHeartbeatRW(rw RawReadWriteCloser, id, redirect string) io.ReadWriteCloser
- func RandString(n int) string
- func Run(ctx context.Context, config *Suo5Config) error
- type ClientConnectCloseEvent
- type ClientConnectionEvent
- type ClientEventHandler
- type ConnectedEvent
- type ConnectionType
- type HttpMultiplexHalf
- type MultiPlexer
- type RawReadWriteCloser
- type Suo5Config
- type TransportType
- type TunnelConn
- type WebsocketMultiplex
Constants ¶
View Source
const ( HeaderKey = "Accept-Language" HeaderValueChecking = "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6" HeaderValueFull = "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.6,en-US;q=0.5" HeaderValueHalf = "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.5,en-US;q=0.4" HeaderValuePlexChecking = "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.1" HeaderValuePlexHalf = "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.6,en-US;q=0.2" )
View Source
const ( ActionCreate byte = 0x00 ActionData byte = 0x01 ActionDelete byte = 0x02 ActionHeartbeat byte = 0x03 )
Variables ¶
View Source
var (
SessionId = ""
)
View Source
var UAList = []string{
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 11.6; rv:92.0) Gecko/20100101 Firefox/92.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.4.14 Chrome/114.0.5735.289 Electron/25.8.1 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.6.3 Chrome/120.0.6099.291 Electron/28.3.3 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.5.3 Chrome/114.0.5735.289 Electron/25.8.1 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64; rv:127.0) Gecko/20100101 Firefox/127.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2.1 Safari/605.1.15",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 OPR/109.0.0.0",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.5.12 Chrome/120.0.6099.283 Electron/28.2.3 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.3.1 Safari/605.1.15",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:127.0) Gecko/20100101 Firefox/127.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.5.8 Chrome/120.0.6099.283 Electron/28.2.3 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.4.13 Chrome/114.0.5735.289 Electron/25.8.1 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.4.16 Chrome/114.0.5735.289 Electron/25.8.1 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.5.3 Chrome/114.0.5735.289 Electron/25.8.1 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Safari/605.1.15",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.4.16 Chrome/114.0.5735.289 Electron/25.8.1 Safari/537.36",
}
Functions ¶
func NewFullChunkedReadWriter ¶
func NewFullChunkedReadWriter(id string, reqBody io.WriteCloser, serverResp io.ReadCloser) io.ReadWriteCloser
NewFullChunkedReadWriter 全双工读写流
func NewHalfChunkedReadWriter ¶
func NewHalfChunkedReadWriter(ctx context.Context, id string, client *http.Client, method, target string, serverResp io.ReadCloser, baseHeader http.Header, redirect string) io.ReadWriteCloser
NewHalfChunkedReadWriter 半双工读写流, 用发送请求的方式模拟写
func NewHeartbeatRW ¶ added in v0.7.0
func NewHeartbeatRW(rw RawReadWriteCloser, id, redirect string) io.ReadWriteCloser
func RandString ¶
Types ¶
type ClientConnectCloseEvent ¶
type ClientConnectionEvent ¶
type ClientEventHandler ¶
type ClientEventHandler struct { Inner server.Handler OnNewClientConnection func(event *ClientConnectionEvent) OnClientConnectionClose func(event *ClientConnectCloseEvent) }
type ConnectedEvent ¶
type ConnectedEvent struct {
Mode ConnectionType `json:"mode"`
}
type ConnectionType ¶
type ConnectionType string
const ( Undefined ConnectionType = "undefined" AutoDuplex ConnectionType = "auto" FullDuplex ConnectionType = "full" HalfDuplex ConnectionType = "half" )
type HttpMultiplexHalf ¶ added in v1.4.0
type HttpMultiplexHalf struct {
// contains filtered or unexported fields
}
func NewHttpMultiplexHalf ¶ added in v1.4.0
func NewHttpMultiplexHalf(rootCtx context.Context, config *Suo5Config, client *http.Client, serverResp io.ReadCloser) *HttpMultiplexHalf
func (*HttpMultiplexHalf) Close ¶ added in v1.4.0
func (s *HttpMultiplexHalf) Close()
func (*HttpMultiplexHalf) Release ¶ added in v1.4.0
func (s *HttpMultiplexHalf) Release(id string)
func (*HttpMultiplexHalf) Spawn ¶ added in v1.4.0
func (s *HttpMultiplexHalf) Spawn(id string) (*TunnelConn, error)
func (*HttpMultiplexHalf) Wait ¶ added in v1.4.0
func (s *HttpMultiplexHalf) Wait()
type MultiPlexer ¶ added in v1.4.0
type MultiPlexer interface { Spawn(id string) (*TunnelConn, error) Release(id string) Wait() Close() }
type RawReadWriteCloser ¶ added in v0.7.0
type RawReadWriteCloser interface { io.ReadWriteCloser WriteRaw(p []byte) (n int, err error) }
type Suo5Config ¶
type Suo5Config struct { Method string `json:"method"` Listen string `json:"listen"` Target string `json:"target"` NoAuth bool `json:"no_auth"` Username string `json:"username"` Password string `json:"password"` Mode ConnectionType `json:"mode"` Transport TransportType `json:"transport"` BufferSize int `json:"buffer_size"` Timeout int `json:"timeout"` Debug bool `json:"debug"` UpstreamProxy string `json:"upstream_proxy"` RedirectURL string `json:"redirect_url"` RawHeader []string `json:"raw_header"` DisableHeartbeat bool `json:"disable_heartbeat"` DisableGzip bool `json:"disable_gzip"` EnableCookiejar bool `json:"enable_cookiejar"` ExcludeDomain []string `json:"exclude_domain"` // 负载均衡用 MaxRetry int `json:"max_retry"` DirtyBodySize int `json:"dirty_body_size"` RequestInterval int `json:"request_interval"` MaxRequestSize int `json:"max_request_size"` TestExit string `json:"-"` ExcludeDomainMap map[string]bool `json:"-"` Offset int `json:"-"` Header http.Header `json:"-"` OnRemoteConnected func(e *ConnectedEvent) `json:"-"` OnNewClientConnection func(event *ClientConnectionEvent) `json:"-"` OnClientConnectionClose func(event *ClientConnectCloseEvent) `json:"-"` GuiLog io.Writer `json:"-"` }
func DefaultSuo5Config ¶
func DefaultSuo5Config() *Suo5Config
func (*Suo5Config) HeaderString ¶ added in v1.3.0
func (s *Suo5Config) HeaderString() string
func (*Suo5Config) Parse ¶ added in v1.3.0
func (s *Suo5Config) Parse() error
type TransportType ¶ added in v1.4.0
type TransportType string
const ( TransportHTTP TransportType = "http" TransportWebsocket TransportType = "websocket" TransportHTTPMultiplex TransportType = "http-multiplex" )
type TunnelConn ¶ added in v1.4.0
type TunnelConn struct {
// contains filtered or unexported fields
}
func (*TunnelConn) Close ¶ added in v1.4.0
func (s *TunnelConn) Close() error
func (*TunnelConn) ReadUnmarshal ¶ added in v1.4.0
func (s *TunnelConn) ReadUnmarshal() (map[string][]byte, error)
type WebsocketMultiplex ¶ added in v1.4.0
type WebsocketMultiplex struct {
// contains filtered or unexported fields
}
func NewWebsocketMultiplex ¶ added in v1.4.0
func NewWebsocketMultiplex(rootCtx context.Context, wsConn *websocket.Conn, config *Suo5Config) *WebsocketMultiplex
func (*WebsocketMultiplex) Close ¶ added in v1.4.0
func (s *WebsocketMultiplex) Close()
func (*WebsocketMultiplex) Release ¶ added in v1.4.0
func (s *WebsocketMultiplex) Release(id string)
func (*WebsocketMultiplex) Spawn ¶ added in v1.4.0
func (s *WebsocketMultiplex) Spawn(id string) (*TunnelConn, error)
func (*WebsocketMultiplex) Wait ¶ added in v1.4.0
func (s *WebsocketMultiplex) Wait()
Click to show internal directories.
Click to hide internal directories.