added multiple language support
This commit is contained in:
parent
1f5085490f
commit
c25bd2e274
36
db.js
36
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);
|
||||
}
|
||||
})
|
||||
}
|
100
func.js
100
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; }
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
159
index.js
159
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');
|
||||
|
|
48
object.js
48
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);
|
||||
}
|
||||
}
|
94
project.js
94
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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
234
user.js
234
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);
|
||||
}
|
||||
}
|
2
vars.js
2
vars.js
|
@ -1 +1,3 @@
|
|||
module.exports.week = 7 * 24 * 3600 * 1000;
|
||||
module.exports.log_to_file = true;
|
||||
module.exports.log_to_db = true;
|
|
@ -18,14 +18,12 @@
|
|||
height: 200px;
|
||||
width: 200px;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.main_sec{
|
||||
margin: auto;
|
||||
/* display: flex; */
|
||||
text-align: center;
|
||||
}
|
||||
#reg_form{
|
||||
section{
|
||||
width: 80vw;
|
||||
margin: auto;
|
||||
}
|
||||
|
@ -34,61 +32,69 @@
|
|||
<%- include('./static/start.ejs',{name:"admin",async: true}) %>
|
||||
<%- include('./header.ejs') %>
|
||||
|
||||
<section class="main">
|
||||
<h1>hello admin</h1>
|
||||
<h1 style="text-align: center;"><%= lang("hello admin") %></h1> <br>
|
||||
<section>
|
||||
<h1><%= lang("create new object") %></h1>
|
||||
<div class="nobj">
|
||||
<div>
|
||||
<div class="img_preview">
|
||||
<label for="img_file">max size 2mb</label><br>
|
||||
<label for="img_file"><%= lang("img max size") %></label><br>
|
||||
<input type="file" id="img_file" onchange="previewFile()" accept="image/*" value="" maxlength="1"><br>
|
||||
|
||||
</div>
|
||||
<div style="width: 200px; height: 200px;">
|
||||
<img src="" id="img_prev" height="100" alt="Image preview...">
|
||||
<img src="" id="img_prev" height="100" alt="<%= lang('Image preview') %>">
|
||||
</div>
|
||||
</div>
|
||||
<textarea name="" id="nobj_description" cols="30" rows="5" placeholder="object description"></textarea>
|
||||
<div>
|
||||
<div class="nobj_options">
|
||||
<input type="text" id="nobj_name" placeholder="object name">
|
||||
<button onclick="create_obj()">create object</button>
|
||||
<div id="obj_resp"></div>
|
||||
</div>
|
||||
<div id="obj_input">
|
||||
<div>
|
||||
<div style="display: flex;width: 150px;justify-content: space-between;">
|
||||
<label for="obj_height">height </label>
|
||||
<div id="obj_height_value">100см</div>
|
||||
<textarea id="nobj_description" cols="30" rows="5" placeholder="<%= lang("object description") %>"></textarea>
|
||||
<div>
|
||||
<div class="nobj_options">
|
||||
<input type="text" id="nobj_name" placeholder="<%= lang("object name") %>">
|
||||
<button onclick="create_obj()"><%= lang("create object")%></button>
|
||||
<div id="obj_resp"></div>
|
||||
</div>
|
||||
<div id="obj_input">
|
||||
<div>
|
||||
<div style="display: flex;width: 100%;justify-content: space-between;">
|
||||
<label for="obj_height"><%= lang("height") %> </label>
|
||||
<div id="obj_height_value">100см</div>
|
||||
</div>
|
||||
<input style="width: 100%;" type="range" step="0.5" min="1" max="100" id="obj_height" value="100" oninput="obj_size_change('height')">
|
||||
</div>
|
||||
<input type="range" step="0.1" min="1" max="100" id="obj_height" value="100" oninput="obj_size_change('height')">
|
||||
</div>
|
||||
<div>
|
||||
<div style="display: flex;width: 150px;justify-content: space-between;">
|
||||
<label for="obj_width">width</label>
|
||||
<div id="obj_width_value">100см</div>
|
||||
<div>
|
||||
<div style="display: flex;width: 100%;justify-content: space-between;">
|
||||
<label for="obj_width"><%= lang("width") %></label>
|
||||
<div id="obj_width_value">100см</div>
|
||||
</div>
|
||||
<input style="width: 100%;" type="range" step="0.5" min="1" max="100" id="obj_width" value="100" oninput="obj_size_change('width')">
|
||||
</div>
|
||||
<input type="range" step="0.1" min="1" max="100" id="obj_width" value="100" oninput="obj_size_change('width')">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<form action="" method="get" onsubmit="return false;" id="reg_form">
|
||||
<h1>user registration</h1>
|
||||
<section class="main_sec">
|
||||
<section>
|
||||
<h1><%= lang("user registration") %></h1>
|
||||
<div class="main_sec">
|
||||
<div>
|
||||
<input type="text" id="login" name="login" placeholder="login">
|
||||
<input type="password" id="pass" name="pass" placeholder="password">
|
||||
<button onclick='reg();'>reg</button>
|
||||
<input type="text" id="login" name="login" placeholder="<%= lang("login") %>">
|
||||
<input type="password" id="pass" name="pass" placeholder="<%= lang("password") %>">
|
||||
<button onclick='reg();'><%= lang("register") %></button>
|
||||
</div>
|
||||
<div>
|
||||
<label for="admin_check">admin</label>
|
||||
<label for="admin_check"><%= lang("admin") %></label>
|
||||
<input type="checkbox" name="admin" value='false' id="admin_check">
|
||||
</div>
|
||||
<div id="reg_response"></div>
|
||||
</section>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section style="display: flex; justify-content: space-between;">
|
||||
<h1><%= lang("logs") %></h1> <br>
|
||||
<div class="logs_div" style="margin: auto 0px;display: flex;">
|
||||
<button onclick="goto('/get_logs');"><%= lang("download logs") %></button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<%- include('./static/end.ejs') %>
|
||||
|
||||
|
|
|
@ -44,7 +44,11 @@
|
|||
border: 1px black solid;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
"<%- include('./static/language.ejs') %>"
|
||||
let language = JSON.parse('<%= lang_json() %>'.replaceAll(""",'"'));
|
||||
lang = (text)=>{return language["<%= cur_lang %>"][text]}
|
||||
</script>
|
||||
|
||||
<header id="top_panel">
|
||||
<!-- <div id="user_name"></div> -->
|
||||
|
@ -56,8 +60,6 @@
|
|||
</header>
|
||||
<div id="user_menu" class="cmenu"></div>
|
||||
|
||||
|
||||
|
||||
<script>get_from_uuid((res)=>{
|
||||
let uname = document.getElementById("user_name");
|
||||
let menu = document.getElementById("user_menu");
|
||||
|
@ -65,26 +67,26 @@
|
|||
let right = document.getElementById("top_panel_right");
|
||||
let left = document.getElementById("top_panel_left");
|
||||
|
||||
if(document.title != "main") menu.innerHTML += `<button onclick="goto('/');">main page</button> <br>`;
|
||||
if(document.title != "main") menu.innerHTML += `<button onclick="goto('/');"><%= lang("main page") %></button> <br>`;
|
||||
right.innerHTML += `<div id="user_name" class="menu_btn">${res["login"]}</div>`;
|
||||
|
||||
if (res["admin"] == true){
|
||||
menu.innerHTML += `<button onclick='goto("/admin")'>admin panel</button><br>`;
|
||||
menu.innerHTML += `<button onclick='goto("/admin")'><%= lang("admin panel") %></button><br>`;
|
||||
}
|
||||
menu.innerHTML += "<button onclick='logout();'>logout</button><br>";
|
||||
menu.innerHTML += "<button onclick='logout();'><%= lang('logout') %></button><br>";
|
||||
});
|
||||
|
||||
onclick = (e) => {
|
||||
e.preventDefault()
|
||||
// e.preventDefault()
|
||||
// console.log(e);
|
||||
// console.log(document.getElementById(e.target.id).parentElement);
|
||||
if(e.target.onclick != null){
|
||||
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");
|
||||
}
|
||||
}
|
||||
if(e.target.id == "user_name"){
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
<!-- <script src="/lib/interact.min.js"></script> -->
|
||||
|
||||
<section class="main">
|
||||
<button onclick="new_proj()">new project</button>
|
||||
<button onclick="new_proj()"><%= lang("new project") %></button>
|
||||
<div id="projs_div"></div>
|
||||
</section>
|
||||
|
||||
|
@ -72,7 +72,7 @@
|
|||
projs.forEach(proj => {
|
||||
// console.log(proj);
|
||||
let div = document.getElementById("projs_div");
|
||||
div.innerHTML += `<button id='proj_${proj["name"]}' class='proj' onclick="goto('/proj/${proj["name"]}')"><img height="200" width="290" src='${proj["img"]}' alt='${proj["name"]}'></img> <br>${proj["name"]}</button>`;
|
||||
div.innerHTML += `<button id='proj_${proj["name"]}' class='proj' onclick="goto('/proj/${proj["name"]}')">${proj["name"]}<br><img height="200" width="290" src='${proj["img"]}' alt='${proj["name"]}'></img></button>`;
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -108,11 +108,10 @@
|
|||
</style>
|
||||
|
||||
<%- include('./static/start.ejs',{name:proj_name,async: true}) %>
|
||||
<%- include('./header.ejs') %>
|
||||
<%- include('./header.ejs',{async: true}) %>
|
||||
<script src="/lib/interact.js"></script>
|
||||
<script src="/lib/html2canvas.js"></script>
|
||||
|
||||
|
||||
<div id="drags">
|
||||
<!-- <div class="cube drag spawn" id="cube_0" style="transform: translate(197.7px, 57.8667px);" data-x="197.6999969482422" data-y="57.866668701171875" >cube</div> -->
|
||||
</div>
|
||||
|
@ -126,32 +125,21 @@
|
|||
<div id="wall_input">
|
||||
<div>
|
||||
<div style="display: flex;width: 150px;justify-content: space-between;">
|
||||
<label for="wall_height">height </label>
|
||||
<label for="wall_height"><%= lang("height") %> </label>
|
||||
<div id="wall_height_value">0</div>
|
||||
</div>
|
||||
<input type="range" step="0.1" min="0" max="5" id="wall_height" value="2" oninput="wall_size_change('height')">
|
||||
</div>
|
||||
<div>
|
||||
<div style="display: flex;width: 150px;justify-content: space-between;">
|
||||
<label for="wall_width">width</label>
|
||||
<label for="wall_width"><%= lang("width") %></label>
|
||||
<div id="wall_width_value">0</div>
|
||||
</div>
|
||||
<input type="range" step="0.1" min="0" max="7" id="wall_width" value="4" oninput="wall_size_change('width')" onchange="resize_drags()">
|
||||
</div>
|
||||
</div>
|
||||
<div class="czones">
|
||||
<!-- <div class="cube createzone"></div>
|
||||
<div class="buble createzone"></div>
|
||||
<div class="buble createzone"></div>
|
||||
<div class="buble createzone"></div>
|
||||
<div class="buble createzone"></div>
|
||||
<div class="buble createzone"></div>
|
||||
<div class="buble createzone"></div>
|
||||
<div class="buble createzone"></div>
|
||||
<div class="buble createzone"></div>
|
||||
<div class="buble createzone"></div> -->
|
||||
</div>
|
||||
<img class="trash" style="height: 100px; width: 100px;" src="/img/shadow-energy.gif" alt="black hole">
|
||||
<div class="czones"></div>
|
||||
<img class="trash" style="height: 100px; width: 100px;" src="/img/shadow-energy.gif" alt="<%= lang('black hole') %>">
|
||||
</div>
|
||||
|
||||
<div class="wall dropzone" id="wall"></div>
|
||||
|
@ -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 = `<div id='proj_menu' class="menu_btn">file</div>`;
|
||||
menu.innerHTML += "<button id='proj_csave_btn' onclick='save_proj()'>save to cloud</button> <br>";
|
||||
menu.innerHTML += "<button id='proj_cload_btn' onclick='load_proj_cloud()'>load from cloud</button> <br>";
|
||||
menu.innerHTML += "<button id='proj_lsave_btn' onclick='save_proj_local()'>save to local storage</button> <br>";
|
||||
menu.innerHTML += "<button id='proj_lload_btn' onclick='load_proj_local()'>load from local storage</button> <br>";
|
||||
if ($.cookie("cache") == "false") menu.innerHTML += "<div id='cache_switch' title='if its on browser will stop large data in local storage (better performance)'><button onclick='cache_change(true);'>cache is off</button></div>";
|
||||
else if ($.cookie("cache") == "true") menu.innerHTML += "<div id='cache_switch' title='if its on browser will stop large data in local storage (better performance)'><button onclick='cache_change(false);'>cache is on</button></div>";
|
||||
document.getElementById("top_panel_left").innerHTML = `<div id='proj_menu' class="menu_btn"><%= lang("project settings") %></div>`;
|
||||
menu.innerHTML += "<button id='proj_csave_btn' onclick='save_proj()'><%= lang(`save to cloud`) %></button> <br>";
|
||||
menu.innerHTML += "<button id='proj_cload_btn' onclick='load_proj_cloud()'><%=lang('load from cloud')%></button> <br>";
|
||||
menu.innerHTML += "<button id='proj_lsave_btn' onclick='save_proj_local()'><%=lang('save to local') %></button> <br>";
|
||||
menu.innerHTML += "<button id='proj_lload_btn' onclick='load_proj_local()'><%=lang('load from local')%></button> <br>";
|
||||
if ($.cookie("cache") == "false") menu.innerHTML += "<div id='cache_switch' title='<%=lang('cache_title')%>'><button onclick='cache_change(true);'><%=lang('cache_off')%></button></div>";
|
||||
else if ($.cookie("cache") == "true") menu.innerHTML += "<div id='cache_switch' title='<%=lang('cache_title')%>'><button onclick='cache_change(false);'><%=lang('cache_on')%></button></div>";
|
||||
|
||||
|
||||
function cache_change(to){
|
||||
let cache_switch = document.getElementById("cache_switch");
|
||||
if(to) {cache_switch.innerHTML = "<button onclick='cache_change(false);' title='if its on browser will stop large data in local storage (better performance)'>cache is on</button></div>";$.cookie("cache","true",{path:"/proj;SameSite=Strict"});}
|
||||
else if(!to) {cache_switch.innerHTML = "<button onclick='cache_change(true);' title='if its on browser will stop large data in local storage (better performance)'>cache is off</button></div>";$.cookie("cache","false",{path:"/proj;SameSite=Strict"});}
|
||||
if(to) {cache_switch.innerHTML = "<button onclick='cache_change(false);' title='<%=lang('cache_title')%>'><%=lang('cache_on')%></button></div>";$.cookie("cache","true",{path:"/proj;SameSite=Strict"});}
|
||||
else if(!to) {cache_switch.innerHTML = "<button onclick='cache_change(true);' title='<%=lang('cache_title')%>'><%=lang('cache_off')%></button></div>";$.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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
});
|
||||
</script>
|
92
views/static/language.ejs
Normal file
92
views/static/language.ejs
Normal file
|
@ -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"
|
||||
}
|
||||
}
|
||||
%>
|
|
@ -1,11 +1,11 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<script src="/lib/ejs.js"></script>
|
||||
<script src="/lib/fn.js"></script>
|
||||
<!-- <script src="/lib/interact.min.js"></script> -->
|
||||
<script src="/lib/jquery.js"></script>
|
||||
<script src="/lib/jquery.cookie.js"></script>
|
||||
<script src="/lib/ejs.js"></script>
|
||||
<script src="/lib/aes.js"></script>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
@ -22,12 +22,13 @@
|
|||
</style>
|
||||
<script>
|
||||
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");
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user