diff --git a/db.js b/db.js index f3d9a03..a7ef70a 100644 --- a/db.js +++ b/db.js @@ -12,7 +12,7 @@ logcon.connect(); // check_for module.exports.cv = (table,key,value,callback) => { - logcon.query('SELECT * FROM `'+table+'`', (err, rows, fields) => { + logcon.query(`SELECT * FROM ${table}`, (err, rows, fields) => { let log = ''; if (err) { console.log("sql err"); @@ -57,7 +57,7 @@ module.exports.cv = (table,key,value,callback) => { module.exports.dl = (table,key,value,callback) => { // console.log('SELECT * FROM `'+table+'` WHERE `'+key+'` = '+value); - logcon.query('DELETE FROM `'+table+'` WHERE `'+key+'` = '+value, (err, rows, fields) => { + logcon.query(`DELETE FROM ${table} WHERE ${key} = ${value}`, (err, rows, fields) => { if (err) { console.log("sql err"); throw err; @@ -70,7 +70,19 @@ module.exports.dl = (table,key,value,callback) => { // get_from module.exports.gv = (table,key,value,callback) => { // console.log('SELECT * FROM `'+table+'` WHERE `'+key+'` = '+value); - logcon.query('SELECT * FROM `'+table+'` WHERE `'+key+'` = '+value, (err, rows, fields) => { + logcon.query(`SELECT * FROM ${table} WHERE ${key} = ${value}`, (err, rows, fields) => { + if (err) { + console.log("sql err"); + throw err; + }else{ + callback(rows); + } + }) +} + +module.exports.gav = (table,callback) => { + // console.log('SELECT * FROM `'+table+'` WHERE `'+key+'` = '+value); + logcon.query(`SELECT * FROM ${table} WHERE 1`, (err, rows, fields) => { if (err) { console.log("sql err"); throw err; @@ -83,7 +95,7 @@ module.exports.gv = (table,key,value,callback) => { module.exports.ggv = (table,ekey,key,value,callback) => { // console.log('SELECT * FROM `'+table+'` WHERE `'+key+'` = '+value); - logcon.query('SELECT '+ekey+' FROM `'+table+'` WHERE `'+key+'` = '+value, (err, rows, fields) => { + logcon.query(`SELECT ${ekey} FROM ${table} WHERE ${key} = ${value}`, (err, rows, fields) => { if (err) { console.log("sql err"); throw err; @@ -95,7 +107,7 @@ module.exports.ggv = (table,ekey,key,value,callback) => { // set_in module.exports.sv = (table,key,value,ekey,evalue,callback) => { - logcon.query("UPDATE `"+table+"` SET `"+key+"` = '"+value+"' WHERE `"+ekey+"` = '"+evalue+"'", (err , rows) => { + logcon.query(`UPDATE ${table} SET ${key} = '${value}' WHERE ${ekey} = '${evalue}'`, (err , rows) => { // console.log("UPDATE `"+table+"` SET `"+key+"` = '"+value+"' WHERE `"+ekey+"` = '"+evalue+"'"); if (err) { console.log("sql err"); @@ -108,7 +120,7 @@ module.exports.sv = (table,key,value,ekey,evalue,callback) => { module.exports.nr = (table,keys,values) =>{ // console.log('INSERT INTO `'+table+'`('+keys+') VALUES ('+values+')'); - logcon.query('INSERT INTO `'+table+'`('+keys+') VALUES ('+values+')',(err,res) =>{ + logcon.query(`INSERT INTO ${table} (${keys}) VALUES (${values})`,(err,res) =>{ if (err) { console.log("sql err"); throw err; @@ -116,4 +128,16 @@ module.exports.nr = (table,keys,values) =>{ return true; } }) +} + +module.exports.glv = (table,last_value,callback) =>{ + // console.log('INSERT INTO `'+table+'`('+keys+') VALUES ('+values+')'); + logcon.query(`SELECT * FROM ${table} ORDER BY ${last_value} DESC LIMIT 1;`,(err,res) =>{ + if (err) { + console.log("sql err"); + throw err; + }else{ + callback(res); + } + }) } \ No newline at end of file diff --git a/func.js b/func.js index b5d5a12..30bf355 100644 --- a/func.js +++ b/func.js @@ -9,7 +9,7 @@ const moment = require("moment"); const vars = require('./vars'); module.exports.sendfile = (fileName, response) => { - const filePath = "./files/"+fileName; + const filePath = "./"+fileName; fs.exists(filePath, function (exists) { if (exists) { response.writeHead(200, { @@ -49,38 +49,80 @@ module.exports.sendfile = (fileName, response) => { // } module.exports.sid = (cook,res,callback,auto = true)=>{ - let uuid = cook["uuid"]; - let sid = cook["sid"]; - if(cook["uuid"] != null && cook["sid"] != null){ - db.ggv("sids","`uid`","sid",`'${sid}'`,(sdata)=>{ sdata = sdata[0] - // console.log(sdata); - if(sdata != null){ - db.ggv("users","`uuid`,`id`","id",`'${sdata["uid"]}'`,(udata)=>{ udata = udata[0] - if (udata != null && udata["id"] == sdata["uid"] && uuid == udata["uuid"]){ - callback(true); - } - else{ - if(auto) res.send({out:"bad",err:"wrong"}); - if(!auto) callback(false); - } - }); - } - else{ - if(auto) res.send({out:"bad",err:"expired"}); - if(!auto) callback(false); - } - }); - }else{ - if(auto) res.send({out:"bad",err:"nocr"}); - if(!auto) callback(false); + try { + let uuid = cook["uuid"]; + let sid = cook["sid"]; + if(cook["uuid"] != null && cook["sid"] != null){ + db.ggv("sids","`uid`","sid",`'${sid}'`,(sdata)=>{ sdata = sdata[0] + // console.log(sdata); + if(sdata != null){ + db.ggv("users","`uuid`,`id`","id",`'${sdata["uid"]}'`,(udata)=>{ udata = udata[0] + if (udata != null && udata["id"] == sdata["uid"] && uuid == udata["uuid"]){ + callback(true); + } + else{ + if(auto) res.send({out:"bad",err:"wrong"}); + if(!auto) callback(false); + } + }); + } + else{ + if(auto) res.send({out:"bad",err:"expired"}); + if(!auto) callback(false); + } + }); + }else{ + if(auto) res.send({out:"bad",err:"nocr"}); + if(!auto) callback(false); + } + } catch (error) { + this.log("backend sid checking err0r - "+error); } } module.exports.log = (message) =>{ - var date = moment().format('YYYY-MM-DD') - var time = moment().format('hh:mm:ss') - console.log(`${date}_${time}|${message}`); - db.nr("logs","`date`,`time`,`log`",`'${date}','${time}','${message}'`); + var date = moment().format('YYYY-MM-DD'); + var time = moment().format('hh:mm:ss'); + let clog = `${date}_${time}|${message}`; + console.log(clog); + // if(vars.log_to_file) fs.appendFile('./logs.txt', `${clog} \n`, function (err) {if (err) throw err;}); + if(vars.log_to_db) db.nr("logs","`date`,`time`,`log`",`'${date}','${time}','${message}'`); +} + +module.exports.logs_file = (res)=>{ + let path = './logs.txt'; + fs.exists(path, function(exists) { + if(exists) { + fs.unlink(path,function(err){ + if(err) throw err; + write_logs(res); + }); + } else { + write_logs(res); + } + }); + + function write_logs(res){ + db.gav("logs",(db_logs)=>{ + db.glv(`logs`,`id`,(last)=>{last = last[0]; + db_logs.forEach(log => { + let date = moment(log[`date_time`]).utc().format('YYYY-MM-DD'); + fs.appendFile(path, `${date}_${log["time"]}|${log["log"]} \n`, function (err) { + if (err) throw err; + if(log["id"] == last["id"]-1){ + res.download(path, (err) => { + if (err) { throw err; } + console.log("logs downloaded"); + fs.unlink(path, (err) => { + if (err) { throw err; } + }); + }); + } + }); + }); + }) + }); + } } diff --git a/index.js b/index.js index 9399bc8..b3bf8ef 100644 --- a/index.js +++ b/index.js @@ -37,96 +37,149 @@ app.use(cookieParser()); app.post('/back_login', (req, res) => { - let inp = req.body; - let cook = req.cookies; - user.login(inp,cook,res); + try { + let inp = req.body; + let cook = req.cookies; + user.login(inp,cook,res); + } catch (error) { + func.log("router login error - "+error); + } }); app.post('/reg_user', (req, res) => { - let inp = req.body; - let cook = req.cookies; - user.reg(inp,cook,res) + try{ + let inp = req.body; + let cook = req.cookies; + user.reg(inp,cook,res) + } catch (error) { + func.log("router registration error - "+error); + } }) app.post("/sid_log",(req,res) =>{ - let inp = req.body; - let cook = req.cookies; - user.sid_log(inp,cook,res,req); + try{ + let inp = req.body; + let cook = req.cookies; + user.sid_log(inp,cook,res,req); + } catch (error) { + func.log("router sid logging in error - "+error); + } }) app.post("/get_sid" , (req,res) =>{ - let inp = req.body; - let sid = func.get_uuid(); - res.cookie("sid",sid,{maxAge:(vars.week),path:"/;SameSite=Strict"}); - res.send({out:"good"}); + try{ + let inp = req.body; + let sid = func.get_uuid(); + res.cookie("sid",sid,{maxAge:(vars.week),path:"/;SameSite=Strict"}); + res.send({out:"good"}); + } catch (error) { + func.log("router sid getting error - "+error); + } }); app.post("/clear_sid" , (req,res) =>{ - let inp = req.body; - let cook = req.cookies; - user.clear_sid(inp,cook,res); + try{ + let inp = req.body; + let cook = req.cookies; + user.clear_sid(inp,cook,res); + } catch (error) { + func.log("router sid clearing error - "+error); + } }); app.post("/get_cr_uuid", (req,res) => { - let inp = req.body; - let cook = req.cookies; - func.sid(cook,res,()=>{ - user.get_cr(inp,cook,res); - }) + try{ + let inp = req.body; + let cook = req.cookies; + func.sid(cook,res,()=>{ + user.get_cr(inp,cook,res); + }) + } catch (error) { + func.log("router getting user information by uuid error - "+error); + } }) app.post("/save_proj", (req,res) => { - let inp = req.body; - let cook = req.cookies; - func.sid(cook,res,()=>{ - proj.save(inp,cook,res); - }) + try{ + let inp = req.body; + let cook = req.cookies; + func.sid(cook,res,()=>{ + proj.save(inp,cook,res); + }) + } catch (error) { + func.log("router project saving error - "+error); + } }) app.post("/load_proj", (req,res) => { - let inp = req.body; - let cook = req.cookies; - func.sid(cook,res,()=>{ - proj.load(inp,cook,res); - }) + try{ + let inp = req.body; + let cook = req.cookies; + func.sid(cook,res,()=>{ + proj.load(inp,cook,res); + }) + } catch (error) { + func.log("router project loading error - "+error); + } }) app.post("/get_projs", (req,res) => { - let inp = req.body; - let cook = req.cookies; - func.sid(cook,res,()=>{ - proj.loads(inp,cook,res); - }) + try{ + let inp = req.body; + let cook = req.cookies; + func.sid(cook,res,()=>{ + proj.loads(inp,cook,res); + }) + } catch (error) { + func.log("router user projects getting error - "+error); + } }) app.post("/new_obj", (req,res) => { - let inp = req.body; - let cook = req.cookies; - func.sid(cook,res,()=>{ - obj.new(inp,cook,res); - }) + try{ + let inp = req.body; + let cook = req.cookies; + func.sid(cook,res,()=>{ + obj.new(inp,cook,res); + }) + } catch (error) { + func.log("router object creating error - "+error); + } }) app.post("/get_objs", (req,res) => { - let inp = req.body; - let cook = req.cookies; - // func.log(inp["name"]); - func.sid(cook,res,()=>{ - obj.loads(inp,cook,res); - }) + try{ + let inp = req.body; + let cook = req.cookies; + // func.log(inp["name"]); + func.sid(cook,res,()=>{ + obj.loads(inp,cook,res); + }) + } catch (error) { + func.log("router objects getting error - "+error); + } }) app.post("/get_obj", (req,res) => { - let inp = req.body; - let cook = req.cookies; - // func.log(inp["name"]); - func.sid(cook,res,()=>{ - obj.load(inp,cook,res); - }) + try{ + let inp = req.body; + let cook = req.cookies; + // func.log(inp["name"]); + func.sid(cook,res,()=>{ + obj.load(inp,cook,res); + }) + } catch (error) { + func.log("router single object getting error - "+error); + } }) +app.get("/get_logs", (req,res) => { + try{let cook = req.cookies;func.sid(cook,res,()=>{func.logs_file(res);})} + catch (error) {func.log("router logs download error - "+error);} +}) + // pages app.get("/reg" , (req,res) =>{ res.render('reg'); diff --git a/object.js b/object.js index 9104d9d..81a7c84 100644 --- a/object.js +++ b/object.js @@ -3,28 +3,40 @@ const func = require('./func'); const vars = require('./vars'); module.exports.loads = (inp,cook,res)=>{ - db.ggv("objects","`name`,`id`,`height`,`width`,`description`","gid",0,(odata)=>{ - // func.log(odata); - res.send({out:"good",body:odata}); - }) + try { + db.ggv("objects","`name`,`id`,`height`,`width`,`description`","gid",0,(odata)=>{ + // func.log(odata); + res.send({out:"good",body:odata}); + }) + } catch (error) { + func.log("backend objects loading error - "+error); + } } module.exports.load = (inp,cook,res)=>{ - let keys = inp["key"]; - db.ggv("objects",keys,"name",`'${inp["name"]}'`,(odata)=>{ - // func.log(odata); - res.send({out:"good",body:odata[0]}); - }) + try { + let keys = inp["key"]; + db.ggv("objects",keys,"name",`'${inp["name"]}'`,(odata)=>{ + // func.log(odata); + res.send({out:"good",body:odata[0]}); + }) + } catch (error) { + func.log("backend single object loading err0r - "+error); + } } module.exports.new = (inp,cook,res)=>{ - db.cv("objects","name",inp["name"],(include)=>{ - if(include){ - res.send({out:"bad",err:"name"}); - } - else if (!include){ - db.nr("objects","`name`,`img`,`height`,`width`,`description`",`'${inp["name"]}','${inp["img"]}','${inp["height"]}','${inp["width"]}','${inp["desc"]}'`); - res.send({out:"good"}); - } - }) + try { + db.cv("objects","name",inp["name"],(include)=>{ + if(include){ + res.send({out:"bad",err:"name"}); + } + else if (!include){ + db.nr("objects","`name`,`img`,`height`,`width`,`description`",`'${inp["name"]}','${inp["img"]}','${inp["height"]}','${inp["width"]}','${inp["desc"]}'`); + res.send({out:"good"}); + } + }) + } catch (error) { + func.log("backend object creating error - "+error); + } } \ No newline at end of file diff --git a/project.js b/project.js index 4041fc4..5e69a93 100644 --- a/project.js +++ b/project.js @@ -3,58 +3,70 @@ const func = require('./func'); const vars = require('./vars'); module.exports.load = (inp,cook,res)=>{ - db.gv("users","uuid",`'${cook["uuid"]}'`,(udata)=>{ udata = udata[0]; - db.gv("projects","uid",udata["id"],(pdata)=>{ - let projt = null; - // func.log(inp["name"]); - pdata.forEach(proj => { - if(proj["name"] == inp["name"]){ - projt = proj; + try { + db.gv("users","uuid",`'${cook["uuid"]}'`,(udata)=>{ udata = udata[0]; + db.gv("projects","uid",udata["id"],(pdata)=>{ + let projt = null; + // func.log(inp["name"]); + pdata.forEach(proj => { + if(proj["name"] == inp["name"]){ + projt = proj; + } + }) + if (projt != null){ + func.log(`good boy ${udata["uuid"]} loaded project ${projt["name"]} from ${cook["sid"]}`); + res.send({out:"good",body:projt["body"]}); + } + else{ + res.send({out:"bad proj"}); } }) - if (projt != null){ - func.log(`good boy ${udata["uuid"]} loaded project ${projt["name"]} from ${cook["sid"]}`); - res.send({out:"good",body:projt["body"]}); - } - else{ - res.send({out:"bad proj"}); - } }) - }) + } catch (error) { + func.log("backend project loading error - "); + } } module.exports.loads = (inp,cook,res)=>{ - db.ggv("users","`id`","uuid",`'${cook["uuid"]}'`,(udata)=>{ udata = udata[0]; - db.gv("projects","uid",udata["id"],(pdata)=>{ - res.send({out:"good",body:pdata}); + try { + db.ggv("users","`id`","uuid",`'${cook["uuid"]}'`,(udata)=>{ udata = udata[0]; + db.gv("projects","uid",udata["id"],(pdata)=>{ + res.send({out:"good",body:pdata}); + }) }) - }) + } catch (error) { + func.log("backend projects loading err0r - " - error); + } } module.exports.save = (inp,cook,res)=>{ - db.gv("users","uuid",`'${cook["uuid"]}'`, (udata)=>{ udata = udata[0] - db.gv("projects","uid",udata["id"],(pdata)=>{ - let projin = null; - // func.log(pdata); - pdata.forEach(projt => { - if(projt["name"] == inp["name"] && projt["uid"] == udata["id"]){ - projin = projt; - return; + try { + db.gv("users","uuid",`'${cook["uuid"]}'`, (udata)=>{ udata = udata[0] + db.gv("projects","uid",udata["id"],(pdata)=>{ + let projin = null; + // func.log(pdata); + pdata.forEach(projt => { + if(projt["name"] == inp["name"] && projt["uid"] == udata["id"]){ + projin = projt; + return; + } + }) + if(projin == null){ + // func.log("proj not in"); + // func.log(pname,udata["id"],proj); + func.log(`good boy ${udata["uuid"]} created project ${inp["name"]} from ${cook["sid"]}`); + db.nr("projects","`uid`,`name`,`body`,`img`",`'${udata["id"]}','${inp["name"]}','${inp["proj"]}','${inp["img"]}'`); + res.send({out:"good"}); + } else if (projin != null){ + db.sv("projects","body",inp["proj"],"id",projin["id"],()=>{}); + if(inp["img"] != "") db.sv("projects","img",inp["img"],"id",projin["id"],()=>{}); + func.log(`good boy ${udata["uuid"]} saved project ${projin["name"]} from ${cook["sid"]}`); + // func.log("proj in"); + res.send({out:"good"}); } }) - if(projin == null){ - // func.log("proj not in"); - // func.log(pname,udata["id"],proj); - func.log(`good boy ${udata["uuid"]} created project ${inp["name"]} from ${cook["sid"]}`); - db.nr("projects","`uid`,`name`,`body`,`img`",`'${udata["id"]}','${inp["name"]}','${inp["proj"]}','${inp["img"]}'`); - res.send({out:"good"}); - } else if (projin != null){ - db.sv("projects","body",inp["proj"],"id",projin["id"],()=>{}); - if(inp["img"] != "") db.sv("projects","img",inp["img"],"id",projin["id"],()=>{}); - func.log(`good boy ${udata["uuid"]} saved project ${projin["name"]} from ${cook["sid"]}`); - // func.log("proj in"); - res.send({out:"good"}); - } }) - }) + } catch (error) { + func.log("backend project saving err0r - "+error); + } } \ No newline at end of file diff --git a/public/lib/fn.js b/public/lib/fn.js index 15f9d05..e3e23c1 100644 --- a/public/lib/fn.js +++ b/public/lib/fn.js @@ -36,23 +36,23 @@ function clear_ck(redirect = true){ let sid = $.cookie("sid"); $.removeCookie("uuid"); $.removeCookie('sid'); - console.log("sid"); + // console.log("sid"); setTimeout(()=>{ $.post( "/clear_sid",{uuid:uuid,sid:sid}) .done(function( res ) { - console.log("sid"); + // console.log("sid"); if(res["out"] == "good"){ // get_sid(); if (redirect) goto("/login"); } - console.log("clear"); + // console.log("clear"); }) },100) } function check_sid(redirect = true){ - console.log("checking sid"); + // console.log("checking sid"); if($.cookie('sid') == null || $.cookie('uuid') == null){ clear_ck(redirect); } diff --git a/public/lib/inter.js b/public/lib/inter.js index 3638fd0..42f6225 100644 --- a/public/lib/inter.js +++ b/public/lib/inter.js @@ -40,7 +40,7 @@ function create(clas,x,y,body,id,size){ } else if (db_data != null){ obj.src = img; - obj.title = `${db_data["name"]}\n${db_data["description"]}\nwidth:${db_data["width"]}см height:${db_data["height"]}см`; + obj.title = `${db_data["name"]}\n${db_data["description"]}\n${lang("width")}:${db_data["width"]}см ${lang("height")}:${db_data["height"]}см`; // drag.transform = `translate(${drag.getAttribute("data-y")}px, ${drag.getAttribute("data-y")}px) scale(${db_data["width"] * 2} ${db_data["height"] * 2})`; if(size){ obj.style.width = `${db_data["width"] * 2}px`; @@ -114,7 +114,7 @@ function load(objss){ function load_proj_cloud(){ document.getElementById("drags").innerHTML = ""; - document.getElementById("top_panel_center").innerText = `loading ${proj_name} from cloud`; + document.getElementById("top_panel_center").innerText = `${lang("loading")} ${proj_name} ${lang("from")} ${lang("cloud")}`; $.post( "/load_proj",{name:proj_name}) .done(function( res ) { if(res["out"] == "good"){ @@ -123,7 +123,7 @@ function load_proj_cloud(){ // console.log(JSON.parse(res["body"])); // $.cookie("objs",res["body"]); load(JSON.parse(res["body"])); - document.getElementById("top_panel_center").innerText = `${proj_name} (cloud)`; + document.getElementById("top_panel_center").innerText = `${proj_name} (${lang("cloud")})`; } else if(res["out"] == "bad proj"){ console.log("bad"); @@ -139,7 +139,7 @@ function load_proj_local(){ if(localStorage.getItem(proj_name) == null){ save_local() } - document.getElementById("top_panel_center").innerText = `${proj_name} (local)`; + document.getElementById("top_panel_center").innerText = `${proj_name} (${lang("local")})`; document.getElementById("drags").innerHTML = ""; load(JSON.parse(localStorage.getItem(proj_name))); } @@ -153,7 +153,7 @@ function save(callback){ // console.log(objs); html2canvas(document.querySelector("body"),{height: document.getElementById("wall").style.height.split("p")[0], width:document.getElementById("wall").style.width.split("p")[0], y:document.getElementById("wall").getBoundingClientRect().top,x:document.getElementById("wall").getBoundingClientRect().left}).then(canvas => { let scr = ""; - console.log(canvas.toDataURL().length); + // console.log(canvas.toDataURL().length); scr = canvas.toDataURL(); // if (canvas.toDataURL().length < 120000) scr = canvas.toDataURL() // console.log(scr); @@ -161,7 +161,7 @@ function save(callback){ .done(function( res ) { if(res["out"] == "good"){ // console.log(scr) - console.log("good"); + // console.log("good"); if(callback) callback(res); } }) @@ -232,10 +232,11 @@ interact('.trash').dropzone({ ondragenter: function (event) { var drag = event.relatedTarget; var zone = event.target; - delete objs[drag.classList[0]][drag.id]; - drag.remove(); + console.log(drag.classList); + if(objs[drag.classList[0]] != null&&objs[drag.classList[0]][drag.id] != null) delete objs[drag.classList[0]][drag.id]; zone.classList.add('drop-target'); drag.classList.add('can-drop'); + drag.remove(); }, ondragleave: function (event) {var drag = event.relatedTarget;var zone = event.target;zone.classList.remove('drop-target');drag.classList.remove('in_zone');drag.classList.remove('can-drop');}, ondrop: function (event) { diff --git a/user.js b/user.js index 84be3a5..ccccaf6 100644 --- a/user.js +++ b/user.js @@ -3,131 +3,151 @@ const func = require('./func'); const vars = require('./vars'); module.exports.login = (inp,cook,res)=>{ - let ilogin = func.decrypt(inp["login"],inp["sid"]); - let ipass = func.decrypt(inp["pass"],inp["sid"]); - - db.cv("users","login",ilogin,(login) => { - if(login == null){ - res.status(210).send({out:"bad", err:"user"}); - } - else if (login != null){ - db.gv("users","login",`'${ilogin}'`,(udata)=>{udata = udata[0]; - db.ggv("sids","`sid`","uid",udata["id"],(sdata)=>{sdata = sdata[0]; - // console.log(sdata); - if(ipass == udata["pass"]){ - if (sdata != null){ - // res.send({out:"logged",sid:sdata["sid"]}); - // console.log(sdata); - db.dl("sids","uid",`'${udata["id"]}'`,() =>{}); - - } - func.log("good boy "+udata["uuid"]+" logged in by login & pass from "+cook["sid"]); - res.cookie("uuid",udata["uuid"],{maxAge:vars.week,path:"/;SameSite=Strict"}); + try{ + let ilogin = func.decrypt(inp["login"],inp["sid"]); + let ipass = func.decrypt(inp["pass"],inp["sid"]); - // db.sv("users","sids",sids += inp["sid"]+";","uuid",udata["uuid"],()=>{}); - db.nr("sids",'`sid`,`uid`',`'${cook["sid"]}','${udata["id"]}'`); - res.send({out:"goto",url:"/main"}); - } - else{ - res.status(210).send({out:"bad", err:"pass"}); - } - - }) - }); - } - }) + db.cv("users","login",ilogin,(login) => { + if(login == null){ + res.status(210).send({out:"bad", err:"user"}); + } + else if (login != null){ + db.gv("users","login",`'${ilogin}'`,(udata)=>{udata = udata[0]; + db.ggv("sids","`sid`","uid",udata["id"],(sdata)=>{sdata = sdata[0]; + // console.log(sdata); + if(ipass == udata["pass"]){ + if (sdata != null){ + // res.send({out:"logged",sid:sdata["sid"]}); + // console.log(sdata); + db.dl("sids","uid",`'${udata["id"]}'`,() =>{}); + + } + func.log("good boy "+udata["uuid"]+" logged in by login & pass from "+cook["sid"]); + res.cookie("uuid",udata["uuid"],{maxAge:vars.week,path:"/;SameSite=Strict"}); + + // db.sv("users","sids",sids += inp["sid"]+";","uuid",udata["uuid"],()=>{}); + db.nr("sids",'`sid`,`uid`',`'${cook["sid"]}','${udata["id"]}'`); + res.send({out:"goto",url:"/main"}); + } + else{ + res.status(210).send({out:"bad", err:"pass"}); + } + + }) + }); + } + }) + } catch(error){ + func.log("backend user logging in error - "+error); + } // res.send("good"); } module.exports.reg = (inp,cook,res)=>{ - let uuid = func.get_uuid(inp["login"]); - let admin = inp["admin"]; - let pass = inp["pass"]; - let login = inp["login"]; - check_db(); - function check_db() { - db.cv("users","login",inp["login"], (ldata)=>{ - db.cv("users","login",inp["uuid"],(udata) =>{ - // func.log("/reg_user same login recs = "+ldata); - // func.log("/reg_user same uuid recs = "+udata); - if(udata==null && ldata==null){ - good_reg(); - // func.log("/reg_user good reg"); - func.log(`good boy ${uuid} registered user ${login} with uuid = ${uuid} admin = ${admin}`); - - } - else if(udata!=null){ - uuid = func.get_uuid(inp["login"]); - check_db(); - // res.send({out:"bad", body:"uuid"}); - } - else if (ldata != null){ - func.log(`bad boy ${uuid} tried to register user ${login} with uuid = ${uuid} admin = ${admin} but login in use`); - res.send({out:"bad", body:"login"}); - return; - } - }) - }) - } - function good_reg(){ - db.nr("users",'`login`,`pass`,`uuid`,`admin`',`'${login}','${pass}','${uuid}',${admin}`); - if (admin){ - db.ggv("users","`id`","uuid",`'${uuid}'`,(udata)=>{ udata = udata[0] - db.nr("admins",'`login`,`uid`',`'${login}',${udata["id"]}`); + try { + let uuid = func.get_uuid(inp["login"]); + let admin = inp["admin"]; + let pass = inp["pass"]; + let login = inp["login"]; + check_db(); + function check_db() { + db.cv("users","login",inp["login"], (ldata)=>{ + db.cv("users","login",inp["uuid"],(udata) =>{ + // func.log("/reg_user same login recs = "+ldata); + // func.log("/reg_user same uuid recs = "+udata); + if(udata==null && ldata==null){ + good_reg(); + // func.log("/reg_user good reg"); + func.log(`good boy ${uuid} registered user ${login} with uuid = ${uuid} admin = ${admin}`); + + } + else if(udata!=null){ + uuid = func.get_uuid(inp["login"]); + check_db(); + // res.send({out:"bad", body:"uuid"}); + } + else if (ldata != null){ + func.log(`bad boy ${uuid} tried to register user ${login} with uuid = ${uuid} admin = ${admin} but login in use`); + res.send({out:"bad", body:"login"}); + return; + } + }) }) } - res.send({out:"good", body:{uuid:uuid,login:login,admin:admin}}); + function good_reg(){ + db.nr("users",'`login`,`pass`,`uuid`,`admin`',`'${login}','${pass}','${uuid}',${admin}`); + if (admin){ + db.ggv("users","`id`","uuid",`'${uuid}'`,(udata)=>{ udata = udata[0] + db.nr("admins",'`login`,`uid`',`'${login}',${udata["id"]}`); + }) + } + res.send({out:"good", body:{uuid:uuid,login:login,admin:admin}}); + } + } catch (error) { + func.log("backend user registration error - "+error); } } module.exports.get_cr = (inp,cook,res)=>{ - db.ggv("users","`login`,`admin`,`id`","uuid",`"${inp["uuid"]}"`,(udata)=>{udata = udata[0]; - // delete re["sids"]; - if(udata != null){ - res.send({out:"good",body:udata}); - }else{ - res.send({out:"bad"}); - } - }); + try { + db.ggv("users","`login`,`admin`,`id`","uuid",`"${inp["uuid"]}"`,(udata)=>{udata = udata[0]; + // delete re["sids"]; + if(udata != null){ + res.send({out:"good",body:udata}); + }else{ + res.send({out:"bad"}); + } + }); + } catch (error) { + func.log("backend user information pulling error - "+error); + } } module.exports.clear_sid = (inp,cook,res)=>{ - if(inp["sid"] != null){ - // res.send({out:"good"}); - db.dl("sids","sid",`'${inp["sid"]}'`,() =>{ - func.log("good boy "+inp["uuid"] + " logged out from "+inp["sid"]); - }); - // db.ggv("sids","id","sid",`'${cook["sid"]}'`,(sids)=>{ - // Object.entries(sids).forEach(([key,value])=>{ - // db.dl("sids","id",`'${value["id"]}'`,() =>{}); - // }) - // }) - } - else if(inp["uuid"] != null){ - // res.send({out:"good"}); - db.ggv("users","id","uuid",`'${inp["uuid"]}'`,(udata)=>{udata = udata[0] - db.dl("sids","uid",`'${udata["id"]}'`,() =>{ + try { + if(inp["sid"] != null){ + // res.send({out:"good"}); + db.dl("sids","sid",`'${inp["sid"]}'`,() =>{ func.log("good boy "+inp["uuid"] + " logged out from "+inp["sid"]); }); - // db.ggv("sids","id","uid",`'${udata["id"]}'`,(sids)=>{ - // Object.entries(sids).forEach(([key,value])=>{ - // db.dl("sids","id",`'${value["id"]}'`,() =>{}); - // }) - // }) - }); + // db.ggv("sids","id","sid",`'${cook["sid"]}'`,(sids)=>{ + // Object.entries(sids).forEach(([key,value])=>{ + // db.dl("sids","id",`'${value["id"]}'`,() =>{}); + // }) + // }) + } + else if(inp["uuid"] != null){ + // res.send({out:"good"}); + db.ggv("users","id","uuid",`'${inp["uuid"]}'`,(udata)=>{udata = udata[0] + db.dl("sids","uid",`'${udata["id"]}'`,() =>{ + func.log("good boy "+inp["uuid"] + " logged out from "+inp["sid"]); + }); + // db.ggv("sids","id","uid",`'${udata["id"]}'`,(sids)=>{ + // Object.entries(sids).forEach(([key,value])=>{ + // db.dl("sids","id",`'${value["id"]}'`,() =>{}); + // }) + // }) + }); + } + res.send({out:"good"}); + } catch (error) { + func.log("backend user sid clearing error -"+error); } - res.send({out:"good"}); } module.exports.sid_log=(inp,cook,res,req)=>{ - func.sid(cook,res,(include) => { - if (include){ - res.send({out:"good",url:"/main"}); - if(req.headers.referer.split("http://n0rsrv2:3002/")[1] == "login") func.log("good boy "+ id["uuid"]+" logged in by sid logs from " + id["sid"]); - } - else if (!include){ - res.send({out:"bad"}); - if(req.headers.referer.split("http://n0rsrv2:3002/")[1] == "login") func.log("bad boy "+ id["uuid"]+" tried to login by sid but sid expired from " + id["sid"]); - } - },false) + try { + func.sid(cook,res,(include) => { + if (include){ + res.send({out:"good",url:"/main"}); + if(req.headers.referer.split("http://n0rsrv2:3002/")[1] == "login") func.log("good boy "+ id["uuid"]+" logged in by sid logs from " + id["sid"]); + } + else if (!include){ + res.send({out:"bad"}); + if(req.headers.referer.split("http://n0rsrv2:3002/")[1] == "login") func.log("bad boy "+ id["uuid"]+" tried to login by sid but sid expired from " + id["sid"]); + } + },false) + } catch (error) { + func.log("backend user sid logging error - "+error); + } } \ No newline at end of file diff --git a/vars.js b/vars.js index 333035f..6e7363e 100644 --- a/vars.js +++ b/vars.js @@ -1 +1,3 @@ module.exports.week = 7 * 24 * 3600 * 1000; +module.exports.log_to_file = true; +module.exports.log_to_db = true; \ No newline at end of file diff --git a/views/admin.ejs b/views/admin.ejs index 8f76b14..2974f77 100644 --- a/views/admin.ejs +++ b/views/admin.ejs @@ -18,14 +18,12 @@ height: 200px; width: 200px; } - - - +
@@ -56,8 +60,6 @@
- - \ No newline at end of file diff --git a/views/project.ejs b/views/project.ejs index 4e39a9f..04ca495 100644 --- a/views/project.ejs +++ b/views/project.ejs @@ -108,11 +108,10 @@ <%- include('./static/start.ejs',{name:proj_name,async: true}) %> -<%- include('./header.ejs') %> +<%- include('./header.ejs',{async: true}) %> -
@@ -126,32 +125,21 @@
- +
0
- +
0
-
- -
- black hole +
+ <%= lang('black hole') %>
@@ -196,37 +184,37 @@ if($.cookie("cache") ==null)$.cookie("cache","true",{path:"/proj;SameSite=Strict"}); // console.log(proj_name); let menu = document.getElementById("project_menu"); - document.getElementById("top_panel_left").innerHTML = ``; - menu.innerHTML += "
"; - menu.innerHTML += "
"; - menu.innerHTML += "
"; - menu.innerHTML += "
"; - if ($.cookie("cache") == "false") menu.innerHTML += "
"; - else if ($.cookie("cache") == "true") menu.innerHTML += "
"; + document.getElementById("top_panel_left").innerHTML = ``; + menu.innerHTML += "
"; + menu.innerHTML += "
"; + menu.innerHTML += "
"; + menu.innerHTML += "
"; + if ($.cookie("cache") == "false") menu.innerHTML += "
'>
"; + else if ($.cookie("cache") == "true") menu.innerHTML += "
'>
"; function cache_change(to){ let cache_switch = document.getElementById("cache_switch"); - if(to) {cache_switch.innerHTML = "";$.cookie("cache","true",{path:"/proj;SameSite=Strict"});} - else if(!to) {cache_switch.innerHTML = "";$.cookie("cache","false",{path:"/proj;SameSite=Strict"});} + if(to) {cache_switch.innerHTML = "";$.cookie("cache","true",{path:"/proj;SameSite=Strict"});} + else if(!to) {cache_switch.innerHTML = "";$.cookie("cache","false",{path:"/proj;SameSite=Strict"});} } function save_proj(type){ - document.getElementById('top_panel_center').innerHTML=`saving ${proj_name}`; + document.getElementById('top_panel_center').innerHTML=` <%=lang("saving")%> ${proj_name}`; save((res)=>{ - document.getElementById('top_panel_center').innerHTML=`saved ${proj_name} to cloud`; + document.getElementById('top_panel_center').innerHTML=`<%=lang("saved")%> ${proj_name} <%=lang("to cloud")%>`; setTimeout((res)=>{ - document.getElementById("top_panel_center").innerText = `${proj_name} (cloud)`; + document.getElementById("top_panel_center").innerText = `${proj_name} (<%=lang("cloud")%>)`; },3000) }) } function save_proj_local(type){ - document.getElementById('top_panel_center').innerHTML=`saving ${proj_name}`; + document.getElementById('top_panel_center').innerHTML=` <%=lang("saving")%> ${proj_name}`; save_local(); - document.getElementById('top_panel_center').innerHTML=`saved ${proj_name} to local storage`; + document.getElementById('top_panel_center').innerHTML=`<%=lang("saved")%> ${proj_name} <%=lang("to local")%>`; setTimeout((res)=>{ - document.getElementById("top_panel_center").innerText = `${proj_name} (local)`; + document.getElementById("top_panel_center").innerText = `${proj_name} (<%=lang("local")%>)`; },3000) } diff --git a/views/static/end.ejs b/views/static/end.ejs index 8e8cd28..41b6657 100644 --- a/views/static/end.ejs +++ b/views/static/end.ejs @@ -13,11 +13,11 @@ } $(window).focus(function(){ if(document.title == "login"){ - console.log(document.title); + // console.log(document.title); log_by_sid(); }else if(document.title != "login"){ check_sid(true); - console.log("check"); + // console.log("check"); } }); \ No newline at end of file diff --git a/views/static/language.ejs b/views/static/language.ejs new file mode 100644 index 0000000..a40a39c --- /dev/null +++ b/views/static/language.ejs @@ -0,0 +1,92 @@ +<% +cur_lang = "ru"; +lang = (text) => language[cur_lang][text]; +ch_lang = (lang) => cur_lang = lang; +lang_json = () => JSON.stringify(language); +language = { + "ru":{ + "main page": "проекты", + "admin panel": "админ панель", + "logout": "выйти", + "new project": "создать новый проект", + "Image preview": "превью картинки...", + "hello admin": "привет админ", + "height": "высота", + "width": "ширина", + "img max size": "макс. размер 2мб", + "user registration": "регистрация пользователя", + "create object": "создать обьект", + "admin": "админ", + "register": "зарегистрировать", + "download logs": "скачать логи", + "create new object": "создание нового обьекта", + "logs": "логи", + "password": "пароль", + "login": "логин", + "object name": "название обьекта", + "object description": "описание обьекта", + "black hole": "чёрная дыра", + "project settings": "настройки проекта", + "save to cloud": "сохранить в облако", + "load from cloud": "загрузить из облака", + "save to local": "сохранить в локальное хранилище", + "load from local": "загрузить из локального хранилища", + "cache_title": "если включено большые файлы будут сохраняться на локальное хранильще (улучшенная проиводительность)", + "cache_on": "кеш включен", + "cache_off": "кеш выключен", + "to local": "в локальное хранилище", + "local": "локальное хранилище", + "to cloud": "в облако", + "cloud": "облако", + "saved": "сохранено", + "saving": "сохраняется", + "loading": "загружается", + "loaded": "загружено", + "from": "из", + "to": "в", + "in": "в" + }, + "en":{ + "main page": "main page", + "admin panel": "admin panel", + "Image preview": "Image preview...", + "hello admin": "hello admin", + "height": "height", + "width": "width", + "img max size": "max size 2mb", + "user registration": "user registration", + "create object": "create object", + "admin": "admin", + "register": "register", + "download logs": "download logs", + "create new object": "create new object", + "cache_title": "if its on browser will store large data in local storage (better performance)", + "logout": "logout", + "new project": "new project", + "logs": "logs", + "password": "password", + "login": "login", + "object name": "object name", + "object description": "object description", + "black hole": "black hole", + "project settings": "project settings", + "save to cloud": "save to cloud", + "load from cloud": "load from cloud", + "save to local": "save to local", + "load from local": "load from local", + "cache_on": "cache is on", + "cache_off": "cache is off", + "to local": "to local", + "local": "local", + "to cloud": "to cloud", + "cloud": "cloud", + "saved": "saved", + "saving": "saving", + "loading": "loading", + "loaded": "loaded", + "from": "from", + "to": "to", + "in": "in" + } +} +%> \ No newline at end of file diff --git a/views/static/start.ejs b/views/static/start.ejs index ae06637..13cfb89 100644 --- a/views/static/start.ejs +++ b/views/static/start.ejs @@ -1,11 +1,11 @@ + - @@ -22,12 +22,13 @@ +