diff --git a/branches/ucs-3.2/ucs-3.2-0/base/univention-base-files/conffiles/etc/cron.d/univention-ucr-cronjobs b/branches/ucs-3.2/ucs-3.2-0/base/univention-base-files/conffiles/etc/cron.d/univention-ucr-cronjobs index e2bbee6..f1a6b7a 100644 --- a/branches/ucs-3.2/ucs-3.2-0/base/univention-base-files/conffiles/etc/cron.d/univention-ucr-cronjobs +++ b/branches/ucs-3.2/ucs-3.2-0/base/univention-base-files/conffiles/etc/cron.d/univention-ucr-cronjobs @@ -3,53 +3,49 @@ @!@ import sys -jobs = [] -def setup_cronjob(key): - global jobs - if not key.startswith('cron/') or key == 'cron/autostart' or key == 'cron/path' or key == 'cron/ucrdisabled': - return - job = '' - try: - tmp = key.split('/') - if len(tmp) != 3: - raise IndexError() - job = tmp[1] - except IndexError: - print >> sys.stderr, "E: This cron UCR key is not properly formatted: %s" % key - return - if job not in jobs: - jobs.append(job) - _tmpkey = 'cron/%s/' % job - time = configRegistry.get(_tmpkey + 'time', None) - command = configRegistry.get(_tmpkey + 'command', None) - description = configRegistry.get(_tmpkey + 'description', None) - user = configRegistry.get(_tmpkey + 'user', 'root') - mailto = configRegistry.get(_tmpkey + 'mailto', user) - disabled = configRegistry.is_true(_tmpkey + 'disabled', False) - - if disabled: + +def collect_cronjobs(): + jobs = {} + for key, value in configRegistry.items(): + try: + prefix, job, setting = key.split('/') + if prefix == 'cron': + jobs.setdefault(job, {})[setting] = value + except ValueError: + continue + return jobs + + +def process_cronjob(job, settings): + if configRegistry.is_true(value=settings.get("disabled"), default=False): return - if not (time and command): + try: + time = settings["time"] + command = settings["command"] + except KeyError: print >> sys.stderr, "E: Time or command is missing for cron job cron/%s" % job return print '\n' - if description: - print "# %s" % description + try: + print "# %(description)s" % settings + except KeyError: + pass + user = settings.get("user", "root") + mailto = settings.get("mailto", user) if mailto == "NONE": mailto = '""' print "MAILTO=%s" % mailto print "%s %s %s" % (time, user, command) -path = configRegistry.get('cron/path', '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/opt/scalix/bin') -print 'PATH="%s"' % path -disabled_globally = configRegistry.is_true('cron/ucrdisabled', False) -if disabled_globally: - print '\n# cron jobs defined by UCR have been disabled by cron/ucr/disabled' +print 'PATH="%s"' % configRegistry.get('cron/path', '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin') + +if configRegistry.is_true('cron/ucrdisabled', False): + print '\n# cron jobs defined by UCR have been disabled by cron/ucrdisabled' else: - for key in configRegistry.keys(): - if key.startswith('cron/'): - setup_cronjob(key) + jobs = collect_cronjobs() + for job, settings in jobs.items(): + process_cronjob(job, settings) @!@ diff --git a/branches/ucs-3.2/ucs-3.2-0/base/univention-base-files/debian/univention-base-files.univention-config-registry-variables b/branches/ucs-3.2/ucs-3.2-0/base/univention-base-files/debian/univention-base-files.univention-config-registry-variables index 6a226ec..923a0d3 100644 --- a/branches/ucs-3.2/ucs-3.2-0/base/univention-base-files/debian/univention-base-files.univention-config-registry-variables +++ b/branches/ucs-3.2/ucs-3.2-0/base/univention-base-files/debian/univention-base-files.univention-config-registry-variables @@ -482,7 +482,7 @@ Description[en]=Cron jobs can be defined in Univention Configuration Registry. E Type=str Categories=system-base -[cron/*/time] +[cron/*/command] Description[de]=Cron-Jobs können in Univention Configuration Registry definiert werden. Jeder Cron-Job setzt sich dabei aus mehreren Variablen zusammen. Es müssen min. die Variablen 'cron/JOBNAME/command' und 'cron/JOBNAME/time' gesetzt werden. Diese Variable legt den auszuführenden Befehl fest. Description[en]=Cron jobs can be defined in Univention Configuration Registry. Each cron job is composed of various variables. At least the variables 'cron/JOBNAME/command' and 'cron/JOBNAME/time' must be set. This variable specifies the command to be run. Type=str @@ -501,17 +501,29 @@ Type=str Categories=system-base [cron/*/description] -Description[de]=Cron-Jobs können in Univention Configuration Registry definiert werden. Jeder Cron-Job setzt sich dabei aus mehreren Variablen zusammen. Es müssen min. die Variablen 'cron/JOBNAME/command' und 'cron/JOBNAME/time' gesetzt werden. Mit dieser Variable kann eine Beschreibung hinterlegt werden. +Description[de]=Cron-Jobs können in Univention Configuration Registry definiert werden. Jeder Cron-Job setzt sich dabei aus mehreren Variablen zusammen. Es müssen min. die Variablen 'cron/JOBNAME/command' und 'cron/JOBNAME/time' gesetzt werden. Mit dieser Variable kann eine Beschreibung hinterlegt werden. Description[en]=Cron jobs can be defined in Univention Configuration Registry. Each cron job is composed of various variables. At least the variables 'cron/JOBNAME/command' and 'cron/JOBNAME/time' must be set. This variable can be used to provide a description. Type=str Categories=system-base +[cron/*/disabled] +Description[de]=Cron-Jobs können in Univention Configuration Registry definiert werden. Jeder Cron-Job setzt sich dabei aus mehreren Variablen zusammen. Es müssen min. die Variablen 'cron/JOBNAME/command' und 'cron/JOBNAME/time' gesetzt werden. Mit dieser Variable kann eine Cron-Job deaktiviert werden. +Description[en]=Cron jobs can be defined in Univention Configuration Registry. Each cron job is composed of various variables. At least the variables 'cron/JOBNAME/command' and 'cron/JOBNAME/time' must be set. This variable can be used to disable the Cron job. +Type=bool +Categories=system-base + [cron/path] -Description[de]=Mit dieser Variable kann die PATH-Umgebungsvariable für die in UCR definierten Cron-Job (siehe 'cron/JOBNAME/*') gesetzt werden. Ist die Variable nicht gesetzt, gilt '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/opt/scalix/bin'. -Description[en]=This variable allows the configuration of the PATH environment variable for cron jobs defined in UCR (see 'cron/JOBNAME/*'). If the variable is unset, '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/opt/scalix/bin' applies. +Description[de]=Mit dieser Variable kann die PATH-Umgebungsvariable für die in UCR definierten Cron-Job (siehe 'cron/JOBNAME/*') gesetzt werden. Ist die Variable nicht gesetzt, gilt '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'. +Description[en]=This variable allows the configuration of the PATH environment variable for cron jobs defined in UCR (see 'cron/JOBNAME/*'). If the variable is unset, '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' applies. Type=str Categories=system-base +[cron/ucrdisabled] +Description[de]=Cron-Jobs können in Univention Configuration Registry definiert werden. Mit dieser Variable können alle diese Cron-Jobs deaktiviert werden. +Description[en]=Cron jobs can be defined in Univention Configuration Registry. This variable can be used to disable all such Cron jobs. +Type=bool +Categories=system-base + [password/quality/credit/digits] Description[de]=Ist die Option 'Passwort-Qualitätsprüfung' für einen Benutzer aktiviert, werden für Passwortänderungen in Samba, Univention Management Console und Kerberos zusätzliche Prüfungen vorgenommen, die auch eine Wörterbuchprüfung beinhalten. Diese Variable konfiguriert die minimale Anzahl von Zahlen, die in dem neuen Passwort vorkommen muss. Description[en]=If the option 'Password quality check' is activated for a user, additional checks - including dictionary checks - are performed for password changes in Samba, Univention Management Console and Kerberos. This variable configures the minimum number of digits in the new password.