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 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,19 +5,22 @@
 | 
				
			|||||||
		<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)
 | 
				
			||||||
				document.getElementById('error-box').style.display = 'block'
 | 
									if (msg[0] === 'error') {
 | 
				
			||||||
 | 
										document.getElementById('error-message').innerText = msg[1]
 | 
				
			||||||
 | 
										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…
	
		Reference in New Issue
	
	Block a user