Skip to content

Commit

Permalink
Update to 2.15.3
Browse files Browse the repository at this point in the history
  • Loading branch information
andr-bot1 committed Jan 14, 2025
1 parent b64aed8 commit a429d04
Show file tree
Hide file tree
Showing 7 changed files with 129 additions and 67 deletions.
30 changes: 4 additions & 26 deletions examples/apiprovider/api_example.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,34 +55,12 @@ var p,
};
for (p in paths) middlewarePaths[p] = true;

const LiveSessions = {};

function bakeCookie(request, response) {
let cook = request.headers.cookie;
let session = null;
let cookieobj = new Cookies();
cookieobj.debug = true;
cookieobj.setCookiePath = true;
cookieobj.setCookieExpires = true;
cookieobj.parseCookieRequest(request);
request.cookieObject = cookieobj;
console.log("\x1b[34m #Middleware Cookie:\x1b[0m", cook, cookieobj.cookieMap);
if (!cookieobj.cookieMap.session) {
console.log("WRITE NEW COOKIE");
cookieobj.writeCookie(cookieobj.responseHeaders, "session", server.rndstr(32), 30, true);
cookieobj.transformCookieObject(cookieobj.responseHeaders, false, response);
console.log("RESPONSE COOKIE", cookieobj.responseHeaders["set-cookie"]);
session = cookieobj.readCookie(cookieobj.responseHeaders["set-cookie-object"], "session", "session");
} else {
session = cookieobj.cookieMap.session;
}
if (!LiveSessions[session]) LiveSessions[session] = { time: new Date(), count: 0 };
LiveSessions[session].count++;
console.log("Middleware Live Session Count:", session, LiveSessions[session].count);
}
const CookieHelperModule = require("zetaret.node.utils.web::CookieHelper");
CookieHelperModule.settings.debug = true;
CookieHelperModule.settings.rndstr = (rl) => server.rndstr(rl);

