external ldap: run syncer every 4 hours

hardcoded for now but we should make this configurable
This commit is contained in:
Girish Ramakrishnan
2024-01-13 15:53:14 +01:00
parent 4136272382
commit 257dc4e271
3 changed files with 24 additions and 2 deletions

View File

@@ -15,6 +15,7 @@ exports = module.exports = {
handleTimeZoneChanged,
handleAutoupdatePatternChanged,
handleDynamicDnsChanged,
handleExternalLdapChanged,
DEFAULT_AUTOUPDATE_PATTERN,
};
@@ -29,6 +30,7 @@ const appHealthMonitor = require('./apphealthmonitor.js'),
CronJob = require('cron').CronJob,
debug = require('debug')('box:cron'),
dyndns = require('./dyndns.js'),
externalLdap = require('./externalldap.js'),
eventlog = require('./eventlog.js'),
janitor = require('./janitor.js'),
mail = require('./mail.js'),
@@ -57,7 +59,8 @@ const gJobs = {
dynamicDns: null,
schedulerSync: null,
appHealthMonitor: null,
diskUsage: null
diskUsage: null,
externalLdapSyncer: null
};
// cron format
@@ -173,6 +176,7 @@ async function startJobs() {
await handleBackupPolicyChanged(await backups.getPolicy());
await handleAutoupdatePatternChanged(await updater.getAutoupdatePattern());
await handleDynamicDnsChanged(await network.getDynamicDns());
await handleExternalLdapChanged(await externalLdap.getConfig());
}
async function handleBackupPolicyChanged(value) {
@@ -257,6 +261,21 @@ function handleDynamicDnsChanged(enabled) {
}
}
async function handleExternalLdapChanged(config) {
assert.strictEqual(typeof config, 'object');
if (config.provider !== 'noop') {
gJobs.externalLdapSyncer = new CronJob({
cronTime: '00 00 */4 * * *', // every 4 hours
onTick: async () => await safe(externalLdap.startSyncer(AuditSource.CRON), { debug }),
start: true
});
} else {
if (gJobs.externalLdapSyncer) gJobs.externalLdapSyncer.stop();
gJobs.externalLdapSyncer = null;
}
}
async function stopJobs() {
for (const job in gJobs) {
if (!gJobs[job]) continue;