backend is coming
This commit is contained in:
		
							parent
							
								
									ba55edfcf0
								
							
						
					
					
						commit
						9e749d7aa3
					
				
							
								
								
									
										36
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								index.js
									
									
									
									
									
								
							| @ -2,7 +2,15 @@ const http = require('http'); | ||||
| const url = require('url'); | ||||
| const fs = require('fs'); | ||||
| 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) { | ||||
|   const q = url.parse(req.url, true); | ||||
|   let filename = "./public" + q.pathname; | ||||
| @ -18,6 +26,7 @@ http.createServer(function (req, res) { | ||||
|   }); | ||||
| }).listen(8080); | ||||
| 
 | ||||
| //WS server
 | ||||
| const wss = new ws.Server({ | ||||
|   port: 8081, | ||||
|   perMessageDeflate: { | ||||
| @ -41,10 +50,35 @@ const wss = new ws.Server({ | ||||
|   } | ||||
| }); | ||||
| 
 | ||||
| //WS handler
 | ||||
| wss.on('connection', ws => { | ||||
|   ws.on('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') | ||||
| }) | ||||
| 
 | ||||
| //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,19 +5,22 @@ | ||||
| 		<link rel="stylesheet" type="text/css" href="./sym/dark.css"> | ||||
| 		<script src="./sym/script.js"></script> | ||||
| 		<script> | ||||
| 			const wsurl = 'ws://192.168.188.36:8081' | ||||
| 			const wsurl = 'ws://127.0.0.1:8081' | ||||
| 			const socket = new WebSocket(wsurl) | ||||
| 
 | ||||
| 			socket.onopen = () => { | ||||
| 				socket.send('new session') | ||||
| 				socket.send('new_session ') | ||||
| 			} | ||||
| 			socket.onerror = (error) => { | ||||
| 				console.log(`WebSocket error: ${error}`) | ||||
| 			} | ||||
| 			socket.onmessage = (e) => { | ||||
| 				console.log(e.data) | ||||
| 				document.getElementById('error-message').innerText = e.data | ||||
| 				document.getElementById('error-box').style.display = 'block' | ||||
| 				let msg = e.data.split(";", 2) | ||||
| 				if (msg[0] === 'error') { | ||||
| 					document.getElementById('error-message').innerText = msg[1] | ||||
| 					document.getElementById('error-box').style.display = 'block' | ||||
| 				} | ||||
| 			} | ||||
| 			function short_url(){ | ||||
| 				socket.send('long_url '+document.getElementById('name-input').value) | ||||
| @ -27,12 +30,12 @@ | ||||
| 	<body> | ||||
| 		<div class="login"> | ||||
| 			<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"> | ||||
| 					<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> | ||||
| 				<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-text">short</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"> | ||||
| 				<img class="icon" src="./sym/ic_close_white_24px.svg"> | ||||
| 			</div> | ||||
| 			<div id="error-message"> | ||||
| 			<div id="error-message" class="btn-text"> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</body> | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user