server.middleware.push(function (request, response, midobj) {
bakeCookie(request, response);
CookieHelperModule.bakeCookie(request, response);

var uri = response.__splitUrl.pages;
console.log("\x1b[36m #Process Middleware first:\x1b[0m", uri);
Expand Down
50 changes: 11 additions & 39 deletions examples/htmlserverload/server_example.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,36 +44,17 @@ for (var p in PAGES) {
};
}

function exportServerVar(name, json, pretty) {
return "var " + name + "=" + JSON.stringify(json, null, pretty ? 2 : null);
}

var currentSessionData = { profileName: "LoggedUser1", profileDescription: "Logged User Description" };

const ob_classes = {};
const ob_output_css = {};
ob_classes.home = {
const obfuscateMod = require("zetaret.node.utils.html::ObfuscateCSSHelper");
const replaceHTMLMod = require("zetaret.node.utils.html::ReplaceHTMLParams");

var homeCSS = {
serverexam: { "padding": "4px", "background": "#aaa", "border-radius": "2px", "display": "block" },
proname: { "padding": "2px", "color": "#333", "font-weight": "bold", "display": "block" },
prodesc: { padding: "1px", color: "666", display: "block" },
};

function obfuscateCSS(id) {
var css = ob_classes[id];
var cssout = [];
ob_output_css[id] = {};
for (var c in css) {
var cv = css[c];
var cvstr = [];
for (var v in cv) {
var cvv = cv[v];
cvstr.push(v + ":" + cvv + ";");
}
ob_output_css[c] = "_" + server.rndstr(16);
cssout.push("." + ob_output_css[c] + "{" + cvstr.join("") + "}");
}
return cssout.join("\n");
}
obfuscateMod.setClassName("home", homeCSS);

const watchers = htcache.getWatchers(null, 500, true, true);
function decorateParser(hpinst, o, p, op) {
Expand All @@ -82,12 +63,12 @@ function decorateParser(hpinst, o, p, op) {
hpinst.exeMethods.addDataHeadScript = function (el, htcache, hpinst, p, op) {
console.log("#addDataHeadScript", p, el);
let expvar = { any: { name: "server" }, num: 3, bool: true, tostr: "string", time: new Date().toISOString() };
el.elements.push(exportServerVar("exportedVar", expvar));
el.elements.push(replaceHTMLMod.exportServerVar("exportedVar", expvar));
};
hpinst.exeMethods.addDataHeadScript2 = function (el, htcache, hpinst, p, op) {
console.log("#addDataHeadScript2", p, el);
let expvar = { anyData2: { name2: "fromServer" }, num2: 3, bool2: true, tostr2: "string" };
el.elements.push(exportServerVar("exportedVar2", expvar, true));
el.elements.push(replaceHTMLMod.exportServerVar("exportedVar2", expvar, true));
};
hpinst.exeMethods.exeAppScreen = function (el, htcache, hpinst, p, op) {
console.log("#exeAppScreen", p, el);
Expand All @@ -96,17 +77,15 @@ function decorateParser(hpinst, o, p, op) {
};
hpinst.exeMethods.exeProfileDescription = function (el, htcache, hpinst, p, op) {
console.log("#exeProfileDescription", p, el);
el.elements[0] = replaceParams(el.elements[0], currentSessionData);
el.elements[0] = replaceHTMLMod.replaceParams(el.elements[0], currentSessionData);
};
hpinst.exeMethods.obfuscateCSS = function (el, htcache, hpinst, p, op) {
console.log("#obfuscateCSS", p, el);
el.elements[0] = obfuscateCSS("home");
el.elements[0] = obfuscateMod.obfuscateCSS("home", (rl) => server.rndstr(rl));
};
hpinst.exeMethods.applyobcls = function (el, htcache, hpinst, p, op) {
console.log("#applyobcls", p, el);
if (!el.attr.class) el.attr.class = "";
el.attr.class += ob_output_css[el.attr.obcls];
if (hpinst.exeDeleteOnSet) delete el.attr.obcls;
obfuscateMod.applyObCSS(el, hpinst);
};
}
htcache.setPages(PAGES, htmlparser.HTMLParser, watchers, true, decorateParser);
Expand All @@ -115,17 +94,10 @@ function isLocal(req) {
return ["::1", "127.0.0.1"].indexOf(req.connection.remoteAddress) !== -1;
}

function replaceParams(string, data, prefix, suffix) {
if (!prefix) prefix = "{{";
if (!suffix) suffix = "}}";
var regex = new RegExp(prefix + "(" + Object.keys(data).join("|") + ")" + suffix, "g");
return string.replace(regex, (m, $1) => data[$1] || m);
}

server.addPathListener("", function (server, robj, routeData, request, response) {
response.__headers["content-type"] = "text/html";
if (robj.vars.recache && isLocal(request)) htcache.recache(PAGES.HOME.id);
response.__data.push(replaceParams(htcache.getStruct(PAGES.HOME.id), currentSessionData));
response.__data.push(replaceHTMLMod.replaceParams(htcache.getStruct(PAGES.HOME.id), currentSessionData));
});

const { ListDir } = require("zetaret.node.utils.web::ListDir");
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "protoss-nodejs-basic",
"version": "2.15.2",
"version": "2.15.3",
"author": "Zeta Ret",
"license": "MIT",
"type": "commonjs",
Expand Down
2 changes: 1 addition & 1 deletion protossdox.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@
"relative": true,
"markdown": true,
"ext": ["js", "ts"],
"version": "2.15.2",
"version": "2.15.3",
"license": "MIT"
}
51 changes: 51 additions & 0 deletions utils/html/ObfuscateCSSHelper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
const settings = {
prefix: "_",
suffix: "",
length: 16,
cssoutJoin: "\n",
cssinPrefix: "",
cssinSuffix: "",
cssinJoin: "",
};
const ob_classes = {};
const ob_output_css = {};
ob_classes.home = {
serverexam: { "padding": "4px", "background": "#aaa", "border-radius": "2px", "display": "block" },
proname: { "padding": "2px", "color": "#333", "font-weight": "bold", "display": "block" },
prodesc: { padding: "1px", color: "666", display: "block" },
};
function setClassName(id, obj) {
ob_output_css[id] = obj;
}

function obfuscateCSS(id, rnd) {
var css = ob_classes[id];
var cssout = [];
ob_output_css[id] = {};
for (var c in css) {
var cv = css[c];
var cvstr = [];
for (var v in cv) {
var cvv = cv[v];
cvstr.push(v + ":" + cvv + ";");
}
ob_output_css[c] = settings.prefix + rnd(settings.length) + settings.suffix;
cssout.push(
"." + ob_output_css[c] + "{" + settings.cssinPrefix + cvstr.join(settings.cssinJoin) + settings.cssinSuffix + "}"
);
}
return cssout.join(settings.cssoutJoin);
}

function applyObCSS(el, hpinst) {
if (!el.attr.class) el.attr.class = "";
el.attr.class += ob_output_css[el.attr.obcls];
if (hpinst.exeDeleteOnSet) delete el.attr.obcls;
}

module.exports.settings = settings;
module.exports.ob_classes = ob_classes;
module.exports.ob_output_css = ob_output_css;
module.exports.setClassName = setClassName;
module.exports.obfuscateCSS = obfuscateCSS;
module.exports.applyObCSS = applyObCSS;
13 changes: 13 additions & 0 deletions utils/html/ReplaceHTMLParams.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
function replaceParams(string, data, prefix, suffix) {
if (!prefix) prefix = "{{";
if (!suffix) suffix = "}}";
var regex = new RegExp(prefix + "(" + Object.keys(data).join("|") + ")" + suffix, "g");
return string.replace(regex, (m, $1) => data[$1] || m);
}

function exportServerVar(name, json, pretty) {
return "var " + name + "=" + JSON.stringify(json, null, pretty ? 2 : null);
}

module.exports.replaceParams = replaceParams;
module.exports.exportServerVar = exportServerVar;
48 changes: 48 additions & 0 deletions utils/web/CookieHelper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
const cookieModule = require("./Cookies");

const settings = {
debug: false,
liveSessionHandler: null,
cookieLength: 32,
cookieExpire: 30,
rndstr: null,
};
const LiveSessions = {};

function bakeCookie(request, response) {
let cook = request.headers.cookie;
let session = null;
let cookieobj = new cookieModule.Cookies();
cookieobj.debug = settings.debug;
cookieobj.setCookiePath = true;
cookieobj.setCookieExpires = true;
cookieobj.parseCookieRequest(request);
request.cookieObject = cookieobj;
if (settings.debug) console.log("\x1b[34m #Middleware Cookie:\x1b[0m", cook, cookieobj.cookieMap);
if (!cookieobj.cookieMap.session) {
if (settings.debug) console.log("WRITE NEW COOKIE");
cookieobj.writeCookie(
cookieobj.responseHeaders,
"session",
settings.rndstr(settings.cookieLength),
settings.cookieExpire,
true
);
cookieobj.transformCookieObject(cookieobj.responseHeaders, false, response);
if (settings.debug) console.log("RESPONSE COOKIE", cookieobj.responseHeaders["set-cookie"]);
session = cookieobj.readCookie(cookieobj.responseHeaders["set-cookie-object"], "session", "session");
} else {
session = cookieobj.cookieMap.session;
}
if (settings.liveSessionHandler) {
settings.liveSessionHandler(session);
} else {
if (!LiveSessions[session]) LiveSessions[session] = { time: new Date(), count: 0 };
LiveSessions[session].count++;
if (settings.debug) console.log("Middleware Live Session Count:", session, LiveSessions[session].count);
}
}

module.exports.settings = settings;
module.exports.LiveSessions = LiveSessions;
module.exports.bakeCookie = bakeCookie;

0 comments on commit a429d04

Please sign in to comment.