protocol = websocketsecure

websocketsecure support in frpc
This commit is contained in:
stl0755 2019-08-14 10:58:39 +08:00
parent 134a46c00b
commit 59f35fe952
9 changed files with 13 additions and 11 deletions

View File

@ -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 websocketsecure")
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")

View File

@ -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 websocketsecure")
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")

View File

@ -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 websocketsecure")
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")

View File

@ -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 websocketsecure")
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")

View File

@ -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 websocketsecure")
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")

View File

@ -41,7 +41,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 websocketsecure, 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

View File

@ -189,7 +189,7 @@ func UnmarshalClientConfFromIni(defaultCfg *ClientCommonConf, content string) (c
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 != "websocketsecure" {
err = fmt.Errorf("Parse conf error: invalid protocol") err = fmt.Errorf("Parse conf error: invalid protocol")
return return
} }

View File

@ -203,7 +203,9 @@ func ConnectServerByProxy(proxyUrl string, protocol string, addr string) (c Conn
// 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 "websocketsecure":
return ConnectWebsocketServer(addr,"https","wss")
default: default:
return nil, fmt.Errorf("unsupport protocol: %s", protocol) return nil, fmt.Errorf("unsupport protocol: %s", protocol)
} }

View File

@ -81,14 +81,14 @@ func (p *WebsocketListener) Close() error {
} }
// addr: domain:port // addr: domain:port
func ConnectWebsocketServer(addr string) (Conn, error) { func ConnectWebsocketServer(addr string, httpProtocol string, wsProtocol string) (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