minor update
[henge/kiak.git] / main.js
diff --git a/main.js b/main.js
index 13bcaa3..2db2240 100644 (file)
--- a/main.js
+++ b/main.js
@@ -1,72 +1,50 @@
-const electron = require('electron')
-const http = require('http')
-const path = require('path')
-const url = require('url')
 const fs = require('fs')
-const app = electron.app
-const BrowserWindow = electron.BrowserWindow
-const ipcMain = electron.ipcMain
-
-let mainWindow
-
-function beginRendererProcess() {
-  mainWindow = new BrowserWindow({show: true, webPreferences: { webSecurity: false, experimentalFeatures: true}})
-  mainWindow.loadURL(url.format({
-    pathname: path.join(__dirname, 'renderer.html'),
-    protocol: 'file:',
-    slashes: true
-  }))
-  mainWindow.webContents.openDevTools()
-}
-
-function captureStream() {
-  mainWindow.webContents.send('defaultStreamRequest', 'slr')
-  let p = new Promise((resolve,reject) => {
-    ipcMain.on('defaultStreamResponse', (event, arg) => {
-      console.log('defaultStreamResponse')
-      console.log(arg)
-      resolve(arg)
-    })
-  })
+const ws = require('ws')
+const https = require('https')
+const http = require('http')
+const getport = require('get-port')
+const argv = require('minimist')(process.argv.slice(2))
 
-  return p
+const https_router_opts = {
+  key: fs.readFileSync('stunnel.key'),
+  cert: fs.readFileSync('stunnel.cert')
 }
 
-
-const routes = {
-  '/': function root(response) {
-    response.write(fs.readFileSync('admin.html'))
-    response.end()
-  },
-  '/admin.js': function js(response) {
-    response.write(fs.readFileSync('admin.js'))
-    response.end()
-  },
-  '/admin.css': function css(response) {
-    response.write(fs.readFileSync('admin.css'))
-    response.end()
-  },
-  '/favicon.ico': function favicon() {
-    return 'strapp'
+let https_routes = {}
+const https_router = https.createServer(https_router_opts, (request, response) => {
+  let ht_argv = request.url.slice(1).split("?")
+  console.log(ht_argv)
+  if (ht_argv[0] in https_routes) {
+    response.writeHead(200, { 'Content-Type': 'text/plain' })
+    response.write('You are a remote client\r\n')
+    let route = https_routes[ht_argv[0]]
+    response.write('You should connect to ' + route.host + "\r\nOn port: " + route.port + "\r\n")
     response.end()
-  },
-  '/streamlist': function streamlist(response) {
-    let mediaStream = captureStream().then((stream) => {
-      console.log(stream)
+  }
+  else if (ht_argv[0].indexOf(".") == -1) {
+    https_routes[ht_argv[0]] = 'true'
+    response.writeHead(200, { 'Content-Type': 'text/html' })
+    let new_route = {}
+    new_route.host = request.headers['x-forwarded-for'] || request.connection.remoteAddress
+    getport().then( (port) => {
+      new_route.port = port
+      new_route.httpd = https.createServer(https_router_opts, (request, response) => {
+      }).listen(port)
+      new_route.ws = new ws.Server( { server: new_route.httpd } )
+      new_route.ws.on('connection', (ws) => { console.log("socket connected"); ws.send("CONNECTED") } )
+      new_route.ws.on('message', (msg) => { console.log("Received message" + msg) })
+      console.log("Listening for websocket socket " + new_route.port + " on " + new_route.host)
+      console.log(new_route)
+      https_routes[ht_argv[0]] = new_route
+    }).then(() => {
+      let str = String(fs.readFileSync('remote-server.html'))
+      response.write(str.replace("$HOST","www.strapp.io").replace("$PORT",new_route.port))
+      response.end()
     })
-
-    //response.write(mediaStream)
   }
-}
+}).listen(2443)
 
-app.on('ready', function() {
-  beginRendererProcess()
 
 
-  http.createServer(function(request, response) {
-    const url = request.url
-    console.log('routing to ' + url);
-    routes[url](response)
+if ("electron" in process.versions);
 
-  }).listen(5140);
-});