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 @@
+