MAJOR: Updates for Authenticated Web UI and CLI #30
| @ -524,16 +524,28 @@ function parseConfig(err, text) { | ||||
|       } else { | ||||
|         if ('http' === body.module) { | ||||
|           // TODO we'll support slingshot-ing in the future
 | ||||
|           if (body.local) { | ||||
|             if (String(body.local) === String(parseInt(body.local, 10))) { | ||||
|               console.info('> Forwarding https://' + body.remote + ' => localhost:' + body.local); | ||||
|             } else { | ||||
|               console.info('> Serving ' + body.local + ' as https://' + body.remote); | ||||
|             } | ||||
|           } else { | ||||
|             console.info('> Rejecting End-to-End Encrypted HTTPS for now'); | ||||
|           } | ||||
|         } else if ('tcp' === body.module) { | ||||
|           if (body.local) { | ||||
|             console.info('> Forwarding ' + state.config.relay + ':' + body.remote + ' => localhost:' + body.local); | ||||
|           } else { | ||||
|             console.info('> Rejecting Legacy TCP'); | ||||
|           } | ||||
|         } else if ('ssh' === body.module) { | ||||
|           //console.info('> Forwarding ' + state.config.relay + ' -p ' + JSON.stringify(body) + ' => localhost:' + body.local);
 | ||||
|           if (body.local) { | ||||
|             console.info('> Forwarding ssh+https (openssl proxy) => localhost:' + body.local); | ||||
|           } else { | ||||
|             console.info('> Rejecting SSH-over-HTTPS for now'); | ||||
|           } | ||||
|         } else { | ||||
|           console.info(JSON.stringify(body, null, 2)); | ||||
|         } | ||||
|  | ||||
| @ -245,11 +245,11 @@ controllers.tcp = function (req, res, opts) { | ||||
|   if (remotePort) { | ||||
|     if (!state.ports[remotePort]) { | ||||
|       active = false; | ||||
|       return; | ||||
|     } | ||||
|     } else { | ||||
|       // forward-to port-or-module
 | ||||
|     // TODO we can't send files over tcp until we fix the connect event bug
 | ||||
|       // TODO with the connect event bug fixed, we should now be able to send files over tcp
 | ||||
|       state.ports[remotePort].handler = portOrPath; | ||||
|     } | ||||
|   } else { | ||||
|     if (!Object.keys(state.ports).some(function (key) { | ||||
|       if (!state.ports[key].handler) { | ||||
| @ -329,7 +329,7 @@ controllers.ssh = function (req, res, opts) { | ||||
| function serveControlsHelper() { | ||||
|   controlServer = http.createServer(function (req, res) { | ||||
|     var opts = url.parse(req.url, true); | ||||
|     if (opts.query._body) { | ||||
|     if (false && opts.query._body) { | ||||
|       try { | ||||
|         opts.body = JSON.parse(decodeURIComponent(opts.query._body, true)); | ||||
|       } catch(e) { | ||||
| @ -591,6 +591,7 @@ function serveControlsHelper() { | ||||
|       )); | ||||
|     } | ||||
| 
 | ||||
|     function route() { | ||||
|       if (/\b(config)\b/.test(opts.pathname) && /get/i.test(req.method)) { | ||||
|         getConfigOnly(); | ||||
|         return; | ||||
| @ -648,6 +649,32 @@ function serveControlsHelper() { | ||||
| 
 | ||||
|       res.setHeader('Content-Type', 'application/json'); | ||||
|       res.end(JSON.stringify({"error":{"message":"unrecognized rpc"}})); | ||||
|     } | ||||
| 
 | ||||
|     if (!req.headers['content-length'] && !req.headers['content-type']) { | ||||
|       route(); | ||||
|       return; | ||||
|     } | ||||
| 
 | ||||
|     var body = ''; | ||||
|     req.on('readable', function () { | ||||
|       var data; | ||||
|       while (true) { | ||||
|         data = req.read(); | ||||
|         if (!data) { break; } | ||||
|         body += data.toString(); | ||||
|       } | ||||
|     }); | ||||
|     req.on('end', function () { | ||||
|       try { | ||||
|         opts.body = JSON.parse(body); | ||||
|       } catch(e) { | ||||
|         res.statusCode = 400; | ||||
|         res.end('{"error":{"message":"POST body is not valid json"}}'); | ||||
|         return; | ||||
|       } | ||||
|       route(); | ||||
|     }); | ||||
|   }); | ||||
| 
 | ||||
|   if (fs.existsSync(state._ipc.path)) { | ||||
|  | ||||
| @ -108,6 +108,7 @@ module.exports.create = function (state) { | ||||
|       fn(err); | ||||
|     }); | ||||
|     if ('POST' === method && opts.data) { | ||||
|       req.setHeader("content-type", 'application/json'); | ||||
|       req.write(json || opts.data); | ||||
|     } | ||||
|     req.end(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user