X-Git-Url: https://git.kengrimes.com/?p=henge%2Fkiak.git;a=blobdiff_plain;f=router.js;h=da32c9500491adfae47701752d381f7488fbf27d;hp=0da13e6e1d55602f170639ad1512ea7336167e40;hb=a8bdc6c150c4f3417b2f18a480552a4015c248b1;hpb=ac8d4e6df37f875e7f2b7e6d56cc9c3dab8c23a5 diff --git a/router.js b/router.js index 0da13e6..da32c95 100644 --- a/router.js +++ b/router.js @@ -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 @@ -83,7 +83,11 @@ exports = { 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}`:''}`) }, @@ -116,7 +120,7 @@ exports = { 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 @@ -127,6 +131,10 @@ exports = { 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) { @@ -136,11 +144,18 @@ exports = { this.serveBind(response, route.bind, htArgv) } //TODO: auth better than this (ip spoofing is easy) - else if (route.origin == (request.headers['x-forwarded-for'] || + // but this will require a more involved host-creation process + // that isn't just "give you a route if it's available" on visit + /* else if (route.origin == (request.headers['x-forwarded-for'] || request.connection.remoteAddress)) this.serveHost(response, route, htArgv) - else + 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)) { @@ -209,7 +224,7 @@ exports = { 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 @@ -232,9 +247,9 @@ exports = { 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) @@ -247,7 +262,11 @@ exports = { } }, +<<<<<<< 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 @@ -274,25 +293,30 @@ exports = { socket: undefined } route.httpd.listen(port) - route.wsd = new (require('ws').Server)({ - server: httpd - //verifyClient: (info) => - //info.origin == origin && (info.secure || !this.httpsOpts) - }) - route.wsd.on('connection', (socket) => { - route.socket = socket - socket.on('message', (msg) => - this.hostMessage(msg,route)) - }) + route.wsd = new (require('ws').Server)({ server: httpd }) + .on('connection', (socket) => { + route.socket = socket + socket.on('message', (msg) => + this.hostMessage(msg,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 @@ -381,7 +405,7 @@ exports = { } }, - /** @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 @@ -403,8 +427,8 @@ exports = { 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