diff --git a/src/main.go b/src/main.go index 263334c..55d5274 100644 --- a/src/main.go +++ b/src/main.go @@ -52,7 +52,7 @@ var ( name = "Zoraxy" version = "3.0.1" nodeUUID = "generic" - development = true //Set this to false to use embedded web fs + development = false //Set this to false to use embedded web fs bootTime = time.Now().Unix() /* diff --git a/src/reverseproxy.go b/src/reverseproxy.go index 10e06bb..0454992 100644 --- a/src/reverseproxy.go +++ b/src/reverseproxy.go @@ -215,6 +215,13 @@ func ReverseProxyHandleAddEndpoint(w http.ResponseWriter, r *http.Request) { requireBasicAuth := (rba == "true") + // Bypass WebSocket Origin Check + strbpwsorg, _ := utils.PostPara(r, "bpwsorg") + if strbpwsorg == "" { + strbpwsorg = "false" + } + bypassWebsocketOriginCheck := (strbpwsorg == "true") + //Prase the basic auth to correct structure cred, _ := utils.PostPara(r, "cred") basicAuthCredentials := []*dynamicproxy.BasicAuthCredentials{} @@ -256,9 +263,10 @@ func ReverseProxyHandleAddEndpoint(w http.ResponseWriter, r *http.Request) { RootOrMatchingDomain: rootOrMatchingDomain, Domain: endpoint, //TLS - RequireTLS: useTLS, - BypassGlobalTLS: useBypassGlobalTLS, - SkipCertValidations: skipTlsValidation, + RequireTLS: useTLS, + BypassGlobalTLS: useBypassGlobalTLS, + SkipCertValidations: skipTlsValidation, + SkipWebSocketOriginCheck: bypassWebsocketOriginCheck, //VDir VirtualDirectories: []*dynamicproxy.VirtualDirectoryEndpoint{}, //Custom headers @@ -305,12 +313,13 @@ func ReverseProxyHandleAddEndpoint(w http.ResponseWriter, r *http.Request) { //Write the root options to file rootRoutingEndpoint := dynamicproxy.ProxyEndpoint{ - ProxyType: dynamicproxy.ProxyType_Root, - RootOrMatchingDomain: "/", - Domain: endpoint, - RequireTLS: useTLS, - BypassGlobalTLS: false, - SkipCertValidations: false, + ProxyType: dynamicproxy.ProxyType_Root, + RootOrMatchingDomain: "/", + Domain: endpoint, + RequireTLS: useTLS, + BypassGlobalTLS: false, + SkipCertValidations: false, + SkipWebSocketOriginCheck: true, DefaultSiteOption: defaultSiteOption, DefaultSiteValue: dsVal, @@ -381,6 +390,7 @@ func ReverseProxyHandleEditEndpoint(w http.ResponseWriter, r *http.Request) { } bypassGlobalTLS := (bpgtls == "true") + // Basic Auth rba, _ := utils.PostPara(r, "bauth") if rba == "" { rba = "false" @@ -388,6 +398,13 @@ func ReverseProxyHandleEditEndpoint(w http.ResponseWriter, r *http.Request) { requireBasicAuth := (rba == "true") + // Bypass WebSocket Origin Check + strbpwsorg, _ := utils.PostPara(r, "bpwsorg") + if strbpwsorg == "" { + strbpwsorg = "false" + } + bypassWebsocketOriginCheck := (strbpwsorg == "true") + //Load the previous basic auth credentials from current proxy rules targetProxyEntry, err := dynamicProxyRouter.LoadProxy(rootNameOrMatchingDomain) if err != nil { @@ -402,6 +419,7 @@ func ReverseProxyHandleEditEndpoint(w http.ResponseWriter, r *http.Request) { newProxyEndpoint.BypassGlobalTLS = bypassGlobalTLS newProxyEndpoint.SkipCertValidations = skipTlsValidation newProxyEndpoint.RequireBasicAuth = requireBasicAuth + newProxyEndpoint.SkipWebSocketOriginCheck = bypassWebsocketOriginCheck //Prepare to replace the current routing rule readyRoutingRule, err := dynamicProxyRouter.PrepareProxyRoute(newProxyEndpoint) diff --git a/src/web/components/httprp.html b/src/web/components/httprp.html index ab0b896..0af8ded 100644 --- a/src/web/components/httprp.html +++ b/src/web/components/httprp.html @@ -153,6 +153,13 @@ if (requireBasicAuth){ checkstate = "checked"; } + + let skipWebSocketOriginCheck = payload.SkipWebSocketOriginCheck; + let wsCheckstate = ""; + if (skipWebSocketOriginCheck){ + wsCheckstate = "checked"; + } + column.empty().append(`