Skip to content

Commit cc6f847

Browse files
Update webserver.js
added check for relaystate saml and regex check
1 parent 763f76b commit cc6f847

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

webserver.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2837,6 +2837,17 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
28372837
res.set('Content-Type', 'text/html');
28382838
let url = domain.url;
28392839
if (Object.keys(req.query).length > 0) { url += "?" + Object.keys(req.query).map(function(key) { return encodeURIComponent(key) + "=" + encodeURIComponent(req.query[key]); }).join("&"); }
2840+
2841+
// check for relaystate is set, test against configured server name and accepted query params
2842+
if(req.body.RelayState !== undefined){
2843+
var relayState = decodeURIComponent(req.body.RelayState)
2844+
var serverName = (obj.getWebServerName(domain, req)).replaceAll('.','\\.')
2845+
var regex = new RegExp('(?<=(https:\\\/\\\/(.+?\\.)?'+ serverName + ')\\\/?.*((?<=[\\?&])gotodevicename=|gotonode=|gotodeviceip=(((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4})|viewmode=(\\d+)(?=[\\&]|\\b)))')
2846+
if(regex.test(relayState)){
2847+
url = relayState
2848+
}
2849+
}
2850+
28402851
res.end('<html><head><meta http-equiv="refresh" content=0;url="' + url + '"></head><body></body></html>');
28412852
}
28422853

0 commit comments

Comments
 (0)