Feature: add v2ray-plugin
This commit is contained in:
@ -69,7 +69,7 @@ type Client struct {
|
||||
security Security
|
||||
tls bool
|
||||
host string
|
||||
wsConfig *websocketConfig
|
||||
wsConfig *WebsocketConfig
|
||||
tlsConfig *tls.Config
|
||||
}
|
||||
|
||||
@ -93,7 +93,7 @@ func (c *Client) New(conn net.Conn, dst *DstAddr) (net.Conn, error) {
|
||||
var err error
|
||||
r := rand.Intn(len(c.user))
|
||||
if c.wsConfig != nil {
|
||||
conn, err = newWebsocketConn(conn, c.wsConfig)
|
||||
conn, err = NewWebsocketConn(conn, c.wsConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -145,14 +145,14 @@ func NewClient(config Config) (*Client, error) {
|
||||
}
|
||||
}
|
||||
|
||||
var wsConfig *websocketConfig
|
||||
var wsConfig *WebsocketConfig
|
||||
if config.NetWork == "ws" {
|
||||
wsConfig = &websocketConfig{
|
||||
host: host,
|
||||
path: config.WebSocketPath,
|
||||
headers: config.WebSocketHeaders,
|
||||
tls: config.TLS,
|
||||
tlsConfig: tlsConfig,
|
||||
wsConfig = &WebsocketConfig{
|
||||
Host: host,
|
||||
Path: config.WebSocketPath,
|
||||
Headers: config.WebSocketHeaders,
|
||||
TLS: config.TLS,
|
||||
TLSConfig: tlsConfig,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -19,12 +19,12 @@ type websocketConn struct {
|
||||
remoteAddr net.Addr
|
||||
}
|
||||
|
||||
type websocketConfig struct {
|
||||
host string
|
||||
path string
|
||||
headers map[string]string
|
||||
tls bool
|
||||
tlsConfig *tls.Config
|
||||
type WebsocketConfig struct {
|
||||
Host string
|
||||
Path string
|
||||
Headers map[string]string
|
||||
TLS bool
|
||||
TLSConfig *tls.Config
|
||||
}
|
||||
|
||||
// Read implements net.Conn.Read()
|
||||
@ -102,7 +102,7 @@ func (wsc *websocketConn) SetWriteDeadline(t time.Time) error {
|
||||
return wsc.conn.SetWriteDeadline(t)
|
||||
}
|
||||
|
||||
func newWebsocketConn(conn net.Conn, c *websocketConfig) (net.Conn, error) {
|
||||
func NewWebsocketConn(conn net.Conn, c *WebsocketConfig) (net.Conn, error) {
|
||||
dialer := &websocket.Dialer{
|
||||
NetDial: func(network, addr string) (net.Conn, error) {
|
||||
return conn, nil
|
||||
@ -113,25 +113,25 @@ func newWebsocketConn(conn net.Conn, c *websocketConfig) (net.Conn, error) {
|
||||
}
|
||||
|
||||
scheme := "ws"
|
||||
if c.tls {
|
||||
if c.TLS {
|
||||
scheme = "wss"
|
||||
dialer.TLSClientConfig = c.tlsConfig
|
||||
dialer.TLSClientConfig = c.TLSConfig
|
||||
}
|
||||
|
||||
host, port, _ := net.SplitHostPort(c.host)
|
||||
host, port, _ := net.SplitHostPort(c.Host)
|
||||
if (scheme == "ws" && port != "80") || (scheme == "wss" && port != "443") {
|
||||
host = c.host
|
||||
host = c.Host
|
||||
}
|
||||
|
||||
uri := url.URL{
|
||||
Scheme: scheme,
|
||||
Host: host,
|
||||
Path: c.path,
|
||||
Path: c.Path,
|
||||
}
|
||||
|
||||
headers := http.Header{}
|
||||
if c.headers != nil {
|
||||
for k, v := range c.headers {
|
||||
if c.Headers != nil {
|
||||
for k, v := range c.Headers {
|
||||
headers.Set(k, v)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user