backend is coming

master
adb-sh 4 years ago
parent ba55edfcf0
commit 9e749d7aa3

@ -2,7 +2,15 @@ const http = require('http');
const url = require('url'); const url = require('url');
const fs = require('fs'); const fs = require('fs');
const ws = require('ws'); const ws = require('ws');
const redis = require('redis')
//redis client
const redis_client = redis.createClient()
redis_client.on("error", function (error) {
console.error(error)
})
//HTTP server
http.createServer(function (req, res) { http.createServer(function (req, res) {
const q = url.parse(req.url, true); const q = url.parse(req.url, true);
let filename = "./public" + q.pathname; let filename = "./public" + q.pathname;
@ -18,6 +26,7 @@ http.createServer(function (req, res) {
}); });
}).listen(8080); }).listen(8080);
//WS server
const wss = new ws.Server({ const wss = new ws.Server({
port: 8081, port: 8081,
perMessageDeflate: { perMessageDeflate: {
@ -41,10 +50,35 @@ const wss = new ws.Server({
} }
}); });
//WS handler
wss.on('connection', ws => { wss.on('connection', ws => {
ws.on('message', message => { ws.on('message', message => {
console.log(`Received message => ${message}`) console.log(`Received message => ${message}`)
if ({message} == 'long_url ') ws.send('error: url is empty') 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{
let ran_key = get_key(8)
//redis_client.set("key", "value", redis.print)
ws.send('short_url;http://127.0.0.1'+ran_key)
}
}
//ws.send('got your request: '+msg)
console.log(msg[0])
}) })
ws.send('websocket connected') ws.send('websocket connected')
}) })
//random key
const forbidden_array = ['sym', 'admin', 'stats']
function get_key(length) {
let forbidden = false; let output = ''
let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
do{
for (let i = 0; i < length; i++ )
output += characters.charAt(Math.floor(Math.random() * characters.length))
for (let i = 0; i < forbidden_array.length; i++) if (output === forbidden_array[i]) forbidden = true
} while (forbidden)
return output
}

@ -5,20 +5,23 @@
<link rel="stylesheet" type="text/css" href="./sym/dark.css"> <link rel="stylesheet" type="text/css" href="./sym/dark.css">
<script src="./sym/script.js"></script> <script src="./sym/script.js"></script>
<script> <script>
const wsurl = 'ws://192.168.188.36:8081' const wsurl = 'ws://127.0.0.1:8081'
const socket = new WebSocket(wsurl) const socket = new WebSocket(wsurl)
socket.onopen = () => { socket.onopen = () => {
socket.send('new session') socket.send('new_session ')
} }
socket.onerror = (error) => { socket.onerror = (error) => {
console.log(`WebSocket error: ${error}`) console.log(`WebSocket error: ${error}`)
} }
socket.onmessage = (e) => { socket.onmessage = (e) => {
console.log(e.data) console.log(e.data)
document.getElementById('error-message').innerText = e.data let msg = e.data.split(";", 2)
if (msg[0] === 'error') {
document.getElementById('error-message').innerText = msg[1]
document.getElementById('error-box').style.display = 'block' document.getElementById('error-box').style.display = 'block'
} }
}
function short_url(){ function short_url(){
socket.send('long_url '+document.getElementById('name-input').value) socket.send('long_url '+document.getElementById('name-input').value)
} }
@ -27,12 +30,12 @@
<body> <body>
<div class="login"> <div class="login">
<div class="title">short your url</div> <div class="title">short your url</div>
<form name="search" action="javascript:socket.send('long_url '+document.getElementById('name-input').value)" method="POST"> <form name="search" action="javascript:socket.send('long_url;'+document.getElementById('name-input').value)" method="POST">
<div class="inputbox" id="name"> <div class="inputbox" id="name">
<input class="input" id="name-input" type="text" onblur="deselected('name');" onfocus="selected('name');" name="url" value="" maxlength="2000" placeholder="https://your.long.url/junk"> <input class="input" id="name-input" type="text" onblur="deselected('name');" onfocus="selected('name');" name="url" value="" maxlength="2000" placeholder="https://your.long.url/junk">
</div> </div>
<input type="hidden" value="search" name="login"> <input type="hidden" value="search" name="login">
<a href="javascript:socket.send('long_url '+document.getElementById('name-input').value)"> <a href="javascript:socket.send('long_url;'+document.getElementById('name-input').value)">
<div class="btn-blue" id="short-btn"> <div class="btn-blue" id="short-btn">
<div class="btn-text">short</div> <div class="btn-text">short</div>
</div> </div>
@ -43,7 +46,7 @@
<div onclick="document.getElementById('error-box').style.display = 'none'" style="position: absolute; top:5px; right: 5px;" class="sym_btn-invisible"> <div onclick="document.getElementById('error-box').style.display = 'none'" style="position: absolute; top:5px; right: 5px;" class="sym_btn-invisible">
<img class="icon" src="./sym/ic_close_white_24px.svg"> <img class="icon" src="./sym/ic_close_white_24px.svg">
</div> </div>
<div id="error-message"> <div id="error-message" class="btn-text">
</div> </div>
</div> </div>
</body> </body>

Loading…
Cancel
Save