Add upgrade authorization (#55)

Former-commit-id: fc0fd8c3e86b05bf70b375fcd9003bfb3c3cef2f
Former-commit-id: 5e9886504a259694b3f701facb3a157c58c51c08 [formerly 91dcf07282fdb8eb4509ece65e4319afc2e0e63a] [formerly 0e4ab369f6dccd4345abcb231dede9792c6da1b6 [formerly 08dd7bbfe8f0e83f4da3a5cd075829879ed7708e [formerly 08dd7bbfe8f0e83f4da3a5cd075829879ed7708e [formerly 08dd7bbfe8f0e83f4da3a5cd075829879ed7708e [formerly 110b575813ba5bc29f6781c186bc717b902b19e8]]]]]
Former-commit-id: 246c512eb0079381e71025289263128d3276b033 [formerly 646016a7440f79a4cd780592673886d9fb56e666]
Former-commit-id: 3566d8c6182750caecb4d12efa1b99f2907cefd0
Former-commit-id: ab0c88e833bdf4880ceb54e97631437365989730
Former-commit-id: 2a034de4c8ae116dbb9417959983e6efb219a4a3
Former-commit-id: 3b0808aae98269da1ee78f37c1843dcd2b1a7434 [formerly 2ee9122afbd141868e78bb428c41cd05f65ac134]
Former-commit-id: 7272db885b47475f33ca39d9bdbe2191159664ff
This commit is contained in:
Dmytro Meleshko 2020-10-27 14:53:46 +02:00 committed by GitHub
parent 97cc207e4d
commit ce3a225dfc
3 changed files with 14 additions and 1 deletions

View file

@ -31,6 +31,8 @@ data WsTunnel = WsTunnel
, verbose :: Bool
, quiet :: Bool
, pathPrefix :: String
, wsTunnelCredentials
:: String
} deriving (Show, Data, Typeable)
data WsServerInfo = WsServerInfo
@ -61,6 +63,10 @@ cmdLine = WsTunnel
, pathPrefix = def &= explicit &= name "upgradePathPrefix"
&= help "Use a specific prefix that will show up in the http path in the upgrade request. Useful if you need to route requests server side but don't have vhosts"
&= typ "String" &= groupname "Client options"
, wsTunnelCredentials
= def &= explicit &= name "upgradeCredentials"
&= help "Credentials for the Basic HTTP authorization type sent with the upgrade request."
&= typ "USER[:PASS]"
, proxy = def &= explicit &= name "p" &= name "httpProxy"
&= help "If set, will use this proxy to connect to the server" &= typ "USER:PASS@HOST:PORT"
, soMark = def &= explicit &= name "soMark"
@ -220,6 +226,7 @@ runApp cfg serverInfo
, proxySetting = parseProxyInfo (proxy cfg)
, useSocks = False
, upgradePrefix = pathPrefix cfg
, upgradeCredentials = BC.pack $ wsTunnelCredentials cfg
, udpTimeout = Main.udpTimeout cfg
}
@ -236,6 +243,7 @@ runApp cfg serverInfo
, proxySetting = parseProxyInfo (proxy cfg)
, useSocks = False
, upgradePrefix = pathPrefix cfg
, upgradeCredentials = BC.pack $ wsTunnelCredentials cfg
, udpTimeout = Main.udpTimeout cfg
}
@ -252,6 +260,7 @@ runApp cfg serverInfo
, proxySetting = parseProxyInfo (proxy cfg)
, useSocks = False
, upgradePrefix = pathPrefix cfg
, upgradeCredentials = BC.pack $ wsTunnelCredentials cfg
, udpTimeout = Main.udpTimeout cfg
}
@ -268,5 +277,6 @@ runApp cfg serverInfo
, proxySetting = parseProxyInfo (proxy cfg)
, useSocks = True
, upgradePrefix = pathPrefix cfg
, upgradeCredentials = BC.pack $ wsTunnelCredentials cfg
, udpTimeout = Main.udpTimeout cfg
}

View file

@ -65,7 +65,8 @@ tunnelingClientP cfg@TunnelSettings{..} app conn = onError $ do
debug "Oppening Websocket stream"
stream <- connectionToStream conn
ret <- WS.runClientWithStream stream serverHost (toPath cfg) WS.defaultConnectionOptions [] run
let headers = if not (null upgradeCredentials) then [("Authorization", "Basic " <> B64.encode upgradeCredentials)] else []
ret <- WS.runClientWithStream stream serverHost (toPath cfg) WS.defaultConnectionOptions headers run
debug "Closing Websocket stream"
return ret

View file

@ -77,6 +77,8 @@ data TunnelSettings = TunnelSettings
, useTls :: Bool
, useSocks :: Bool
, upgradePrefix :: String
, upgradeCredentials
:: ByteString
, udpTimeout :: Int
}