3.5. Examples#
This sections contains several simple examples for the use of Univention Configuration Registry. The complete source of these examples is available separately. The download location is given in each example below. Since almost all Univention Corporate Server packages use UCR, their source code provides additional examples.
3.5.1. Minimal File example#
This example provides a template for /etc/papersize, which is used to
configure the default paper size. A Univention Configuration Registry Variable print/papersize is
registered, which can be used to configure the paper size.
Source code: UCS source: doc/developer-reference/ucr/papersize/
conffiles/etc/papersizeThe template file only contains one line. Please note that this file does not start with the “UCRWARNING”, since the file must only contain the paper size and no comments.
@%@print/papersize@%@
debian/papersize.univention-config-registryThe file defines the templates and is processed by univention-install-config-registry during the package build and afterwards by univention-config-registry during normal usage.
Type: file File: etc/papersize
debian/papersize.univention-config-registry-variablesThe file describes the newly defined Univention Configuration Registry Variable.
[print/papersize] Description[en]=specify preferred paper size [a4] Description[de]=Legt die bevorzugte Papiergröße fest [a4] Type=str Categories=service-cups
debian/papersize.postinstSets the Univention Configuration Registry Variable to a default value after package installation.
#!/bin/sh case "$1" in configure) ucr set print/papersize?a4 ;; esac #DEBHELPER# exit 0
debian/rulesInvoke univention-install-config-registry during package build to install the files to the appropriate location. It also creates the required commands for the maintainer scripts (see debian/preinst, debian/prerm, debian/postinst, debian/postrm) to register and un-register the templates during package installation and removal.
#!/usr/bin/make -f %: dh $@ --with ucr
Note
Tabulators must be used for indentation in this Makefile-type file.
debian/controlThe automatically generated dependency on univention-config is inserted by univention-install-config-registry through
debian/papersize.substvars.Source: papersize Section: univention Priority: optional Maintainer: Univention GmbH <packages@univention.de> Build-Depends: debhelper-compat (= 13), univention-config-dev (>= 15.0.3), Standards-Version: 4.3.0.3 Package: papersize Architecture: all Depends: ${misc:Depends} Description: An example package to configure the papersize This purpose of this package is to show how Univention Config Registry is used. . For more information about UCS, refer to: https://www.univention.de/
3.5.2. Multifile example#
This example provides templates for /etc/hosts.allow and
/etc/hosts.deny, which is used to control access to system services. See
hosts_access.5 for more details.
Source code: UCS source: doc/developer-reference/ucr/hosts/
conffiles/etc/hosts.allow.d/00header;conffiles/etc/hosts.deny.d/00headerThe first file fragment of the file. It starts with
@%@UCRWARNING=# @%@, which is replaced by the warning text and a list of all sub-files.@%@UCRWARNING=# @%@ # /etc/hosts.allow: list of hosts that are allowed to access the system. # See the manual pages hosts_access(5) and hosts_options(5).
conffiles/etc/hosts.allow.d/50dynamic`;conffiles/etc/hosts.deny.d/50dynamicA second file fragment, which uses Python code to insert access control entries configured through the Univention Configuration Registry Variables
hosts/allow/andhosts/deny/.@!@ for key, value in sorted(configRegistry.items()): if key.startswith('hosts/allow/'): print(value) @!@debian/hosts.univention-config-registryThe file defines the templates and is processed by univention-install-config-registry.
Type: multifile Multifile: etc/hosts.allow Type: subfile Multifile: etc/hosts.allow Subfile: etc/hosts.allow.d/00header Type: subfile Multifile: etc/hosts.allow Subfile: etc/hosts.allow.d/50dynamic Variables: ^hosts/allow/.* Type: multifile Multifile: etc/hosts.deny Type: subfile Multifile: etc/hosts.deny Subfile: etc/hosts.deny.d/00header Type: subfile Multifile: etc/hosts.deny Subfile: etc/hosts.deny.d/50dynamic Variables: ^hosts/deny/.*
debian/hosts.univention-config-registry-variablesThe file describes the newly defined Univention Configuration Registry Variables.
[hosts/allow/.*] Description[en]=An permissive access control entry for system services, e.g. "ALL: LOCAL" Description[de]=Eine erlaubende Zugriffsregel für Systemdienste, z.B. "ALL: LOCAL". Type=str Categories=service-net [hosts/deny/.*] Description[en]=An denying access control entry for system services, e.g. "ALL: ALL". Description[de]=Eine verbietende Zugriffsregel für Systemdienste, z.B. "ALL: ALL". Type=str Categories=service-net
3.5.3. Services#
This example provides a template to control the atd service through
an Univention Configuration Registry Variable atd/autostart.
Source code: UCS source: doc/developer-reference/ucr/service/
conffiles/etc/init.d/atdThe template replaces the original file with a version, which checks the Univention Configuration Registry Variable
atd/autostartbefore starting the at daemon. Please note that the “UCRWARNING” is put after the hash-bash line.#! /bin/sh @%@UCRWARNING=# @%@ ### BEGIN INIT INFO # Provides: atd # Required-Start: $syslog $time $remote_fs # Required-Stop: $syslog $time $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Deferred execution scheduler # Description: Debian init script for the atd deferred executions # scheduler ### END INIT INFO # pidfile: /var/run/atd.pid # # Author: Ryan Murray <rmurray@debian.org> # PATH=/bin:/usr/bin:/sbin:/usr/sbin DAEMON=/usr/sbin/atd PIDFILE=/var/run/atd.pid test -x "$DAEMON" || exit 0 . /lib/lsb/init-functions case "$1" in start) log_daemon_msg "Starting deferred execution scheduler" "atd" start_daemon -p "$PIDFILE" "$DAEMON" log_end_msg $? ;; stop) log_daemon_msg "Stopping deferred execution scheduler" "atd" killproc -p "$PIDFILE" "$DAEMON" log_end_msg $? ;; force-reload|restart) "$0" stop "$0" start ;; status) status_of_proc -p "$PIDFILE" "$DAEMON" atd && exit 0 || exit $? ;; *) echo "Usage: $0 {start|stop|restart|force-reload|status}" exit 1 ;; esac exit 0
Note
The inclusion of
init-autostart.liband use of check_autostart.debian/service.univention-config-registryThe file defines the templates.
Type: file File: etc/init.d/atd Mode: 755 Variables: atd/autostart
Note
The additional
Modestatement to mark the file as executable.debian/service.univention-config-registry-variablesThe file adds a description for the Univention Configuration Registry Variable
atd/autostart.[atd/autostart] Description[en]=Automatically start the AT daemon on system startup [yes] Description[de]=Automatischer Start des AT-Dienstes beim Systemstart [yes] Type=bool Categories=service-at
debian/service.postinstSet the Univention Configuration Registry Variable to automatically start the atd on new installations.
#!/bin/sh case "$1" in configure) ucr set atd/autostart?yes ;; esac #DEBHELPER# exit 0
debian/controlunivention-base-files must be added manually as an additional dependency, since it is used from within the shell code.
Source: service Section: univention Priority: optional Maintainer: Univention GmbH <packages@univention.de> Build-Depends: debhelper-compat (= 13), univention-config-dev (>= 15.0.3), Standards-Version: 4.3.0.3 Package: service Architecture: all Depends: ${misc:Depends}, univention-base-files, Description: An example package to configure services This purpose of this package is to show how Univention Config Registry is used. . For more information about UCS, refer to: https://www.univention.de/