const fs = require('fs'); const https = require('https'); const WebSocket = require('ws'); const url = require('url'); const driverWS = require("./programs/driver"); const httpsOptions = { "enable": true, 'key': fs.readFileSync('https/localhost.key'), 'cert': fs.readFileSync('https/localhost.pem'), "passphrase": "abcd" } server = https.createServer(httpsOptions, (req, res) => { let parsedURL = url.parse(req.url, true); let path = parsedURL.path.replace(/^\/+|\/+$/g,""); if(path == ""){ path = "index.html"; } let file = __dirname + "/public/" + path; console.log("file : " + file); fs.readFile(file, function(err, content){ if(err){ console.log("File Not found "+ file); res.writeHead(404); res.end(); } else { res.setHeader('X-Content-Type-Option', 'nosniff'); //let mime = lookup(path); let mime = "text/html" res.writeHead(200,{'Content-type': mime}); res.end(content); } }) }); // vvvvvvvvvvvvvvvvvvvvv Forward WebSocket: Eigener WSS auf Driver vvvvvvvvvvvvvvvvvvvvvvvv const wssInput = new WebSocket.Server({ noServer: true }); const targetServer = process.env.TARGET_SERVER || 'wss://localhost:2095'; process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; driverWS.setupCommandForwarding(wssInput, targetServer); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Upgrade handler: accept all WebSocket upgrades and forward to the forwarding server (wssInput) server.on('upgrade', (req, socket, head) => { const pathname = url.parse(req.url).pathname; console.log('Upgrade request for', pathname); try { // Forward the upgrade to the forwarding server wssInput.handleUpgrade(req, socket, head, (ws) => { wssInput.emit('connection', ws, req); }); } catch (err) { console.error('Upgrade handling error:', err && err.message || err); socket.destroy(); } }); server.listen(10010); console.log("Connect to: https://localhost:10010")