From 41b0172810c2c38a6f9f601a96d88335e45c9d56 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Sun, 17 Jul 2016 10:26:22 +0200 Subject: [PATCH] added Windows cleanup job --- lam/HISTORY | 2 +- lam/docs/manual-sources/howto.xml | 48 +++++++++++ .../images/jobs_windowsCleanup.png | Bin 0 -> 13733 bytes lam/lib/modules/windowsUser.inc | 76 +++++++++++++++++- 4 files changed, 124 insertions(+), 2 deletions(-) create mode 100644 lam/docs/manual-sources/images/jobs_windowsCleanup.png diff --git a/lam/HISTORY b/lam/HISTORY index e9a71a62..8188ee61 100644 --- a/lam/HISTORY +++ b/lam/HISTORY @@ -2,7 +2,7 @@ September 2016 - Windows: allow to show effective members of a group - LAM Pro: -> Group of names/members + roles: allow to show effective members of a group - -> Cron jobs: Move or delete expired accounts (Shadow, qmail, FreeRadius) + -> Cron jobs: Move or delete expired accounts (Shadow, Windows, qmail, FreeRadius) 21.06.2016 5.4 diff --git a/lam/docs/manual-sources/howto.xml b/lam/docs/manual-sources/howto.xml index 65d5c780..6cba09f0 100644 --- a/lam/docs/manual-sources/howto.xml +++ b/lam/docs/manual-sources/howto.xml @@ -2374,6 +2374,54 @@ mysql> GRANT ALL PRIVILEGES ON lam_cron.* TO 'lam_cron'@'localhost'; "2016-12-31". +
+ Windows: Delete or move expired accounts + + You can automatically delete or move expired accounts. + + + + + + + + + + + Options + + + + + Option + + Description + + + + Delay + + Number of days to wait after the account is + expired. + + + + Action + + Delete or move accounts + + + + Target DN + + Move only: specifies the DN where accounts are + moved + + + +
+
+
FreeRadius: Delete or move expired accounts diff --git a/lam/docs/manual-sources/images/jobs_windowsCleanup.png b/lam/docs/manual-sources/images/jobs_windowsCleanup.png new file mode 100644 index 0000000000000000000000000000000000000000..42e4a4c3b237f57c3a0f58a961b2affd35aedf1c GIT binary patch literal 13733 zcmb`u1yEc~xGlPo0D&J#kl-Fd(BKY%;O;KLeQ@^xA$Wk`794^H*GVA3-EA0Lg4^Km zcK&nf)xD?Az4ukU+XVwN%ye(M`}@}V*6JOpsw{(zNs0*o0Jfa0q&ff~ErP#KVjzQ$ z(!y-5;13ix2{}y+42;E9l@;*mQ)gK{HvquP0>3?w%3NF%0Du~hlN8tV&N_g3=@RJ7 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 literal 0 HcmV?d00001 diff --git a/lam/lib/modules/windowsUser.inc b/lam/lib/modules/windowsUser.inc index e81d43b3..f91a5dd3 100644 --- a/lam/lib/modules/windowsUser.inc +++ b/lam/lib/modules/windowsUser.inc @@ -3147,7 +3147,8 @@ class windowsUser extends baseModule implements passwordService { */ public function getSupportedJobs(&$config) { return array( - new WindowsPasswordNotifyJob() + new WindowsPasswordNotifyJob(), + new WindowsAccountExpirationCleanupJob() ); } @@ -3309,6 +3310,79 @@ if (interface_exists('\LAM\JOB\Job', false)) { } + /** + * Job to delete or move users on account expiration. + * + * @package jobs + */ + class WindowsAccountExpirationCleanupJob extends \LAM\JOB\AccountExpirationCleanupJob { + + /** + * Returns the alias name of the job. + * + * @return String name + */ + public function getAlias() { + return _('Windows') . ': ' . _('Cleanup expired user accounts'); + } + + /** + * Returns the description of the job. + * + * @return String description + */ + public function getDescription() { + return _('This job deletes or moves user accounts when they expire.'); + } + + /** + * Searches for users in LDAP. + * + * @param String $jobID unique job identifier + * @param array $options config options (name => value) + * @return array list of user attributes + */ + protected function findUsers($jobID, $options) { + // read users + $attrs = array('accountExpires'); + $userResults = searchLDAPByFilter('(accountExpires=*)', $attrs, array('user')); + return $userResults; + } + + /** + * Checks if a user is expired. + * + * @param integer $jobID job ID + * @param array $options job settings + * @param PDO $pdo PDO + * @param DateTime $now current time + * @param array $policyOptions list of policy options by getPolicyOptions() + * @param array $user user attributes + * @param boolean $isDryRun just do a dry run, nothing is modified + */ + protected function checkSingleUser($jobID, $options, &$pdo, $now, $policyOptions, $user, $isDryRun) { + $seconds = substr($user['accountexpires'][0], 0, -7); + $expireTime = new DateTime('1601-01-01', new DateTimeZone('UTC')); + $expireTime->add(new DateInterval('PT' . $seconds . 'S')); + $expireTime->setTimezone(getTimeZone()); + logNewMessage(LOG_DEBUG, "Expiration on " . $expireTime->format('Y-m-d')); + $delay = 0; + if (!empty($options[$this->getConfigPrefix() . '_delay' . $jobID][0])) { + $delay = $options[$this->getConfigPrefix() . '_delay' . $jobID][0]; + } + $actionTime = clone $expireTime; + if ($delay != 0) { + $actionTime->add(new DateInterval('P' . $delay . 'D')); + } + $actionTime->setTimeZone(getTimeZone()); + logNewMessage(LOG_DEBUG, "Action time on " . $actionTime->format('Y-m-d')); + if ($actionTime <= $now) { + $this->performAction($jobID, $options, $user, $isDryRun); + } + } + + } + } ?>