Merge branch 'master' of github.com:Jlavatai/strapp
authorjordan lavatai <jordanlavatai@gmail.com>
Wed, 12 Jul 2017 19:13:29 +0000 (12:13 -0700)
committerjordan lavatai <jordanlavatai@gmail.com>
Wed, 12 Jul 2017 19:13:29 +0000 (12:13 -0700)
1  2 
client.js
opts.js
router.js

diff --combined client.js
+++ b/client.js
@@@ -2,6 -2,8 +2,6 @@@ const body = document.createElement('bo
  const root = document.createElement('div')\r
  document.title = "Strapp.io Client"\r
  const conf = {"iceServers": [{ "urls": "stun:stun.1.google.com:19302" }] }\r
 -let dataChannel\r
 -let hostScreen\r
  \r
  /* TODO: This is duplicated in both client.js and host.js */\r
  function getPublicKey() {\r
@@@ -53,8 -55,8 +53,8 @@@ function requestHostAnswer(url, data) 
      /* But there is no JSON? */\r
      request.setRequestHeader('Content-Type', 'application/json' )\r
      request.setRequestHeader('X-Strapp-Type', 'client-sdp-offer')\r
-     request.setRequestHeader('X-Strapp-Pubkey', data.pubKey)\r
 -    request.setRequestHeader('X-Strapp-Pubkey', data.pubKey)    \r
--    request.onreadystatechange = () => {\r
++    request.setRequestHeader('X-Strapp-Pubkey', data.pubKey)
++    request.onreadystatechange = () => {
        if (request.status === 200) {\r
          if(request.readyState === 4) {\r
            console.log('Client: Recieved Answer from Host')\r
@@@ -123,7 -125,6 +123,7 @@@ function requestHostICE(cpc, url, pubKe
  \r
  /* Create and send offer -> Send ICE Candidates -> Poll for ICE Candidates */\r
  getPublicKey().then((cpk) => {\r
 +  let dataChannel\r
    console.log('Client: Create and send offer')\r
    const cpc = new RTCPeerConnection(conf)\r
  \r
  \r
    /* Triggered when Host adds track to peer connection */\r
    cpc.ontrack = (event) => {\r
 -    console.log(`track event is ${event}`)\r
 -    let remoteRTPSenders = cpc.getSenders()\r
      let remoteRTPReceivers = cpc.getReceivers()\r
 -    console.log(remoteRTPReceivers)\r
 -    /* Add each remoteRTPSenders.track to own stream */\r
 +    let hostScreen\r
      let video = document.querySelector('video')\r
 -    video.autoplay = true\r
 +    /* TODO: Audio, video, or other track? */\r
 +    console.log(remoteRTPReceivers)\r
      console.log(video)\r
      hostScreen = new MediaStream([remoteRTPReceivers[0].track])\r
      if(!video.srcObject) {\r
      }\r
      console.log(hostScreen.getVideoTracks())\r
      console.log(video.srcObject)\r
 -    video.play()\r
      video.onloadedmetadata = () => {\r
        video.play()\r
      }\r
diff --combined opts.js
+++ b/opts.js
@@@ -13,20 -13,19 +13,19 @@@ const path = require('path'
   */
  exports = require('minimist')(process.argv.slice(2), {
    string:  [ 'config', 'client-js', 'host-js', 'ca-cert', 'ca-key',
-            'port', 'index', 'bind', 'electron', 'dedicated'
+            'port', 'bind', 'electron', 'file-dir', 'dedicated'
           ],
    boolean: [ 'no-tls', 'legacy-socket' ],
    alias:   { c: 'config',
             j: 'client-js',
             J: 'host-js',
-            T: 'no-tls',
             C: 'ca-cert',
             K: 'ca-key',
             p: 'port',
-            i: 'index',
             b: 'bind',
             e: 'electron',
-            d: 'dedicated'
+            d: 'file-dir',
+              D: 'dedicated'
           },
    stopEarly: true,
    unknown: (opt) => {
   */
  exports['defaults'] = {
    config:      '/etc/strapp.conf:~/.strapp/strapp.conf:./strapp.conf',
 -  'client-js': './client.js',
 -  'host-js':   './host.js',
 +  'client-js': './client-test.js',
 +  'host-js':   './host-test.js',
    tls:         true,
    'ca-cert':   '../certs/cert.pem',
    'ca-key':    '../certs/key.pem',
    port:        2443,
-   index:       './index.html',
    bind:        'www:./www',
    electron:    undefined,
+   'file-dir':  undefined,
    dedicated:   undefined,
    'legacy-socket': false
  }
diff --combined router.js
+++ b/router.js
@@@ -33,7 -33,7 +33,7 @@@ exports = 
    httpdRoot: undefined,
    bindJail: undefined,
  
 -  /** @func    
 +  /** @func
     * @summary Start main HTTP server
     * @desc    starts up an HTTP or HTTPS server used for routing
     * @arg     {Object} conf - object containing configuration properties
          console.log(err)
        })
      console.log(`HTTP${(conf.tls == undefined) ? '' : 'S'} ` +
++<<<<<<< HEAD
 +                `Server Started on port ${conf.port}${this.httpdRoot ?
++=======
+                 `Server Started on port ${conf.port}${this.httpdRoot ? 
++>>>>>>> 3f5fce84645ec2c59aec0908807d1e9cb3e05e2d
                  `, serving files from ${this.httpdRoot}`:''}`)
    },
  
        throw new Error(`${path} not found, ${routeName} not bound`)
    },
  
 -  /** @func    
 +  /** @func
     * @summary Router
     * @desc    listens for http client requests and services routes/files
     * @arg     {http.ClientRequest} request
      let htArgv = request.url.slice(1).split('?')
      const routeName = htArgv[0].split('/')[0]
      let route = this.routes[routeName]
++<<<<<<< HEAD
 +    console.log(`route is ${route}`)
++=======
++>>>>>>> 3f5fce84645ec2c59aec0908807d1e9cb3e05e2d
      /* If the route exists, check if we are a returning host or a new client */
      if (route) {
        if (route.bind) {
                           request.connection.remoteAddress))
          this.serveHost(response, route, htArgv)
        else */
++<<<<<<< HEAD
 +      else {
++=======
++>>>>>>> 3f5fce84645ec2c59aec0908807d1e9cb3e05e2d
          this.serveClient(request, response, route)
 +      }
      }
      /* If it's a valid routename that doesn't exist, make this client a host */
      else if (this.validRoutes.test(routeName)) {
        this.serveFile(response, bind.path)
    },
  
 -  /** @func    
 +  /** @func
     * @summary Serve a route to an http client
     * @desc    routes may be bound to the filesystem, or to an outgoing host
     * @arg     {http.ClientRequest} request - request from the client
      case 'client-sdp-offer':
        let data = ''
        if (pubKey) {
 +        let data = request.headers['x-strapp-offer']
          route.pendingResponses.addResponse(pubKey, response)
 -        request.on('data', (chunk) => data += chunk)
 -        request.on('end', () => route.socket.send(`${pubKey} ${type} ${data}`))
 +        route.socket.send(`${pubKey} ${type} ${data}`)
        }
        else {
          response.writeHead(401)
      }
    },
  
++<<<<<<< HEAD
 +  /** @func
++=======
+   /** @func    
++>>>>>>> 3f5fce84645ec2c59aec0908807d1e9cb3e05e2d
     * @summary Create a new route for a host
     * @desc    makes a new route for the given route name
     * @arg     {string} routeName - name of the new route
        })
      route.pendingResponses.addResponse = function (key, response_p) {
        let responses = this.get(key) || []
++<<<<<<< HEAD
 +      responses.push(response_p)
 +      this.set(key, responses)
++=======
+       this.set(key, responses.push(response_p))
++>>>>>>> 3f5fce84645ec2c59aec0908807d1e9cb3e05e2d
      }
      this.routes[routeName] = route
      this.serveHost(response, route, argv)
    },
  
++<<<<<<< HEAD
 +  /** @func
++=======
+   /** @func    
++>>>>>>> 3f5fce84645ec2c59aec0908807d1e9cb3e05e2d
     * @summary Serve a route to an authorized http host
     * @desc    services host application to the client, establishing a socket
     * @arg     {http.ServerResponse} response - response object to use
      }
    },
  
 -  /** @func    
 +  /** @func
     * @summary Serve a file to an http client after a request
     * @desc    reads files from the system to be distributed to clients, and
     *          buffers recently accessed files
        response.end()
      })
    },
 -  
 -  /** @func   
 +
 +  /** @func
     * @summary Synchronize Reading Multiple Files
     * @desc    reads an array of files into an object, whose keys are the
     *          input filenames, and values are the data read