code optimization, new log system, appp optimizawion
This commit is contained in:
parent
af8e44d1ce
commit
3583e5e588
42
db.js
42
db.js
|
@ -1,7 +1,8 @@
|
|||
const mysql = require('mysql');
|
||||
const vars = require('./vars');
|
||||
|
||||
const logcon = mysql.createConnection({
|
||||
host: 'db',
|
||||
host: 'localhost',
|
||||
user: 'user',
|
||||
password: 'user',
|
||||
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) => {
|
||||
// console.log('SELECT * FROM `'+table+'` WHERE `'+key+'` = '+value);
|
||||
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
|
||||
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+"'");
|
||||
if (err) {
|
||||
console.log("sql err");
|
||||
throw err;
|
||||
}else{
|
||||
callback(res);
|
||||
callback(rows);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
39
func.js
39
func.js
|
@ -5,6 +5,8 @@ const cryptojs = require('crypto-js');
|
|||
const e = require('express');
|
||||
const fs = require('fs');
|
||||
const db = require('./db');
|
||||
const moment = require("moment");
|
||||
const vars = require('./vars');
|
||||
|
||||
module.exports.sendfile = (fileName, response) => {
|
||||
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) =>{
|
||||
let unid = uuid.v4() + '%'+name+'%%' + uuid.v4() +'#'+(621);
|
||||
module.exports.log = (comment) =>{
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
325
index.js
325
index.js
|
@ -1,15 +1,21 @@
|
|||
const express = require('express');
|
||||
const db = require('./db');
|
||||
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 {
|
||||
response,
|
||||
request
|
||||
} = require('express');
|
||||
const { escapeSelector } = require('jquery');
|
||||
const { name } = require('ejs');
|
||||
const { stringify } = require('uuid');
|
||||
// const {
|
||||
// response,
|
||||
// request
|
||||
// } = require('express');
|
||||
// const { escapeSelector } = require('jquery');
|
||||
// const { name } = require('ejs');
|
||||
// const { stringify } = require('uuid');
|
||||
// const createApplication = require('express/lib/express');
|
||||
// const { render } = require('express/lib/response');
|
||||
const app = express();
|
||||
|
||||
// const {
|
||||
|
@ -28,134 +34,30 @@ app.use(express.urlencoded({
|
|||
}));
|
||||
app.use(express.static('public'));
|
||||
app.use(cookieParser());
|
||||
var week = 7 * 24 * 3600 * 1000;
|
||||
|
||||
|
||||
app.post('/back_login', (req, res) => {
|
||||
let inp = req.body;
|
||||
let cook = req.cookies;
|
||||
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"]){
|
||||
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");
|
||||
user.login(inp,cook,res);
|
||||
});
|
||||
|
||||
app.post('/reg_user', (req, res) => {
|
||||
let inp = req.body;
|
||||
let cook = req.cookies;
|
||||
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) =>{
|
||||
// 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}});
|
||||
}
|
||||
user.reg(inp,cook,res)
|
||||
})
|
||||
|
||||
app.post("/sid_log",(req,res) =>{
|
||||
let inp = req.body;
|
||||
let cook = req.cookies;
|
||||
|
||||
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"});
|
||||
}
|
||||
})
|
||||
}
|
||||
user.sid_log(inp,cook,res,req);
|
||||
})
|
||||
|
||||
app.post("/get_sid" , (req,res) =>{
|
||||
let inp = req.body;
|
||||
let sid = func.get_uuid(inp["name"]);
|
||||
res.cookie("sid",sid,{maxAge:(week),path:"/;SameSite=Strict"});
|
||||
let sid = func.get_uuid();
|
||||
res.cookie("sid",sid,{maxAge:(vars.week),path:"/;SameSite=Strict"});
|
||||
res.send({out:"good"});
|
||||
});
|
||||
|
||||
|
@ -163,203 +65,75 @@ app.post("/get_sid" , (req,res) =>{
|
|||
app.post("/clear_sid" , (req,res) =>{
|
||||
let inp = req.body;
|
||||
let cook = req.cookies;
|
||||
|
||||
// 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"});
|
||||
user.clear_sid(inp,cook,res);
|
||||
});
|
||||
|
||||
app.post("/get_cr_uuid", (req,res) => {
|
||||
let inp = req.body;
|
||||
if(inp["uuid"] != null && inp["sid"] != null){
|
||||
db.gv("users","uuid",`"${inp["uuid"]}"`,(udata)=>{udata = udata[0];
|
||||
let re = udata;
|
||||
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"});
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
let cook = req.cookies;
|
||||
func.sid(cook,res,()=>{
|
||||
user.get_cr(inp,cook,res);
|
||||
})
|
||||
})
|
||||
|
||||
app.post("/save_proj", (req,res) => {
|
||||
let inp = req.body;
|
||||
let cook = req.cookies;
|
||||
let proj = inp["proj"];
|
||||
let pname = inp["name"];
|
||||
// console.log(inp["img"]);
|
||||
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"});
|
||||
}
|
||||
})
|
||||
// func.log(inp["img"]);
|
||||
func.sid(cook,res,()=>{
|
||||
proj.save(inp,cook,res);
|
||||
})
|
||||
})
|
||||
|
||||
app.post("/load_proj", (req,res) => {
|
||||
let inp = req.body;
|
||||
let cook = req.cookies;
|
||||
if(cook['sid'] != null && cook['uuid'] != null){
|
||||
db.gv("users","uuid",`'${cook["uuid"]}'`,(udata)=>{ udata = udata[0];
|
||||
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"});
|
||||
}
|
||||
func.sid(cook,res,()=>{
|
||||
proj.load(inp,cook,res);
|
||||
})
|
||||
})
|
||||
|
||||
app.post("/get_projs", (req,res) => {
|
||||
let inp = req.body;
|
||||
let cook = req.cookies;
|
||||
if(cook['sid'] != null && cook['uuid'] != null){
|
||||
db.gv("users","uuid",`'${cook["uuid"]}'`,(udata)=>{ udata = udata[0];
|
||||
db.gv("projects","uid",udata["id"],(pdata)=>{
|
||||
res.send({out:"good",body:pdata});
|
||||
})
|
||||
})
|
||||
}
|
||||
else{
|
||||
res.send({out:"bad"});
|
||||
}
|
||||
func.sid(cook,res,()=>{
|
||||
proj.loads(inp,cook,res);
|
||||
})
|
||||
})
|
||||
|
||||
app.post("/new_obj", (req,res) => {
|
||||
let inp = req.body;
|
||||
let cook = req.cookies;
|
||||
if(cook['sid'] != null && cook['uuid'] != null){
|
||||
// console.log(inp["name"],inp["img"]);
|
||||
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"});
|
||||
}
|
||||
})
|
||||
}
|
||||
func.sid(cook,res,()=>{
|
||||
obj.new(inp,cook,res);
|
||||
})
|
||||
})
|
||||
|
||||
app.post("/get_objs", (req,res) => {
|
||||
let inp = req.body;
|
||||
let cook = req.cookies;
|
||||
// console.log(inp["name"]);
|
||||
if(cook['sid'] != null && cook['uuid'] != null){
|
||||
db.gv("objects","gid",0,(odata)=>{
|
||||
// console.log(odata);
|
||||
// Object.keys(odata).forEach(([key,value]) => {
|
||||
// });
|
||||
odata.forEach(element => {
|
||||
delete element["img"]
|
||||
});
|
||||
res.send({out:"good",body:odata});
|
||||
})
|
||||
}
|
||||
// func.log(inp["name"]);
|
||||
func.sid(cook,res,()=>{
|
||||
obj.loads(inp,cook,res);
|
||||
})
|
||||
})
|
||||
|
||||
app.post("/get_obj", (req,res) => {
|
||||
let inp = req.body;
|
||||
let cook = req.cookies;
|
||||
// console.log(inp["name"]);
|
||||
if(cook['sid'] != null && cook['uuid'] != null){
|
||||
db.gv("objects","name",`'${inp["name"]}'`,(odata)=>{
|
||||
// console.log(odata);
|
||||
res.send({out:"good",body:odata[0]});
|
||||
})
|
||||
}
|
||||
// func.log(inp["name"]);
|
||||
func.sid(cook,res,()=>{
|
||||
obj.load(inp,cook,res);
|
||||
})
|
||||
})
|
||||
|
||||
// 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) =>{
|
||||
res.render('reg');
|
||||
})
|
||||
|
||||
app.get("/proj/:name" , (req,res) =>{
|
||||
// res.cookie
|
||||
res.render('project',{proj_name:req.params["name"]});
|
||||
})
|
||||
|
||||
|
@ -375,8 +149,13 @@ app.get("/admin", (req,res) =>{
|
|||
res.render('admin');
|
||||
});
|
||||
|
||||
// app.get("/main/:id", (req,res) =>{
|
||||
// res.render('main');
|
||||
// app.get("/test", (req,res) =>{
|
||||
// let inp = req.body;
|
||||
// let cook = req.cookies;
|
||||
// func.sid(cook,res,()=>{
|
||||
// console.log("asd");
|
||||
// })
|
||||
|
||||
// });
|
||||
|
||||
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>');
|
||||
});
|
||||
|
||||
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
30
object.js
Normal 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
9
package-lock.json
generated
|
@ -16,6 +16,7 @@
|
|||
"ejs": "^3.1.9",
|
||||
"express": "^4.18.2",
|
||||
"jquery": "^3.7.0",
|
||||
"moment": "^2.29.4",
|
||||
"mysql": "^2.18.1",
|
||||
"uuid": "^9.0.0"
|
||||
}
|
||||
|
@ -586,6 +587,14 @@
|
|||
"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": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
"ejs": "^3.1.9",
|
||||
"express": "^4.18.2",
|
||||
"jquery": "^3.7.0",
|
||||
"moment": "^2.29.4",
|
||||
"mysql": "^2.18.1",
|
||||
"uuid": "^9.0.0"
|
||||
},
|
||||
|
|
60
project.js
Normal file
60
project.js
Normal 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"});
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
|
@ -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){
|
||||
const uid = $.cookie("uuid");
|
||||
const sid = $.cookie("sid");
|
||||
|
@ -61,7 +21,7 @@ function log_by_sid() {
|
|||
// console.log("log");
|
||||
if($.cookie('uuid') == null && $.cookie('sid') == null){
|
||||
// get_sid(location.hostname);
|
||||
get_sid(location.hostname);
|
||||
get_sid();
|
||||
}else if ($.cookie('sid') != null && $.cookie('uuid') != null){
|
||||
$.post( "/sid_log")
|
||||
.done(function( res ) {
|
||||
|
@ -85,7 +45,7 @@ function clear_ck(redirect = true){
|
|||
$.removeCookie("uuid");
|
||||
$.removeCookie('sid');
|
||||
console.log("clear");
|
||||
get_sid(location.hostname);
|
||||
get_sid();
|
||||
if(res["out"] == "good"){
|
||||
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){
|
||||
$.post( "/get_sid", { name:hostname })
|
||||
function get_sid(){
|
||||
$.post( "/get_sid", {})
|
||||
.done(function( res ) {
|
||||
// if(res["out"] == "good"){
|
||||
// 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
|
||||
function goto(url) {
|
||||
location.href = url;
|
||||
|
|
|
@ -8,7 +8,7 @@ function get_count(clas){
|
|||
return count;
|
||||
}
|
||||
|
||||
function create(clas,x,y,body,id){
|
||||
function create(clas,x,y,body,id,size){
|
||||
let main_clas = clas.split(" ")[0];
|
||||
// if (body == null || body == "") body = "[]";
|
||||
let obj = document.createElement("img");
|
||||
|
@ -18,7 +18,7 @@ function create(clas,x,y,body,id){
|
|||
clas.forEach(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) {
|
||||
delete objs[main_clas][id];
|
||||
save(()=>{
|
||||
|
@ -27,7 +27,12 @@ function create(clas,x,y,body,id){
|
|||
}
|
||||
else if (db_data != null){
|
||||
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");
|
||||
|
@ -41,7 +46,8 @@ function wall_size_change(type,value){
|
|||
if(type != null && type == "width") {
|
||||
if (value == null) scroll = document.getElementById("wall_width").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);
|
||||
wall.style.width = `${scroll * 200}px`;
|
||||
|
@ -50,7 +56,8 @@ function wall_size_change(type,value){
|
|||
if(type != null && type == "height") {
|
||||
if (value == null) scroll = document.getElementById("wall_height").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);
|
||||
wall.style.height = `${scroll * 200}px`;
|
||||
|
@ -71,21 +78,23 @@ function load_local(objss){
|
|||
// console.log(keys,value["x"],value["y"],value["body"]);
|
||||
// let count = Object.keys(objs[keys]).length;
|
||||
// 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 {
|
||||
document.getElementById(`wall_${keys}`).value = 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(){
|
||||
$.post( "/load_proj",{name:proj_name})
|
||||
.done(function( res ) {
|
||||
drag_start();
|
||||
if(res["out"] == "good"){
|
||||
// console.log("good");
|
||||
// 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 => {
|
||||
let scr = "";
|
||||
console.log(canvas.toDataURL().length);
|
||||
if (canvas.toDataURL().length < 100000) scr = canvas.toDataURL()
|
||||
if (canvas.toDataURL().length < 120000) scr = canvas.toDataURL()
|
||||
// console.log(scr);
|
||||
$.post( "/save_proj", {proj:JSON.stringify(objs),name:proj_name,img:scr})
|
||||
.done(function( res ) {
|
||||
|
@ -130,8 +139,8 @@ function load_objs(callback){
|
|||
});
|
||||
}
|
||||
|
||||
function load_obj(name,callback){
|
||||
$.post( "/get_obj",{name:name})
|
||||
function load_obj(name,key,callback){
|
||||
$.post( "/get_obj",{name:name,key:key})
|
||||
.done(function( res ) {
|
||||
if(res["out"] == "good"){
|
||||
// console.log(res["body"]);
|
||||
|
@ -152,13 +161,14 @@ function dragMoveListener (event) {
|
|||
var y = (parseFloat(drag.getAttribute('data-y')) || 0) + event.dy
|
||||
set_pos(drag,x,y);
|
||||
}
|
||||
|
||||
let dragzone = document.getElementsByClassName('wall')[0];
|
||||
interact('.drag').draggable({
|
||||
inertia: true,
|
||||
// modifiers: [
|
||||
// interact.modifiers.restrictRect({restriction: 'parent',endOnly: true}),
|
||||
// interact.modifiers.snap({targets: [interact.snappers.grid({ x: 5, y: 5 })],range: Infinity,relativePoints: [ { x: 0, y: 0 } ]}),],
|
||||
// autoScroll: true,
|
||||
modifiers: [
|
||||
interact.modifiers.restrictRect({restriction: dragzone,endOnly: true}),
|
||||
interact.modifiers.snap({targets: [interact.snappers.grid({ x: 2, y: 2 })],range: Infinity,relativePoints: [ { x: 0, y: 0 } ]}),
|
||||
],
|
||||
autoScroll: true,
|
||||
listeners: {move: dragMoveListener, end (event) {}}
|
||||
})
|
||||
|
||||
|
@ -166,13 +176,18 @@ interact('.trash').dropzone({
|
|||
accept: '.drag',
|
||||
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');},
|
||||
ondrop: function (event) {
|
||||
var drag = event.relatedTarget;
|
||||
// console.log(drag.id);
|
||||
delete objs[drag.classList[0]][drag.id];
|
||||
drag.remove();
|
||||
// console.log(objs);
|
||||
drag.classList.add('in_zone')
|
||||
drag.classList.remove('can-drop')
|
||||
|
@ -217,11 +232,19 @@ interact('.createzone').dropzone({
|
|||
ondragleave: function (event) {
|
||||
var drag = event.relatedTarget;
|
||||
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');
|
||||
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');},
|
||||
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() {
|
||||
let zones = document.getElementsByClassName("createzone");
|
||||
Object.entries(zones).forEach(([key, zone]) => {
|
||||
let x = zone.getBoundingClientRect().left - scrollX - 15;
|
||||
let y = zone.getBoundingClientRect().top - scrollY - 32;
|
||||
let x = zone.getBoundingClientRect().left - document.getElementById("drags").getBoundingClientRect().left;
|
||||
let y = zone.getBoundingClientRect().top - document.getElementById("drags").getBoundingClientRect().top;
|
||||
// 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
105
user.js
Normal 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)
|
||||
}
|
232
views/admin.ejs
232
views/admin.ejs
|
@ -3,6 +3,31 @@
|
|||
display: flex;
|
||||
justify-content: space-between;
|
||||
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>
|
||||
|
||||
|
@ -12,89 +37,148 @@
|
|||
<section class="main">
|
||||
<h1>hello admin</h1>
|
||||
<div class="nobj">
|
||||
<div class="img_preview">
|
||||
<label for="img_file">max size 2mb</label><br>
|
||||
<input type="file" id="img_file" onchange="previewFile()" accept="image/*" value="" maxlength="1"><br>
|
||||
<img src="" height="100" alt="Image preview...">
|
||||
<div>
|
||||
<div class="img_preview">
|
||||
<label for="img_file">max size 2mb</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...">
|
||||
</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>
|
||||
</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>
|
||||
</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 () {
|
||||
preview.src = reader.result;
|
||||
}
|
||||
|
||||
if (file) {
|
||||
reader.readAsDataURL(file);
|
||||
} else {
|
||||
preview.src = "";
|
||||
}
|
||||
}
|
||||
|
||||
// async function toblob(callback){
|
||||
// var preview = document.querySelector('img').src;
|
||||
// // console.log(preview);
|
||||
// fetch(preview)
|
||||
// .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)=>{
|
||||
// console.log(data);
|
||||
// // let dataUrl = blobToDataUrl(data["img"]);
|
||||
// // console.log(data["img"]["data"].getBlob());
|
||||
// console.
|
||||
// // document.querySelector('img').src = data["img"];
|
||||
// })
|
||||
|
||||
// function blobToDataUrl(blob) {
|
||||
// let reader = new FileReader()
|
||||
// reader.readAsDataURL(blob)
|
||||
// reader.onload = function(){
|
||||
// dataUrl = reader.result
|
||||
// // console.log(dataUrl) //DataURL
|
||||
// return dataUrl;
|
||||
// }
|
||||
// }
|
||||
</script>
|
||||
<!-- <iframe src="/reg" frameborder="0"></iframe> -->
|
||||
<%- include('./reg.ejs') %>
|
||||
<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>
|
||||
</form>
|
||||
|
||||
<%- include('./static/end.ejs') %>
|
||||
|
||||
|
||||
<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;
|
||||
}
|
||||
|
||||
if (file) {
|
||||
reader.readAsDataURL(file);
|
||||
} else {
|
||||
preview.src = "";
|
||||
}
|
||||
}
|
||||
|
||||
function new_obj(name,img,height,width,description,callback){
|
||||
$.post( "/new_obj", { name:name,img:img,desc:description,height:height,width:width })
|
||||
.done(function( res ) {
|
||||
// if(res["out"] == "good"){
|
||||
// console.log(res["body"]);
|
||||
// }
|
||||
callback(res);
|
||||
});
|
||||
}
|
||||
|
||||
function create_obj(){
|
||||
let name = document.getElementById("nobj_name").value;
|
||||
let description = document.getElementById("nobj_description").value;
|
||||
let height = document.getElementById("obj_height").value;
|
||||
let width = document.getElementById("obj_width").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,height,width,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";
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
|
@ -27,21 +27,6 @@
|
|||
/* } */
|
||||
</style>
|
||||
<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="proj_top_panel">
|
||||
<div id="top_panel_left"></div>
|
||||
|
@ -50,3 +35,19 @@
|
|||
</div>
|
||||
<!-- <div><button onclick="logout();">logout</button></div> -->
|
||||
</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>
|
|
@ -1,4 +1,4 @@
|
|||
<%- include('./static/start.ejs',{name:'login',async: true,sid_check:"yes"}) %>
|
||||
<%- include('./static/start.ejs',{name:'login',async: true}) %>
|
||||
|
||||
<style>
|
||||
* {
|
||||
|
@ -20,23 +20,44 @@
|
|||
<label for="pass">password</label>
|
||||
</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> -->
|
||||
<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>
|
||||
|
||||
<%- 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>
|
||||
|
|
|
@ -49,7 +49,19 @@
|
|||
<div id="projs_div"></div>
|
||||
</section>
|
||||
|
||||
<!-- <script src="/lib/inter.js"></script> -->
|
||||
<%- include('./static/end.ejs') %>
|
||||
|
||||
<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(){
|
||||
let name = ask();
|
||||
if(name != null && name!= "" && name!=" " && typeof name != "undefined" && name!="undefined"){
|
||||
|
@ -64,6 +76,3 @@
|
|||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- <script src="/lib/inter.js"></script> -->
|
||||
<%- include('./static/end.ejs') %>
|
|
@ -8,24 +8,32 @@
|
|||
z-index: 10;
|
||||
}
|
||||
|
||||
#drags{
|
||||
position: absolute;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.dropzone {
|
||||
background-color: #bfe4ff;
|
||||
border: dashed 4px transparent;
|
||||
border-radius: 4px;
|
||||
height: 140px;
|
||||
margin: 10px auto 30px;
|
||||
padding: 10px;
|
||||
/* padding: 10px; */
|
||||
width: 80%;
|
||||
transition: background-color 0.3s;
|
||||
position: absolute;
|
||||
inset: 0px;
|
||||
margin: 250px auto;
|
||||
}
|
||||
.createzone {
|
||||
background-color: #bfe4ff;
|
||||
border: dashed 4px transparent;
|
||||
border-radius: 4px;
|
||||
height: 10px;
|
||||
height: 22px;
|
||||
width: 22px;
|
||||
margin: 10px;
|
||||
padding: 10px;
|
||||
width: 10px;
|
||||
transition: background-color 0.3s;
|
||||
}
|
||||
|
||||
|
@ -34,7 +42,7 @@
|
|||
border: dashed 4px transparent;
|
||||
border-radius: 4px;
|
||||
margin: 10px auto 30px;
|
||||
padding: 10px;
|
||||
/* padding: 10px; */
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
transition: background-color 0.3s;
|
||||
|
@ -124,14 +132,14 @@
|
|||
<label for="wall_height">height </label>
|
||||
<div id="wall_height_value">0</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 style="display: flex;width: 150px;justify-content: space-between;">
|
||||
<label for="wall_width">width</label>
|
||||
<div id="wall_width_value">0</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 class="czones">
|
||||
|
@ -146,7 +154,7 @@
|
|||
<div class="buble createzone"></div>
|
||||
<div class="buble createzone"></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 class="wall dropzone" id="wall"></div>
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
||||
if(document.title == "login"){
|
||||
console.log(document.title);
|
||||
|
@ -7,5 +15,34 @@
|
|||
console.log("check");
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
<script>
|
||||
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>
|
|
@ -8,10 +8,8 @@
|
|||
<script src="/lib/ejs.js"></script>
|
||||
<script src="/lib/aes.js"></script>
|
||||
<meta charset="UTF-8">
|
||||
<!-- <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> -->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title> <%= name %> </title>
|
||||
<!-- <script> document.querySelector("title").innerHTML += $.cookie("uuid"); </script> -->
|
||||
<style>
|
||||
.main{
|
||||
width: 80vw;
|
||||
|
@ -21,6 +19,29 @@
|
|||
html{
|
||||
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>
|
||||
</head>
|
||||
<body>
|
||||
|
|
Loading…
Reference in New Issue
Block a user