external ldap: run syncer every 4 hours
hardcoded for now but we should make this configurable
This commit is contained in:
+20
-1
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user