rewrite to a module

This commit is contained in:
Mystikfluu
2022-08-19 19:29:14 +02:00
parent c78f4cba3a
commit 6ed17497c5
13 changed files with 1522 additions and 540 deletions
+56 -50
View File
@@ -1,51 +1,57 @@
const fs = require('fs');
const SHA = require("../../extra_modules/SHA.js")
const unsign = require("../../extra_modules/unsign.js")
const config = JSON.parse(fs.readFileSync("server_config.json"))
const HASHES_DB = config.cookies.server_hashes
const HASHES_COOKIE = config.cookies.client_hashes
const HASHES_DIFF = HASHES_DB - HASHES_COOKIE
module.exports = {
"setup": function(router,con,server) {
router.use("/api/*",async function(req,res,next) {
res.set("Access-Control-Allow-Origin","*") //we'll allow it for now
if(config["allow_getotheruser_without_cookie"] && req.originalUrl.split("\?")[0] == "/api/getotheruser") {
next()
return
}
if(!server.increaseAPICall(req,res))return;
let unsigned;
if(req.body.user == undefined || req.body.pass == undefined) {
unsigned = unsign.getunsigned(req,res)
if(!unsigned)return
} else {
unsigned = `${req.body.user} ${SHA.SHA256(req.body.pass,req.body.user,HASHES_COOKIE)}`
//basically we generate the unsigned cookie
res.locals.isbot = true //only bots use user+pass
}
let sql = `select User_Name,User_Bio,User_Avatar,User_Settings from ipost.users where User_Name=? and User_PW=?;`
let values = unsigned.split(" ")
values[1] = SHA.SHA256(values[1],values[0],HASHES_DIFF)
res.locals.bio = ""
res.locals.avatar = ""
res.locals.settings = {}
con.query(sql, values, function (err, result) {
if (err) throw err;
if(result[0] && result[0].User_Name && result[0].User_Name == values[0]) {
res.locals.username = values[0];
res.locals.bio = result[0].User_Bio || ""
res.locals.avatar = result[0].User_Avatar || ""
res.locals.settings = JSON.parse(result[0].User_Settings)
if(res.locals.settings == "null")res.locals.settings = {}
if(res.locals.settings == null)res.locals.settings = {}
next()
} else {
res.status(400)
res.json({"error":"you cannot access the api without being logged in"})
import fs from "fs";
import SHA from "../../extra_modules/SHA.js";
import unsign from "../../extra_modules/unsign.js";
const config = JSON.parse(fs.readFileSync("server_config.json"));
const HASHES_DB = config.cookies.server_hashes;
const HASHES_COOKIE = config.cookies.client_hashes;
const HASHES_DIFF = HASHES_DB - HASHES_COOKIE;
export const setup = function (router, con, server) {
router.use("/api/*", async function (req, res, next) {
res.set("Access-Control-Allow-Origin", "*"); //we'll allow it for now
if (config["allow_getotheruser_without_cookie"] && req.originalUrl.split("\?")[0] == "/api/getotheruser") {
next();
return;
}
});
})
}
}
if (!server.increaseAPICall(req, res))
return;
let unsigned;
if (req.body.user == undefined || req.body.pass == undefined) {
unsigned = unsign.getunsigned(req, res);
if (!unsigned)
return;
}
else {
unsigned = `${req.body.user} ${SHA.SHA256(req.body.pass, req.body.user, HASHES_COOKIE)}`;
//basically we generate the unsigned cookie
res.locals.isbot = true; //only bots use user+pass
}
let sql = `select User_Name,User_Bio,User_Avatar,User_Settings from ipost.users where User_Name=? and User_PW=?;`;
let values = unsigned.split(" ");
values[1] = SHA.SHA256(values[1], values[0], HASHES_DIFF);
res.locals.bio = "";
res.locals.avatar = "";
res.locals.settings = {};
con.query(sql, values, function (err, result) {
if (err)
throw err;
if (result[0] && result[0].User_Name && result[0].User_Name == values[0]) {
res.locals.username = values[0];
res.locals.bio = result[0].User_Bio || "";
res.locals.avatar = result[0].User_Avatar || "";
res.locals.settings = JSON.parse(result[0].User_Settings);
if (res.locals.settings == "null")
res.locals.settings = {};
if (res.locals.settings == null)
res.locals.settings = {};
next();
}
else {
res.status(400);
res.json({ "error": "you cannot access the api without being logged in" });
}
});
});
};
export default {
setup
};
+61 -65
View File
@@ -1,66 +1,62 @@
import {web_version} from "unsafe_encrypt"
module.exports = {
"setup": function(router,con,server) {
router.get("/api/getPersonalPosts", async function(req,res) {
res.set("Access-Control-Allow-Origin","")
let otherperson = encodeURIComponent(req.query.otherperson||"")
if(typeof otherperson != "string" || otherperson.length > 100 || otherperson=="") {
res.status(400).json({"error": "invalid otherperson given"})
return
}
const columns = [
"dms_user_name","dms_text","dms_time","dms_special_text","dms_id","dms_from_bot","dms_reply_id"
]
//dms_user_name = sender
//dms_receiver = receiver
//if (sender == current and receiver == other) or (receiver == current and sender == other)
let sql = `select ${columns.join(",")} from ipost.dms where ((dms_receiver = ? and dms_user_name = ?) or (dms_receiver = ? and dms_user_name = ?)) order by dms_id desc;`
con.query(sql, [otherperson,encodeURIComponent(res.locals.username),encodeURIComponent(res.locals.username),otherperson], function (err, result) {
if (err) throw err;
res.json(result)
});
})
router.get("/api/dms/conversations", async function(req,res) {
res.set("Access-Control-Allow-Origin","*")
const columns = [
"dms_user_name","dms_receiver"
]
let uriencusername = encodeURIComponent(res.locals.username)
let sql = `select ${columns.join(",")} from ipost.dms where ((dms_receiver = ?) or (dms_user_name = ?)) group by dms_receiver,dms_user_name;`
con.query(sql, [uriencusername,uriencusername], function (err, result) {
if (err) throw err;
res.json(result)
});
})
router.get("/api/dms/encrypt.js", async function(req,res) {
res.set("Access-Control-Allow-Origin","*")
res.send(web_version())
})
//
router.get("/api/dms/getDM", async function(req,res) {
res.set("Access-Control-Allow-Origin","*")
let arg = req.query.id
let uriencusername = encodeURIComponent(res.locals.username)
let sql = `select dms_user_name,dms_text,dms_time,dms_special_text,dms_id,dms_from_bot,dms_reply_id,dms_receiver from ipost.dms where dms_id=? and (dms_user_name=? or dms_receiver=?);`
con.query(sql, [arg,uriencusername,uriencusername], function (err, result) {
if (err) throw err;
if(result[0]) {
//const web_version = require("unsafe_encrypt").web_version
import { web_version } from "unsafe_encrypt";
export const setup = function (router, con, server) {
router.get("/api/getPersonalPosts", async function (req, res) {
res.set("Access-Control-Allow-Origin", "");
let otherperson = encodeURIComponent(req.query.otherperson || "");
if (typeof otherperson != "string" || otherperson.length > 100 || otherperson == "") {
res.status(400).json({ "error": "invalid otherperson given" });
return;
}
const columns = [
"dms_user_name", "dms_text", "dms_time", "dms_special_text", "dms_id", "dms_from_bot", "dms_reply_id"
];
//dms_user_name = sender
//dms_receiver = receiver
//if (sender == current and receiver == other) or (receiver == current and sender == other)
let sql = `select ${columns.join(",")} from ipost.dms where ((dms_receiver = ? and dms_user_name = ?) or (dms_receiver = ? and dms_user_name = ?)) order by dms_id desc;`;
con.query(sql, [otherperson, encodeURIComponent(res.locals.username), encodeURIComponent(res.locals.username), otherperson], function (err, result) {
if (err)
throw err;
res.json(result);
});
});
router.get("/api/dms/conversations", async function (req, res) {
res.set("Access-Control-Allow-Origin", "*");
const columns = [
"dms_user_name", "dms_receiver"
];
let uriencusername = encodeURIComponent(res.locals.username);
let sql = `select ${columns.join(",")} from ipost.dms where ((dms_receiver = ?) or (dms_user_name = ?)) group by dms_receiver,dms_user_name;`;
con.query(sql, [uriencusername, uriencusername], function (err, result) {
if (err)
throw err;
res.json(result);
});
});
router.get("/api/dms/encrypt.js", async function (req, res) {
res.set("Access-Control-Allow-Origin", "*");
res.send(web_version());
});
//
router.get("/api/dms/getDM", async function (req, res) {
res.set("Access-Control-Allow-Origin", "*");
let arg = req.query.id;
let uriencusername = encodeURIComponent(res.locals.username);
let sql = `select dms_user_name,dms_text,dms_time,dms_special_text,dms_id,dms_from_bot,dms_reply_id,dms_receiver from ipost.dms where dms_id=? and (dms_user_name=? or dms_receiver=?);`;
con.query(sql, [arg, uriencusername, uriencusername], function (err, result) {
if (err)
throw err;
if (result[0]) {
res.set('Cache-Control', 'public, max-age=2592000'); //cache it for one month-ish
res.json(result[0])
} else {
res.json({"error":"there is no such dm!"})
}
});
})
}
}
res.json(result[0]);
}
else {
res.json({ "error": "there is no such dm!" });
}
});
});
};
export default {
setup
};
+96 -106
View File
@@ -1,106 +1,96 @@
const xor = require("../../../extra_modules/xor.js")
module.exports = {
"setup": function(router,con,server) {
const PIDS = {} //[pid]: true/"already_used"
router.get("/api/dms/pid", async function(req,res) {
res.set("Access-Control-Allow-Origin","*")
let pid = server.genstring(10) //collision chance is low enough, but we'll check anyways
while (PIDS[pid] != undefined){
pid = server.genstring(10)
console.log(5,"pid collision");
}
PIDS[pid] = true
setTimeout(function() {
PIDS[pid]=undefined
},40000)
res.json({"pid":pid})
})
router.post("/api/dms/post", async function(req,res) {
if(!req.body.message) {
res.json({"error":"no message to post"})
return
}
if((typeof req.body.message) != "string") {
res.json({"error":"no message to post"})
return
}
if((typeof req.body.pid) != "string") {
res.json({"error":"no pid given"})
return
}
if(req.body.pid.length != 10 || PIDS[req.body.pid] !== true) {
res.json({"error":"invalid pid given"})
return
}
PIDS[req.body.pid] = "already_used"
let reply_id
if(!req.body.reply_id || req.body.reply_id < 0) {
reply_id = 0
} else {
reply_id = req.body.reply_id
}
if((typeof reply_id) != "number") {
res.json({"error":"no valid reply id given"})
return
}
if(req.body.message.length > 1000) {
res.json({"error":"message too long"})
return
}
req.body.message = encodeURIComponent(req.body.message.trim())
if(req.body.message.length > 3000) {
res.json({"error":"message too long"}) //check again after URI encoding it
return
}
req.body.receiver = encodeURIComponent(req.body.receiver||"")
if(req.body.receiver == "" || req.body.receiver == encodeURIComponent(res.locals.username) || req.body.receiver.length > 100) {
res.status(400).json({"error": "invalid receiver given"})
return
}
let otherperson = req.body.receiver
if(!req.body.message) {
res.json({"error":"no message to post"})
return
}
let sql = `insert into ipost.dms (dms_user_name,dms_text,dms_time,dms_receiver,dms_from_bot,dms_reply_id) values (?,?,?,?,?,?);`
let values = [encodeURIComponent(res.locals.username),req.body.message,Date.now(),otherperson,res.locals.isbot,reply_id]
con.query(sql, values, function (err, result) {
if (err) throw err;
// let post_obj = {
// post_user_name: encodeURIComponent(res.locals.username),
// post_text: req.body.message,
// post_time: Date.now(),
// post_special_text: "",
// post_receiver_name: req.body.receiver,
// post_from_bot: res.locals.isbot,
// post_reply_id: reply_id
// }
// let message = {
// message: "new_post",
// data: post_obj
// }
// let messagestr = JSON.stringify(message)
// server.wss.clients.forEach(function(ws) {
// if(ws.channel == decodeURIComponent(req.body.receiver)) {
// ws.send(messagestr)
// }
// });
res.json({"success":"successfully posted dm"})
console.log(5,`posted new dm by ${res.locals.username} to ${otherperson} : ${xor(encodeURIComponent(res.locals.username),otherperson)}`);
});
})
}
}
import xor from "../../../extra_modules/xor.js";
export const setup = function (router, con, server) {
const PIDS = {}; //[pid]: true/"already_used"
router.get("/api/dms/pid", async function (req, res) {
res.set("Access-Control-Allow-Origin", "*");
let pid = server.genstring(10); //collision chance is low enough, but we'll check anyways
while (PIDS[pid] != undefined) {
pid = server.genstring(10);
console.log(5, "pid collision");
}
PIDS[pid] = true;
setTimeout(function () {
PIDS[pid] = undefined;
}, 40000);
res.json({ "pid": pid });
});
router.post("/api/dms/post", async function (req, res) {
if (!req.body.message) {
res.json({ "error": "no message to post" });
return;
}
if ((typeof req.body.message) != "string") {
res.json({ "error": "no message to post" });
return;
}
if ((typeof req.body.pid) != "string") {
res.json({ "error": "no pid given" });
return;
}
if (req.body.pid.length != 10 || PIDS[req.body.pid] !== true) {
res.json({ "error": "invalid pid given" });
return;
}
PIDS[req.body.pid] = "already_used";
let reply_id;
if (!req.body.reply_id || req.body.reply_id < 0) {
reply_id = 0;
}
else {
reply_id = req.body.reply_id;
}
if ((typeof reply_id) != "number") {
res.json({ "error": "no valid reply id given" });
return;
}
if (req.body.message.length > 1000) {
res.json({ "error": "message too long" });
return;
}
req.body.message = encodeURIComponent(req.body.message.trim());
if (req.body.message.length > 3000) {
res.json({ "error": "message too long" }); //check again after URI encoding it
return;
}
req.body.receiver = encodeURIComponent(req.body.receiver || "");
if (req.body.receiver == "" || req.body.receiver == encodeURIComponent(res.locals.username) || req.body.receiver.length > 100) {
res.status(400).json({ "error": "invalid receiver given" });
return;
}
let otherperson = req.body.receiver;
if (!req.body.message) {
res.json({ "error": "no message to post" });
return;
}
let sql = `insert into ipost.dms (dms_user_name,dms_text,dms_time,dms_receiver,dms_from_bot,dms_reply_id) values (?,?,?,?,?,?);`;
let values = [encodeURIComponent(res.locals.username), req.body.message, Date.now(), otherperson, res.locals.isbot, reply_id];
con.query(sql, values, function (err, result) {
if (err)
throw err;
// let post_obj = {
// post_user_name: encodeURIComponent(res.locals.username),
// post_text: req.body.message,
// post_time: Date.now(),
// post_special_text: "",
// post_receiver_name: req.body.receiver,
// post_from_bot: res.locals.isbot,
// post_reply_id: reply_id
// }
// let message = {
// message: "new_post",
// data: post_obj
// }
// let messagestr = JSON.stringify(message)
// server.wss.clients.forEach(function(ws) {
// if(ws.channel == decodeURIComponent(req.body.receiver)) {
// ws.send(messagestr)
// }
// });
res.json({ "success": "successfully posted dm" });
console.log(5, `posted new dm by ${res.locals.username} to ${otherperson} : ${xor(encodeURIComponent(res.locals.username), otherperson)}`);
});
});
};
export default {
setup
};
+17 -56
View File
@@ -1,57 +1,18 @@
function allowAllTraffic(router,str,type) {
router.options(str,async function(req,res,next) {
res.set("Access-Control-Allow-Origin","*") //we'll allow it for now
res.set("Access-Control-Allow-Methods",type || "GET")
res.set("Access-Control-Allow-Headers","Content-Type")
res.status(200).send("")
})
function allowAllTraffic(router, str, type) {
router.options(str, async function (req, res, next) {
res.set("Access-Control-Allow-Origin", "*"); //we'll allow it for now
res.set("Access-Control-Allow-Methods", type || "GET");
res.set("Access-Control-Allow-Headers", "Content-Type");
res.status(200).send("");
});
}
module.exports = {
"setup": function(router,con,server) {
// router.options("/api/pid",async function(req,res,next) {
// res.set("Access-Control-Allow-Origin","*") //we'll allow it for now
// res.set("Access-Control-Allow-Methods","GET")
// res.set("Access-Control-Allow-Headers","Content-Type")
// res.status(200).send("")
// })
// router.options("/api/post",async function(req,res,next) {
// res.set("Access-Control-Allow-Origin","*") //we'll allow it for now
// res.set("Access-Control-Allow-Methods","POST")
// res.set("Access-Control-Allow-Headers","Content-Type")
// res.status(200).send("")
// })
// router.options("/api/getotheruser",async function(req,res,next) {
// res.set("Access-Control-Allow-Origin","*") //we'll allow it for now
// res.set("Access-Control-Allow-Methods","GET")
// res.set("Access-Control-Allow-Headers","Content-Type")
// res.status(200).send("")
// })
// router.options("/api/getPost",async function(req,res,next) {
// res.set("Access-Control-Allow-Origin","*") //we'll allow it for now
// res.set("Access-Control-Allow-Methods","GET")
// res.set("Access-Control-Allow-Headers","Content-Type")
// res.status(200).send("")
// })
//
// router.options("/api/getPostsLowerThan",async function(req,res,next) {
// res.set("Access-Control-Allow-Origin","*") //we'll allow it for now
// res.set("Access-Control-Allow-Methods","GET")
// res.set("Access-Control-Allow-Headers","Content-Type")
// res.status(200).send("")
// })
allowAllTraffic(router,"/api/pid")
allowAllTraffic(router,"/api/post","POST")
allowAllTraffic(router,"/api/getotheruser")
allowAllTraffic(router,"/api/getPost")
allowAllTraffic(router,"/api/getPostsLowerThan")
allowAllTraffic(router,"/api/settings")
allowAllTraffic(router,"/api/settings","POST")
}
}
function setup(router, con, server) {
allowAllTraffic(router, "/api/pid");
allowAllTraffic(router, "/api/post", "POST");
allowAllTraffic(router, "/api/getotheruser");
allowAllTraffic(router, "/api/getPost");
allowAllTraffic(router, "/api/getPostsLowerThan");
allowAllTraffic(router, "/api/settings");
allowAllTraffic(router, "/api/settings", "POST");
}
export { setup };
+91 -99
View File
@@ -1,101 +1,93 @@
module.exports = {
"setup": function(router,con,server) {
const PIDS = {} //[pid]: true/"already_used"
router.get("/api/pid", async function(req,res) {
res.set("Access-Control-Allow-Origin","*")
let pid = server.genstring(10) //collision chance is low enough, but we'll check anyways
while (PIDS[pid] != undefined){
pid = server.genstring(10)
console.log(5,"pid collision");
}
PIDS[pid] = true
setTimeout(function() {
PIDS[pid]=undefined
},40000)
res.json({"pid":pid})
})
router.post("/api/post", async function(req,res) {
if(!req.body.message) {
res.json({"error":"no message to post"})
return
}
if((typeof req.body.message) != "string") {
res.json({"error":"no message to post"})
return
}
if((typeof req.body.pid) != "string") {
res.json({"error":"no pid given"})
return
}
if(req.body.pid.length != 10 || PIDS[req.body.pid] !== true) {
res.json({"error":"invalid pid given"})
return
}
PIDS[req.body.pid] = "already_used"
let reply_id
if(!req.body.reply_id || req.body.reply_id < 0) {
reply_id = 0
} else {
reply_id = req.body.reply_id
}
if((typeof req.body.reply_id) != "number") {
res.json({"error":"no valid reply id given"})
return
}
if(req.body.message.length > 1000) {
res.json({"error":"message too long"})
return
}
req.body.message = encodeURIComponent(req.body.message.trim())
if(req.body.message.length > 3000) {
res.json({"error":"message too long"}) //check again after URI encoding it
return
}
req.body.receiver = encodeURIComponent(req.body.receiver||"")
if(req.body.receiver == "")req.body.receiver="everyone"
if(!req.body.message) {
res.json({"error":"no message to post"})
return
}
let sql = `insert into ipost.posts (post_user_name,post_text,post_time,post_receiver_name,post_from_bot,post_reply_id) values (?,?,?,?,?,?);`
let values = [encodeURIComponent(res.locals.username),req.body.message,Date.now(),req.body.receiver,res.locals.isbot,reply_id]
con.query(sql, values, function (err, result) {
if (err) throw err;
let post_obj = {
post_user_name: encodeURIComponent(res.locals.username),
post_text: req.body.message,
post_time: Date.now(),
post_special_text: "",
post_receiver_name: req.body.receiver,
post_from_bot: res.locals.isbot,
post_reply_id: reply_id
export const setup = function (router, con, server) {
const PIDS = {}; //[pid]: true/"already_used"
router.get("/api/pid", async function (req, res) {
res.set("Access-Control-Allow-Origin", "*");
let pid = server.genstring(10); //collision chance is low enough, but we'll check anyways
while (PIDS[pid] != undefined) {
pid = server.genstring(10);
console.log(5, "pid collision");
}
PIDS[pid] = true;
setTimeout(function () {
PIDS[pid] = undefined;
}, 40000);
res.json({ "pid": pid });
});
router.post("/api/post", async function (req, res) {
if (!req.body.message) {
res.json({ "error": "no message to post" });
return;
}
if ((typeof req.body.message) != "string") {
res.json({ "error": "no message to post" });
return;
}
if ((typeof req.body.pid) != "string") {
res.json({ "error": "no pid given" });
return;
}
if (req.body.pid.length != 10 || PIDS[req.body.pid] !== true) {
res.json({ "error": "invalid pid given" });
return;
}
PIDS[req.body.pid] = "already_used";
let reply_id;
if (!req.body.reply_id || req.body.reply_id < 0) {
reply_id = 0;
}
else {
reply_id = req.body.reply_id;
}
if ((typeof req.body.reply_id) != "number") {
res.json({ "error": "no valid reply id given" });
return;
}
if (req.body.message.length > 1000) {
res.json({ "error": "message too long" });
return;
}
req.body.message = encodeURIComponent(req.body.message.trim());
if (req.body.message.length > 3000) {
res.json({ "error": "message too long" }); //check again after URI encoding it
return;
}
req.body.receiver = encodeURIComponent(req.body.receiver || "");
if (req.body.receiver == "")
req.body.receiver = "everyone";
if (!req.body.message) {
res.json({ "error": "no message to post" });
return;
}
let sql = `insert into ipost.posts (post_user_name,post_text,post_time,post_receiver_name,post_from_bot,post_reply_id) values (?,?,?,?,?,?);`;
let values = [encodeURIComponent(res.locals.username), req.body.message, Date.now(), req.body.receiver, res.locals.isbot, reply_id];
con.query(sql, values, function (err, result) {
if (err)
throw err;
let post_obj = {
post_user_name: encodeURIComponent(res.locals.username),
post_text: req.body.message,
post_time: Date.now(),
post_special_text: "",
post_receiver_name: req.body.receiver,
post_from_bot: res.locals.isbot,
post_reply_id: reply_id
};
let message = {
message: "new_post",
data: post_obj
};
let messagestr = JSON.stringify(message);
let channel = decodeURIComponent(req.body.receiver);
server.wss.clients.forEach(async function (ws) {
if (ws.channel == channel) {
ws.send(messagestr);
}
let message = {
message: "new_post",
data: post_obj
}
let messagestr = JSON.stringify(message)
let channel = decodeURIComponent(req.body.receiver)
server.wss.clients.forEach(async function(ws) {
if(ws.channel == channel) {
ws.send(messagestr)
}
});
res.json({"success":"successfully posted message"})
console.log(5,`posted new message by ${res.locals.username} : ${req.body.message}`);
});
})
}
}
res.json({ "success": "successfully posted message" });
console.log(5, `posted new message by ${res.locals.username} : ${req.body.message}`);
});
});
};
export default {
setup
};
+45 -52
View File
@@ -1,55 +1,48 @@
const allowed_settings = { //"settingname":["validtypes"]
const allowed_settings = {
"ACCR": ["boolean"]
}
module.exports = {
"setup": function(router,con,server) {
router.get("/api/settings",function(req,res) {
res.json(res.locals.settings)
})
router.post("/api/settings",function(req,res) {
if(!req.body.setting) {
res.json({"error":"no setting to change"})
return
};
export const setup = function (router, con, server) {
router.get("/api/settings", function (req, res) {
res.json(res.locals.settings);
});
router.post("/api/settings", function (req, res) {
if (!req.body.setting) {
res.json({ "error": "no setting to change" });
return;
}
if ((typeof req.body.setting) != "string") {
res.json({ "error": "no setting to change" });
return;
}
let types = allowed_settings[req.body.setting];
let allowed = false;
let got = typeof req.body.value;
for (let index = 0; index < types.length; index++) {
if (types[index] == got) {
allowed = true;
break;
}
if((typeof req.body.setting) != "string") {
res.json({"error":"no setting to change"})
return
}
if (!allowed) {
console.log(5, "incorrect type given, received, expected", typeof req.body.value, allowed_settings[req.body.setting]);
res.json({ "error": "no new setting value given" });
return;
}
let setting_to_change = req.body.setting;
let setting_new_value = req.body.value;
res.locals.settings[setting_to_change] = setting_new_value;
console.log(5, "changing settings", setting_to_change, setting_new_value, res.locals.settings);
let sql = "update ipost.users set User_Settings=? where User_Name=?";
let values = [JSON.stringify(res.locals.settings), res.locals.username];
con.query(sql, values, function (err, result) {
if (err) {
res.json({ "status": "error", "code": err });
return;
}
let types = allowed_settings[req.body.setting]
let allowed = false
let got = typeof req.body.value
for (let index = 0; index < types.length; index++) {
if(types[index] == got) {
allowed = true;
break;
}
}
if(!allowed) {
console.log(5,"incorrect type given, received, expected", typeof req.body.value, allowed_settings[req.body.setting])
res.json({"error":"no new setting value given"})
return
}
let setting_to_change = req.body.setting
let setting_new_value = req.body.value
res.locals.settings[setting_to_change] = setting_new_value
console.log(5,"changing settings", setting_to_change, setting_new_value, res.locals.settings)
let sql = "update ipost.users set User_Settings=? where User_Name=?"
let values = [JSON.stringify(res.locals.settings),res.locals.username]
con.query(sql, values, function (err, result) {
if(err) {
res.json({"status":"error","code":err})
return
}
res.json({"status":"success"})
})
})
}
}
res.json({ "status": "success" });
});
});
};
export default {
setup
};