aboutsummaryrefslogtreecommitdiff
path: root/websockets/server.js
diff options
context:
space:
mode:
authorTom Smeding <tom.smeding@gmail.com>2020-07-12 12:33:57 +0200
committerTom Smeding <tom.smeding@gmail.com>2020-07-12 12:33:57 +0200
commite52b2e629085269b96b1185c72ba055d991e93f7 (patch)
treeffeb99e3b0edb156219ab2cee5020604516d78ac /websockets/server.js
parent7cfede3e206592ad0e4cb7a3a63a1e18ee7a5bad (diff)
websockets: Parametrise port/host parameters
Diffstat (limited to 'websockets/server.js')
-rwxr-xr-xwebsockets/server.js95
1 files changed, 0 insertions, 95 deletions
diff --git a/websockets/server.js b/websockets/server.js
deleted file mode 100755
index 763b343..0000000
--- a/websockets/server.js
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/usr/bin/env node
-const fs=require("fs");
-const net=require("net");
-const https=require("https");
-const WebSocket=require("uWebSockets.js");
-
-const PORT=29546;
-
-const upstream={
- host: "localhost",
- port: 29536
-};
-
-
-let httpsConfig=null;
-if(process.argv.length==4){
- console.log("Reading keys for https");
- httpsConfig={
- key_file_name: process.argv[2],
- cert_file_name: process.argv[3],
- };
-} else if(process.argv.length==2){
- console.log("WARNING: Running without SSL!");
-} else {
- console.error("Usage: ./server.js # proxy without SSL");
- console.error(" ./server.js <key.pem> <cert.pem> # proxy with SSL");
- process.exit(1);
-}
-
-if(process.getuid()==0){
- console.log(`Old uid: ${process.getuid()}, old gid: ${process.getgid()}; setting to nobody...`);
- process.setgid("nobody");
- process.setuid("nobody");
- console.log(`New uid: ${process.getuid()}, new gid: ${process.getgid()}`);
-}
-
-
-let wsServer;
-if(httpsConfig){
- wsServer=WebSocket.SSLApp(httpsConfig);
-} else {
- wsServer=WebSocket.App();
-}
-
-wsServer=wsServer.ws("/*",{
- open: sock=>{
- const stateobj={netconn: null, buffer: [], sock_closed: false};
- sock["tomsgdata"]=stateobj;
- let linebuf="";
-
- stateobj.netconn=net.connect(upstream.port,upstream.host,()=>{
- for(const item of stateobj.buffer){
- stateobj.netconn.write(item);
- stateobj.netconn.write("\n");
- }
- stateobj.buffer=[];
- });
- stateobj.netconn.on("close",()=>{
- if(!stateobj.sock_closed)sock.close();
- });
- stateobj.netconn.on("data",(data)=>{
- linebuf+=data;
- let idx;
- while((idx=linebuf.indexOf("\n"))!=-1){
- sock.send(linebuf.slice(0,idx));
- linebuf=linebuf.slice(idx+1);
- }
- });
- stateobj.netconn.on("error",()=>{
- if(!stateobj.sock_closed)sock.close();
- });
- },
- message: (sock,data,isBinary)=>{
- const stateobj=sock["tomsgdata"];
- data=new Uint8Array(data);
- if(stateobj.netconn.connecting){
- stateobj.buffer.push(data);
- } else {
- stateobj.netconn.write(data);
- stateobj.netconn.write("\n");
- }
- },
- close: sock=>{
- const stateobj=sock["tomsgdata"];
- stateobj.sock_closed=true;
- try {stateobj.netconn.end();}
- catch (e) {}
- }
-});
-
-wsServer=wsServer.listen(PORT,listenSocket=>{
- if(listenSocket){
- console.log(`Websocket server${httpsConfig?" (SSL)":""} bound on port ${PORT}`);
- }
-});