diff --git a/index.js b/index.js index 565119fa..87360c74 100644 --- a/index.js +++ b/index.js @@ -12,6 +12,7 @@ let sender = require('./services/sender'); let importer = require('./services/importer'); let verpServer = require('./services/verp-server'); let testServer = require('./services/test-server'); +let tzupdate = require('./services/tzupdate'); let dbcheck = require('./lib/dbcheck'); let port = config.www.port; @@ -72,25 +73,27 @@ server.on('listening', () => { // start additional services testServer(() => { verpServer(() => { - importer(() => { - sender(() => { - log.info('Service', 'All services started'); - if (config.group) { - try { - process.setgid(config.group); - log.info('Service', 'Changed group to "%s" (%s)', config.group, process.getgid()); - } catch (E) { - log.info('Service', 'Failed changed group to "%s"', config.group); + tzupdate(() => { + importer(() => { + sender(() => { + log.info('Service', 'All services started'); + if (config.group) { + try { + process.setgid(config.group); + log.info('Service', 'Changed group to "%s" (%s)', config.group, process.getgid()); + } catch (E) { + log.info('Service', 'Failed changed group to "%s"', config.group); + } } - } - if (config.user) { - try { - process.setuid(config.user); - log.info('Service', 'Changed user to "%s" (%s)', config.user, process.getuid()); - } catch (E) { - log.info('Service', 'Failed changed user to "%s"', config.user); + if (config.user) { + try { + process.setuid(config.user); + log.info('Service', 'Changed user to "%s" (%s)', config.user, process.getuid()); + } catch (E) { + log.info('Service', 'Failed changed user to "%s"', config.user); + } } - } + }); }); }); }); diff --git a/services/tzupdate.js b/services/tzupdate.js index f2791a4d..7c8266b3 100644 --- a/services/tzupdate.js +++ b/services/tzupdate.js @@ -4,8 +4,11 @@ let moment = require('moment-timezone'); let db = require('../lib/db'); +let lastCheck = false; +let log = require('npmlog'); function updateTimezoneOffsets(callback) { + log.verbose('UTC', 'Updating timezone offsets'); db.getConnection((err, connection) => { if (err) { return callback(err); @@ -29,4 +32,26 @@ function updateTimezoneOffsets(callback) { }); } -updateTimezoneOffsets(console.log); +module.exports = callback => { + updateTimezoneOffsets(err => { + if (err) { + return callback(err); + } + let checkLoop = () => { + let curUtcDate = new Date().toISOString().split('T').shift(); + if (curUtcDate !== lastCheck) { + updateTimezoneOffsets(err => { + if (err) { + log.error('UTC', err); + } + setTimeout(checkLoop, 60 * 60 * 1000); + }); + } else { + setTimeout(checkLoop, 60 * 60 * 1000); + } + lastCheck = curUtcDate; + }; + setTimeout(checkLoop, 60 * 60 * 1000); + callback(null, true); + }); +}; diff --git a/views/subscription/layout.hbs b/views/subscription/layout.hbs index ba5835f4..f325f225 100644 --- a/views/subscription/layout.hbs +++ b/views/subscription/layout.hbs @@ -48,7 +48,7 @@ - + {{#if useEditor}}