68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
// OwlBoard - © Fred Boniface 2022
|
|
// Licensed under GPLv3 (or later)
|
|
// Please see the included LICENSE file
|
|
|
|
// Version Number:
|
|
var version = 0.1
|
|
console.log(`Starting OwlBoard version ${version}`)
|
|
|
|
// Load Modules:
|
|
const fs = require('fs');
|
|
const ldb = require('ldbs-json');
|
|
const http = require('http');
|
|
const url = require('url');
|
|
|
|
// Get API Keys:
|
|
try {
|
|
var keys = JSON.parse(fs.readFileSync('/srv/keys/owlboard/keys.json', 'utf8'));
|
|
console.log('API Keys loaded from /srv/keys/ownboard/keys.json');
|
|
} catch (err) {
|
|
var keys = 'ERR';
|
|
console.error('Unable to obtain API Keys from file');
|
|
console.error(err);
|
|
};
|
|
|
|
// Get Settings:
|
|
//let settings
|
|
try {
|
|
var settings = JSON.parse(fs.readFileSync('./settings.json', 'utf8'));
|
|
console.log("Settings loaded from .settings.json");
|
|
} catch (err) {
|
|
console.warn('Unable to load settings, using defaults');
|
|
console.log(err);
|
|
var settings = {"webPort":8460,"listen":"localhost"};
|
|
};
|
|
|
|
// Create Web Service:
|
|
try {
|
|
http.createServer((req, res) => {
|
|
const queryOpt = url.parse(req.url, true).query;
|
|
const query = url.parse(req.url, true).pathname.replace(/[/]/g, '');
|
|
|
|
switch (req.url){
|
|
case "":
|
|
res.writeHead(200, { 'Content-Type':'application/json' });
|
|
res.end(JSON.stringify({"OwlBoardStatus":"ready","OwnBoardVersion":version}));
|
|
break;
|
|
}
|
|
switch (req.url){
|
|
case "/crs":
|
|
res.writeHead(200, { 'Content-Type':'application/json'});
|
|
res.end(crs);
|
|
break;
|
|
}
|
|
|
|
|
|
}).listen(settings.webPort);
|
|
|
|
console.log(`Web server started on http://${settings.listen}:${settings.webPort}`);
|
|
|
|
} catch (err) {
|
|
console.error('Unable to start webserver');
|
|
console.error(err);
|
|
};
|
|
|
|
// Check Athena API Key:
|
|
|
|
// Routes:
|
|
var crs = JSON.stringify({"resource":"crs_lookup"}); |