const http = require('http'); const express = require('express'); const fs = require('fs'); const url = require('url'); const crypto = require('crypto'); const session = require('express-session'); const { query } = require('express'); const FileStore = require('session-file-store')(session) var port = process.env.PORT || 3000; const app = express(); if(!fs.existsSync('repo')) fs.mkdirSync('repo'); var secret; var logString = ""; var credString; var credentials; var promoString; var promotions; if(!fs.existsSync('repo/secret')){ secret = crypto.randomBytes(35).toString('hex'); fs.writeFileSync('repo/secret', secret); }else{ secret = fs.readFileSync('repo/secret'); } app.use(session({ secret: secret.toString(), saveUninitialized:false, resave:false, cookie: {maxAge: 100000000000}, store:new FileStore() })); function report(str){ console.log(str); logString = logString.concat('\n', str); } function randomIntForPrezenta() { return Math.floor(Math.random() * (999 - 100 + 1) + 100); } if(fs.existsSync('repo/signatures')){ sigString = fs.readFileSync('repo/signatures') signatures = JSON.parse(sigString); }else{ signatures = {}; signatures.i_buffer = 0; signatures.signatures = {}; fs.writeFileSync('repo/signatures', JSON.stringify(signatures)) } app.get('/api_sign', (request, response) => { if(!request.session.signed && request.session.legitimate === "true") if(request.query.name && request.query.domeniu && request.query.clasa){ report("sign"); if(request.query.name.length <= 45 && request.query.domeniu.length <= 45 && request.query.clasa.length <= 45){ signatures.signatures[signatures.i_buffer] = {}; signatures.signatures[signatures.i_buffer].name = request.query.name.replace(/[^a-z0-9]/gi, ' '); signatures.signatures[signatures.i_buffer].domeniu = request.query.domeniu.replace(/[^a-z0-9]/gi, ' '); signatures.signatures[signatures.i_buffer].clasa = request.query.clasa.replace(/[^a-z0-9]/gi, ' '); signatures.i_buffer++; request.session.signed = true; response.redirect('/multumesc'); response.end(); fs.writeFileSync('repo/signatures', JSON.stringify(signatures)) } }else{ response.writeHead(200); response.end("INVALID REQUEST") } else{ response.writeHead(200); response.end("ALREADY SIGNED"); } }) app.get('/', (request, response) => { request.session.legitimate = "true"; fs.readFile('./ui/homepage.html', function(error, content){ if(error) report(error); content = content.toString().replace("$$SIGN$$", JSON.stringify(signatures)); response.writeHead(200, {'Content-Type': 'text/html'}); response.end(content); }) }) app.get('/semnez', (resource, response) => { fs.readFile('./ui/semnez.html', function(error, content){ if(error) report(error); response.writeHead(200, {'Content-Type': 'text/html'}); response.end(content); }) }) app.get('/multumesc', (resource, response) => { fs.readFile('./ui/multumesc.html', function(error, content){ if(error) report(error); response.writeHead(200, {'Content-Type': 'text/html'}); response.end(content); }) }) app.get('/resource/*', (request, response) => { var resource = request.path.slice(request.path.lastIndexOf('/'), request.path.end) fs.readFile('./assets/'+resource, function(error, content){ if(error) report(error); if(resource.slice(resource.lastIndexOf('.'), resource.end) === "ttf") response.writeHead(200, {'Content-Type': 'font/ttf'}); if(resource.slice(resource.lastIndexOf('.'), resource.end) === "json") response.writeHead(200, {'Content-Type': 'text/json'}); if(resource.slice(resource.lastIndexOf('.'), resource.end) === "jpg") response.writeHead(200, {'Content-Type': 'image/jpeg'}); response.end(content); }) }) app.get('/css', (request, response) => { fs.readFile('./css/dist.css', function(error, content){ if(error) report(error); response.writeHead(200, {'Content-Type': 'text/css'}); response.end(content); }) }) const server = http.createServer(app); server.listen(port);