code optimization, new log system, appp optimizawion

This commit is contained in:
N0rdye 2023-07-03 00:05:13 +05:00
parent af8e44d1ce
commit 3583e5e588
19 changed files with 681 additions and 542 deletions

42
db.js
View File

@ -1,7 +1,8 @@
const mysql = require('mysql'); const mysql = require('mysql');
const vars = require('./vars');
const logcon = mysql.createConnection({ const logcon = mysql.createConnection({
host: 'db', host: 'localhost',
user: 'user', user: 'user',
password: 'user', password: 'user',
database: 'users' database: 'users'
@ -32,6 +33,28 @@ module.exports.cv = (table,key,value,callback) => {
}) })
} }
// module.exports.ccv = (table,ekey,key,value,callback) => {
// logcon.query('SELECT * FROM `'+table+'`', (err, rows, fields) => {
// let log = '';
// if (err) {
// console.log("sql err");
// throw err;
// }
// rows.forEach(rec => {
// if (rec[key]==value){
// log = rec[key];
// return;
// }
// });
// if (log != ''){
// callback(log);
// }
// else{
// callback(null);
// }
// })
// }
module.exports.dl = (table,key,value,callback) => { module.exports.dl = (table,key,value,callback) => {
// console.log('SELECT * FROM `'+table+'` WHERE `'+key+'` = '+value); // 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) => {
@ -57,15 +80,28 @@ 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) => {
if (err) {
console.log("sql err");
throw err;
}else{
callback(rows);
}
})
}
// set_in // set_in
module.exports.sv = (table,key,value,ekey,evalue,callback) => { module.exports.sv = (table,key,value,ekey,evalue,callback) => {
logcon.query("UPDATE `"+table+"` SET `"+key+"` = '"+value+"' WHERE `"+ekey+"` = '"+evalue+"'", (err , res) => { logcon.query("UPDATE `"+table+"` SET `"+key+"` = '"+value+"' WHERE `"+ekey+"` = '"+evalue+"'", (err , rows) => {
// console.log("UPDATE `"+table+"` SET `"+key+"` = '"+value+"' WHERE `"+ekey+"` = '"+evalue+"'"); // console.log("UPDATE `"+table+"` SET `"+key+"` = '"+value+"' WHERE `"+ekey+"` = '"+evalue+"'");
if (err) { if (err) {
console.log("sql err"); console.log("sql err");
throw err; throw err;
}else{ }else{
callback(res); callback(rows);
} }
}) })
} }

39
func.js
View File

@ -5,6 +5,8 @@ const cryptojs = require('crypto-js');
const e = require('express'); const e = require('express');
const fs = require('fs'); const fs = require('fs');
const db = require('./db'); const db = require('./db');
const moment = require("moment");
const vars = require('./vars');
module.exports.sendfile = (fileName, response) => { module.exports.sendfile = (fileName, response) => {
const filePath = "./files/"+fileName; const filePath = "./files/"+fileName;
@ -46,9 +48,42 @@ module.exports.check_sid = (Cookies, callback) =>{
}) })
} }
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"});
callback(false);
}
});
}
else{
if(auto) res.send({out:"bad",err:"expired"});
callback(false);
}
});
}else{
if(auto) res.send({out:"bad",err:"nocr"});
callback(false);
}
}
module.exports.get_uuid = (name) =>{ module.exports.log = (comment) =>{
let unid = uuid.v4() + '%'+name+'%%' + uuid.v4() +'#'+(621); var date = moment().format('YYYY-MM-DD_hh:mm')
console.log(`${date}|${comment}`);
}
module.exports.get_uuid = () =>{
let unid = uuid.v4() + '%%' + uuid.v4() +'#'+(621);
return unid; return unid;
} }

325
index.js
View File

