summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/frhtml.js222
-rw-r--r--server/gitea.js228
-rw-r--r--server/http.js256
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();