MAJOR: Updates for Authenticated Web UI and CLI #30
133
bin/telebitd.js
133
bin/telebitd.js
|
@ -599,63 +599,90 @@ function handleApi(req, res) {
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (/\b(config)\b/.test(opts.pathname) && /get/i.test(req.method)) {
|
function route() {
|
||||||
getConfigOnly();
|
if (/\b(config)\b/.test(opts.pathname) && /get/i.test(req.method)) {
|
||||||
return;
|
getConfigOnly();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (/\b(init|config)\b/.test(opts.pathname)) {
|
||||||
|
initOrConfig();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (/restart/.test(opts.pathname)) {
|
||||||
|
restart();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Check for proper config
|
||||||
|
//
|
||||||
|
if (!state.config.relay || !state.config.email || !state.config.agreeTos) {
|
||||||
|
invalidConfig();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// With proper config
|
||||||
|
//
|
||||||
|
if (/http/.test(opts.pathname)) {
|
||||||
|
controllers.http(req, res, opts);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (/tcp/.test(opts.pathname)) {
|
||||||
|
controllers.tcp(req, res, opts);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (/save|commit/.test(opts.pathname)) {
|
||||||
|
saveAndCommit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (/ssh/.test(opts.pathname)) {
|
||||||
|
controllers.ssh(req, res, opts);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (/enable/.test(opts.pathname)) {
|
||||||
|
enable();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (/disable/.test(opts.pathname)) {
|
||||||
|
disable();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (/status/.test(opts.pathname)) {
|
||||||
|
getStatus();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (/list/.test(opts.pathname)) {
|
||||||
|
listSuccess();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
res.setHeader('Content-Type', 'application/json');
|
||||||
|
res.end(JSON.stringify({"error":{"message":"unrecognized rpc"}}));
|
||||||
}
|
}
|
||||||
if (/\b(init|config)\b/.test(opts.pathname)) {
|
|
||||||
initOrConfig();
|
if (!req.headers['content-length'] && !req.headers['content-type']) {
|
||||||
return;
|
route();
|
||||||
}
|
|
||||||
if (/restart/.test(opts.pathname)) {
|
|
||||||
restart();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//
|
|
||||||
// Check for proper config
|
|
||||||
//
|
|
||||||
if (!state.config.relay || !state.config.email || !state.config.agreeTos) {
|
|
||||||
invalidConfig();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//
|
|
||||||
// With proper config
|
|
||||||
//
|
|
||||||
if (/http/.test(opts.pathname)) {
|
|
||||||
controllers.http(req, res, opts);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (/tcp/.test(opts.pathname)) {
|
|
||||||
controllers.tcp(req, res, opts);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (/save|commit/.test(opts.pathname)) {
|
|
||||||
saveAndCommit();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (/ssh/.test(opts.pathname)) {
|
|
||||||
controllers.ssh(req, res, opts);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (/enable/.test(opts.pathname)) {
|
|
||||||
enable();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (/disable/.test(opts.pathname)) {
|
|
||||||
disable();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (/status/.test(opts.pathname)) {
|
|
||||||
getStatus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (/list/.test(opts.pathname)) {
|
|
||||||
listSuccess();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
res.setHeader('Content-Type', 'application/json');
|
var body = '';
|
||||||
res.end(JSON.stringify({"error":{"message":"unrecognized rpc"}}));
|
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();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
function serveControlsHelper() {
|
function serveControlsHelper() {
|
||||||
controlServer = http.createServer(handleRemoteClient);
|
controlServer = http.createServer(handleRemoteClient);
|
||||||
|
|
Loading…
Reference in New Issue