From 9c49df9d8798cc715629fda61243fb9512459c1a Mon Sep 17 00:00:00 2001 From: Dorian Niemiec Date: Wed, 7 Feb 2024 00:57:09 +0100 Subject: [PATCH] Update to SVR.JS 3.14.2 --- config.json | 54 +++------------------------------------ index.html | 61 +++++---------------------------------------- licenses/index.html | 8 +++--- serverSideScript.js | 1 + svr.js | 16 +++++++----- tests.html | 8 +++--- 6 files changed, 28 insertions(+), 120 deletions(-) diff --git a/config.json b/config.json index a2dd577..4a1ed30 100644 --- a/config.json +++ b/config.json @@ -28,59 +28,11 @@ ] }, { - "definingRegex": "/^\\/invoke500\\/\\?/", + "definingRegex": "/^\\/testdir_rewritten(?:$|[\\/?#])/", "replacements": [ { - "regex": "/\\/invoke500\\/\\?/", - "replacement": "/invoke500.svr?" - } - ] - }, - { - "definingRegex": "/^\\/invoke500\\/.+\\//", - "replacements": [ - { - "regex": "/\\/\\?/", - "replacement": "&" - }, - { - "regex": "/invoke500\\//", - "replacement": "invoke500.svr?" - }, - { - "regex": "/\\/(?!invoke500.svr?)/", - "replacement": "" - } - ] - }, - { - "definingRegex": "/^\\/invoke500\\/.+/", - "replacements": [ - { - "regex": "/\\?/", - "replacement": "&" - }, - { - "regex": "/invoke500\\//", - "replacement": "invoke500.svr?" - } - ] - }, - { - "definingRegex": "/^\\/invoke500\\//", - "replacements": [ - { - "regex": "/\\/invoke500\\//", - "replacement": "/invoke500.svr" - } - ] - }, - { - "definingRegex": "/^\\/invoke500$/", - "replacements": [ - { - "regex": "/\\/invoke500/", - "replacement": "/invoke500.svr" + "regex": "/^\\/testdir_rewritten($|[\\/?#])/", + "replacement": "/testdir$1" } ] } diff --git a/index.html b/index.html index 69a1c2f..be1e171 100644 --- a/index.html +++ b/index.html @@ -1,7 +1,7 @@ - SVR.JS 3.14.1 + SVR.JS 3.14.2 -

Welcome to SVR.JS 3.14.1

+

Welcome to SVR.JS 3.14.2



@@ -50,59 +50,11 @@       ]
    },
    {
-       "definingRegex": "/^\\/invoke500\\/\\?/",
+       "definingRegex": "/^\\/testdir_rewritten(?:$|[\\/?#])/",
      "replacements": [
        {
-           "regex": "/\\/invoke500\\/\\?/",
-           "replacement": "/invoke500.svr?"
-         }
-       ]
-     },
-     {
-       "definingRegex": "/^\\/invoke500\\/.+\\//",
-       "replacements": [
-         {
-           "regex": "/\\/\\?/",
-           "replacement": "&"
-         },
-         {
-           "regex": "/invoke500\\//",
-           "replacement": "invoke500.svr?"
-         },
-         {
-           "regex": "/\\/(?!invoke500.svr?)/",
-           "replacement": ""
-         }
-       ]
-     },
-     {
-       "definingRegex": "/^\\/invoke500\\/.+/",
-       "replacements": [
-         {
-           "regex": "/\\?/",
-           "replacement": "&"
-         },
-         {
-           "regex": "/invoke500\\//",
-           "replacement": "invoke500.svr?"
-         }
-       ]
-     },
-     {
-       "definingRegex": "/^\\/invoke500\\//",
-       "replacements": [
-         {
-           "regex": "/\\/invoke500\\//",
-           "replacement": "/invoke500.svr"
-         }
-       ]
-     },
-     {
-       "definingRegex": "/^\\/invoke500$/",
-       "replacements": [
-         {
-           "regex": "/\\/invoke500/",
-           "replacement": "/invoke500.svr"
+           "regex": "/^\\/testdir_rewritten($|[\\/?#])/",
+           "replacement": "/testdir$1"
        }
      ]
    }
@@ -134,8 +86,7 @@

Changes:


Tests
diff --git a/licenses/index.html b/licenses/index.html index e016068..c2b1a5a 100644 --- a/licenses/index.html +++ b/licenses/index.html @@ -1,7 +1,7 @@ - SVR.JS 3.14.1 Licenses + SVR.JS 3.14.2 Licenses -