@ -1,15 +1,21 @@
const express = require('express'); const express = require('express');
const db = require('./db'); const db = require('./db');
const func = require('./func'); const func = require('./func');
const user = require('./user');
const obj = require('./object');
const proj = require('./project');
const vars = require('./vars');
const cookieParser = require('cookie-parser'); const cookieParser = require('cookie-parser');
const { // const {
response, // response,
request // request
} = require('express'); // } = require('express');
const { escapeSelector } = require('jquery'); // const { escapeSelector } = require('jquery');
const { name } = require('ejs'); // const { name } = require('ejs');
const { stringify } = require('uuid'); // const { stringify } = require('uuid');
// const createApplication = require('express/lib/express');
// const { render } = require('express/lib/response');
const app = express(); const app = express();
// const { // const {
@ -28,134 +34,30 @@ app.use(express.urlencoded({
})); }));
app.use(express.static('public')); app.use(express.static('public'));
app.use(cookieParser()); app.use(cookieParser());
var week = 7 * 24 * 3600 * 1000;
app.post('/back_login', (req, res) => { app.post('/back_login', (req, res) => {
let inp = req.body; let inp = req.body;
let cook = req.cookies; let cook = req.cookies;
let ilogin = func.decrypt(inp["login"],inp["sid"]); user.login(inp,cook,res);
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];
if(ipass == udata["pass"]){
console.log(udata["uuid"]+" logged in by login & pass from "+cook["sid"]);
res.cookie("uuid",udata["uuid"],{maxAge: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"});
// db.gv("users","uuid",udata["uuid"],(rdata)=>{
// // console.log(rdata["sids"]);
// let sids = rdata["sids"];
// // console.log(sids.split(";"));
// if(sids != null){
// if(sids.split(";").includes(inp["sid"])){
// console.log("good boy");
// }
// else{
// db.sv("users","sids",sids += inp["sid"]+";","uuid",udata["uuid"],()=>{});
// db.nr("sids",'`sid`,`uid`',`'${cook["sid"]}','${udata["id"]}'`);
// // db.sv("sids","uid",sids += inp["sid"]+";","uuid",udata["uuid"], ()=>{});
// }
// }
// else{
// db.sv("users","sids",inp["sid"]+";","uuid",udata["uuid"],()=>{});
// db.nr("sids",'`sid`,`uid`',`'${cook["sid"]}','${udata["id"]}'`);
// }
// });
// // db.sv("users","id",udata["id"],"uuid",udata["uuid"]+"|"+uuid);
// if(udata["admin"] == 1){
// res.send({out:"goto",url:"/main"});
// }
// else{
// res.send({out:"goto",url:"/main"});
// // res.redirect("main");
// }
}
else{
res.status(210).send({out:"bad", err:"pass"});
}
});
}
})
// res.send("good");
}); });
app.post('/reg_user', (req, res) => { app.post('/reg_user', (req, res) => {
let inp = req.body; let inp = req.body;
let cook = req.cookies; let cook = req.cookies;
let uuid = func.get_uuid(inp["login"]); user.reg(inp,cook,res)
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) =>{
// console.log("/reg_user same login recs = "+ldata);
// console.log("/reg_user same uuid recs = "+udata);
if(udata==null && ldata==null){
good_reg(udata);
// console.log("/reg_user good reg");
console.log(`user ${login} registered 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){
console.log("bad user");
res.send({out:"bad", body:"login"});
return;
}
})
})
}
function good_reg(udata){
db.nr("users",'`login`,`pass`,`uuid`,`admin`',`'${login}','${pass}','${uuid}',${admin}`);
if (admin){
db.gv("users","uuid",`'${uuid}'`,(res)=>{ res = res[0]
db.nr("admins",'`login`,`uid`',`'${login}',${res["id"]}`);
})
}
res.send({out:"good", body:{uuid:uuid,login:login,admin:admin}});
}
}) })
app.post("/sid_log",(req,res) =>{ app.post("/sid_log",(req,res) =>{
let inp = req.body; let inp = req.body;
let cook = req.cookies; let cook = req.cookies;
user.sid_log(inp,cook,res,req);
if(cook["uuid"] != null && cook["sid"] != null){
func.check_sid(cook,(include,id) => {
if (include){
if(req.headers.referer.split("http://n0rsrv2:3002/")[1] == "login") console.log("good boy "+ id["uuid"]+" logged in by sid logs from " + id["sid"]);
res.send({out:"good",url:"/main"});
}
else if (!include){
if(req.headers.referer.split("http://n0rsrv2:3002/")[1] == "login") console.log("bad boy "+ id["uuid"]+" tried to login by sid but sid expired from " + id["sid"]);
res.send({out:"bad"});
}
})
}
}) })
app.post("/get_sid" , (req,res) =>{ app.post("/get_sid" , (req,res) =>{
let inp = req.body; let inp = req.body;
let sid = func.get_uuid(inp["name"]); let sid = func.get_uuid();
res.cookie("sid",sid,{maxAge:(week),path:"/;SameSite=Strict"}); res.cookie("sid",sid,{maxAge:(vars.week),path:"/;SameSite=Strict"});
res.send({out:"good"}); res.send({out:"good"});
}); });
@ -163,203 +65,75 @@ app.post("/get_sid" , (req,res) =>{
app.post("/clear_sid" , (req,res) =>{ app.post("/clear_sid" , (req,res) =>{
let inp = req.body; let inp = req.body;
let cook = req.cookies; let cook = req.cookies;
user.clear_sid(inp,cook,res);
// console.log(cook["uuid"],cook["sid"]);
if(cook["sid"] != null){
// res.send({out:"good"});
console.log(cook["uuid"] + " logged out from "+cook["sid"]);
db.dl("sids","sid",`'${cook["sid"]}'`,() =>{});
}
res.send({out:"good"});
}); });
app.post("/get_cr_uuid", (req,res) => { app.post("/get_cr_uuid", (req,res) => {
let inp = req.body; let inp = req.body;
if(inp["uuid"] != null && inp["sid"] != null){ let cook = req.cookies;
db.gv("users","uuid",`"${inp["uuid"]}"`,(udata)=>{udata = udata[0]; func.sid(cook,res,()=>{
let re = udata; user.get_cr(inp,cook,res);
delete re["pass"]; })
delete re["uuid"];
// delete re["sids"];
func.check_sid(inp,(include,id) => {
if(include){
res.send({out:"good",body:re});
}
else if (!include){
res.send({out:"bad",body:"expired"});
}
else{
res.send({out:"bad"});
}
})
});
}
}) })
app.post("/save_proj", (req,res) => { app.post("/save_proj", (req,res) => {
let inp = req.body; let inp = req.body;
let cook = req.cookies; let cook = req.cookies;
let proj = inp["proj"]; // func.log(inp["img"]);
let pname = inp["name"]; func.sid(cook,res,()=>{
// console.log(inp["img"]); proj.save(inp,cook,res);
db.gv("users","uuid",`'${cook["uuid"]}'`, (udata)=>{ udata = udata[0]
db.gv("projects","uid",udata["id"],(pdata)=>{
let projin = null;
// console.log(pdata);
pdata.forEach(projt => {
if(projt["name"] == pname && projt["uid"] == udata["id"]){
projin = projt;
return;
}
})
if(projin == null){
// console.log("proj not in");
// console.log(pname,udata["id"],proj);
console.log(`${udata["uuid"]} created project ${pname} from ${cook["sid"]}`);
db.nr("projects","`uid`,`name`,`body`,`img`",`'${udata["id"]}','${pname}','${proj}','${inp["img"]}'`);
res.send({out:"good"});
} else if (projin != null){
db.sv("projects","body",proj,"id",projin["id"],()=>{});
if(inp["img"] != "") db.sv("projects","img",inp["img"],"id",projin["id"],()=>{});
console.log(`${udata["uuid"]} saved project ${projin["name"]} from ${cook["sid"]}`);
// console.log("proj in");
res.send({out:"good"});
}
})
}) })
}) })
app.post("/load_proj", (req,res) => { app.post("/load_proj", (req,res) => {
let inp = req.body; let inp = req.body;
let cook = req.cookies; let cook = req.cookies;
if(cook['sid'] != null && cook['uuid'] != null){ func.sid(cook,res,()=>{
db.gv("users","uuid",`'${cook["uuid"]}'`,(udata)=>{ udata = udata[0]; proj.load(inp,cook,res);
db.gv("projects","uid",udata["id"],(pdata)=>{ })
let projt = null;
// console.log(inp["name"]);
pdata.forEach(proj => {
if(proj["name"] == inp["name"]){
projt = proj;
}
})
if (projt != null){
console.log(`${udata["uuid"]} loaded project ${projt["name"]} from ${cook["sid"]}`);
res.send({out:"good",body:projt["body"]});
}
else{
res.send({out:"bad proj"});
}
})
})
}
else{
res.send({out:"bad"});
}
}) })
app.post("/get_projs", (req,res) => { app.post("/get_projs", (req,res) => {
let inp = req.body; let inp = req.body;
let cook = req.cookies; let cook = req.cookies;
if(cook['sid'] != null && cook['uuid'] != null){ func.sid(cook,res,()=>{
db.gv("users","uuid",`'${cook["uuid"]}'`,(udata)=>{ udata = udata[0]; proj.loads(inp,cook,res);
db.gv("projects","uid",udata["id"],(pdata)=>{ })
res.send({out:"good",body:pdata});
})
})
}
else{
res.send({out:"bad"});
}
}) })
app.post("/new_obj", (req,res) => { app.post("/new_obj", (req,res) => {
let inp = req.body; let inp = req.body;
let cook = req.cookies; let cook = req.cookies;
if(cook['sid'] != null && cook['uuid'] != null){ func.sid(cook,res,()=>{
// console.log(inp["name"],inp["img"]); obj.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"]}','1','1','${inp["desc"]}'`);
res.send({out:"good"});
}
})
}
}) })
app.post("/get_objs", (req,res) => { app.post("/get_objs", (req,res) => {
let inp = req.body; let inp = req.body;
let cook = req.cookies; let cook = req.cookies;
// console.log(inp["name"]); // func.log(inp["name"]);
if(cook['sid'] != null && cook['uuid'] != null){ func.sid(cook,res,()=>{
db.gv("objects","gid",0,(odata)=>{ obj.loads(inp,cook,res);
// console.log(odata); })
// Object.keys(odata).forEach(([key,value]) => {
// });
odata.forEach(element => {
delete element["img"]
});
res.send({out:"good",body:odata});
})
}
}) })
app.post("/get_obj", (req,res) => { app.post("/get_obj", (req,res) => {
let inp = req.body; let inp = req.body;
let cook = req.cookies; let cook = req.cookies;
// console.log(inp["name"]); // func.log(inp["name"]);
if(cook['sid'] != null && cook['uuid'] != null){ func.sid(cook,res,()=>{
db.gv("objects","name",`'${inp["name"]}'`,(odata)=>{ obj.load(inp,cook,res);
// console.log(odata); })
res.send({out:"good",body:odata[0]});
})
}
}) })
// app.post("/set_cr_uuid", (req,res) => {
// let inp = req.body;
// if(inp["uuid"] != null && inp["sid"] != null){
// db.sv("users");
// }
// })
// app.post("/get_uuid" , (req,res) =>{
// let inp = req.body;
// db.gv("users","login",inp["login"],(udata)=>{
// let uuid = udata["uuid"];
// res.send({out:'good',body:uuid});
// });
// });
// web pages
// app.get("/jq.js", (req,res) =>{
// func.sendfile("./jquery.js",res);
// })
// app.post("/user" , (req,res) =>{
// // let inp = req.body;
// // let cook = req.cookies;
// // let sid = cook["sid"];
// // let uuid = cook["uuid"];
// // // console.log(req.cookieParser.JSONCookie("sid"));
// // // console.log('Cookies: ', req.cookies);
// // console.log(uuid," - ",sid);
// res.render("main");
// // db.gv("users","uuid",uuid,(db) => {
// // });
// })
// pages
app.get("/reg" , (req,res) =>{ app.get("/reg" , (req,res) =>{
res.render('reg'); res.render('reg');
}) })
app.get("/proj/:name" , (req,res) =>{ app.get("/proj/:name" , (req,res) =>{
// res.cookie
res.render('project',{proj_name:req.params["name"]}); res.render('project',{proj_name:req.params["name"]});
}) })
@ -375,8 +149,13 @@ app.get("/admin", (req,res) =>{
res.render('admin'); res.render('admin');
}); });
// app.get("/main/:id", (req,res) =>{ // app.get("/test", (req,res) =>{
// res.render('main'); // let inp = req.body;
// let cook = req.cookies;
// func.sid(cook,res,()=>{
// console.log("asd");
// })
// }); // });
app.get('/', (req, res) => { app.get('/', (req, res) => {
@ -392,4 +171,4 @@ app.all('*', (req, res) => {
res.status(404).send('<h1>404! Page not</h1> <br> <a href="/">go to main page</a>'); res.status(404).send('<h1>404! Page not</h1> <br> <a href="/">go to main page</a>');
}); });
app.listen(process.env.PORT || 8080, () => console.log("started")); app.listen(process.env.PORT || 8080, () => func.log("server for puzzle started UwU"));

30
object.js Normal file
View File

@ -0,0 +1,30 @@
const db = require('./db');
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});
})
}
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]});
})
}
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"});
}
})
}

