From 40c668b6c55340959a75cf692bba890de278e72c Mon Sep 17 00:00:00 2001 From: adb-sh Date: Thu, 30 Jul 2020 17:00:29 +0200 Subject: [PATCH] backend update --- index.js | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/index.js b/index.js index 703150e..5cb5385 100644 --- a/index.js +++ b/index.js @@ -5,25 +5,38 @@ const ws = require('ws'); const redis = require('redis') //redis client -const redis_client = redis.createClient() -redis_client.on("error", function (error) { +const redis_cli = redis.createClient() +redis_cli.on("error", function (error) { console.error(error) }) +const outpath = ['sym', ''] + //HTTP server http.createServer(function (req, res) { const q = url.parse(req.url, true); let filename = "./public" + q.pathname; if (filename === "./public/") filename = "./public/index.html"; - fs.readFile(filename, function(err, data) { - if (err) { - res.writeHead(404, {'Content-Type': 'text/html'}); - return res.end("404 Not Found"); - } - res.writeHead(200, {'Content-Type': 'text/html'}); - res.write(data); + //q.pathname.split("/", 2)[1] === "sym" || ) + if (function valid_path(){ + for (let i = 0; i < outpath.length; i++) if (q.pathname.split("/", 2)[1] === outpath[i]) return true + return false + }() === true){ + fs.readFile(filename, function(err, data) { + if (err) { + res.writeHead(404, {'Content-Type': 'text/html'}); + return res.end("404 Not Found"); + } + res.writeHead(200, {'Content-Type': 'text/html'}); + res.write(data); + return res.end(); + }) + }else{ + let url = redis_cli.hget("surl;"+q.pathname.split("/", 2)[1], "url") + res.writeHead(302, {'Location': 'http://adb.sh'}); + //res.write(data); return res.end(); - }); + } }).listen(8080); //WS server @@ -56,12 +69,15 @@ wss.on('connection', ws => { console.log(`Received message => ${message}`) let msg = `${message}`.split(";", 2) if (msg[0] === 'long_url') { - if (msg[1] === '') ws.send('error;url is empty') - if (msg[1].length > 2000) ws.send('error;your url is too big') - else{ + if (function valid_url(){ + if (msg[1] === ''){ws.send('error;url is empty'); return false} + else if (msg[1].length > 2000){ws.send('error;your url is too long'); return false} + else return true + }() === true){ let ran_key = get_key(8) //redis_client.set("key", "value", redis.print) - ws.send('short_url;http://127.0.0.1'+ran_key) + redis_cli.hmset("surl;"+ran_key, "url", msg[1], "time", Date.now()) + ws.send('short_url;http://127.0.0.1/'+ran_key) } } //ws.send('got your request: '+msg)