SVR.JS 3.14.1 Licenses

-

SVR.JS 3.14.1

+

SVR.JS 3.14.2 Licenses

+

SVR.JS 3.14.2

MIT License

@@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-

Packages used by SVR.JS 3.14.1

+

Packages used by SVR.JS 3.14.2

License: MIT
diff --git a/serverSideScript.js b/serverSideScript.js index a362f05..730e4b1 100644 --- a/serverSideScript.js +++ b/serverSideScript.js @@ -21,6 +21,7 @@ // origHref - Original request URL without query (before URL rewriting) // redirect - Method to redirect. // parsePostData - Method to parse POST data. +// authUser - Authenticated HTTP user. //Along with elements added by this implementation: // disableEndElseCallbackExecute - Determines execution of elseCallback on end // filterHeaders - Removes invalid HTTP/1.0 headers diff --git a/svr.js b/svr.js index 7f9f01b..417b512 100644 --- a/svr.js +++ b/svr.js @@ -69,7 +69,7 @@ function deleteFolderRecursive(path) { } var os = require("os"); -var version = "3.14.1"; +var version = "3.14.2"; var singlethreaded = false; if (process.versions) process.versions.svrjs = version; // Inject SVR.JS into process.versions @@ -1655,7 +1655,7 @@ if (!disableMods) { if (fs.existsSync(SSJSPath) && fs.statSync(SSJSPath).isFile()) { try { // Prepend necessary modules and variables to the custom server side script - var modhead = "var readline = require('readline');\r\nvar os = require('os');\r\nvar http = require('http');\r\nvar url = require('url');\r\nvar fs = require('fs');\r\nvar path = require('path');\r\n" + (hexstrbase64 === undefined ? "" : "var hexstrbase64 = require('../hexstrbase64/index.js');\r\n") + (crypto.__disabled__ === undefined ? "var crypto = require('crypto');\r\nvar https = require('https');\r\n" : "") + "var stream = require('stream');\r\nvar customvar1;\r\nvar customvar2;\r\nvar customvar3;\r\nvar customvar4;\r\n\r\nfunction Mod() {}\r\nMod.prototype.callback = function callback(req, res, serverconsole, responseEnd, href, ext, uobject, search, defaultpage, users, page404, head, foot, fd, elseCallback, configJSON, callServerError, getCustomHeaders, origHref, redirect, parsePostData) {\r\nreturn function () {\r\nvar disableEndElseCallbackExecute = false;\r\nfunction filterHeaders(e){var r={};return Object.keys(e).forEach((function(t){null!==e[t]&&void 0!==e[t]&&(\"object\"==typeof e[t]?r[t]=JSON.parse(JSON.stringify(e[t])):r[t]=e[t])})),r}\r\nfunction checkHostname(e){if(void 0===e||\"*\"==e)return!0;if(req.headers.host&&0==e.indexOf(\"*.\")&&\"*.\"!=e){var r=e.substr(2);if(req.headers.host==r||req.headers.host.indexOf(\".\"+r)==req.headers.host.length-r.length-1)return!0}else if(req.headers.host&&req.headers.host==e)return!0;return!1}\r\nfunction checkHref(e){return href==e||\"win32\"==os.platform()&&href.toLowerCase()==e.toLowerCase()}\r\n"; + var modhead = "var readline = require('readline');\r\nvar os = require('os');\r\nvar http = require('http');\r\nvar url = require('url');\r\nvar fs = require('fs');\r\nvar path = require('path');\r\n" + (hexstrbase64 === undefined ? "" : "var hexstrbase64 = require('../hexstrbase64/index.js');\r\n") + (crypto.__disabled__ === undefined ? "var crypto = require('crypto');\r\nvar https = require('https');\r\n" : "") + "var stream = require('stream');\r\nvar customvar1;\r\nvar customvar2;\r\nvar customvar3;\r\nvar customvar4;\r\n\r\nfunction Mod() {}\r\nMod.prototype.callback = function callback(req, res, serverconsole, responseEnd, href, ext, uobject, search, defaultpage, users, page404, head, foot, fd, elseCallback, configJSON, callServerError, getCustomHeaders, origHref, redirect, parsePostData, authUser) {\r\nreturn function () {\r\nvar disableEndElseCallbackExecute = false;\r\nfunction filterHeaders(e){var r={};return Object.keys(e).forEach((function(t){null!==e[t]&&void 0!==e[t]&&(\"object\"==typeof e[t]?r[t]=JSON.parse(JSON.stringify(e[t])):r[t]=e[t])})),r}\r\nfunction checkHostname(e){if(void 0===e||\"*\"==e)return!0;if(req.headers.host&&0==e.indexOf(\"*.\")&&\"*.\"!=e){var r=e.substr(2);if(req.headers.host==r||req.headers.host.indexOf(\".\"+r)==req.headers.host.length-r.length-1)return!0}else if(req.headers.host&&req.headers.host==e)return!0;return!1}\r\nfunction checkHref(e){return href==e||\"win32\"==os.platform()&&href.toLowerCase()==e.toLowerCase()}\r\n"; var modfoot = "\r\nif(!disableEndElseCallbackExecute) {\r\ntry{\r\nelseCallback();\r\n} catch(err) {\r\n}\r\n}\r\n}\r\n}\r\nmodule.exports = Mod;"; // Write the modified server side script to the temp folder fs.writeFileSync(__dirname + "/temp/" + tempServerSideScriptName, modhead + fs.readFileSync(SSJSPath) + modfoot); @@ -3380,6 +3380,9 @@ if (!cluster.isPrimary) { } } + // Authenticated user variable + var authUser = null; + // URL-related objects. var uobject = parseURL(req.url); var search = uobject.search; @@ -3417,7 +3420,7 @@ if (!cluster.isPrimary) { } useMods.reverse().forEach(function (modO) { - modFunction = modO.callback(req, res, serverconsole, responseEnd, href, ext, uobject, search, "index.html", users, page404, head, foot, "", modFunction, configJSON, callServerError, getCustomHeaders, origHref, redirect, parsePostData); + modFunction = modO.callback(req, res, serverconsole, responseEnd, href, ext, uobject, search, "index.html", users, page404, head, foot, "", modFunction, configJSON, callServerError, getCustomHeaders, origHref, redirect, parsePostData, authUser); }); // Execute modFunction @@ -3426,7 +3429,7 @@ if (!cluster.isPrimary) { var vresCalled = false; - function vres(req, res, serverconsole, responseEnd, href, ext, uobject, search, defaultpage, users, page404, head, foot, fd, callServerError, getCustomHeaders, origHref, redirect, parsePostData) { + function vres(req, res, serverconsole, responseEnd, href, ext, uobject, search, defaultpage, users, page404, head, foot, fd, callServerError, getCustomHeaders, origHref, redirect, parsePostData, authUser) { return function () { if (vresCalled) { process.emitWarning("elseCallback() invoked multiple times.", { @@ -4745,8 +4748,9 @@ if (!cluster.isPrimary) { } } serverconsole.reqmessage("Client is logged in as \"" + String(username).replace(/[\r\n]/g, "") + "\"."); + authUser = username; redirectTrailingSlashes(function () { - modExecute(mods, vres(req, res, serverconsole, responseEnd, href, ext, uobject, search, "index.html", users, page404, head, foot, "", callServerError, getCustomHeaders, origHref, redirect, parsePostData)); + modExecute(mods, vres(req, res, serverconsole, responseEnd, href, ext, uobject, search, "index.html", users, page404, head, foot, "", callServerError, getCustomHeaders, origHref, redirect, parsePostData, authUser)); }); } } catch (err) { @@ -4795,7 +4799,7 @@ if (!cluster.isPrimary) { } } else { redirectTrailingSlashes(function () { - modExecute(mods, vres(req, res, serverconsole, responseEnd, href, ext, uobject, search, "index.html", users, page404, head, foot, "", callServerError, getCustomHeaders, origHref, redirect, parsePostData)); + modExecute(mods, vres(req, res, serverconsole, responseEnd, href, ext, uobject, search, "index.html", users, page404, head, foot, "", callServerError, getCustomHeaders, origHref, redirect, parsePostData, authUser)); }); } } diff --git a/tests.html b/tests.html index e347035..cb08f76 100644 --- a/tests.html +++ b/tests.html @@ -1,7 +1,7 @@ - SVR.JS 3.14.1 Tests + SVR.JS 3.14.2 Tests -

SVR.JS 3.14.1 Tests

+

SVR.JS 3.14.2 Tests

Directory (without trailing slash)

Directory (with query)

@@ -32,8 +32,8 @@

Proxy test

-

URL rewriting test (/invoke500/aprilfools => /invoke500.svr?aprilfools)

- +

URL rewriting test (/testdir_rewritten => /testdir)

+