diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index 95672578..d3a33a66 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -183,37 +183,8 @@ if (!Object.prototype.getCaseInsensitiveKey) { } } -function isConfiguredService(service) { - if (minisrv_config.services[service]) { - if (!minisrv_config.services[service].disabled) return true; - } - return false; -} - function getServiceString(service, overrides = {}) { - // used externally by service scripts - if (service === "all") { - var out = ""; - Object.keys(minisrv_config.services).sort().forEach(function (k) { - if (!isConfiguredService(k)) return true; - if (minisrv_config.services[k].pc_services) return true; - - if (overrides.exceptions) { - Object.keys(overrides.exceptions).forEach(function (j) { - if (k != overrides.exceptions[j]) out += minisrv_config.services[k].toString(overrides) + "\n"; - }); - } else { - out += minisrv_config.services[k].toString(overrides) + "\n"; - } - }); - return out; - } else { - if (!minisrv_config.services[service]) { - throw ("SERVICE ERROR: Attempted to provision unconfigured service: " + service) - } else { - return minisrv_config.services[service].toString(overrides); - } - } + return wtvshared.getServiceString(service, overrides); } @@ -239,7 +210,7 @@ var runScriptInVM = function (script_data, user_contextObj = {}, privileged = fa // try to make the debug name var debug_name = (filename) ? filename.split(path.sep) : null; if (debug_name) { - if (isConfiguredService(debug_name[debug_name.length - 2])) + if (wtvshared.isConfiguredService(debug_name[debug_name.length - 2])) // service:/filename debug_name = debug_name[debug_name.length - 2] + ":/" + debug_name[debug_name.length - 1]; else @@ -812,8 +783,8 @@ minisrv-no-mail-count: true`; if (original_service_name == service_name) console.log(" * " + ((ssl) ? "SSL " : "") + "PC request on service " + service_name + " for " + request_headers.request_url, 'on', socket.id); else console.log(" * " + ((ssl) ? "SSL " : "") + "PC request on service " + original_service_name + " (Service Vault " + service_name + ") for " + request_headers.request_url, 'on', socket.id); } - // Check URL for :/, but not :// (to differentiate wtv urls) - if (shortURL.indexOf(':/') >= 0 && shortURL.indexOf('://') == -1) { + + if (shortURL.indexOf(':/') >= 0) { var ssid = socket.ssid; if (ssid == null) { // prevent possible injection attacks via malformed SSID and filesystem SessionStore diff --git a/zefie_wtvp_minisrv/includes/ServiceVault/wtvchat/catchall.js b/zefie_wtvp_minisrv/includes/ServiceVault/wtvchat/catchall.js new file mode 100644 index 00000000..78a3b8b1 --- /dev/null +++ b/zefie_wtvp_minisrv/includes/ServiceVault/wtvchat/catchall.js @@ -0,0 +1,21 @@ +var minisrv_service_file = true; + +var urldata = request_headers.request_url.split(":"); +delete urldata[0]; + +urldata = urldata.join(":").substring(1); +console.log(urldata); +while (urldata.substring(0, 1) == "/") urldata = urldata.substring(1); + +var server = urldata.split('/')[0]; +var port = 6667; + +if (server.indexOf(":") > 0) { + port = server.split(":")[1]; + server = server.split(":")[0]; +} +channel = urldata.split('/')[1] + +var dest_url = "wtv-chat:/MakeChatPage?host=" + server + "&port=" + port + "&channel=" + channel; +headers = `300 Moved +Location: ${dest_url}` diff --git a/zefie_wtvp_minisrv/includes/classes/WTVShared.js b/zefie_wtvp_minisrv/includes/classes/WTVShared.js index 7f853dd3..d56e4416 100644 --- a/zefie_wtvp_minisrv/includes/classes/WTVShared.js +++ b/zefie_wtvp_minisrv/includes/classes/WTVShared.js @@ -855,6 +855,40 @@ class WTVShared { }); } + isConfiguredService(service) { + if (this.minisrv_config.services[service]) { + if (!this.minisrv_config.services[service].disabled) return true; + } + return false; + } + + getServiceString(service, overrides = {}) { + // used externally by service scripts + if (service === "all") { + var self = this; + var out = ""; + Object.keys(this.minisrv_config.services).sort().forEach(function (k) { + if (!self.isConfiguredService(k)) return true; + if (self.minisrv_config.services[k].pc_services) return true; + + if (overrides.exceptions) { + Object.keys(overrides.exceptions).forEach(function (j) { + if (k != overrides.exceptions[j]) out += self.minisrv_config.services[k].toString(overrides) + "\n"; + }); + } else { + out += self.minisrv_config.services[k].toString(overrides) + "\n"; + } + }); + return out; + } else { + if (!this.minisrv_config.services[service]) { + throw ("SERVICE ERROR: Attempted to provision unconfigured service: " + service) + } else { + return this.minisrv_config.services[service].toString(overrides); + } + } + } + doErrorPage(code, data = null, details = null, pc_mode = false, wtv_reset = false) { var headers = null; var minisrv_config = this.minisrv_config; diff --git a/zefie_wtvp_minisrv/includes/config.json b/zefie_wtvp_minisrv/includes/config.json index 6e8d404b..46160c59 100644 --- a/zefie_wtvp_minisrv/includes/config.json +++ b/zefie_wtvp_minisrv/includes/config.json @@ -209,6 +209,17 @@ "port": 1630, "connections": 3 }, + "wtvchat": { + "port": 1630, + "nobind": true, + "flags": "0x00000004" + }, + "irc": { + "port": 1630, + "nobind": true, + "flags": "0x00000004", + "servicevault_dir": "wtvchat" + }, "wtv-disk": { // wtv-disk (used for DiskMaps) "port": 1635, diff --git a/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj b/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj index ce4cee72..631311da 100644 --- a/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj +++ b/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj @@ -196,6 +196,9 @@ + + Code + Code @@ -2340,6 +2343,7 @@ +