diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/frhtml.js | 222 | ||||
-rw-r--r-- | server/gitea.js | 228 | ||||
-rw-r--r-- | server/http.js | 256 |
3 files changed, 148 insertions, 558 deletions
diff --git a/server/frhtml.js b/server/frhtml.js deleted file mode 100644 index 3825a01..0000000 --- a/server/frhtml.js +++ /dev/null @@ -1,222 +0,0 @@ -String.prototype.replacei = function (search, replace) { - var regex = new RegExp(search, "ig"); - return this.replace(regex, replace); -} - -module.exports.ConvertirVersHTML = function (contenu) { - - // Définition des/du type(s) - contenu = contenu.replacei('TYPEDOCUMENT','DOCTYPE') - - // Définition du balisage HTML - contenu = contenu.replacei('<pageweb','<html') - contenu = contenu.replacei('langue=','lang=') - - // En-têtes HTML - contenu = contenu.replacei('<configuration','<head') - contenu = contenu.replacei('<option','<meta') - contenu = contenu.replacei('encodage=','charset=') - contenu = contenu.replacei('nom=','name=') - contenu = contenu.replacei('contenu=','content=') - contenu = contenu.replacei('equivalent-http=','http-equiv=') - contenu = contenu.replacei('<titre','<title') - - // Corps HTML - contenu = contenu.replacei('<contenu','<body') - - // Titres - contenu = contenu.replacei('<title1','<h1') - contenu = contenu.replacei('<title2','<h2') - contenu = contenu.replacei('<title3','<h3') - contenu = contenu.replacei('<title4','<h4') - contenu = contenu.replacei('<title5','<h5') - contenu = contenu.replacei('<title6','<h6') - - // Retours et séparateurs - contenu = contenu.replacei('<retourligne>','<br>') - contenu = contenu.replacei('<separateur>','<hr>') - - // Containeurs - contenu = contenu.replacei('<bloc','<div') - contenu = contenu.replacei('<portion','<span') - contenu = contenu.replacei('<paragraphe','<p') - - // Tableaux - contenu = contenu.replacei('<tableau','<table') - contenu = contenu.replacei('<tableau-ligne','<tr') - contenu = contenu.replacei('<tableau-cellule','<td') - contenu = contenu.replacei('<tableau-entete','<thead') - contenu = contenu.replacei('<tableau-contenu','<tbody') - contenu = contenu.replacei('<tableau-pieddepage','<tfoot') - - // Éléments actifs - contenu = contenu.replacei('<lien','<a') - contenu = contenu.replacei('cible=','href=') - contenu = contenu.replacei('containeur=','target=') - contenu = contenu.replacei('options=','rel=') - contenu = contenu.replacei('courriel:','mailto:') - contenu = contenu.replacei('appeler:','tel:') - contenu = contenu.replacei('titre=','title=') - contenu = contenu.replacei('<son','<audio') - contenu = contenu.replacei('source=','src=') - contenu = contenu.replacei('<bouton','<button') - - // Formattage - contenu = contenu.replacei('<gras','<b') - contenu = contenu.replacei('<italique','<i') - contenu = contenu.replacei('<souligne','<u') - contenu = contenu.replacei('<barre','<s') - contenu = contenu.replacei('<grand','<big') - contenu = contenu.replacei('<citationbloc','<blockquote') - contenu = contenu.replacei('<citation','<cite') - contenu = contenu.replacei('<centre','<center') - contenu = contenu.replacei('<soustitre','<caption') - contenu = contenu.replacei('<commande','<command') - contenu = contenu.replacei('<police','<font') - - // Divers - contenu = contenu.replacei('<grilledonnees','<datagrid') - contenu = contenu.replacei('<listedonnees','<datalist') - contenu = contenu.replacei('<dialogue','<dialog') - contenu = contenu.replacei('<joindre','<embed') - contenu = contenu.replacei('<listechamps','<fieldlist') - contenu = contenu.replacei('desactive','disabled') - contenu = contenu.replacei('<cadre','<frame') - contenu = contenu.replacei('<pieddepage','<footer') - contenu = contenu.replacei('<listecadres','<framelist') - contenu = contenu.replacei('<entete','<header') - contenu = contenu.replacei('<cadreintelligent','<iframe') - contenu = contenu.replacei('bordurecadre=','frameborder=') - contenu = contenu.replacei('<image','<img') - contenu = contenu.replacei('description=','alt=') - contenu = contenu.replacei('dimensions=','sizes=') - contenu = contenu.replacei('listesources=','srcset=') - contenu = contenu.replacei('hauteur=','height=') - contenu = contenu.replacei('largeur=','width=') - contenu = contenu.replacei('<champ','<input') - contenu = contenu.replacei('identifiant=','id=') - contenu = contenu.replacei('<gencle','<keygen') - contenu = contenu.replacei('<etiquette','<label') - contenu = contenu.replacei('pour=','for=') - contenu = contenu.replacei('<principal','<main') - contenu = contenu.replacei('<carte','<map') - contenu = contenu.replacei('<navigation','<nav') - contenu = contenu.replacei('<sanscadres','<noframes') - contenu = contenu.replacei('<sansjs','<noscript') - contenu = contenu.replacei('<objet','<object') - contenu = contenu.replacei('<sortie','<output') - contenu = contenu.replacei('<parametre','<param') - contenu = contenu.replacei('<texteplain','<plaintext') - contenu = contenu.replacei('<progression','<progress') - contenu = contenu.replacei('<preceder','<pre') - contenu = contenu.replacei('<selection','<select') - contenu = contenu.replacei('<petit','<small') - contenu = contenu.replacei('<fort','<strong') - contenu = contenu.replacei('<zonedetexte','<textarea') - contenu = contenu.replacei('<variable','<var') - - // Listes - contenu = contenu.replacei('<conteneurliste','<ul') - contenu = contenu.replacei('<elementliste','<li') - - // Balises fermantes - contenu = contenu.replacei('</conteneurliste','</ul') - contenu = contenu.replacei('</elementliste','</li') - contenu = contenu.replacei('</grilledonnees','</datagrid') - contenu = contenu.replacei('</listedonnees','</datalist') - contenu = contenu.replacei('</dialogue','</dialog') - contenu = contenu.replacei('</joindre','</embed') - contenu = contenu.replacei('</listechamps','</fieldlist') - contenu = contenu.replacei('</cadre','</frame') - contenu = contenu.replacei('</pieddepage','</footer') - contenu = contenu.replacei('</listecadres','</framelist') - contenu = contenu.replacei('</entete','</header') - contenu = contenu.replacei('</cadreintelligent','</iframe') - contenu = contenu.replacei('</image','</img') - contenu = contenu.replacei('</champ','</input') - contenu = contenu.replacei('</gencle','</keygen') - contenu = contenu.replacei('</etiquette','</label') - contenu = contenu.replacei('</principal','</main') - contenu = contenu.replacei('</carte','</map') - contenu = contenu.replacei('</navigation','</nav') - contenu = contenu.replacei('</sanscadres','</noframes') - contenu = contenu.replacei('</sansjs','</noscript') - contenu = contenu.replacei('</objet','</object') - contenu = contenu.replacei('</sortie','</output') - contenu = contenu.replacei('</parametre','</param') - contenu = contenu.replacei('</texteplain','</plaintext') - contenu = contenu.replacei('</progression','</progress') - contenu = contenu.replacei('</preceder','</pre') - contenu = contenu.replacei('</selection','</select') - contenu = contenu.replacei('</petit','</small') - contenu = contenu.replacei('</fort','</strong') - contenu = contenu.replacei('</zonedetexte','</textarea') - contenu = contenu.replacei('</variable','</var') - contenu = contenu.replacei('</gras','</b') - contenu = contenu.replacei('</italique','</i') - contenu = contenu.replacei('</souligne','</u') - contenu = contenu.replacei('</barre','</s') - contenu = contenu.replacei('</grand','</big') - contenu = contenu.replacei('</citationbloc','</blockquote') - contenu = contenu.replacei('</citation','</cite') - contenu = contenu.replacei('</centre','</center') - contenu = contenu.replacei('</soustitre','</caption') - contenu = contenu.replacei('</commande','</command') - contenu = contenu.replacei('</police','</font') - contenu = contenu.replacei('</lien','</a') - contenu = contenu.replacei('</son','</audio') - contenu = contenu.replacei('</bouton','</button') - contenu = contenu.replacei('</title1','</h1') - contenu = contenu.replacei('</title2','</h2') - contenu = contenu.replacei('</title3','</h3') - contenu = contenu.replacei('</title4','</h4') - contenu = contenu.replacei('</title5','</h5') - contenu = contenu.replacei('</title6','</h6') - contenu = contenu.replacei('</retourligne>','</br>') - contenu = contenu.replacei('</separateur>','</hr>') - contenu = contenu.replacei('</bloc','</div') - contenu = contenu.replacei('</portion','</span') - contenu = contenu.replacei('</paragraphe','</p') - contenu = contenu.replacei('</tableau','</table') - contenu = contenu.replacei('</tableau-ligne','</tr') - contenu = contenu.replacei('</tableau-cellule','</td') - contenu = contenu.replacei('</tableau-entete','</thead') - contenu = contenu.replacei('</tableau-contenu','</tbody') - contenu = contenu.replacei('</tableau-pieddepage','</tfoot') - contenu = contenu.replacei('</pageweb','</html') - contenu = contenu.replacei('</configuration','</head') - contenu = contenu.replacei('</option','</meta') - contenu = contenu.replacei('</titre','</title') - contenu = contenu.replacei('</contenu','</body') - contenu = contenu.replacei('</title1','</h1') - contenu = contenu.replacei('</title2','</h2') - contenu = contenu.replacei('</title3','</h3') - contenu = contenu.replacei('</title4','</h4') - contenu = contenu.replacei('</title5','</h5') - contenu = contenu.replacei('</title6','</h6') - - return contenu; -} - -var exemple = ` -<!TYPEDOCUMENT pageweb> -<pageweb langue="fr"> - <configuration> - <option encodage="UTF-8"> - <!-- Options facultatives --> - <option nom="viewport" contenu="width=device-width, initial-scale=1.0"> - <option equivalent-http="X-UA-Compatible" contenu="ie=edge"> - <titre>Mon site Web</titre> - </configuration> - <contenu> - <titre1>Mon site Web</titre1> - <paragraphe> - Ceci est mon site Web<retourligne> - C'est un super <gras>site Web</gras> que j'ai fait tout seul - </paragraphe> - <paragraphe> - Il utilise le machin que j'ai découvert qui nous permet de programmer en français - </paragraphe> - </contenu> -</pageweb> -`
\ No newline at end of file diff --git a/server/gitea.js b/server/gitea.js index 58493d5..6b52b72 100644 --- a/server/gitea.js +++ b/server/gitea.js @@ -1,115 +1,115 @@ -global.log = require('./log') -global.serverRoot = __dirname + "/.."; -global.fs = require('fs') -log.info("Reading configuration...") -global.config = require('../global/config.json') -global.mpws = require('./version'); - -log.verbose("Initializing Gitea projects refresh...") - -function get(url) { - return { - stdout: require('child_process').execSync("curl -s -A \"Sattelite/" + mpws.version + "\" -X GET \"https://source.minteck.org/" + url + "\" -H \"accept: application/json\" -H \"authorization: Basic " + fs.readFileSync(serverRoot + "/auth.txt").toString().trim() + "\"") - }; -} - -function giteaRefresh() { - giteaDataTmp = []; - repos = []; - - log.info("Refreshing Gitea cache...") - - orgs_raw = JSON.parse(get("/api/v1/orgs").stdout.toString()); - - let orgs = []; - for (let org of orgs_raw) { - orgs.push(org.username); - } - - log.verbose("Found " + orgs.length + " orgs"); - - let orgs_mtk = []; - for (let org of orgs) { - log.verbose("Gathering members of '" + org + "'..."); - members_raw = JSON.parse(get("/api/v1/orgs/" + org + "/members").stdout.toString()); - - let members = []; - for (let member of members_raw) { - members.push(member.login); - } - - log.verbose("Has " + members.length + " members"); - - if (members.includes("minteck")) { - log.verbose("Includes Minteck, adding to list"); - orgs_mtk.push(org); - } else { - log.verbose("Doesn't include Minteck, not adding to list"); - } - } - - log.verbose("Minteck part of " + orgs_mtk.length + "/" + orgs.length + " orgs, exclusing themself"); - - log.verbose("Gathering personal projects"); - personal_raw = JSON.parse(get("/api/v1/users/minteck/repos").stdout.toString()); - - for (let repo of personal_raw) { - repos.push(repo.full_name); - } - - for (let org of orgs_mtk) { - log.verbose("Gathering projects from '" + org + "'"); - - org_projects_raw = JSON.parse(get("/api/v1/users/" + org + "/repos").stdout.toString()); - - for (let repo of org_projects_raw) { - repos.push(repo.full_name); - } - } - - log.verbose("Found " + repos.length + " projects: " + repos.join(", ")); - - for (let repo of repos) { - thisRepo = {}; - - log.verbose("Gathering info about " + repo); - repo_data = JSON.parse(get('/api/v1/repos/' + repo).stdout.toString()); - - if (!repo_data.empty && !repo_data.private && !repo_data.internal && !repo_data.archived && repo_data.full_name !== "minteck/minteck") { - thisRepo.name = repo_data.full_name.trim() !== "" ? repo_data.full_name : null; - thisRepo.id = repo_data.full_name.trim() !== "" ? repo_data.full_name : null; - thisRepo.icon = repo_data.avatar_url.trim() !== "" ? repo_data.avatar_url : null; - thisRepo.description = repo_data.description.trim() !== "" ? repo_data.description : null; - thisRepo.size = repo_data.size; - thisRepo.website = repo_data.website.trim() !== "" ? repo_data.website : null; - thisRepo.update = new Date(repo_data.updated_at) - 1 + 1; - - sattelite_data = JSON.parse(get("/api/v1/repos/" + repo + "/contents/SatteliteGiteaData.txt").stdout.toString()); - - if (!sattelite_data.documentation_url) { - thisRepo.name = Buffer.from(sattelite_data.content, "base64").toString(); - } - - giteaDataTmp.push(thisRepo); - } - } - - fs.writeFileSync("../global/gitea.json", JSON.stringify(giteaDataTmp, null, 4)); - log.info("Gitea cache successfully refreshed"); -} - -setInterval(() => { - try { - giteaRefresh() - } catch (e) { - log.error("Gitea projects refresh failed: " + e.message) - } -}, 3600000) - -setTimeout(() => { - try { - giteaRefresh() - } catch (e) { - log.error("Gitea projects refresh failed: " + e.message) - } +global.log = require('./log')
+global.serverRoot = __dirname + "/..";
+global.fs = require('fs')
+log.info("Reading configuration...")
+global.config = require('../global/config.json')
+global.mpws = require('./version');
+
+log.verbose("Initializing Gitea projects refresh...")
+
+function get(url) {
+ return {
+ stdout: require('child_process').execSync("curl -s -A \"Sattelite/" + mpws.version + "\" -X GET \"https://source.minteck.org/" + url + "\" -H \"accept: application/json\" -H \"authorization: Basic " + fs.readFileSync(serverRoot + "/auth.txt").toString().trim() + "\"")
+ };
+}
+
+function giteaRefresh() {
+ giteaDataTmp = [];
+ repos = [];
+
+ log.info("Refreshing Gitea cache...")
+
+ orgs_raw = JSON.parse(get("/api/v1/orgs").stdout.toString());
+
+ let orgs = [];
+ for (let org of orgs_raw) {
+ orgs.push(org.username);
+ }
+
+ log.verbose("Found " + orgs.length + " orgs");
+
+ let orgs_mtk = [];
+ for (let org of orgs) {
+ log.verbose("Gathering members of '" + org + "'...");
+ members_raw = JSON.parse(get("/api/v1/orgs/" + org + "/members").stdout.toString());
+
+ let members = [];
+ for (let member of members_raw) {
+ members.push(member.login);
+ }
+
+ log.verbose("Has " + members.length + " members");
+
+ if (members.includes("minteck")) {
+ log.verbose("Includes Minteck, adding to list");
+ orgs_mtk.push(org);
+ } else {
+ log.verbose("Doesn't include Minteck, not adding to list");
+ }
+ }
+
+ log.verbose("Minteck part of " + orgs_mtk.length + "/" + orgs.length + " orgs, exclusing themself");
+
+ log.verbose("Gathering personal projects");
+ personal_raw = JSON.parse(get("/api/v1/users/minteck/repos").stdout.toString());
+
+ for (let repo of personal_raw) {
+ repos.push(repo.full_name);
+ }
+
+ for (let org of orgs_mtk) {
+ log.verbose("Gathering projects from '" + org + "'");
+
+ org_projects_raw = JSON.parse(get("/api/v1/users/" + org + "/repos").stdout.toString());
+
+ for (let repo of org_projects_raw) {
+ repos.push(repo.full_name);
+ }
+ }
+
+ log.verbose("Found " + repos.length + " projects: " + repos.join(", "));
+
+ for (let repo of repos) {
+ thisRepo = {};
+
+ log.verbose("Gathering info about " + repo);
+ repo_data = JSON.parse(get('/api/v1/repos/' + repo).stdout.toString());
+
+ if (!repo_data.empty && !repo_data.private && !repo_data.internal && !repo_data.archived && repo_data.full_name !== "minteck/minteck") {
+ thisRepo.name = repo_data.full_name.trim() !== "" ? repo_data.full_name : null;
+ thisRepo.id = repo_data.full_name.trim() !== "" ? repo_data.full_name : null;
+ thisRepo.icon = repo_data.avatar_url.trim() !== "" ? repo_data.avatar_url : null;
+ thisRepo.description = repo_data.description.trim() !== "" ? repo_data.description : null;
+ thisRepo.size = repo_data.size;
+ thisRepo.website = repo_data.website.trim() !== "" ? repo_data.website : null;
+ thisRepo.update = new Date(repo_data.updated_at) - 1 + 1;
+
+ sattelite_data = JSON.parse(get("/api/v1/repos/" + repo + "/contents/SatteliteGiteaData.txt").stdout.toString());
+
+ if (!sattelite_data.documentation_url) {
+ thisRepo.name = Buffer.from(sattelite_data.content, "base64").toString();
+ }
+
+ giteaDataTmp.push(thisRepo);
+ }
+ }
+
+ fs.writeFileSync("../global/gitea.json", JSON.stringify(giteaDataTmp, null, 4));
+ log.info("Gitea cache successfully refreshed");
+}
+
+setInterval(() => {
+ try {
+ giteaRefresh()
+ } catch (e) {
+ log.error("Gitea projects refresh failed: " + e.message)
+ }
+}, 3600000)
+
+setTimeout(() => {
+ try {
+ giteaRefresh()
+ } catch (e) {
+ log.error("Gitea projects refresh failed: " + e.message)
+ }
}, 1000)
\ No newline at end of file diff --git a/server/http.js b/server/http.js index 0e3baa4..c679d95 100644 --- a/server/http.js +++ b/server/http.js @@ -14,7 +14,7 @@ module.exports.start = function () { http.createServer(function (req, res) { global.res = res; req.url_orig = req.url; - + if (req.headers["x-forwarded-for"]) { global.address = req.headers["x-forwarded-for"]; } else { @@ -23,199 +23,48 @@ module.exports.start = function () { log.verbose("request: " + address + "; " + req.url) - if (req.url.startsWith("/@info")) { - log.verbose("return info"); - file = wwwdata + req.url.slice(6); - - json = new Object - json.file = req.url.slice(6) - if (fs.existsSync(file)) { - if (fs.lstatSync(file).isDirectory()) { - json.type = "inode/directory" - json.size = null - json.inode = null - json.device = null - json.mode = null - } else { - json.type = mime.lookUpType(file.split(".").pop()); - // json.type = file.split(".").pop(); - json.size = fs.lstatSync(file).size - json.inode = fs.lstatSync(file).ino - json.device = fs.lstatSync(file).dev - json.mode = fs.lstatSync(file).mode - } - } else { - if (json.file.startsWith("/debug")) { - json.type = "mpws-special/debuginfo"; - json.size = null - json.inode = null - json.device = null - json.mode = null - } else if (json.file.startsWith("/@info")) { - json.type = "mpws-special/fileinfo"; - json.size = null - json.inode = null - json.device = null - json.mode = null - } else if (json.file.startsWith("/@json")) { - json.type = "mpws-special/fileapi"; - json.size = null - json.inode = null - json.device = null - json.mode = null - } else { - json.type = "error/notfound"; - json.size = null - json.inode = null - json.device = null - json.mode = null - } - } - - res.writeHead(200, {'Content-Type': 'application/json'}); - res.write(JSON.stringify(json)); - res.end() - return; - } - - if (req.url.startsWith("/@json")) { - log.verbose("return json"); - file = wwwdata + req.url.slice(6); - - json = new Object - json.file = req.url.slice(6) - if (fs.existsSync(file)) { - if (fs.lstatSync(file).isDirectory()) { - json.type = "inode/directory" - json.size = null - json.inode = null - json.device = null - json.mode = null - json.lines = null - } else { - json.type = mime.lookUpType(file.split(".").pop()); - json.size = fs.lstatSync(file).size - json.inode = fs.lstatSync(file).ino - json.device = fs.lstatSync(file).dev - json.mode = fs.lstatSync(file).mode - json.lines = fs.readFileSync(file).toString().split("\n"); - } - } else { - if (json.file.startsWith("/debug")) { - json.type = "mpws-special/debuginfo"; - json.size = null - json.inode = null - json.device = null - json.mode = null - json.lines = null - } else if (json.file.startsWith("/@info")) { - json.type = "mpws-special/fileinfo"; - json.size = null - json.inode = null - json.device = null - json.mode = null - json.lines = null - } else if (json.file.startsWith("/@json")) { - json.type = "mpws-special/fileapi"; - json.size = null - json.inode = null - json.device = null - json.mode = null - json.lines = null - } else { - json.type = "error/notfound"; - json.size = null - json.inode = null - json.device = null - json.mode = null - json.lines = null - } - } - - res.writeHead(200, {'Content-Type': 'application/json'}); - res.write(JSON.stringify(json)); - res.end() - return; - } + // TODO: Detect user language + let dlang = "en"; - if (req.url == "/debug") { - log.verbose("return debug") - res.writeHead(200, {'Content-Type': 'application/json'}); - var date = new Date(); - var hour = date.getHours(); - // hour = (hour < 10 ? "0" : "") + hour; - var min = date.getMinutes(); - // min = (min < 10 ? "0" : "") + min; - var sec = date.getSeconds(); - // sec = (sec < 10 ? "0" : "") + sec; - var year = date.getFullYear(); - var month = date.getMonth() + 1; - // month = (month < 10 ? "0" : "") + month; - var day = date.getDate(); - // day = (day < 10 ? "0" : "") + day; - debug = { - "version": { - "server": mpws.version, - "kernel": process.version.replace("v", "") - }, - "date": { - "day": day, - "month": month, - "year": year, - "hour": hour, - "min": min, - "sec": sec - }, - "server": { - "process": { - "pid": process.pid, - "name": process.title, - "priority": os.getPriority(process.pid) - }, - "software": { - "hostname": os.hostname(), - "arch": os.arch(), - "platform": os.platform(), - "release": os.release(), - "type": os.type(), - "uptime": os.uptime(), - "tempfiles": os.tmpdir() - }, - "hardware": { - "cpus": os.cpus(), - "network": os.networkInterfaces(), - "memory": { - "total": os.totalmem(), - "free": os.freemem(), - "used": os.totalmem() - os.freemem(), - "process": process.memoryUsage() - } - } - } - } - res.write(JSON.stringify(debug)); - res.end(); - return; - } - // res.writeHead(200, {'Content-Type': 'text/html'}); - // res.write('Node.js says hello!'); - // res.end(); frhtml = false; ejs = false; if (req.url.includes(".")) { } else { if (fs.existsSync(wwwdata + req.url + "/index.html")) { req.url = req.url + "/index.html" - } else if (fs.existsSync(wwwdata + req.url + "/index.fr.html")) { - req.url = req.url + "/index.fr.html" - frhtml = true; } else { req.url = req.url + "/index.ejs" ejs = true; } } - if (req.url.endsWith('.fr.html')) { - frhtml = true; + if ((fs.existsSync(wwwdata + req.url) || fs.existsSync(wwwdata + req.url_orig + "/$command.json")) && !req.url.startsWith("/assets/")) { + if (req.url_orig.replace(/\/+/g, '/').trim() !== "/") { + res.writeHead(301, {"Location": "/" + dlang + req.url_orig.replace(/\/+/g, '/')}); + } else { + res.writeHead(301, {"Location": "/" + dlang}); + } + res.end(); + } else if (!req.url.startsWith("/assets/")) { + slang = req.url.split("/")[1]; + if (!slang.includes(".") && !slang.includes("/") && fs.existsSync(serverRoot + "/data/lang/" + slang + ".json")) { + global.lang = JSON.parse(fs.readFileSync(serverRoot + "/data/lang/" + slang + ".json").toString()); + parts = req.url.split("/"); + parts.shift(); + parts.shift(); + req.url = "/" + parts.join("/"); + } else { + parts = req.url_orig.split("/"); + parts.shift(); + parts.shift(); + + newUrl = "/" + parts.join("/"); + if (newUrl.replace(/\/+/g, '/').trim() !== "/") { + res.writeHead(301, {"Location": "/en" + newUrl.replace(/\/+/g, '/')}); + } else { + res.writeHead(301, {"Location": "/en"}); + } + res.end(); + } } if (req.url.includes("..")) { if (config.errors_show_trace) { @@ -270,45 +119,8 @@ module.exports.start = function () { } } } - if (fs.existsSync(wwwdata + req.url) || fs.existsSync(wwwdata + req.url_orig + "/$command.json")) { - if (fs.existsSync(wwwdata + req.url_orig + "/$command.json")) { - res.writeHead(200, { - 'Content-Type': 'application/json', - 'Set-Cookie': '__mpws_request=' + year + month + day + hour + min + sec - }); - filebuffer = fs.readFileSync(wwwdata + req.url_orig + "/$command.json"); - filestring = filebuffer.toString() - filejson = JSON.parse(filestring); - require('./commands.js')(filejson, (callback) => { - output = JSON.stringify(callback); - res.write(output); - res.end(); - }); - return; - } - if (frhtml) { - log.verbose("return " + mime.lookUpType((wwwdata + req.url).split(".").pop())) - log.verbose("parser: frhtml"); - var date = new Date(); - var hour = date.getHours(); - hour = (hour < 10 ? "0" : "") + hour; - var min = date.getMinutes(); - min = (min < 10 ? "0" : "") + min; - var sec = date.getSeconds(); - sec = (sec < 10 ? "0" : "") + sec; - var year = date.getFullYear(); - var month = date.getMonth() + 1; - month = (month < 10 ? "0" : "") + month; - var day = date.getDate(); - day = (day < 10 ? "0" : "") + day; - res.writeHead(200, { - 'Content-Type': mime.lookUpType((wwwdata + req.url).split(".").pop()), - 'Set-Cookie': '__mpws_request=' + year + month + day + hour + min + sec - }); - res.write(require('./frhtml.js').ConvertirVersHTML(fs.readFileSync(wwwdata + req.url).toString())); - res.end(); - return; - } else if (ejs) { + if (fs.existsSync(wwwdata + req.url)) { + if (ejs) { log.verbose("return " + mime.lookUpType((wwwdata + req.url).split(".").pop())) log.verbose("parser: ejs"); var date = new Date(); @@ -328,7 +140,7 @@ module.exports.start = function () { 'Set-Cookie': '__mpws_request=' + year + month + day + hour + min + sec }); try { - require('ejs').renderFile(wwwdata + req.url, {wwwdata, private, req, res}, (err, str) => { + require('ejs').renderFile(wwwdata + req.url, {wwwdata, private, req, res, slang, lang}, (err, str) => { if (err) throw err; res.write(str); res.end(); |