protocol = wss
websocketsecure support in frpc
This commit is contained in:
parent
df18375308
commit
c26c9432b1
@ -28,7 +28,7 @@ import (
|
|||||||
func init() {
|
func init() {
|
||||||
httpCmd.PersistentFlags().StringVarP(&serverAddr, "server_addr", "s", "127.0.0.1:7000", "frp server's address")
|
httpCmd.PersistentFlags().StringVarP(&serverAddr, "server_addr", "s", "127.0.0.1:7000", "frp server's address")
|
||||||
httpCmd.PersistentFlags().StringVarP(&user, "user", "u", "", "user")
|
httpCmd.PersistentFlags().StringVarP(&user, "user", "u", "", "user")
|
||||||
httpCmd.PersistentFlags().StringVarP(&protocol, "protocol", "p", "tcp", "tcp or kcp or websocket")
|
httpCmd.PersistentFlags().StringVarP(&protocol, "protocol", "p", "tcp", "tcp or kcp or websocket or wss")
|
||||||
httpCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
httpCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
||||||
httpCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
httpCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
||||||
httpCmd.PersistentFlags().StringVarP(&logFile, "log_file", "", "console", "console or file path")
|
httpCmd.PersistentFlags().StringVarP(&logFile, "log_file", "", "console", "console or file path")
|
||||||
|
@ -28,7 +28,7 @@ import (
|
|||||||
func init() {
|
func init() {
|
||||||
httpsCmd.PersistentFlags().StringVarP(&serverAddr, "server_addr", "s", "127.0.0.1:7000", "frp server's address")
|
httpsCmd.PersistentFlags().StringVarP(&serverAddr, "server_addr", "s", "127.0.0.1:7000", "frp server's address")
|
||||||
httpsCmd.PersistentFlags().StringVarP(&user, "user", "u", "", "user")
|
httpsCmd.PersistentFlags().StringVarP(&user, "user", "u", "", "user")
|
||||||
httpsCmd.PersistentFlags().StringVarP(&protocol, "protocol", "p", "tcp", "tcp or kcp or websocket")
|
httpsCmd.PersistentFlags().StringVarP(&protocol, "protocol", "p", "tcp", "tcp or kcp or websocket or wss")
|
||||||
httpsCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
httpsCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
||||||
httpsCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
httpsCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
||||||
httpsCmd.PersistentFlags().StringVarP(&logFile, "log_file", "", "console", "console or file path")
|
httpsCmd.PersistentFlags().StringVarP(&logFile, "log_file", "", "console", "console or file path")
|
||||||
|
@ -27,7 +27,7 @@ import (
|
|||||||
func init() {
|
func init() {
|
||||||
stcpCmd.PersistentFlags().StringVarP(&serverAddr, "server_addr", "s", "127.0.0.1:7000", "frp server's address")
|
stcpCmd.PersistentFlags().StringVarP(&serverAddr, "server_addr", "s", "127.0.0.1:7000", "frp server's address")
|
||||||
stcpCmd.PersistentFlags().StringVarP(&user, "user", "u", "", "user")
|
stcpCmd.PersistentFlags().StringVarP(&user, "user", "u", "", "user")
|
||||||
stcpCmd.PersistentFlags().StringVarP(&protocol, "protocol", "p", "tcp", "tcp or kcp or websocket")
|
stcpCmd.PersistentFlags().StringVarP(&protocol, "protocol", "p", "tcp", "tcp or kcp or websocket or wss")
|
||||||
stcpCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
stcpCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
||||||
stcpCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
stcpCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
||||||
stcpCmd.PersistentFlags().StringVarP(&logFile, "log_file", "", "console", "console or file path")
|
stcpCmd.PersistentFlags().StringVarP(&logFile, "log_file", "", "console", "console or file path")
|
||||||
|
@ -27,7 +27,7 @@ import (
|
|||||||
func init() {
|
func init() {
|
||||||
udpCmd.PersistentFlags().StringVarP(&serverAddr, "server_addr", "s", "127.0.0.1:7000", "frp server's address")
|
udpCmd.PersistentFlags().StringVarP(&serverAddr, "server_addr", "s", "127.0.0.1:7000", "frp server's address")
|
||||||
udpCmd.PersistentFlags().StringVarP(&user, "user", "u", "", "user")
|
udpCmd.PersistentFlags().StringVarP(&user, "user", "u", "", "user")
|
||||||
udpCmd.PersistentFlags().StringVarP(&protocol, "protocol", "p", "tcp", "tcp or kcp or websocket")
|
udpCmd.PersistentFlags().StringVarP(&protocol, "protocol", "p", "tcp", "tcp or kcp or websocket or wss")
|
||||||
udpCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
udpCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
||||||
udpCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
udpCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
||||||
udpCmd.PersistentFlags().StringVarP(&logFile, "log_file", "", "console", "console or file path")
|
udpCmd.PersistentFlags().StringVarP(&logFile, "log_file", "", "console", "console or file path")
|
||||||
|
@ -27,7 +27,7 @@ import (
|
|||||||
func init() {
|
func init() {
|
||||||
xtcpCmd.PersistentFlags().StringVarP(&serverAddr, "server_addr", "s", "127.0.0.1:7000", "frp server's address")
|
xtcpCmd.PersistentFlags().StringVarP(&serverAddr, "server_addr", "s", "127.0.0.1:7000", "frp server's address")
|
||||||
xtcpCmd.PersistentFlags().StringVarP(&user, "user", "u", "", "user")
|
xtcpCmd.PersistentFlags().StringVarP(&user, "user", "u", "", "user")
|
||||||
xtcpCmd.PersistentFlags().StringVarP(&protocol, "protocol", "p", "tcp", "tcp or kcp or websocket")
|
xtcpCmd.PersistentFlags().StringVarP(&protocol, "protocol", "p", "tcp", "tcp or kcp or websocket or wss")
|
||||||
xtcpCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
xtcpCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "auth token")
|
||||||
xtcpCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
xtcpCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "info", "log level")
|
||||||
xtcpCmd.PersistentFlags().StringVarP(&logFile, "log_file", "", "console", "console or file path")
|
xtcpCmd.PersistentFlags().StringVarP(&logFile, "log_file", "", "console", "console or file path")
|
||||||
|
@ -46,7 +46,7 @@ user = your_name
|
|||||||
login_fail_exit = true
|
login_fail_exit = true
|
||||||
|
|
||||||
# communication protocol used to connect to server
|
# communication protocol used to connect to server
|
||||||
# now it supports tcp and kcp and websocket, default is tcp
|
# now it supports tcp and kcp and websocket and wss, default is tcp
|
||||||
protocol = tcp
|
protocol = tcp
|
||||||
|
|
||||||
# if tls_enable is true, frpc will connect frps by tls
|
# if tls_enable is true, frpc will connect frps by tls
|
||||||
|
@ -264,7 +264,7 @@ func UnmarshalClientConfFromIni(content string) (cfg ClientCommonConf, err error
|
|||||||
|
|
||||||
if tmpStr, ok = conf.Get("common", "protocol"); ok {
|
if tmpStr, ok = conf.Get("common", "protocol"); ok {
|
||||||
// Now it only support tcp and kcp and websocket.
|
// Now it only support tcp and kcp and websocket.
|
||||||
if tmpStr != "tcp" && tmpStr != "kcp" && tmpStr != "websocket" {
|
if tmpStr != "tcp" && tmpStr != "kcp" && tmpStr != "websocket" && tmpStr != "wss" {
|
||||||
err = fmt.Errorf("Parse conf error: invalid protocol")
|
err = fmt.Errorf("Parse conf error: invalid protocol")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -221,7 +221,9 @@ func ConnectServerByProxy(proxyURL string, protocol string, addr string) (c net.
|
|||||||
// http proxy is not supported for kcp
|
// http proxy is not supported for kcp
|
||||||
return ConnectServer(protocol, addr)
|
return ConnectServer(protocol, addr)
|
||||||
case "websocket":
|
case "websocket":
|
||||||
return ConnectWebsocketServer(addr)
|
return ConnectWebsocketServer(addr, "http", "ws")
|
||||||
|
case "wss":
|
||||||
|
return ConnectWebsocketServer(addr, "https", "wss")
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unsupport protocol: %s", protocol)
|
return nil, fmt.Errorf("unsupport protocol: %s", protocol)
|
||||||
}
|
}
|
||||||
|
@ -79,14 +79,14 @@ func (p *WebsocketListener) Addr() net.Addr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// addr: domain:port
|
// addr: domain:port
|
||||||
func ConnectWebsocketServer(addr string) (net.Conn, error) {
|
func ConnectWebsocketServer(addr string, httpProtocol string, wsProtocol string) (net.Conn, error) {
|
||||||
addr = "ws://" + addr + FrpWebsocketPath
|
addr = wsProtocol + "://" + addr + FrpWebsocketPath
|
||||||
uri, err := url.Parse(addr)
|
uri, err := url.Parse(addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
origin := "http://" + uri.Host
|
origin := httpProtocol + "://" + uri.Host
|
||||||
cfg, err := websocket.NewConfig(addr, origin)
|
cfg, err := websocket.NewConfig(addr, origin)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
Loading…
Reference in New Issue
Block a user