You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

141 lines
4.2 KiB

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);