9
package-lock.json generated
View File

@ -16,6 +16,7 @@
"ejs": "^3.1.9", "ejs": "^3.1.9",
"express": "^4.18.2", "express": "^4.18.2",
"jquery": "^3.7.0", "jquery": "^3.7.0",
"moment": "^2.29.4",
"mysql": "^2.18.1", "mysql": "^2.18.1",
"uuid": "^9.0.0" "uuid": "^9.0.0"
} }
@ -586,6 +587,14 @@
"node": "*" "node": "*"
} }
}, },
"node_modules/moment": {
"version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
"engines": {
"node": "*"
}
},
"node_modules/ms": { "node_modules/ms": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",

View File

@ -7,6 +7,7 @@
"ejs": "^3.1.9", "ejs": "^3.1.9",
"express": "^4.18.2", "express": "^4.18.2",
"jquery": "^3.7.0", "jquery": "^3.7.0",
"moment": "^2.29.4",
"mysql": "^2.18.1", "mysql": "^2.18.1",
"uuid": "^9.0.0" "uuid": "^9.0.0"
}, },

60
project.js Normal file
View File

@ -0,0 +1,60 @@
const db = require('./db');
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;
}
})
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"});
}
})
})
}
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});
})
})
}
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;
}
})
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"});
}
})
})
}

View File

