kopia lustrzana https://github.com/manuelkasper/sotlas-api
Porównaj commity
2 Commity
8012964ad4
...
b785ea782a
Autor | SHA1 | Data |
---|---|---|
Manuel Kasper | b785ea782a | |
Manuel Kasper | f8db795a1d |
15
config.js
15
config.js
|
@ -81,3 +81,18 @@ config.sso = {
|
||||||
config.solardata = {
|
config.solardata = {
|
||||||
apiKey: process.env.SOLARDATA_API_KEY
|
apiKey: process.env.SOLARDATA_API_KEY
|
||||||
};
|
};
|
||||||
|
|
||||||
|
config.cronjobs = [
|
||||||
|
{
|
||||||
|
script: 'importActivators',
|
||||||
|
schedule: '10 2 * * *'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
script: 'updateSotaSummits',
|
||||||
|
schedule: '20 4 * * *'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
script: 'updateSotaTrails',
|
||||||
|
schedule: '30 2 * * *'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
const cron = require('node-cron')
|
||||||
|
const child_process = require('child_process')
|
||||||
|
const config = require('./config')
|
||||||
|
|
||||||
|
module.exports = () => {
|
||||||
|
config.cronjobs.forEach(cronjob => {
|
||||||
|
cron.schedule(cronjob.schedule, () => {
|
||||||
|
console.log(`Running job '${cronjob.script}'`)
|
||||||
|
const start = Date.now()
|
||||||
|
const child = child_process.fork('jobs/' + cronjob.script)
|
||||||
|
child.on('error', err => {
|
||||||
|
console.error(`Job '${cronjob.script}' failed: ${err}`)
|
||||||
|
})
|
||||||
|
child.on('close', code => {
|
||||||
|
const end = Date.now()
|
||||||
|
console.log(`Job '${cronjob.script}' ended with code ${code} in ${end - start} ms`)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
|
@ -31,6 +31,7 @@
|
||||||
"moment": "^2.24.0",
|
"moment": "^2.24.0",
|
||||||
"mongodb": "^4.8.1",
|
"mongodb": "^4.8.1",
|
||||||
"multer": "^1.4.2",
|
"multer": "^1.4.2",
|
||||||
|
"node-cron": "^3.0.1",
|
||||||
"reconnect-net": "^1.1.1",
|
"reconnect-net": "^1.1.1",
|
||||||
"sharp": "^0.26.3",
|
"sharp": "^0.26.3",
|
||||||
"togeojson": "^0.16.0",
|
"togeojson": "^0.16.0",
|
||||||
|
@ -2895,6 +2896,14 @@
|
||||||
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz",
|
||||||
"integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw=="
|
"integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw=="
|
||||||
},
|
},
|
||||||
|
"node_modules/node-cron": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-cron/-/node-cron-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-RAWZTNn2M5KDIUV/389UX0EXsqvdFAwc9QwHQceh0Ga56dygqSRthqIjwpgZsoDspHGt2rkHdk9Z4RgfPMdALw==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/noop-logger": {
|
"node_modules/noop-logger": {
|
||||||
"version": "0.1.1",
|
"version": "0.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
|
||||||
|
@ -6604,6 +6613,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz",
|
||||||
"integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw=="
|
"integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw=="
|
||||||
},
|
},
|
||||||
|
"node-cron": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-cron/-/node-cron-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-RAWZTNn2M5KDIUV/389UX0EXsqvdFAwc9QwHQceh0Ga56dygqSRthqIjwpgZsoDspHGt2rkHdk9Z4RgfPMdALw=="
|
||||||
|
},
|
||||||
"noop-logger": {
|
"noop-logger": {
|
||||||
"version": "0.1.1",
|
"version": "0.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
"moment": "^2.24.0",
|
"moment": "^2.24.0",
|
||||||
"mongodb": "^4.8.1",
|
"mongodb": "^4.8.1",
|
||||||
"multer": "^1.4.2",
|
"multer": "^1.4.2",
|
||||||
|
"node-cron": "^3.0.1",
|
||||||
"reconnect-net": "^1.1.1",
|
"reconnect-net": "^1.1.1",
|
||||||
"sharp": "^0.26.3",
|
"sharp": "^0.26.3",
|
||||||
"togeojson": "^0.16.0",
|
"togeojson": "^0.16.0",
|
||||||
|
|
16
server.js
16
server.js
|
@ -18,6 +18,7 @@ const photos_router = require('./photos_router');
|
||||||
const tracks_router = require('./tracks_router');
|
const tracks_router = require('./tracks_router');
|
||||||
const solardata = require('./solardata');
|
const solardata = require('./solardata');
|
||||||
const maxmind = require('maxmind');
|
const maxmind = require('maxmind');
|
||||||
|
const cronjobs = require('./cronjobs');
|
||||||
|
|
||||||
let geoLookup;
|
let geoLookup;
|
||||||
import('geolite2-redist').then((geolite2) => {
|
import('geolite2-redist').then((geolite2) => {
|
||||||
|
@ -60,6 +61,8 @@ db.waitDb(() => {
|
||||||
rbnReceiver.start();
|
rbnReceiver.start();
|
||||||
})
|
})
|
||||||
|
|
||||||
|
cronjobs();
|
||||||
|
|
||||||
app.get('/summits/search', (req, res) => {
|
app.get('/summits/search', (req, res) => {
|
||||||
let limit = 100;
|
let limit = 100;
|
||||||
if (req.query.limit) {
|
if (req.query.limit) {
|
||||||
|
@ -258,6 +261,7 @@ app.get('/activators/search', (req, res) => {
|
||||||
|
|
||||||
cursor.skip(skip).limit(limit).toArray((err, activators) => {
|
cursor.skip(skip).limit(limit).toArray((err, activators) => {
|
||||||
res.json({activators, total: count});
|
res.json({activators, total: count});
|
||||||
|
cursor.close();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -292,6 +296,10 @@ app.get('/activators/:callsign', (req, res) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/map_server', (req, res) => {
|
app.get('/map_server', (req, res) => {
|
||||||
|
if (!geoLookup) {
|
||||||
|
res.status(503).end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
let mapServer = 'us';
|
let mapServer = 'us';
|
||||||
let geo = geoLookup.get(req.ip);
|
let geo = geoLookup.get(req.ip);
|
||||||
if (geo.continent.code === 'AF' || geo.continent.code === 'EU') {
|
if (geo.continent.code === 'AF' || geo.continent.code === 'EU') {
|
||||||
|
@ -301,6 +309,10 @@ app.get('/map_server', (req, res) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/my_coordinates', (req, res) => {
|
app.get('/my_coordinates', (req, res) => {
|
||||||
|
if (!geoLookup) {
|
||||||
|
res.status(503).end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
let geo = geoLookup.get(req.ip);
|
let geo = geoLookup.get(req.ip);
|
||||||
if (!geo) {
|
if (!geo) {
|
||||||
res.json({});
|
res.json({});
|
||||||
|
@ -310,6 +322,10 @@ app.get('/my_coordinates', (req, res) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/my_country', (req, res) => {
|
app.get('/my_country', (req, res) => {
|
||||||
|
if (!geoLookup) {
|
||||||
|
res.status(503).end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
let geo = geoLookup.get(req.ip);
|
let geo = geoLookup.get(req.ip);
|
||||||
if (!geo) {
|
if (!geo) {
|
||||||
res.json({});
|
res.json({});
|
||||||
|
|
Ładowanie…
Reference in New Issue