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
+20 -1
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;
+3
View File
@@ -18,6 +18,7 @@ const assert = require('assert'),
AuditSource = require('./auditsource.js'),
BoxError = require('./boxerror.js'),
constants = require('./constants.js'),
cron = require('./cron.js'),
debug = require('debug')('box:externalldap'),
eventlog = require('./eventlog.js'),
groups = require('./groups.js'),
@@ -87,6 +88,8 @@ async function setConfig(newConfig, auditSource) {
if (newConfig.provider === 'noop') await users.resetSource(); // otherwise, the owner could be 'ldap' source and lock themselves out
await eventlog.add(eventlog.ACTION_EXTERNAL_LDAP_CONFIGURE, auditSource, { oldConfig: removePrivateFields(currentConfig), config: removePrivateFields(newConfig) });
await cron.handleExternalLdapChanged();
}
// performs service bind if required