@ -1,43 +1,3 @@
function blogin(){
log(document.getElementById('login').value,document.getElementById('pass').value);
}
function log(nlogin,npass){
const login = CryptoJS.AES.encrypt(nlogin,$.cookie("sid")).toString();
const pass = CryptoJS.AES.encrypt(npass,$.cookie("sid")).toString();
const sid = $.cookie("sid");
$.post( "/back_login", { login:login,pass:pass,sid:sid })
.done(function( res ) {
if (res["out"] == "bad"){
console.log(res["err"]);
if (res["err"] == "user" || res["err"] == "pass"){
document.querySelector("#res").innerHTML = "<p>wrong password or login</p>";
}
}
else{
if(res["out"] == "goto"){
// postForm(res["url"], res["args"]);
goto(res["url"]);
}
}
});
}
// function get_from_uuid(callback){
// const uid = $.cookie("uuid");
// const sid = $.cookie("sid");
// $.post( "/get_cr_uuid", { uuid:uid,sid:sid })
// .done(function( res ) {
// if (res["out"] == "good"){
// callback(res["body"])
// }
// else if (res["out"] == bad){
// if (res["body"] == "expired"){
// clear_ck();
// }
// }
// });
// }
function get_from_uuid(callback){ function get_from_uuid(callback){
const uid = $.cookie("uuid"); const uid = $.cookie("uuid");
const sid = $.cookie("sid"); const sid = $.cookie("sid");
@ -61,7 +21,7 @@ function log_by_sid() {
// console.log("log"); // console.log("log");
if($.cookie('uuid') == null && $.cookie('sid') == null){ if($.cookie('uuid') == null && $.cookie('sid') == null){
// get_sid(location.hostname); // get_sid(location.hostname);
get_sid(location.hostname); get_sid();
}else if ($.cookie('sid') != null && $.cookie('uuid') != null){ }else if ($.cookie('sid') != null && $.cookie('uuid') != null){
$.post( "/sid_log") $.post( "/sid_log")
.done(function( res ) { .done(function( res ) {
@ -85,7 +45,7 @@ function clear_ck(redirect = true){
$.removeCookie("uuid"); $.removeCookie("uuid");
$.removeCookie('sid'); $.removeCookie('sid');
console.log("clear"); console.log("clear");
get_sid(location.hostname); get_sid();
if(res["out"] == "good"){ if(res["out"] == "good"){
if (redirect) goto("/login"); if (redirect) goto("/login");
} }
@ -122,17 +82,9 @@ function ask() {
} }
} }
// function goto_proj(name){
// $.post( "/proj/"+name, { name:hostname })
// .done(function( res ) {
// // if(res["out"] == "good"){
// // console.log(res["body"]);
// // }
// });
// }
function get_sid(hostname){ function get_sid(){
$.post( "/get_sid", { name:hostname }) $.post( "/get_sid", {})
.done(function( res ) { .done(function( res ) {
// if(res["out"] == "good"){ // if(res["out"] == "good"){
// console.log(res["body"]); // console.log(res["body"]);
@ -140,26 +92,6 @@ function get_sid(hostname){
}); });
} }
function new_obj(name,img,height,width,description,callback){
$.post( "/new_obj", { name:name,img:img,desc:description })
.done(function( res ) {
// if(res["out"] == "good"){
// console.log(res["body"]);
// }
callback(res);
});
}
function load_projs(callback){
$.post( "/get_projs")
.done(function( res ) {
if(res["out"] == "good"){
// console.log(res["body"]);
callback(res["body"]);
}
});
}
// redirect // redirect
function goto(url) { function goto(url) {
location.href = url; location.href = url;

View File

@ -8,7 +8,7 @@ function get_count(clas){
return count; return count;
} }
function create(clas,x,y,body,id){ function create(clas,x,y,body,id,size){
let main_clas = clas.split(" ")[0]; let main_clas = clas.split(" ")[0];
// if (body == null || body == "") body = "[]"; // if (body == null || body == "") body = "[]";
let obj = document.createElement("img"); let obj = document.createElement("img");
@ -18,7 +18,7 @@ function create(clas,x,y,body,id){
clas.forEach(cl => { clas.forEach(cl => {
obj.classList.add(cl); obj.classList.add(cl);
}); });
load_obj(main_clas,(db_data)=>{ load_obj(main_clas,"`img`,`name`,`description`,`width`,`height`",(db_data)=>{
if (db_data == null) { if (db_data == null) {
delete objs[main_clas][id]; delete objs[main_clas][id];
save(()=>{ save(()=>{
@ -27,7 +27,12 @@ function create(clas,x,y,body,id){
} }
else if (db_data != null){ else if (db_data != null){
obj.src = db_data["img"]; obj.src = db_data["img"];
obj.title = `${db_data["name"]} \n ${db_data["description"]}`; obj.title = `${db_data["name"]}\n${db_data["description"]}\nwidth:${db_data["width"]}см 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`;
obj.style.height = `${db_data["height"] * 2}px`;
}
} }
}) })
obj.setAttribute("max-width","100px"); obj.setAttribute("max-width","100px");
@ -41,7 +46,8 @@ function wall_size_change(type,value){
if(type != null && type == "width") { if(type != null && type == "width") {
if (value == null) scroll = document.getElementById("wall_width").value; if (value == null) scroll = document.getElementById("wall_width").value;
else scroll = value; else scroll = value;
document.getElementById("wall_width_value").innerHTML = (Math.ceil((parseFloat(scroll)+0.1)*10)/ 10); // document.getElementById("wall_width_value").innerHTML = (Math.ceil((parseFloat(scroll)+0.1)*10)/ 10);
document.getElementById("wall_width_value").innerHTML = scroll;
// console.log(scroll); // console.log(scroll);
wall.style.width = `${scroll * 200}px`; wall.style.width = `${scroll * 200}px`;
@ -50,7 +56,8 @@ function wall_size_change(type,value){
if(type != null && type == "height") { if(type != null && type == "height") {
if (value == null) scroll = document.getElementById("wall_height").value; if (value == null) scroll = document.getElementById("wall_height").value;
else scroll = value; else scroll = value;
document.getElementById("wall_height_value").innerHTML = (Math.ceil((parseFloat(scroll)+0.1)*10)/ 10); // document.getElementById("wall_height_value").innerHTML = (Math.ceil((parseFloat(scroll)+0.1)*10)/ 10);
document.getElementById("wall_height_value").innerHTML = scroll;
// console.log(scroll); // console.log(scroll);
wall.style.height = `${scroll * 200}px`; wall.style.height = `${scroll * 200}px`;
@ -71,21 +78,23 @@ function load_local(objss){
// console.log(keys,value["x"],value["y"],value["body"]); // console.log(keys,value["x"],value["y"],value["body"]);
// let count = Object.keys(objs[keys]).length; // let count = Object.keys(objs[keys]).length;
// console.log(count); // console.log(count);
create(keys+" drag",value["x"],value["y"],value["body"],key); create(keys+" drag",value["x"],value["y"],value["body"],key,true);
} }
}) })
} }
else { else {
document.getElementById(`wall_${keys}`).value = values; document.getElementById(`wall_${keys}`).value = values;
wall_size_change(keys,values); wall_size_change(keys,values);
// document.getElementById("drags").style.left = $(".dropzone")[0].getBoundingClientRect().x;
} }
}); });
document.getElementById("drags").style.left = $(".dropzone")[0].getBoundingClientRect().x;
drag_start();
} }
function load_proj(){ function load_proj(){
$.post( "/load_proj",{name:proj_name}) $.post( "/load_proj",{name:proj_name})
.done(function( res ) { .done(function( res ) {
drag_start();
if(res["out"] == "good"){ if(res["out"] == "good"){
// console.log("good"); // console.log("good");
// console.log(JSON.parse(`'${res["body"]}'`)); // console.log(JSON.parse(`'${res["body"]}'`));
@ -107,7 +116,7 @@ function save(callback){
html2canvas(document.querySelector("body"),{height: 500, width:(window.innerWidth /1.65),x:(window.innerWidth / 5), y:250}).then(canvas => { html2canvas(document.querySelector("body"),{height: 500, width:(window.innerWidth /1.65),x:(window.innerWidth / 5), y:250}).then(canvas => {
let scr = ""; let scr = "";
console.log(canvas.toDataURL().length); console.log(canvas.toDataURL().length);
if (canvas.toDataURL().length < 100000) scr = canvas.toDataURL() if (canvas.toDataURL().length < 120000) scr = canvas.toDataURL()
// console.log(scr); // console.log(scr);
$.post( "/save_proj", {proj:JSON.stringify(objs),name:proj_name,img:scr}) $.post( "/save_proj", {proj:JSON.stringify(objs),name:proj_name,img:scr})
.done(function( res ) { .done(function( res ) {
@ -130,8 +139,8 @@ function load_objs(callback){
}); });
} }
function load_obj(name,callback){ function load_obj(name,key,callback){
$.post( "/get_obj",{name:name}) $.post( "/get_obj",{name:name,key:key})
.done(function( res ) { .done(function( res ) {
if(res["out"] == "good"){ if(res["out"] == "good"){
// console.log(res["body"]); // console.log(res["body"]);
@ -152,13 +161,14 @@ function dragMoveListener (event) {
var y = (parseFloat(drag.getAttribute('data-y')) || 0) + event.dy var y = (parseFloat(drag.getAttribute('data-y')) || 0) + event.dy
set_pos(drag,x,y); set_pos(drag,x,y);
} }
let dragzone = document.getElementsByClassName('wall')[0];
interact('.drag').draggable({ interact('.drag').draggable({
inertia: true, inertia: true,
// modifiers: [ modifiers: [
// interact.modifiers.restrictRect({restriction: 'parent',endOnly: true}), interact.modifiers.restrictRect({restriction: dragzone,endOnly: true}),
// interact.modifiers.snap({targets: [interact.snappers.grid({ x: 5, y: 5 })],range: Infinity,relativePoints: [ { x: 0, y: 0 } ]}),], interact.modifiers.snap({targets: [interact.snappers.grid({ x: 2, y: 2 })],range: Infinity,relativePoints: [ { x: 0, y: 0 } ]}),
// autoScroll: true, ],
autoScroll: true,
listeners: {move: dragMoveListener, end (event) {}} listeners: {move: dragMoveListener, end (event) {}}
}) })
@ -166,13 +176,18 @@ interact('.trash').dropzone({
accept: '.drag', accept: '.drag',
overlap: 0.2, overlap: 0.2,
ondragenter: function (event) {var drag = event.relatedTarget;var zone = event.target; zone.classList.add('drop-target');drag.classList.add('can-drop');}, ondragenter: function (event) {
var drag = event.relatedTarget;
var zone = event.target;
delete objs[drag.classList[0]][drag.id];
drag.remove();
zone.classList.add('drop-target');
drag.classList.add('can-drop');
},
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');}, 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) { ondrop: function (event) {
var drag = event.relatedTarget; var drag = event.relatedTarget;
// console.log(drag.id); // console.log(drag.id);
delete objs[drag.classList[0]][drag.id];
drag.remove();
// console.log(objs); // console.log(objs);
drag.classList.add('in_zone') drag.classList.add('in_zone')
drag.classList.remove('can-drop') drag.classList.remove('can-drop')
@ -217,11 +232,19 @@ interact('.createzone').dropzone({
ondragleave: function (event) { ondragleave: function (event) {
var drag = event.relatedTarget; var drag = event.relatedTarget;
var zone = event.target; var zone = event.target;
if(drag.classList[1] == "spawn" && drag.classList[0] == zone.classList[0]){
load_obj(drag.classList[0],"`height`, `width`",(db_data)=>{
// drag.transform = `translate(${drag.getAttribute("data-y")}px, ${drag.getAttribute("data-y")}px) scale(${db_data["width"] * 2} ${db_data["height"] * 2})`;
drag.style.width = `${db_data["width"] * 2}px`;
drag.style.height = `${db_data["height"] * 2}px`;
console.log(db_data);
})
let x = zone.getBoundingClientRect().left - document.getElementById("drags").getBoundingClientRect().left;
let y = zone.getBoundingClientRect().top - document.getElementById("drags").getBoundingClientRect().top;
create(`${zone.classList[0]} spawn drag`,x,y,`${zone.classList[0]}`,`none`);
drag.classList.remove('spawn');
}
zone.classList.remove('drop-target'); zone.classList.remove('drop-target');
drag.classList.remove('spawn');
let x = zone.getBoundingClientRect().left + window.scrollX - 15;
let y = zone.getBoundingClientRect().top + window.scrollY - 32;
create(`${zone.classList[0]} drag spawn`,x,y,`${zone.classList[0]}`,`none`);
}, },
ondrop: function (event) {var drag = event.relatedTargetdrag.classList.remove('in_zone');drag.classList.remove('can-drop');}, ondrop: function (event) {var drag = event.relatedTargetdrag.classList.remove('in_zone');drag.classList.remove('can-drop');},
ondropdeactivate: function (event) {var zone = event.target;zone.classList.remove('drop-active');zone.classList.remove('drop-target');} ondropdeactivate: function (event) {var zone = event.target;zone.classList.remove('drop-active');zone.classList.remove('drop-target');}
@ -230,10 +253,10 @@ interact('.createzone').dropzone({
function drag_start() { function drag_start() {
let zones = document.getElementsByClassName("createzone"); let zones = document.getElementsByClassName("createzone");
Object.entries(zones).forEach(([key, zone]) => { Object.entries(zones).forEach(([key, zone]) => {
let x = zone.getBoundingClientRect().left - scrollX - 15; let x = zone.getBoundingClientRect().left - document.getElementById("drags").getBoundingClientRect().left;
let y = zone.getBoundingClientRect().top - scrollY - 32; let y = zone.getBoundingClientRect().top - document.getElementById("drags").getBoundingClientRect().top;
// console.log(x,y); // console.log(x,y);
create(`${zone.classList[0]} drag spawn`,x,y,`${zone.classList[0]}`,`none`); create(`${zone.classList[0]} spawn drag`,x,y,`${zone.classList[0]}`,`none`);
}); });
} }

105
user.js Normal file
View File

@ -0,0 +1,105 @@
const db = require('./db');
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];
if(ipass == udata["pass"]){
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"});
}
});
}
})
// 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"]}`);
})
}
res.send({out:"good", body:{uuid:uuid,login:login,admin:admin}});
}
}
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"});
}
});
}
module.exports.clear_sid = (inp,cook,res)=>{
if(cook["sid"] != null){
// res.send({out:"good"});
func.log("good boy"+cook["uuid"] + " logged out from "+cook["sid"]);
db.dl("sids","sid",`'${cook["sid"]}'`,() =>{});
}
res.send({out:"good"});
}
module.exports.sid_log=(inp,cook,res,req)=>{
func.sid(cook,res,(include) => {
if (include){
if(req.headers.referer.split("http://n0rsrv2:3002/")[1] == "login") func.log("good boy "+ id["uuid"]+" logged in by sid logs from " + id["sid"]);
res.send({out:"good",url:"/main"});
}
else if (!include){
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"]);
res.send({out:"bad"});
}
},false)
}

1
vars.js Normal file
View File

@ -0,0 +1 @@
module.exports.week = 7 * 24 * 3600 * 1000;

View File

@ -3,6 +3,31 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin: auto; margin: auto;
/* margin-bottom: 50px; */
}
#img_file{
text-overflow:ellipsis;
max-width:100px;
}
.img_preview{
/* width: 50px;
height: 20px; */
display: flex;
}
#img_prev{
height: 200px;
width: 200px;
}
</style>
<style>
.main_sec{
margin: auto;
/* display: flex; */
text-align: center;
}
#reg_form{
width: 80vw;
margin: auto;
} }
</style> </style>
@ -12,89 +37,148 @@
<section class="main"> <section class="main">
<h1>hello admin</h1> <h1>hello admin</h1>
<div class="nobj"> <div class="nobj">
<div class="img_preview"> <div>
<label for="img_file">max size 2mb</label><br> <div class="img_preview">
<input type="file" id="img_file" onchange="previewFile()" accept="image/*" value="" maxlength="1"><br> <label for="img_file">max size 2mb</label><br>
<img src="" height="100" alt="Image preview..."> <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...">
</div>
</div> </div>
<textarea name="" id="nobj_description" cols="30" rows="5" placeholder="object description"></textarea> <textarea name="" id="nobj_description" cols="30" rows="5" placeholder="object description"></textarea>
<div>
<div class="nobj_options"> <div class="nobj_options">
<input type="text" id="nobj_name" placeholder="object name"> <input type="text" id="nobj_name" placeholder="object name">
<button onclick="create_obj()">create object</button> <button onclick="create_obj()">create object</button>
<div id="obj_resp"></div> <div id="obj_resp"></div>
</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>
</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>
<input type="range" step="0.1" min="1" max="100" id="obj_width" value="100" oninput="obj_size_change('width')">
</div>
</div>
</div>
</div> </div>
</section> </section>
<script>
function previewFile() {
var preview = document.querySelector('img');
var file = document.querySelector('input[type=file]').files[0];
var reader = new FileReader();
reader.onloadend = function () { <form action="" method="get" onsubmit="return false;" id="reg_form">
preview.src = reader.result; <h1>user registration</h1>
} <section 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>
</div>
<div>
<label for="admin_check">admin</label>
<input type="checkbox" name="admin" value='false' id="admin_check">
</div>
<div id="reg_response"></div>
</section>
</form>
if (file) { <%- include('./static/end.ejs') %>
reader.readAsDataURL(file);
} else {
preview.src = ""; <script>
function reg(){
console.log("reg");
let login = document.getElementById("login").value;
let pass = document.getElementById("pass").value;
let admin = document.getElementById("admin_check").checked;
// console.log(login,pass,admin);
// console.log("cl reg");
$.post( "/reg_user", { login:login,pass:pass,admin:admin })
.done(function( res ) {
// console.log("serv reg");
if(res["out"] == "good"){
// console.log(res["body"]);
document.getElementById("reg_response").innerHTML = `user ${login} successfully registered `;
} }
else if (res["out"] == "bad"){
document.getElementById("reg_response").innerHTML = "cannot register user "+login+" already in use";
}
});
}
</script>
<script>
function obj_size_change(type){
if(type == "height"){
let img = document.getElementById('img_prev');
let range = document.getElementById('obj_height');
let text = document.getElementById('obj_height_value');
img.style.height = `${range.value * 2}px`;
text.innerHTML = `${range.value}см`;
}else if (type == "width"){
let img = document.getElementById('img_prev');
let range = document.getElementById('obj_width');
let text = document.getElementById('obj_width_value');
img.style.width = `${range.value * 2}px`;
text.innerHTML = `${range.value}см`;
}
}
function previewFile() {
var preview = document.querySelector('img');
var file = document.querySelector('input[type=file]').files[0];
var reader = new FileReader();
reader.onloadend = function () {
preview.src = reader.result;
} }
// async function toblob(callback){ if (file) {
// var preview = document.querySelector('img').src; reader.readAsDataURL(file);
// // console.log(preview); } else {
// fetch(preview) preview.src = "";
// .then(res => res.blob())
// .then(blob => {
// // let dataUrl = blobToDataUrl(blob);
// console.log(blob)
// callback(blob);
// // console.log(dataUrl)
// })
// }
function create_obj(){
let name = document.getElementById("nobj_name").value;
let description = document.getElementById("nobj_description").value;
var img = document.querySelector('img').src;
name = name.replace(" ","_");
if (img != "http://n0rsrv2:3002/admin"){
document.getElementById("obj_resp").innerHTML = "creating object";
new_obj(name,img,0,0,description,(res)=>{
if(res["out"] == "bad" && res["err"] == "name"){
document.getElementById("obj_resp").innerHTML = "object already exist";
}
else if(res["out"] == "good"){
document.getElementById("obj_resp").innerHTML = "object created";
}
});
}
else{
document.getElementById("obj_resp").innerHTML = "image not selected";
}
} }
}
// load_obj("asd",(data)=>{ function new_obj(name,img,height,width,description,callback){
// console.log(data); $.post( "/new_obj", { name:name,img:img,desc:description,height:height,width:width })
// // let dataUrl = blobToDataUrl(data["img"]); .done(function( res ) {
// // console.log(data["img"]["data"].getBlob()); // if(res["out"] == "good"){
// console. // console.log(res["body"]);
// // document.querySelector('img').src = data["img"]; // }
// }) callback(res);
});
}
// function blobToDataUrl(blob) { function create_obj(){
// let reader = new FileReader() let name = document.getElementById("nobj_name").value;
// reader.readAsDataURL(blob) let description = document.getElementById("nobj_description").value;
// reader.onload = function(){ let height = document.getElementById("obj_height").value;
// dataUrl = reader.result let width = document.getElementById("obj_width").value;
// // console.log(dataUrl) //DataURL var img = document.querySelector('img').src;
// return dataUrl; name = name.replace(" ","_");
// } if (img != "http://n0rsrv2:3002/admin"){
// } document.getElementById("obj_resp").innerHTML = "creating object";
</script> new_obj(name,img,height,width,description,(res)=>{
<!-- <iframe src="/reg" frameborder="0"></iframe> --> if(res["out"] == "bad" && res["err"] == "name"){
<%- include('./reg.ejs') %> document.getElementById("obj_resp").innerHTML = "object already exist";
}
else if(res["out"] == "good"){
document.getElementById("obj_resp").innerHTML = "object created";
}
});
}
else{
document.getElementById("obj_resp").innerHTML = "image not selected";
}
}
<%- include('./static/end.ejs') %> </script>

View File

@ -27,21 +27,6 @@
/* } */ /* } */
</style> </style>
<header id="top_panel"> <header id="top_panel">
<script>get_from_uuid((res)=>{
let uname = document.getElementById("user_name");
let header = document.getElementById("top_panel");
let right = document.getElementById("top_panel_right");
let left = document.getElementById("top_panel_left");
if(document.title != "main") left.innerHTML += `<button onclick="goto('/');">main page</button>`;
left.innerHTML += `<div id="user_name">${res["login"]}</div>`;
if (res["admin"] == true){
right.innerHTML += `<button onclick='goto("/admin")'>admin panel</button>`;
}
right.innerHTML += "<button onclick='logout();'>logout</button>";
});
</script>
<!-- <div id="user_name"></div> --> <!-- <div id="user_name"></div> -->
<div id="proj_top_panel"> <div id="proj_top_panel">
<div id="top_panel_left"></div> <div id="top_panel_left"></div>
@ -49,4 +34,20 @@
<div id="top_panel_right"></div> <div id="top_panel_right"></div>
</div> </div>
<!-- <div><button onclick="logout();">logout</button></div> --> <!-- <div><button onclick="logout();">logout</button></div> -->
</header> </header>
<script>get_from_uuid((res)=>{
let uname = document.getElementById("user_name");
let header = document.getElementById("top_panel");
let right = document.getElementById("top_panel_right");
let left = document.getElementById("top_panel_left");
if(document.title != "main") left.innerHTML += `<button onclick="goto('/');">main page</button>`;
left.innerHTML += `<div id="user_name">${res["login"]}</div>`;
if (res["admin"] == true){
right.innerHTML += `<button onclick='goto("/admin")'>admin panel</button>`;
}
right.innerHTML += "<button onclick='logout();'>logout</button>";
});
</script>

View File

@ -1,4 +1,4 @@
<%- include('./static/start.ejs',{name:'login',async: true,sid_check:"yes"}) %> <%- include('./static/start.ejs',{name:'login',async: true}) %>
<style> <style>
* { * {
@ -20,23 +20,44 @@
<label for="pass">password</label> <label for="pass">password</label>
</div> </div>
<button type="button" id="log_btn" onclick="blogin()">login</button> <button type="button" id="log_btn" onclick="log(document.getElementById('login').value,document.getElementById('pass').value);">login</button>
<!-- <input type="submit" value="" hidden> --> <!-- <input type="submit" value="" hidden> -->
<div id="res"></div> <div id="res"></div>
<script>
// console.log($.cookie("uuid"));
// log_by_sid();
var input = document.getElementById("pass");
input.addEventListener("keypress", function(event) {
if (event.key === "Enter") {
event.preventDefault();
document.getElementById("log_btn").click();
}
});
</script>
</form> </form>
<%- include('./static/end.ejs') %> <%- include('./static/end.ejs') %>
<script>
// console.log($.cookie("uuid"));
// log_by_sid();
function log(nlogin,npass){
const login = CryptoJS.AES.encrypt(nlogin,$.cookie("sid")).toString();
const pass = CryptoJS.AES.encrypt(npass,$.cookie("sid")).toString();
const sid = $.cookie("sid");
$.post( "/back_login", { login:login,pass:pass,sid:sid })
.done(function( res ) {
if (res["out"] == "bad"){
console.log(res["err"]);
if (res["err"] == "user" || res["err"] == "pass"){
document.querySelector("#res").innerHTML = "<p>wrong password or login</p>";
}
}
else{
if(res["out"] == "goto"){
// postForm(res["url"], res["args"]);
goto(res["url"]);
}
}
});
}
var input = document.getElementById("pass");
input.addEventListener("keypress", function(event) {
if (event.key === "Enter") {
event.preventDefault();
document.getElementById("log_btn").click();
}
});
</script>

View File

@ -49,7 +49,19 @@
<div id="projs_div"></div> <div id="projs_div"></div>
</section> </section>
<!-- <script src="/lib/inter.js"></script> -->
<%- include('./static/end.ejs') %>
<script> <script>
function load_projs(callback){
$.post( "/get_projs")
.done(function( res ) {
if(res["out"] == "good"){
// console.log(res["body"]);
callback(res["body"]);
}
});
}
function new_proj(){ function new_proj(){
let name = ask(); let name = ask();
if(name != null && name!= "" && name!=" " && typeof name != "undefined" && name!="undefined"){ if(name != null && name!= "" && name!=" " && typeof name != "undefined" && name!="undefined"){
@ -63,7 +75,4 @@
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"]}')"><img height="200" width="290" src='${proj["img"]}' alt='${proj["name"]}'></img> <br>${proj["name"]}</button>`;
}); });
}); });
</script> </script>
<!-- <script src="/lib/inter.js"></script> -->
<%- include('./static/end.ejs') %>

View File

@ -8,24 +8,32 @@
z-index: 10; z-index: 10;
} }
#drags{
position: absolute;
margin: auto;
}
.dropzone { .dropzone {
background-color: #bfe4ff; background-color: #bfe4ff;
border: dashed 4px transparent; border: dashed 4px transparent;
border-radius: 4px; border-radius: 4px;
height: 140px; height: 140px;
margin: 10px auto 30px; margin: 10px auto 30px;
padding: 10px; /* padding: 10px; */
width: 80%; width: 80%;
transition: background-color 0.3s; transition: background-color 0.3s;
position: absolute;
inset: 0px;
margin: 250px auto;
} }
.createzone { .createzone {
background-color: #bfe4ff; background-color: #bfe4ff;
border: dashed 4px transparent; border: dashed 4px transparent;
border-radius: 4px; border-radius: 4px;
height: 10px; height: 22px;
width: 22px;
margin: 10px; margin: 10px;
padding: 10px; padding: 10px;
width: 10px;
transition: background-color 0.3s; transition: background-color 0.3s;
} }
@ -34,7 +42,7 @@
border: dashed 4px transparent; border: dashed 4px transparent;
border-radius: 4px; border-radius: 4px;
margin: 10px auto 30px; margin: 10px auto 30px;
padding: 10px; /* padding: 10px; */
height: 50px; height: 50px;
width: 50px; width: 50px;
transition: background-color 0.3s; transition: background-color 0.3s;
@ -124,14 +132,14 @@
<label for="wall_height">height </label> <label for="wall_height">height </label>
<div id="wall_height_value">0</div> <div id="wall_height_value">0</div>
</div> </div>
<input type="range" step="0.1" min="0" max="4.9" id="wall_height" value="1.9" oninput="wall_size_change('height')"> <input type="range" step="0.1" min="0" max="5" id="wall_height" value="2" oninput="wall_size_change('height')">
</div> </div>
<div> <div>
<div style="display: flex;width: 150px;justify-content: space-between;"> <div style="display: flex;width: 150px;justify-content: space-between;">
<label for="wall_width">width</label> <label for="wall_width">width</label>
<div id="wall_width_value">0</div> <div id="wall_width_value">0</div>
</div> </div>
<input type="range" step="0.1" min="0" max="6.9" id="wall_width" value="3.9" oninput="wall_size_change('width')"> <input type="range" step="0.1" min="0" max="7" id="wall_width" value="4" oninput="wall_size_change('width')">
</div> </div>
</div> </div>
<div class="czones"> <div class="czones">
@ -146,7 +154,7 @@
<div class="buble createzone"></div> <div class="buble createzone"></div>
<div class="buble createzone"></div> --> <div class="buble createzone"></div> -->
</div> </div>
<div class="trash">trash bin</div> <img class="trash" style="height: 100px; width: 100px;" src="https://media.tenor.com/9Ec_X487U1kAAAAj/shadow-energy.gif" alt="black hole">
</div> </div>
<div class="wall dropzone" id="wall"></div> <div class="wall dropzone" id="wall"></div>

View File

@ -1,53 +0,0 @@
<style>
.main_sec{
margin: auto;
/* display: flex; */
text-align: center;
}
#reg_form{
width: 80vw;
margin: auto;
}
</style>
<%- include('./static/start.ejs',{name:"reg",async: true}) %>
<form action="" method="get" onsubmit="return false;" id="reg_form">
<h1>user registration</h1>
<section 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>
</div>
<div>
<label for="admin_check">admin</label>
<input type="checkbox" name="admin" value='false' id="admin_check">
</div>
<div id="reg_response"></div>
</section>
<script>
function reg(){
console.log("reg");
let login = document.getElementById("login").value;
let pass = document.getElementById("pass").value;
let admin = document.getElementById("admin_check").checked;
// console.log(login,pass,admin);
// console.log("cl reg");
$.post( "/reg_user", { login:login,pass:pass,admin:admin })
.done(function( res ) {
// console.log("serv reg");
if(res["out"] == "good"){
// console.log(res["body"]);
document.getElementById("reg_response").innerHTML = `user ${login} successfully registered `;
}
else if (res["out"] == "bad"){
document.getElementById("reg_response").innerHTML = "cannot register user "+login+" already in use";
}
});
}
</script>
<!-- <input type="submit" value=""> -->
<!-- <script>test();</script> -->
<!-- <iframe id="reg_out" frameborder="0"></iframe> -->
</form>

View File

@ -1,3 +1,11 @@
<div class="scale_block">
<div>
oh no html breaking! <br>
please don't use custom scale for this window
</div>
</div>
</body>
</html>
<script> <script>
if(document.title == "login"){ if(document.title == "login"){
console.log(document.title); console.log(document.title);
@ -7,5 +15,34 @@
console.log("check"); console.log("check");
} }
</script> </script>
</body> <script>
</html> px_ratio = window.devicePixelRatio || window.screen.availWidth / document.documentElement.clientWidth;
// console.log(px_ratio);
isZooming();
$(window).resize(function(){isZooming();});
function isZooming(){
var newPx_ratio = window.devicePixelRatio || window.screen.availWidth / document.documentElement.clientWidth;
if(newPx_ratio != px_ratio){
px_ratio = newPx_ratio;
// console.log(px_ratio);
if (px_ratio != 1){
// console.log("zooming");
document.getElementsByClassName("scale_block")[0].style.display = "block";
}
else{
document.getElementsByClassName("scale_block")[0].style.display = "none";
}
return true;
}else{
// console.log("just resizing");
if (px_ratio != 1){
document.getElementsByClassName("scale_block")[0].style.display = "block";
}
else{
document.getElementsByClassName("scale_block")[0].style.display = "none";
}
return false;
}
}
</script>

View File

@ -8,10 +8,8 @@
<script src="/lib/ejs.js"></script> <script src="/lib/ejs.js"></script>
<script src="/lib/aes.js"></script> <script src="/lib/aes.js"></script>
<meta charset="UTF-8"> <meta charset="UTF-8">
<!-- <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> -->
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title> <%= name %> </title> <title> <%= name %> </title>
<!-- <script> document.querySelector("title").innerHTML += $.cookie("uuid"); </script> -->
<style> <style>
.main{ .main{
width: 80vw; width: 80vw;
@ -21,6 +19,29 @@
html{ html{
background-color:aliceblue; background-color:aliceblue;
} }
.scale_block{
display: none;
top: 0px;
left: 0px;
background-color:rgb(47, 47, 47);
width: 100vw;
height: 100vh;
/* line-height: 100vh; */
text-align: center;
position: absolute;
z-index: 100;
font-size: 4vw;
filter: opacity(99.8%);
/* filter: blur(1px); */
backdrop-filter: blur(10px);
}
.scale_block div{
position: absolute;
top: 50vh;
left: 50vw;
transform: translate(-50%, -50%);
width: 100vw;
}
</style> </style>
</head> </head>
<body> <body>