-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi_server.js
More file actions
70 lines (58 loc) · 1.77 KB
/
Copy pathapi_server.js
File metadata and controls
70 lines (58 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
module.exports = apiServer;
function apiServer(opt) {
//ext. libs
const fs = require('fs');
const path = require('path');
const PROD = !fs.existsSync(path.join(__dirname, 'debug'));
const express = require('express');
const app = express();
const exec = require('child_process').exec;
//consts
const led_flash_interval = 1000;
// options
let logger = opt.logger;
let refreshScreenCallback = opt.refreshScreenCallback;
let fullRefreshCallback = opt.fullRefreshCallback;
let port = 80;
if(!PROD) {
port=8080;
}
app.post('/screenrefresh', function(req, res) {
logger.info('[api] requesting screen refresh');
if (refreshScreenCallback) {
refreshScreenCallback();
res.status(200).send('OK');
} else {
logger.error('[api] no screen refresh callback :(');
res.status(500).send('no callback');
}
});
app.post('/fullrefresh', function(req, res) {
logger.info('[api] requesting full refresh');
if (fullRefreshCallback) {
fullRefreshCallback();
res.status(200).send('OK');
} else {
logger.error('[api] no full refresh callback :(');
res.status(500).send('no callback');
}
});
app.post('/reboot', function(req, res) {
logger.info('[api] requesting reboot');
if(PROD) {
exec('/sbin/reboot', function (msg) {
logger.info(msg);
});
} else {
logger.warn('[api] fake reboot ! ');
}
res.status(200).send('OK');
});
app.all('*', function(req, res){
var requestedUrl = req.protocol + '://' + req.get('Host') + req.url;
logger.error('[api] wrong request ' + req.method + ' '+ requestedUrl);
res.status(404).send('Not found');
});
logger.info('[api] starting api server on port ' + port);
app.listen(port);
}