From 03f24e8c434aa6dccf3f58e8ba3c1798239c3bb8 Mon Sep 17 00:00:00 2001 From: Frank Brehm Date: Tue, 18 Oct 2022 18:15:09 +0200 Subject: [PATCH] Starting with bin/mirror-ldap-instance --- bin/mirror-ldap-instance | 65 ++ lib/pp_admintools/app/ldap.py | 46 +- lib/pp_admintools/app/mirror_ldap.py | 131 ++++ lib/pp_admintools/app/set_ldap_password.py | 10 +- lib/pp_admintools/argparse_actions.py | 95 ++- lib/pp_admintools/config/ldap.py | 3 +- locale/de_DE/LC_MESSAGES/pp_admintools.po | 691 +++++++++++---------- locale/en_US/LC_MESSAGES/pp_admintools.po | 674 +++++++++++--------- locale/pp_admintools.pot | 674 +++++++++++--------- 9 files changed, 1438 insertions(+), 951 deletions(-) create mode 100755 bin/mirror-ldap-instance create mode 100644 lib/pp_admintools/app/mirror_ldap.py diff --git a/bin/mirror-ldap-instance b/bin/mirror-ldap-instance new file mode 100755 index 0000000..7cc5ac0 --- /dev/null +++ b/bin/mirror-ldap-instance @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 + +from __future__ import print_function + +# Standard modules +import sys + +__exp_py_version_major__ = 3 +__min_py_version_minor__ = 6 + +if sys.version_info[0] != __exp_py_version_major__: + print("This script is intended to use with Python {}.".format( + __exp_py_version_major__), file=sys.stderr) + print("You are using Python: {0}.{1}.{2}-{3}-{4}.".format( + *sys.version_info) + "\n", file=sys.stderr) + sys.exit(1) + +if sys.version_info[1] < __min_py_version_minor__: + print("A minimal Python version of {maj}.{min} is necessary to execute this script.".format( + maj=__exp_py_version_major__, min=__min_py_version_minor__), file=sys.stderr) + print("You are using Python: {0}.{1}.{2}-{3}-{4}.".format( + *sys.version_info) + "\n", file=sys.stderr) + sys.exit(1) + +# Standard modules +import os +import locale + +try: + from pathlib import Path +except ImportError: + from pathlib2 import Path + +__author__ = 'Frank Brehm ' +__copyright__ = '(C) 2022 by Frank Brehm, Digitas Pixelpark GmbH, Berlin' + +# own modules: + +my_path = Path(__file__) +my_real_path = my_path.resolve() +bin_path = my_real_path.parent +base_dir = bin_path.parent +lib_dir = base_dir.joinpath('lib') +module_dir = lib_dir.joinpath('pp_admintools') + +if module_dir.exists(): + sys.path.insert(0, str(lib_dir)) + +from pp_admintools.app.mirror_ldap import MirrorLdapApplication + +appname = os.path.basename(sys.argv[0]) + +locale.setlocale(locale.LC_ALL, '') + +app = MirrorLdapApplication(appname=appname, base_dir=base_dir) +app.initialized = True + +if app.verbose > 2: + print("{c}-Object:\n{a}".format(c=app.__class__.__name__, a=app)) + +app() + +sys.exit(0) + +# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 diff --git a/lib/pp_admintools/app/ldap.py b/lib/pp_admintools/app/ldap.py index 470cbb5..60dd375 100644 --- a/lib/pp_admintools/app/ldap.py +++ b/lib/pp_admintools/app/ldap.py @@ -51,7 +51,7 @@ from ..config.ldap import LdapConnectionInfo, LdapConfiguration # rom ..config.ldap import DEFAULT_PORT_LDAP, DEFAULT_PORT_LDAPS from ..config.ldap import DEFAULT_TIMEOUT -__version__ = '0.7.4' +__version__ = '0.8.1' LOG = logging.getLogger(__name__) _ = XLATOR.gettext @@ -162,6 +162,7 @@ class BaseLdapApplication(BaseDPXApplication): use_default_ldap_connection = True use_multiple_ldap_connections = False show_cmdline_ldap_timeout = True + apply_default_ldap_instance_if_not_given = True # pattern_re_ldap_dn = ( # '^([a-z][a-z0-9-]*)=(?![ #])(((?![\\="+,;<>]).)|(\\[ \\#="+,;<>])|(\\[a-f0-9][a-f0-9]))*' @@ -334,23 +335,34 @@ class BaseLdapApplication(BaseDPXApplication): 'metavar': _('INSTANCE'), } + help_default_inst = _( + "If not given, then the instance {!r} will be used.").format('default') + help_single = _( - "The LDAP instance (LDAP cluster) from configuration, where to execute this " - "script. If not given, then the instance {!r} will be used.").format('default') + "The LDAP instance (LDAP cluster) from configuration, " + "where to execute this script.") + help_multi = _( "The LDAP instance (LDAP cluster) from configuration, where to execute " "this script. It is possible to give here the value {val_all!r}, " "then all found LDAP instances except {default!r} are used. " "It is alo possible to give the value {val_list!r}, then all configured " - "LDAP instances are shown, and the application is exiting. " - "If not given, then the instance {default!r} will be used.").format( - val_all='all', val_list='list', default='default') + "LDAP instances are shown, and the application is exiting.").format( + val_all='all', val_list='list', default='default') if self.use_multiple_ldap_connections: - arg_params['nargs'] = '*' - arg_params['help'] = help_multi + if self.apply_default_ldap_instance_if_not_given: + arg_params['nargs'] = '*' + arg_params['help'] = help_multi + ' ' + help_default_inst + else: + arg_params['nargs'] = '+' + arg_params['help'] = help_multi else: - arg_params['help'] = help_single + if self.apply_default_ldap_instance_if_not_given: + arg_params['help'] = help_single + ' ' + help_default_inst + else: + arg_params['help'] = help_single + arg_params['required'] = True ldap_group.add_argument('-I', '--instance', **arg_params) @@ -461,7 +473,7 @@ class BaseLdapApplication(BaseDPXApplication): print() # ------------------------------------------------------------------------- - def _verify_instances(self, is_admin=None, readonly=None, tier=None): + def _verify_instances(self, is_admin=None, readonly=None, tier=None, has_sync_source=False): if self.verbose > 1: LOG.debug(_("Verifying given instances ...")) @@ -475,6 +487,8 @@ class BaseLdapApplication(BaseDPXApplication): show_filter.append('readonly = {!r}'.format(readonly)) if tier is not None: show_filter.append('tier = {!r}'.format(tier)) + if has_sync_source: + show_filter.append('sync_source = *') msg = _("Used filter:") + ' ' + format_list(show_filter) LOG.debug(msg) @@ -492,6 +506,9 @@ class BaseLdapApplication(BaseDPXApplication): if tier is not None: if tier.strip().lower() != instance.tier: continue + if has_sync_source: + if instance.sync_source is None: + continue instances.append(inst.lower()) if len(self.ldap_instances) == 1 and self.ldap_instances[0].lower() == 'all': @@ -500,13 +517,16 @@ class BaseLdapApplication(BaseDPXApplication): else: if 'default' in self.cfg.ldap_connection: - instances.insert(0, 'default') + if self.apply_default_ldap_instance_if_not_given: + instances.insert(0, 'default') all_ok = True for given_inst in self.ldap_instances: if given_inst not in instances: - LOG.error(_("LDAP instance {!r} not found in configuration.").format( - given_inst)) + msg = _( + "LDAP instance {!r} not found in configuration or is not usable.").format( + given_inst) + LOG.error(msg) all_ok = False if not all_ok: diff --git a/lib/pp_admintools/app/mirror_ldap.py b/lib/pp_admintools/app/mirror_ldap.py new file mode 100644 index 0000000..86d2d02 --- /dev/null +++ b/lib/pp_admintools/app/mirror_ldap.py @@ -0,0 +1,131 @@ +# -*- coding: utf-8 -*- +""" +@summary: An application module for mirroring one LDAP instance to another + +@author: Frank Brehm +@contact: frank.brehm@pixelpark.com +@copyright: © 2022 by Frank Brehm, Berlin +""" +from __future__ import absolute_import + +# Standard modules +import logging + +# Third party modules +# from ldap3 import MODIFY_REPLACE, MODIFY_ADD, MODIFY_DELETE + +# Own modules +# from fb_tools.common import to_bool, is_sequence, pp + +from ..xlate import XLATOR + +# from .ldap import LdapAppError, FatalLDAPError +from .ldap import LdapAppError +from .ldap import BaseLdapApplication + +from ..argparse_actions import NonNegativeItegerOptionAction +from ..argparse_actions import LimitedFloatOptionAction + +__version__ = '0.1.0' +LOG = logging.getLogger(__name__) + +_ = XLATOR.gettext +ngettext = XLATOR.ngettext + + +# ============================================================================= +class MirrorLdapError(LdapAppError): + """Special exception class for exceptions inside this module.""" + + pass + + +# ============================================================================= +class MirrorLdapApplication(BaseLdapApplication): + """Application class for mirroring one LDAP instance to another.""" + + show_simulate_option = True + + use_default_ldap_connection = False + use_multiple_ldap_connections = False + show_cmdline_ldap_timeout = True + apply_default_ldap_instance_if_not_given = False + + default_wait_after_write = 0.05 + + # ------------------------------------------------------------------------- + def __init__(self, appname=None, base_dir=None): + + self.src = None + self.tgt = None + + self.limit = 0 + self.wait_after_write = self.default_wait_after_write + self.only_struct = False + + self.structural_entr_dns = [] + self.non_structural_entr_dns = [] + self.keep_entry_dns = [] + + desc = _( + "Mirror the content of a complete LDAP instance (server or cluster) to " + "another instance. This will be done first by clearing the target instance, " + "then copying structural entries from the source to the target instance and " + "then copying all other entries. During this some transformations are done, like " + "substituting the content of some entry attributes by another values." + ) + + super(MirrorLdapApplication, self).__init__( + appname=appname, description=desc, base_dir=base_dir, initialized=False) + + self.initialized = True + + # ------------------------------------------------------------------------- + def init_arg_parser(self): + + app_group = self.arg_parser.add_argument_group(_("Miroring options")) + + app_group.add_argument( + '-W', '--wait', '--wait-after-write', dest='wait', type=float, metavar=_('SECONDS'), + action=LimitedFloatOptionAction, min_val=0, + help=_( + "Number of seconds to wait after each write operation. Given as a " + "float value, and if set to zero, there is no waiting after a write. " + "(default: {:.1f})").format(self.default_wait_after_write), + ) + + app_group.add_argument( + '-L', '--limit', dest='limit', type=int, metavar=_('NUMBER'), + action=NonNegativeItegerOptionAction, + help=_( + "Limiting the mirroring to the first NUMBER entries. " + "This option is valid only in simulation mode."), + ) + + app_group.add_argument( + '-S', '--struct', '--only-struct', action="store_true", dest="struct", + help=_("Mirror only structural entries (entries with childs)."), + ) + + super(MirrorLdapApplication, self).init_arg_parser() + + # ------------------------------------------------------------------------- + def _verify_instances(self): + + super(MirrorLdapApplication, self)._verify_instances( + is_admin=True, readonly=False, has_sync_source=True) + + # ------------------------------------------------------------------------- + def _run(self): + + LOG.info("I'm walking, yes indeed I'm walking ...") + + +# ============================================================================= +if __name__ == "__main__": + + pass + +# ============================================================================= + +# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 list diff --git a/lib/pp_admintools/app/set_ldap_password.py b/lib/pp_admintools/app/set_ldap_password.py index dec44c2..d7a089d 100644 --- a/lib/pp_admintools/app/set_ldap_password.py +++ b/lib/pp_admintools/app/set_ldap_password.py @@ -36,7 +36,7 @@ from .ldap import LdapAppError, FatalLDAPError from .ldap import BaseLdapApplication from .ldap import PasswordFileOptionAction -__version__ = '0.6.4' +__version__ = '0.6.5' LOG = logging.getLogger(__name__) _ = XLATOR.gettext @@ -56,6 +56,10 @@ class SetLdapPasswordApplication(BaseLdapApplication): show_simulate_option = True + use_default_ldap_connection = False + use_multiple_ldap_connections = False + show_cmdline_ldap_timeout = True + current_userid = os.getuid() current_user = None try: @@ -136,10 +140,6 @@ class SetLdapPasswordApplication(BaseLdapApplication): # ------------------------------------------------------------------------- def __init__(self, appname=None, base_dir=None): - self.use_default_ldap_connection = False - self.use_multiple_ldap_connections = False - self.show_cmdline_ldap_timeout = True - self.init_pass_schemes() self.current_password = None diff --git a/lib/pp_admintools/argparse_actions.py b/lib/pp_admintools/argparse_actions.py index 2604324..2a2fe1a 100644 --- a/lib/pp_admintools/argparse_actions.py +++ b/lib/pp_admintools/argparse_actions.py @@ -16,7 +16,7 @@ from . import MAX_PORT_NUMBER from .xlate import XLATOR -__version__ = '0.2.2' +__version__ = '0.3.1' LOG = logging.getLogger(__name__) _ = XLATOR.gettext @@ -53,6 +53,99 @@ class PortOptionAction(argparse.Action): setattr(namespace, self.dest, port) +# ============================================================================= +class NonNegativeItegerOptionAction(argparse.Action): + + # ------------------------------------------------------------------------- + def __call__(self, parser, namespace, value, option_string=None): + + try: + val = int(value) + except Exception as e: + msg = _("Got a {c} for converting {v!r} into an integer value: {e}").format( + c=e.__class__.__name__, v=value, e=e) + raise argparse.ArgumentError(self, msg) + + if val < 0: + msg = _("The option must not be negative (given: {}).").format(value) + raise argparse.ArgumentError(self, msg) + + setattr(namespace, self.dest, val) + + +# ============================================================================= +class LimitedIntegerOptionAction(argparse.Action): + + # ------------------------------------------------------------------------- + def __init__(self, option_strings, min_val=None, max_val=None, *args, **kwargs): + + self._min_val = min_val + self._max_val = max_val + + super(LimitedIntegerOptionAction, self).__init__( + option_strings=option_strings, *args, **kwargs) + + # ------------------------------------------------------------------------- + def __call__(self, parser, namespace, value, option_string=None): + + val = 0 + try: + val = int(value) + except Exception as e: + msg = _("Got a {c} for converting {v!r} into an integer value: {e}").format( + c=e.__class__.__name__, v=value, e=e) + raise argparse.ArgumentError(self, msg) + + if self._min_val is not None: + if val < self._min_val: + msg = _("The option must be greater or equal to {m} (given: {v}).").format( + m=self._min_val, v=val) + raise argparse.ArgumentError(self, msg) + + if self._max_val is not None: + if val > self._max_val: + msg = _("The option must be less or equal to {m} (given: {v}).").format( + m=self._max_val, v=val) + raise argparse.ArgumentError(self, msg) + + setattr(namespace, self.dest, val) + + +# ============================================================================= +class LimitedFloatOptionAction(argparse.Action): + + # ------------------------------------------------------------------------- + def __init__(self, option_strings, min_val=None, max_val=None, *args, **kwargs): + + self._min_val = min_val + self._max_val = max_val + + super(LimitedFloatOptionAction, self).__init__( + option_strings=option_strings, *args, **kwargs) + + # ------------------------------------------------------------------------- + def __call__(self, parser, namespace, value, option_string=None): + + val = 0 + try: + val = float(value) + except Exception as e: + msg = _("Got a {c} for converting {v!r} into a float value: {e}").format( + c=e.__class__.__name__, v=value, e=e) + raise argparse.ArgumentError(self, msg) + + if self._min_val is not None and val < self._min_val: + msg = _("The option must be greater or equal to {m} (given: {v}).").format( + m=self._min_val, v=val) + raise argparse.ArgumentError(self, msg) + + if self._max_val is not None and val > self._max_val: + msg = _("The option must be less or equal to {m} (given: {v}).").format( + m=self._max_val, v=val) + raise argparse.ArgumentError(self, msg) + + setattr(namespace, self.dest, val) + # ============================================================================= if __name__ == "__main__": diff --git a/lib/pp_admintools/config/ldap.py b/lib/pp_admintools/config/ldap.py index 3e09977..4a27f56 100644 --- a/lib/pp_admintools/config/ldap.py +++ b/lib/pp_admintools/config/ldap.py @@ -32,7 +32,7 @@ from . import VALID_TIERS, DEFAULT_TIER from ..xlate import XLATOR -__version__ = '0.6.0' +__version__ = '0.6.1' LOG = logging.getLogger(__name__) _ = XLATOR.gettext @@ -396,6 +396,7 @@ class LdapConnectionInfo(FbBaseObject): if cls.re_ldap_sync_source_key.match(key): new.sync_source = value + continue msg = _("Unknown LDAP configuration key {key} found in section {sec!r}.").format( key=key, sec=section_name) diff --git a/locale/de_DE/LC_MESSAGES/pp_admintools.po b/locale/de_DE/LC_MESSAGES/pp_admintools.po index d47cb14..a16d003 100644 --- a/locale/de_DE/LC_MESSAGES/pp_admintools.po +++ b/locale/de_DE/LC_MESSAGES/pp_admintools.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: pp_admintools 0.9.1\n" "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n" -"POT-Creation-Date: 2022-10-17 17:45+0200\n" +"POT-Creation-Date: 2022-10-18 18:12+0200\n" "PO-Revision-Date: 2022-09-30 16:55+0200\n" "Last-Translator: Frank Brehm \n" "Language: de_DE\n" @@ -26,188 +26,188 @@ msgstr "Generierung der BIND9-Konfigurationsdatei für Slave-Zonen." msgid "Options for {}" msgstr "Optionen für {}" -#: lib/pp_admintools/app/dns_deploy_zones.py:267 +#: lib/pp_admintools/app/dns_deploy_zones.py:266 msgid "Keep a backup file for each changed configuration file." msgstr "Eine Backup-Datei für jede geänderte Konfigurationsdatei aufbewahren." -#: lib/pp_admintools/app/dns_deploy_zones.py:272 +#: lib/pp_admintools/app/dns_deploy_zones.py:271 msgid "Keeping the temporary directory instead of removing it at the end (e.g. for debugging purposes)" msgstr "Aufbewahren des temporären Verzeichnisses, anstatt es am Ende zu löschen (z.Bsp. zum Debuggen)" -#: lib/pp_admintools/app/dns_deploy_zones.py:300 +#: lib/pp_admintools/app/dns_deploy_zones.py:299 msgid "Post init phase." msgstr "Nach-Init-Phase." -#: lib/pp_admintools/app/dns_deploy_zones.py:304 +#: lib/pp_admintools/app/dns_deploy_zones.py:303 msgid "My own post init phase." msgstr "Die eigene Nach-Init-Phase." -#: lib/pp_admintools/app/dns_deploy_zones.py:320 +#: lib/pp_admintools/app/dns_deploy_zones.py:319 msgid "Unknown time zone: {!r}." msgstr "Unbekannte Zeitzone: {!r}." -#: lib/pp_admintools/app/dns_deploy_zones.py:340 +#: lib/pp_admintools/app/dns_deploy_zones.py:339 msgid "You must be root to execute this script." msgstr "Du musst root sein, um dieses Skript ausführen zu können." -#: lib/pp_admintools/app/dns_deploy_zones.py:342 +#: lib/pp_admintools/app/dns_deploy_zones.py:341 msgid "But in simulation mode we are continuing nevertheless." msgstr "Aber im Simulationsmodus machen wir trotzdem weiter." -#: lib/pp_admintools/app/dns_deploy_zones.py:352 +#: lib/pp_admintools/app/dns_deploy_zones.py:351 msgid "Using the global DNS master is not supported, please use 'local' or 'public'" msgstr "Die Verwendung des glovalen Masters wird nicht unterstützt, bitte 'local' oder 'public' verwenden" -#: lib/pp_admintools/app/dns_deploy_zones.py:360 +#: lib/pp_admintools/app/dns_deploy_zones.py:359 msgid "Starting: {}" msgstr "Starte: {}" -#: lib/pp_admintools/app/dns_deploy_zones.py:367 +#: lib/pp_admintools/app/dns_deploy_zones.py:366 msgid "Could not occupy pidfile: {}" msgstr "Konnte PID-Datei nicht vereinnahmen." -#: lib/pp_admintools/app/dns_deploy_zones.py:392 +#: lib/pp_admintools/app/dns_deploy_zones.py:391 msgid "Ending: {}" msgstr "Beendet: {}" -#: lib/pp_admintools/app/dns_deploy_zones.py:397 +#: lib/pp_admintools/app/dns_deploy_zones.py:396 msgid "Cleaning up ..." msgstr "Aufräumen …" -#: lib/pp_admintools/app/dns_deploy_zones.py:401 +#: lib/pp_admintools/app/dns_deploy_zones.py:400 msgid "Searching for {!r}." msgstr "Suche nach {!r}." -#: lib/pp_admintools/app/dns_deploy_zones.py:404 +#: lib/pp_admintools/app/dns_deploy_zones.py:403 msgid "Keep existing backup file {!r}." msgstr "Behalte existierende Backup-Datei {!r}." -#: lib/pp_admintools/app/dns_deploy_zones.py:406 +#: lib/pp_admintools/app/dns_deploy_zones.py:405 msgid "Removing {!r} ..." msgstr "Lösche {!r} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:412 +#: lib/pp_admintools/app/dns_deploy_zones.py:411 msgid "Error removing {p!r} - {c}: {e}" msgstr "Fehler beim Löschen {p!r} - {c}: {e}" -#: lib/pp_admintools/app/dns_deploy_zones.py:417 +#: lib/pp_admintools/app/dns_deploy_zones.py:416 msgid "Temporary directory {!r} will not be removed. It's on yours to remove it manually." msgstr "" "Das temporäre Verzeichnis {!r} wird nicht gelöscht. Du musst Dich selbst darum kümmern, es " "manuell zu löschen." -#: lib/pp_admintools/app/dns_deploy_zones.py:422 +#: lib/pp_admintools/app/dns_deploy_zones.py:421 msgid "Destroying temporary directory {!r} ..." msgstr "Zerstöre temporäres Verzeichnis {!r} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:431 +#: lib/pp_admintools/app/dns_deploy_zones.py:430 msgid "Temporary directory: {!r}." msgstr "Temporäres Verzeichnis: {!r}." -#: lib/pp_admintools/app/dns_deploy_zones.py:436 +#: lib/pp_admintools/app/dns_deploy_zones.py:435 msgid "Temporary zones conf: {!r}" msgstr "Temporäre Zonenkonfiguration: {!r}" -#: lib/pp_admintools/app/dns_deploy_zones.py:441 +#: lib/pp_admintools/app/dns_deploy_zones.py:440 msgid "Trying to get all keys from named.conf ..." msgstr "Versuche alle Schlüssel der named.conf zu ermitteln …" -#: lib/pp_admintools/app/dns_deploy_zones.py:447 lib/pp_admintools/app/dns_deploy_zones.py:801 -#: lib/pp_admintools/app/dns_deploy_zones.py:837 lib/pp_admintools/app/dns_deploy_zones.py:869 -#: lib/pp_admintools/app/dns_deploy_zones.py:904 lib/pp_admintools/app/dns_deploy_zones.py:939 +#: lib/pp_admintools/app/dns_deploy_zones.py:446 lib/pp_admintools/app/dns_deploy_zones.py:800 +#: lib/pp_admintools/app/dns_deploy_zones.py:836 lib/pp_admintools/app/dns_deploy_zones.py:868 +#: lib/pp_admintools/app/dns_deploy_zones.py:903 lib/pp_admintools/app/dns_deploy_zones.py:938 #: lib/pp_admintools/app/mail.py:326 msgid "Executing: {}" msgstr "Führe aus: {}" -#: lib/pp_admintools/app/dns_deploy_zones.py:453 lib/pp_admintools/app/dns_deploy_zones.py:807 -#: lib/pp_admintools/app/ldap.py:766 lib/pp_admintools/app/ldap.py:819 -#: lib/pp_admintools/app/ldap.py:872 lib/pp_admintools/app/ldap.py:1103 -#: lib/pp_admintools/app/ldap.py:1137 lib/pp_admintools/app/ldap.py:1171 -#: lib/pp_admintools/app/ldap.py:1205 +#: lib/pp_admintools/app/dns_deploy_zones.py:452 lib/pp_admintools/app/dns_deploy_zones.py:806 +#: lib/pp_admintools/app/ldap.py:787 lib/pp_admintools/app/ldap.py:840 +#: lib/pp_admintools/app/ldap.py:893 lib/pp_admintools/app/ldap.py:1124 +#: lib/pp_admintools/app/ldap.py:1158 lib/pp_admintools/app/ldap.py:1192 +#: lib/pp_admintools/app/ldap.py:1226 msgid "Result:" msgstr "Ergebnis:" -#: lib/pp_admintools/app/dns_deploy_zones.py:494 lib/pp_admintools/app/dns_deploy_zones.py:496 +#: lib/pp_admintools/app/dns_deploy_zones.py:493 lib/pp_admintools/app/dns_deploy_zones.py:495 msgid "Found named keys:" msgstr "iGefundene Schlüssel von named:" -#: lib/pp_admintools/app/dns_deploy_zones.py:496 lib/pp_admintools/app/dns_deploy_zones.py:527 +#: lib/pp_admintools/app/dns_deploy_zones.py:495 lib/pp_admintools/app/dns_deploy_zones.py:526 msgid "None" msgstr "Keine" -#: lib/pp_admintools/app/dns_deploy_zones.py:501 +#: lib/pp_admintools/app/dns_deploy_zones.py:500 msgid "Generating {} ..." msgstr "Generiere {} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:525 lib/pp_admintools/app/dns_deploy_zones.py:527 +#: lib/pp_admintools/app/dns_deploy_zones.py:524 lib/pp_admintools/app/dns_deploy_zones.py:526 msgid "Collected server configuration:" msgstr "Ermittelte Servers-Konfiguration:" -#: lib/pp_admintools/app/dns_deploy_zones.py:548 +#: lib/pp_admintools/app/dns_deploy_zones.py:547 msgid "Generated file {!r}:" msgstr "Generierte Datei {!r}:" -#: lib/pp_admintools/app/dns_deploy_zones.py:564 +#: lib/pp_admintools/app/dns_deploy_zones.py:563 msgid "Pure local zone {!r} will not be considered." msgstr "Die rein lokale Zone {!r} wird nich mit beachtet." -#: lib/pp_admintools/app/dns_deploy_zones.py:596 +#: lib/pp_admintools/app/dns_deploy_zones.py:595 msgid "Key {k!r} for zone {z!r} not found in named configuration." msgstr "Der Schlüssel {k!r} für die Zone {z!r} wurde in der named-Konfiguration nicht gefunden." -#: lib/pp_admintools/app/dns_deploy_zones.py:626 +#: lib/pp_admintools/app/dns_deploy_zones.py:625 msgid "Got IPv4 tuples: {}" msgstr "Habe IPv4-Tupels erhalten: {}" -#: lib/pp_admintools/app/dns_deploy_zones.py:650 +#: lib/pp_admintools/app/dns_deploy_zones.py:649 msgid "Got IPv6 tokens: {}" msgstr "Habe IPv6-Tupels erhalten: {}" -#: lib/pp_admintools/app/dns_deploy_zones.py:657 +#: lib/pp_admintools/app/dns_deploy_zones.py:656 msgid "Comparing generated files with existing ones." msgstr "Vergleiche die generierten Dateien mit den existierenden." -#: lib/pp_admintools/app/dns_deploy_zones.py:664 +#: lib/pp_admintools/app/dns_deploy_zones.py:663 msgid "Files to replace:" msgstr "Dateien, die ersetzt werden:" -#: lib/pp_admintools/app/dns_deploy_zones.py:670 +#: lib/pp_admintools/app/dns_deploy_zones.py:669 msgid "Source file not defined." msgstr "Die Quell-Datei ist nicht definiert." -#: lib/pp_admintools/app/dns_deploy_zones.py:672 +#: lib/pp_admintools/app/dns_deploy_zones.py:671 msgid "Target file not defined." msgstr "Die Ziel-Datei ist nicht definiert." -#: lib/pp_admintools/app/dns_deploy_zones.py:674 +#: lib/pp_admintools/app/dns_deploy_zones.py:673 msgid "Comparing {one!r} with {two!r} ..." msgstr "Vergleiche {one!r} mit {two!r} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:678 lib/pp_admintools/app/dns_deploy_zones.py:687 +#: lib/pp_admintools/app/dns_deploy_zones.py:677 lib/pp_admintools/app/dns_deploy_zones.py:686 msgid "{what} {f!r} does not exists." msgstr "Die {what} {f!r} existiert nicht." -#: lib/pp_admintools/app/dns_deploy_zones.py:679 lib/pp_admintools/app/dns_deploy_zones.py:683 +#: lib/pp_admintools/app/dns_deploy_zones.py:678 lib/pp_admintools/app/dns_deploy_zones.py:682 msgid "Source file" msgstr "Quell-Datei" -#: lib/pp_admintools/app/dns_deploy_zones.py:682 lib/pp_admintools/app/dns_deploy_zones.py:692 +#: lib/pp_admintools/app/dns_deploy_zones.py:681 lib/pp_admintools/app/dns_deploy_zones.py:691 msgid "{what} {f!r} is not a regular file." msgstr "Die {what} {f!r} ist keine reguläre Datei." -#: lib/pp_admintools/app/dns_deploy_zones.py:688 lib/pp_admintools/app/dns_deploy_zones.py:693 +#: lib/pp_admintools/app/dns_deploy_zones.py:687 lib/pp_admintools/app/dns_deploy_zones.py:692 msgid "Target file" msgstr "Ziel-Datei" -#: lib/pp_admintools/app/dns_deploy_zones.py:699 lib/pp_admintools/app/dns_deploy_zones.py:716 +#: lib/pp_admintools/app/dns_deploy_zones.py:698 lib/pp_admintools/app/dns_deploy_zones.py:715 msgid "Reading {!r} ..." msgstr "Lese {!r} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:709 lib/pp_admintools/app/dns_deploy_zones.py:726 +#: lib/pp_admintools/app/dns_deploy_zones.py:708 lib/pp_admintools/app/dns_deploy_zones.py:725 msgid "Cleaned version of {!r}:" msgstr "Bereinigte Version von {!r}:" -#: lib/pp_admintools/app/dns_deploy_zones.py:731 +#: lib/pp_admintools/app/dns_deploy_zones.py:730 msgid "" "Source file {sf!r} has different number essential lines ({sl}) than the target file {tf!r} ({tl}" " lines)." @@ -215,166 +215,166 @@ msgstr "" "Die Quelldatei {sf!r} besitzt eine andere Anzahl essentieller Zeilen ({sl}) als die Zieldatei " "{tf!r} ({tl} lines)." -#: lib/pp_admintools/app/dns_deploy_zones.py:740 +#: lib/pp_admintools/app/dns_deploy_zones.py:739 msgid "Source file {sf!r} has a different content than the target file {tf!r}." msgstr "Die Quelldate {sf!r} hat einen anderen Inhalt als die Zielfatei {tf!r}." -#: lib/pp_admintools/app/dns_deploy_zones.py:752 +#: lib/pp_admintools/app/dns_deploy_zones.py:751 msgid "No replacement of any config files necessary." msgstr "Es muss keine Datei ersetzt werden." -#: lib/pp_admintools/app/dns_deploy_zones.py:755 +#: lib/pp_admintools/app/dns_deploy_zones.py:754 msgid "Start replacing of config files ..." msgstr "Starting Ersatz von Konfigurations-Dateien …" -#: lib/pp_admintools/app/dns_deploy_zones.py:763 lib/pp_admintools/app/dns_deploy_zones.py:773 +#: lib/pp_admintools/app/dns_deploy_zones.py:762 lib/pp_admintools/app/dns_deploy_zones.py:772 msgid "Copying {frm!r} => {to!r} ..." msgstr "Kopieren {frm!r} => {to!r} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:769 +#: lib/pp_admintools/app/dns_deploy_zones.py:768 msgid "All backuped config files:" msgstr "Alle gesicherten Konfigurations-Dateien:" -#: lib/pp_admintools/app/dns_deploy_zones.py:781 +#: lib/pp_admintools/app/dns_deploy_zones.py:780 msgid "Restoring of original config files because of an exception." msgstr "Wiederherstellung der Original-Konfigurations-Dateien wegen eines Fehlers." -#: lib/pp_admintools/app/dns_deploy_zones.py:785 +#: lib/pp_admintools/app/dns_deploy_zones.py:784 msgid "Moving {frm!r} => {to!r} ..." msgstr "Verschieben {frm!r} => {to!r} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:791 +#: lib/pp_admintools/app/dns_deploy_zones.py:790 msgid "Could not find backup file {!r}." msgstr "Konnte Backup-Datei {!r} nicht finden." -#: lib/pp_admintools/app/dns_deploy_zones.py:796 +#: lib/pp_admintools/app/dns_deploy_zones.py:795 msgid "Checking syntax correctness of named.conf ..." msgstr "Überprüfe synaktische Richtigkeit der named.conf …" -#: lib/pp_admintools/app/dns_deploy_zones.py:817 +#: lib/pp_admintools/app/dns_deploy_zones.py:816 msgid "Reload or restart of named is not necessary." msgstr "Ein Reload oder Neustart von named ist nicht notwendig." -#: lib/pp_admintools/app/dns_deploy_zones.py:822 +#: lib/pp_admintools/app/dns_deploy_zones.py:821 msgid "Named is not running, please start it manually." msgstr "Named läuft nicht, bitte manuell starten." -#: lib/pp_admintools/app/dns_deploy_zones.py:833 +#: lib/pp_admintools/app/dns_deploy_zones.py:832 msgid "Checking, whether named is running ..." msgstr "Überprüfen, ob named läuft …" -#: lib/pp_admintools/app/dns_deploy_zones.py:851 lib/pp_admintools/app/dns_deploy_zones.py:886 -#: lib/pp_admintools/app/dns_deploy_zones.py:921 lib/pp_admintools/app/dns_deploy_zones.py:956 +#: lib/pp_admintools/app/dns_deploy_zones.py:850 lib/pp_admintools/app/dns_deploy_zones.py:885 +#: lib/pp_admintools/app/dns_deploy_zones.py:920 lib/pp_admintools/app/dns_deploy_zones.py:955 msgid "Return value: {!r}" msgstr "Rückgabewert: {!r}" -#: lib/pp_admintools/app/dns_deploy_zones.py:853 lib/pp_admintools/app/dns_deploy_zones.py:855 -#: lib/pp_admintools/app/dns_deploy_zones.py:888 lib/pp_admintools/app/dns_deploy_zones.py:890 -#: lib/pp_admintools/app/dns_deploy_zones.py:923 lib/pp_admintools/app/dns_deploy_zones.py:925 -#: lib/pp_admintools/app/dns_deploy_zones.py:958 lib/pp_admintools/app/dns_deploy_zones.py:960 +#: lib/pp_admintools/app/dns_deploy_zones.py:852 lib/pp_admintools/app/dns_deploy_zones.py:854 +#: lib/pp_admintools/app/dns_deploy_zones.py:887 lib/pp_admintools/app/dns_deploy_zones.py:889 +#: lib/pp_admintools/app/dns_deploy_zones.py:922 lib/pp_admintools/app/dns_deploy_zones.py:924 +#: lib/pp_admintools/app/dns_deploy_zones.py:957 lib/pp_admintools/app/dns_deploy_zones.py:959 msgid "Output on {}" msgstr "Ausgabe an {}" -#: lib/pp_admintools/app/dns_deploy_zones.py:865 +#: lib/pp_admintools/app/dns_deploy_zones.py:864 msgid "Starting {} ..." msgstr "Starten {} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:900 +#: lib/pp_admintools/app/dns_deploy_zones.py:899 msgid "Restarting {} ..." msgstr "Neu starten {} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:935 +#: lib/pp_admintools/app/dns_deploy_zones.py:934 msgid "Reloading {} ..." msgstr "Reload {} …" -#: lib/pp_admintools/app/ldap.py:108 lib/pp_admintools/app/ldap.py:211 +#: lib/pp_admintools/app/ldap.py:109 lib/pp_admintools/app/ldap.py:213 msgid "The path {!r} must be an absolute path." msgstr "Der Pfad {!r} muss ein absoluter Pfad sein." -#: lib/pp_admintools/app/ldap.py:114 lib/pp_admintools/app/ldap.py:215 -#: lib/pp_admintools/app/ldap.py:1219 +#: lib/pp_admintools/app/ldap.py:115 lib/pp_admintools/app/ldap.py:217 +#: lib/pp_admintools/app/ldap.py:1240 msgid "The file {!r} does not exists." msgstr "Die Datei {!r} existiert nicht." -#: lib/pp_admintools/app/ldap.py:118 lib/pp_admintools/app/ldap.py:219 -#: lib/pp_admintools/app/ldap.py:1224 +#: lib/pp_admintools/app/ldap.py:119 lib/pp_admintools/app/ldap.py:221 +#: lib/pp_admintools/app/ldap.py:1245 msgid "The given path {!r} exists, but is not a regular file." msgstr "Der angegebene Pfad {!r} existiert, ist aber keine reguläre Datei." -#: lib/pp_admintools/app/ldap.py:122 lib/pp_admintools/app/ldap.py:223 -#: lib/pp_admintools/app/ldap.py:1229 +#: lib/pp_admintools/app/ldap.py:123 lib/pp_admintools/app/ldap.py:225 +#: lib/pp_admintools/app/ldap.py:1250 msgid "The given file {!r} is not readable." msgstr "Die angegebene Datei {} ist nicht lesbar." -#: lib/pp_admintools/app/ldap.py:143 +#: lib/pp_admintools/app/ldap.py:144 msgid "a port number must be greater than zero and less or equal to {}." msgstr "ein Port muss größer als Null und kleiner oder gleich {} sein." -#: lib/pp_admintools/app/ldap.py:148 +#: lib/pp_admintools/app/ldap.py:149 msgid "Wrong port number {!r}:" msgstr "Ungültige Portnummer {!r}." -#: lib/pp_admintools/app/ldap.py:256 +#: lib/pp_admintools/app/ldap.py:258 msgid "LDAP options" msgstr "LDAP-Optionen" -#: lib/pp_admintools/app/ldap.py:258 +#: lib/pp_admintools/app/ldap.py:260 msgid "Options for the default LDAP connection" msgstr "Optionen für die Vorgabe-LDAP-Verbindung" -#: lib/pp_admintools/app/ldap.py:260 +#: lib/pp_admintools/app/ldap.py:262 msgid "Options fo LDAP connections" msgstr "Optionen für die LDAP-Verbindungen" -#: lib/pp_admintools/app/ldap.py:267 lib/pp_admintools/app/remove_ldap_user.py:280 -#: lib/pp_admintools/app/set_ldap_password.py:579 +#: lib/pp_admintools/app/ldap.py:269 lib/pp_admintools/app/remove_ldap_user.py:279 +#: lib/pp_admintools/app/set_ldap_password.py:583 msgid "No" msgstr "Nein" -#: lib/pp_admintools/app/ldap.py:269 +#: lib/pp_admintools/app/ldap.py:271 msgid "Yes" msgstr "Ja" -#: lib/pp_admintools/app/ldap.py:275 +#: lib/pp_admintools/app/ldap.py:277 msgid "HOST" msgstr "HOST" -#: lib/pp_admintools/app/ldap.py:276 +#: lib/pp_admintools/app/ldap.py:278 msgid "Hostname or address of the LDAP server to use. Default: {!r}" msgstr "Der Hostname oder die Adresse des zu verwendenden LDAP-Servers. Vorgabe: {!r}" -#: lib/pp_admintools/app/ldap.py:283 +#: lib/pp_admintools/app/ldap.py:285 msgid "Use ldaps to connect to the LDAP server. Default: {}" msgstr "Soll ldaps zum Verbinden mit dem LDAP-Server verwendet werden? Vorgabe: {}." -#: lib/pp_admintools/app/ldap.py:288 lib/pp_admintools/app/mail.py:261 -#: lib/pp_admintools/app/pdns.py:274 +#: lib/pp_admintools/app/ldap.py:290 lib/pp_admintools/app/mail.py:261 +#: lib/pp_admintools/app/pdns.py:272 msgid "PORT" msgstr "PORT" -#: lib/pp_admintools/app/ldap.py:290 +#: lib/pp_admintools/app/ldap.py:292 msgid "The port number to connect to the LDAP server. Default: {}" msgstr "Welcher Port soll verwendet werden, um sich mit dem LDAP-Server zu verbinden? Vorgabe: {}." -#: lib/pp_admintools/app/ldap.py:296 +#: lib/pp_admintools/app/ldap.py:298 msgid "The base DN used as the root for the LDAP searches. Default: {!r}" msgstr "Die Basis-DN, die als Ausgangspunt bei LDAP-Suchen verwendet werden soll. Vorgabe: {!r}" -#: lib/pp_admintools/app/ldap.py:303 +#: lib/pp_admintools/app/ldap.py:305 msgid "The Bind DN to use to connect to the LDAP server. Default: {!r}" msgstr "Die Bind-DN, die zur Verbindung mit dem LDAP-Server verwendet werden soll. Vorgabe: {!r}" -#: lib/pp_admintools/app/ldap.py:311 lib/pp_admintools/app/set_ldap_password.py:204 +#: lib/pp_admintools/app/ldap.py:313 lib/pp_admintools/app/set_ldap_password.py:204 #: lib/pp_admintools/app/set_ldap_password.py:205 lib/pp_admintools/app/set_ldap_password.py:222 #: lib/pp_admintools/app/set_ldap_password.py:225 msgid "PASSWORD" msgstr "PASSWORT" -#: lib/pp_admintools/app/ldap.py:312 +#: lib/pp_admintools/app/ldap.py:314 msgid "Use PASSWORD as the password for simple LDAP authentication." msgstr "Verwende PASSWORT als Passwort für die einfache Authentifizierung." -#: lib/pp_admintools/app/ldap.py:317 +#: lib/pp_admintools/app/ldap.py:319 msgid "" "Prompt for simple LDAP authentication. This is used instead of specifying the password on the " "command line." @@ -382,275 +382,275 @@ msgstr "" "Nachfrage nach dem Passwort für eine einfache LDAP-Authentifizierung. Dies wird anstelle der " "Angabe des Passwortes an der Kommandozeile verwendet." -#: lib/pp_admintools/app/ldap.py:323 lib/pp_admintools/app/set_ldap_password.py:216 +#: lib/pp_admintools/app/ldap.py:325 lib/pp_admintools/app/set_ldap_password.py:216 #: lib/pp_admintools/app/set_ldap_password.py:218 msgid "PASSWORD_FILE" msgstr "PASSWORT_DATEI" -#: lib/pp_admintools/app/ldap.py:325 +#: lib/pp_admintools/app/ldap.py:327 msgid "Use contents of PASSWORD_FILE as the password for simple authentication." msgstr "Verwende den Inhalt der PASSWORT_DATEI als das Passort für eine einfache LDAP-Authentifizierung." -#: lib/pp_admintools/app/ldap.py:333 lib/pp_admintools/app/pdns.py:248 +#: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/pdns.py:246 msgid "INSTANCE" msgstr "INSTANZ" -#: lib/pp_admintools/app/ldap.py:336 -msgid "" -"The LDAP instance (LDAP cluster) from configuration, where to execute this script. If not given," -" then the instance {!r} will be used." +#: lib/pp_admintools/app/ldap.py:338 +msgid "If not given, then the instance {!r} will be used." +msgstr "Wenn nicht angegeben, dann wird die Instanz {!r} verwendet." + +#: lib/pp_admintools/app/ldap.py:341 +msgid "The LDAP instance (LDAP cluster) from configuration, where to execute this script." msgstr "" "Die LDAP-Instanz (das LDAP-Cluster) aus der Konfiguration, in welcher das Skript ausgeführt " -"werden soll. Wenn nicht angegeben, wird die Instanz {!r} verwendet." +"werden soll." -#: lib/pp_admintools/app/ldap.py:339 +#: lib/pp_admintools/app/ldap.py:345 msgid "" "The LDAP instance (LDAP cluster) from configuration, where to execute this script. It is " "possible to give here the value {val_all!r}, then all found LDAP instances except {default!r} " "are used. It is alo possible to give the value {val_list!r}, then all configured LDAP instances " -"are shown, and the application is exiting. If not given, then the instance {default!r} will be " -"used." +"are shown, and the application is exiting." msgstr "" "Die LDAP-Instanz (das LDAP-Cluster) aus der Konfiguration, für das das Skript ausgeführt werden " "soll.Es ist möglich, hier den Wert {val_all!r} anzugeben, in dem Fall werden alle LDAP-Instanzen" " außer {default!r} verwendet. Es ist ebenfalls möglich, den Wert {val_list!r} anzugeben, in " -"diesem Fall werden alle LDAP-Instanzen ausgegeben, und das Skript beendet sich. Wenn nichts " -"angegeben wird, wird die Instanz {default!r} verwendet." +"diesem Fall werden alle LDAP-Instanzen ausgegeben, und das Skript beendet sich." -#: lib/pp_admintools/app/ldap.py:358 +#: lib/pp_admintools/app/ldap.py:371 lib/pp_admintools/app/mirror_ldap.py:89 msgid "SECONDS" msgstr "SEKUNDEN" -#: lib/pp_admintools/app/ldap.py:360 +#: lib/pp_admintools/app/ldap.py:373 msgid "Using the given timeout in seconds for all LDAP operations. Default: {}" msgstr "Der Timeout in Sekunden für alle LDAP-Operationen. Vorgabe: {}." -#: lib/pp_admintools/app/ldap.py:394 +#: lib/pp_admintools/app/ldap.py:407 msgid "Checking given instances." msgstr "Überprüfe die übergebenen Instanzen." -#: lib/pp_admintools/app/ldap.py:398 +#: lib/pp_admintools/app/ldap.py:411 msgid "Given insts:" msgstr "Übergebene Instanzen:" -#: lib/pp_admintools/app/ldap.py:449 +#: lib/pp_admintools/app/ldap.py:462 msgid "Configured LDAP instances:" msgstr "Konfigurierte LDAP-Instanzen:" -#: lib/pp_admintools/app/ldap.py:466 +#: lib/pp_admintools/app/ldap.py:479 msgid "Verifying given instances ..." msgstr "Überprüfene Instanzen …" -#: lib/pp_admintools/app/ldap.py:477 +#: lib/pp_admintools/app/ldap.py:492 msgid "Used filter:" msgstr "Verwendeter Filter:" -#: lib/pp_admintools/app/ldap.py:507 lib/pp_admintools/app/remove_ldap_user.py:181 -msgid "LDAP instance {!r} not found in configuration." -msgstr "Die LDAP-Instanz {!r} wurde nicht in der Konfiguration gefunden." +#: lib/pp_admintools/app/ldap.py:526 +msgid "LDAP instance {!r} not found in configuration or is not usable." +msgstr "Die LDAP-Instanz {!r} wurde nicht in der Konfiguration gefunden oder ist nicht verwendbar." -#: lib/pp_admintools/app/ldap.py:515 +#: lib/pp_admintools/app/ldap.py:536 msgid "LDAP instances to use:" msgstr "Verwendete LDAP-Instanzen:" -#: lib/pp_admintools/app/ldap.py:564 +#: lib/pp_admintools/app/ldap.py:585 msgid "Preparations ..." msgstr "Vorbereitungen …" -#: lib/pp_admintools/app/ldap.py:567 +#: lib/pp_admintools/app/ldap.py:588 msgid "Open all necessary LDAP connections ..." msgstr "Öffne alle notwendigen LDAP-Verbindungen …" -#: lib/pp_admintools/app/ldap.py:581 +#: lib/pp_admintools/app/ldap.py:602 msgid "Password of user {usr} on LDAP instance {inst}:" msgstr "Passwort des Nutzers {usr} der LDAP-Instanz {inst}:" -#: lib/pp_admintools/app/ldap.py:590 +#: lib/pp_admintools/app/ldap.py:611 msgid "Info about LDAP server {}:" msgstr "Informationen zu LDAP-Server {}:" -#: lib/pp_admintools/app/ldap.py:600 +#: lib/pp_admintools/app/ldap.py:621 msgid "Trying to get LDAP server object for {} ..." msgstr "Versuche ein LDAP-Server-Objekt für {} zu bekommen …" -#: lib/pp_admintools/app/ldap.py:616 +#: lib/pp_admintools/app/ldap.py:637 msgid "Connect options to server {!r}:" msgstr "Verbindungs-Optionen zu Server {!r}:" -#: lib/pp_admintools/app/ldap.py:623 +#: lib/pp_admintools/app/ldap.py:644 msgid "LDAP server {s}: {re}" msgstr "LDAP-Server {s}: {re}" -#: lib/pp_admintools/app/ldap.py:637 +#: lib/pp_admintools/app/ldap.py:658 msgid "Connecting to LDAP server {url} as {dn!r} ..." msgstr "Verbinde mit LDAP-Server {url} als {dn!r} …" -#: lib/pp_admintools/app/ldap.py:649 +#: lib/pp_admintools/app/ldap.py:670 msgid "Finishing ..." msgstr "Beende …" -#: lib/pp_admintools/app/ldap.py:658 +#: lib/pp_admintools/app/ldap.py:679 msgid "Disconnecting from all remaining LDAP instances ..." msgstr "Trenne Verbindung zu allen verbleibenden LDAP-Instanzen …" -#: lib/pp_admintools/app/ldap.py:671 +#: lib/pp_admintools/app/ldap.py:692 msgid "Unbinding from LDAP server {!r} ..." msgstr "Trenne Bindung zu LDAP-Server {!r} …" -#: lib/pp_admintools/app/ldap.py:678 +#: lib/pp_admintools/app/ldap.py:699 msgid "Disconnecting from LDAP server {!r} ..." msgstr "Trenne Verbindung zu LDAP-Server {!r} …" -#: lib/pp_admintools/app/ldap.py:687 +#: lib/pp_admintools/app/ldap.py:708 msgid "Trying to evaluate DN of user {user!r} in LDAP instance {inst} ..." msgstr "Versuche den DN des Nutzer {user!r} auf der LDAP-Instanz {inst} zu ermitteln …" -#: lib/pp_admintools/app/ldap.py:692 +#: lib/pp_admintools/app/ldap.py:713 msgid "Trying to evaluate DN of user {u!r} as a mail address ..." msgstr "Versuche den DN des Nutzer {u!r} als Mailadresse zu ermitteln …" -#: lib/pp_admintools/app/ldap.py:699 +#: lib/pp_admintools/app/ldap.py:720 msgid "Trying to evaluate DN of user {u!r} as a LDAP DN ..." msgstr "Versuche den DN des Nutzer {u!r} als LDAP DN zu ermitteln …" -#: lib/pp_admintools/app/ldap.py:706 +#: lib/pp_admintools/app/ldap.py:727 msgid "Trying to evaluate DN of user {u!r} as a UID (Posix user name) ..." msgstr "Versuche den DN des Nutzer {u!r} als UID (POSIX Benutzername) zu ermitteln …" -#: lib/pp_admintools/app/ldap.py:715 lib/pp_admintools/app/remove_ldap_user.py:300 +#: lib/pp_admintools/app/ldap.py:736 lib/pp_admintools/app/remove_ldap_user.py:299 msgid "Empty user given." msgstr "Leere Nutzername übergeben." -#: lib/pp_admintools/app/ldap.py:718 +#: lib/pp_admintools/app/ldap.py:739 msgid "Trying to evaluate DN of user {u!r} as a CN ({c}) ..." msgstr "Versuche den DN des Nutzer {u!r} als CN ({c}) zu ermitteln …" -#: lib/pp_admintools/app/ldap.py:748 lib/pp_admintools/app/ldap.py:801 -#: lib/pp_admintools/app/ldap.py:854 lib/pp_admintools/app/ldap.py:1088 -#: lib/pp_admintools/app/ldap.py:1122 lib/pp_admintools/app/ldap.py:1156 -#: lib/pp_admintools/app/ldap.py:1190 +#: lib/pp_admintools/app/ldap.py:769 lib/pp_admintools/app/ldap.py:822 +#: lib/pp_admintools/app/ldap.py:875 lib/pp_admintools/app/ldap.py:1109 +#: lib/pp_admintools/app/ldap.py:1143 lib/pp_admintools/app/ldap.py:1177 +#: lib/pp_admintools/app/ldap.py:1211 msgid "Searching in {uri}/{bdn} with filter: {fltr}" msgstr "Suche in {uri}/{bdn} mit dem Filter: {fltr}" -#: lib/pp_admintools/app/ldap.py:759 +#: lib/pp_admintools/app/ldap.py:780 msgid "Result of searching for mail address {m!r}:" msgstr "Ergebnis der Suche nach der Mailadresse {m!r}:" -#: lib/pp_admintools/app/ldap.py:763 lib/pp_admintools/app/ldap.py:816 -#: lib/pp_admintools/app/ldap.py:869 lib/pp_admintools/app/ldap.py:957 -#: lib/pp_admintools/app/ldap.py:1100 lib/pp_admintools/app/ldap.py:1134 -#: lib/pp_admintools/app/ldap.py:1168 lib/pp_admintools/app/ldap.py:1202 +#: lib/pp_admintools/app/ldap.py:784 lib/pp_admintools/app/ldap.py:837 +#: lib/pp_admintools/app/ldap.py:890 lib/pp_admintools/app/ldap.py:978 +#: lib/pp_admintools/app/ldap.py:1121 lib/pp_admintools/app/ldap.py:1155 +#: lib/pp_admintools/app/ldap.py:1189 lib/pp_admintools/app/ldap.py:1223 msgid "Got a response entry:" msgstr "Erhaltener Antwort-Eintrag:" -#: lib/pp_admintools/app/ldap.py:770 +#: lib/pp_admintools/app/ldap.py:791 msgid "User with mail address {m!r} not found in {uri}/{bdn}." msgstr "Ein Nutzer mit der Mailadresse {m!r} wurde nicht in {uri}/{bdn} gefunden." -#: lib/pp_admintools/app/ldap.py:812 +#: lib/pp_admintools/app/ldap.py:833 msgid "Result of searching for uid {u!r}:" msgstr "Ergebnis der Suche nach UID {u!r}:" -#: lib/pp_admintools/app/ldap.py:823 +#: lib/pp_admintools/app/ldap.py:844 msgid "User with uid {u!r} not found in {uri}/{bdn}." msgstr "Ein Nutzer mit der UID {u!r} wurde nicht in {uri}/{bdn} gefunden." -#: lib/pp_admintools/app/ldap.py:865 +#: lib/pp_admintools/app/ldap.py:886 msgid "Result of searching for CN {cn!r}:" msgstr "Ergebnis der Suche nach CN {cn!r}:" -#: lib/pp_admintools/app/ldap.py:876 +#: lib/pp_admintools/app/ldap.py:897 msgid "User with cn {cn!r} not found in {uri}/{bdn}." msgstr "Ein Nutzer mit dem CN {cn!r} wurde nicht in {uri}/{bdn} gefunden." -#: lib/pp_admintools/app/ldap.py:893 lib/pp_admintools/app/set_ldap_password.py:504 +#: lib/pp_admintools/app/ldap.py:914 lib/pp_admintools/app/set_ldap_password.py:508 msgid "User with DN {dn!r} not found in {uri}." msgstr "Ein Nutzer mit dem DN {dn!r} wurde nicht in {uri} gefunden." -#: lib/pp_admintools/app/ldap.py:911 +#: lib/pp_admintools/app/ldap.py:932 msgid "ObjectClasses of {dn!r}:" msgstr "ObjectClasses von {dn!r}:" -#: lib/pp_admintools/app/ldap.py:921 +#: lib/pp_admintools/app/ldap.py:942 msgid "Entry {dn!r} in {uri} seems not to be an account." msgstr "Der Eintrag {dn!r} in {uri} scheint kein Nutzerkonto zu sein." -#: lib/pp_admintools/app/ldap.py:943 +#: lib/pp_admintools/app/ldap.py:964 msgid "Searching DN {dn!r} in {uri}." msgstr "Suche DN {dn!r} in {uri}." -#: lib/pp_admintools/app/ldap.py:953 +#: lib/pp_admintools/app/ldap.py:974 msgid "Result of searching for DN {dn!r}:" msgstr "Ergebnis der Suche nach dem DN {dn!r}:" -#: lib/pp_admintools/app/ldap.py:961 +#: lib/pp_admintools/app/ldap.py:982 msgid "Entry with DN {dn!r} not found in {uri}." msgstr "Ein Eintrag bit dem DN {dn!r} wurde nicht in {uri} gefunden." -#: lib/pp_admintools/app/ldap.py:1002 +#: lib/pp_admintools/app/ldap.py:1023 msgid "Applying changes on {uri} to DN {dn!r}:" msgstr "Wende Änderungen in {uri} an DN {dn!r} an:" -#: lib/pp_admintools/app/ldap.py:1007 +#: lib/pp_admintools/app/ldap.py:1028 msgid "Simulation mode - changes are not applied." msgstr "Simulationsmodus - hier wird jetzt nichts geändert." -#: lib/pp_admintools/app/ldap.py:1013 +#: lib/pp_admintools/app/ldap.py:1034 msgid "Modification NOT successfull - {c}: {e}" msgstr "Die Änderung war NICHT erfolgreich - {c}: {e}" -#: lib/pp_admintools/app/ldap.py:1014 lib/pp_admintools/app/remove_ldap_user.py:427 -#: lib/pp_admintools/app/remove_ldap_user.py:454 lib/pp_admintools/app/remove_ldap_user.py:481 -#: lib/pp_admintools/app/remove_ldap_user.py:512 lib/pp_admintools/app/remove_ldap_user.py:543 +#: lib/pp_admintools/app/ldap.py:1035 lib/pp_admintools/app/remove_ldap_user.py:426 +#: lib/pp_admintools/app/remove_ldap_user.py:453 lib/pp_admintools/app/remove_ldap_user.py:480 +#: lib/pp_admintools/app/remove_ldap_user.py:511 lib/pp_admintools/app/remove_ldap_user.py:542 #: lib/pp_admintools/app/set_ldap_password.py:612 msgid "Changes:" msgstr "Änderungen:" -#: lib/pp_admintools/app/ldap.py:1026 +#: lib/pp_admintools/app/ldap.py:1047 msgid "Modification status: {!r}." msgstr "Änderungsstatus: {!r}." -#: lib/pp_admintools/app/ldap.py:1028 +#: lib/pp_admintools/app/ldap.py:1049 msgid "Result of modifying:" msgstr "Ergebnis der Änderung:" -#: lib/pp_admintools/app/ldap.py:1031 +#: lib/pp_admintools/app/ldap.py:1052 msgid "Modification NOT successful: {desc} - {msg}" msgstr "Die Änderung war NICHT erfolgreich - {desc}: {msg}" -#: lib/pp_admintools/app/ldap.py:1035 +#: lib/pp_admintools/app/ldap.py:1056 msgid "Modification successful." msgstr "Die Änderung war erfolgreich." -#: lib/pp_admintools/app/ldap.py:1045 +#: lib/pp_admintools/app/ldap.py:1066 msgid "Deleting LDAP entry {dn!r} on {uri} ..." msgstr "Lösche LDAP-Eintrag {dn!r} in {uri} …" -#: lib/pp_admintools/app/ldap.py:1050 +#: lib/pp_admintools/app/ldap.py:1071 msgid "Simulation mode - deletion will not be executed." msgstr "Simulationsmodus - hier wird jetzt nichts gelöscht." -#: lib/pp_admintools/app/ldap.py:1056 +#: lib/pp_admintools/app/ldap.py:1077 msgid "Deletion NOT successfull - {c}: {e}" msgstr "Die Löschung war NICHT erfolgreich - {c}: {e}" -#: lib/pp_admintools/app/ldap.py:1060 +#: lib/pp_admintools/app/ldap.py:1081 msgid "Deletion status: {!r}." msgstr "Löschstatus: {!r}" -#: lib/pp_admintools/app/ldap.py:1062 +#: lib/pp_admintools/app/ldap.py:1083 msgid "Result of deletion:" msgstr "Ergebnis der Löschung:" -#: lib/pp_admintools/app/ldap.py:1065 +#: lib/pp_admintools/app/ldap.py:1086 msgid "Deletion NOT successful: {desc} - {msg}" msgstr "Die Löschung war NICHT erfolgreich - {desc}: {msg}" -#: lib/pp_admintools/app/ldap.py:1069 +#: lib/pp_admintools/app/ldap.py:1090 msgid "Deletion successful." msgstr "Die Löschung war erfolgreich." -#: lib/pp_admintools/app/ldap.py:1216 +#: lib/pp_admintools/app/ldap.py:1237 msgid "Reading password file {!r} ..." msgstr "Lese Passwortdatei {!r} …" @@ -741,103 +741,144 @@ msgstr "Die zu sendende Mail:" msgid "Did not found sendmail executable." msgstr "Kein ausführbares Programm 'sendmail' gefunden." -#: lib/pp_admintools/app/pdns.py:100 lib/pp_admintools/app/pdns.py:184 +#: lib/pp_admintools/app/mirror_ldap.py:70 +msgid "" +"Mirror the content of a complete LDAP instance (server or cluster) to another instance. This " +"will be done first by clearing the target instance, then copying structural entries from the " +"source to the target instance and then copying all other entries. During this some " +"transformations are done, like substituting the content of some entry attributes by another " +"values." +msgstr "" +"Spiegelt den kompletten Inhalt einer LDAP-Instanz (Server oder Cluster) in eine andere Instanz. " +"Das wird getan, indem zuerst die Zileinstanz komplett geleert wird, dann alle strukturellen " +"Einträge von der Quell- in die Zielinstanz kopiert werden, und danach alle anderen. Während " +"dessen werden einige Transformationen ausgeführt, wie die Erssetzung der Inhalte bestimmter " +"Attribute durch andere Werte." + +#: lib/pp_admintools/app/mirror_ldap.py:86 +msgid "Miroring options" +msgstr "Spiegelungs--Optionen" + +#: lib/pp_admintools/app/mirror_ldap.py:91 +msgid "" +"Number of seconds to wait after each write operation. Given as a float value, and if set to " +"zero, there is no waiting after a write. (default: {:.1f})" +msgstr "" +"Anzahl der Sekunden, die nach jeder Schreiboperation gewartet wertden. Wird als Float-Wert " +"angegeben, und wenn sie auf Null gesetzt werden, erfolgt kein Warten nach dem Schreiben. " +"(Vorgabe: {:.1f})" + +#: lib/pp_admintools/app/mirror_ldap.py:98 +msgid "NUMBER" +msgstr "ANZAHL" + +#: lib/pp_admintools/app/mirror_ldap.py:100 +msgid "Limiting the mirroring to the first NUMBER entries. This option is valid only in simulation mode." +msgstr "" +"Begrenzung der Spiegelung auf die erste ANZAHL Einträge. Diese Option ist nur im Simulations-" +"Modus gültig." + +#: lib/pp_admintools/app/mirror_ldap.py:107 +msgid "Mirror only structural entries (entries with childs)." +msgstr "Nur strukturelle Einträge (Einträge mit Child-Einträgen) spiegeln." + +#: lib/pp_admintools/app/pdns.py:99 lib/pp_admintools/app/pdns.py:183 msgid "Configuration not available." msgstr "Die Konfiguration ist nicht verfügbar." -#: lib/pp_admintools/app/pdns.py:114 +#: lib/pp_admintools/app/pdns.py:113 msgid "Invalid API key {!r} given." msgstr "Ungültiger API-Schlüssel {!r} angegeben." -#: lib/pp_admintools/app/pdns.py:126 +#: lib/pp_admintools/app/pdns.py:125 msgid "Invalid API host {!r} given." msgstr "Ungültiger API-Host {!r} angegeben." -#: lib/pp_admintools/app/pdns.py:139 +#: lib/pp_admintools/app/pdns.py:138 msgid "Invalid API port {!r} given." msgstr "Ungültiger API-Port {!r} angegeben." -#: lib/pp_admintools/app/pdns.py:151 +#: lib/pp_admintools/app/pdns.py:150 msgid "Invalid API server name {!r} given." msgstr "Ungültiger API-Servername {!r} angegeben." -#: lib/pp_admintools/app/pdns.py:169 lib/pp_admintools/app/pdns.py:172 +#: lib/pp_admintools/app/pdns.py:168 lib/pp_admintools/app/pdns.py:171 msgid "Invalid instance {!r} given." msgstr "Ungültige Instanz {!r} angegeben." -#: lib/pp_admintools/app/pdns.py:180 +#: lib/pp_admintools/app/pdns.py:179 msgid "Evaluating instance {!r} ..." msgstr "Ermittle Instanz {!r} …" -#: lib/pp_admintools/app/pdns.py:188 +#: lib/pp_admintools/app/pdns.py:187 msgid "PDNS instance {!r} is not configured." msgstr "Die PDNS Instanz {!r} ist nicht konfiguriert." -#: lib/pp_admintools/app/pdns.py:239 +#: lib/pp_admintools/app/pdns.py:238 msgid "PowerDNS API options" msgstr "PowerDNS API-Optionen" -#: lib/pp_admintools/app/pdns.py:249 +#: lib/pp_admintools/app/pdns.py:247 msgid "Select, which PowerDNS instance to use. Valid values: {v}, default: {d!r}." msgstr "Auswahl der zu verwendenden PowerDNS-Instanz. Gültige Werte: {v}, Vorgaben: {d!r}." -#: lib/pp_admintools/app/pdns.py:257 lib/pp_admintools/app/pdns.py:263 -#: lib/pp_admintools/app/pdns.py:269 +#: lib/pp_admintools/app/pdns.py:255 lib/pp_admintools/app/pdns.py:261 +#: lib/pp_admintools/app/pdns.py:267 msgid "Using the {!r} PowerDNS instance." msgstr "Verwenden der {!r}-PowerDNS-Instanz." -#: lib/pp_admintools/app/pdns.py:277 +#: lib/pp_admintools/app/pdns.py:275 msgid "Which port to connect to PowerDNS API, default: {}." msgstr "Welcher Port soll verwendet werden, um sich mit der PowerDNS-API zu verbinden, Vorgabe: {}." -#: lib/pp_admintools/app/pdns.py:302 +#: lib/pp_admintools/app/pdns.py:300 msgid "No path given for{d} [{s}]/{k} in configuration." msgstr "Kein Pfad für{d} [{s}]/{k} in der Konfiguration angegegben." -#: lib/pp_admintools/app/pdns.py:309 +#: lib/pp_admintools/app/pdns.py:307 msgid "Path {p!r} for{d} [{s}]/{k} in configuration must be an absolute path." msgstr "Der Pfad {p!r} für{d} [{s}]/{k} in der Konfiguration muss ein absoluter sein." -#: lib/pp_admintools/app/pdns.py:332 lib/pp_admintools/app/pdns.py:368 -#: lib/pp_admintools/app/pdns.py:395 +#: lib/pp_admintools/app/pdns.py:330 lib/pp_admintools/app/pdns.py:366 +#: lib/pp_admintools/app/pdns.py:393 msgid "Executing {} ..." msgstr "Ausführung von {} …" -#: lib/pp_admintools/app/pdns.py:370 +#: lib/pp_admintools/app/pdns.py:368 msgid "Setting Loglevel of the requests module to {}." msgstr "Setze das Loglevel des Requests-Moduls auf {}." -#: lib/pp_admintools/app/pdns.py:384 +#: lib/pp_admintools/app/pdns.py:382 msgid "Executing nothing ..." msgstr "Führe nicht aus …" -#: lib/pp_admintools/app/pdns.py:404 lib/pp_admintools/app/pdns.py:426 -#: lib/pp_admintools/app/pdns.py:437 lib/pp_admintools/app/pdns.py:447 +#: lib/pp_admintools/app/pdns.py:402 lib/pp_admintools/app/pdns.py:424 +#: lib/pp_admintools/app/pdns.py:435 lib/pp_admintools/app/pdns.py:445 msgid "The PDNS server object does not exists." msgstr "Das PDNS-Server-Objekt existiert nicht." -#: lib/pp_admintools/app/pdns.py:406 lib/pp_admintools/app/pdns.py:428 -#: lib/pp_admintools/app/pdns.py:439 lib/pp_admintools/app/pdns.py:449 +#: lib/pp_admintools/app/pdns.py:404 lib/pp_admintools/app/pdns.py:426 +#: lib/pp_admintools/app/pdns.py:437 lib/pp_admintools/app/pdns.py:447 msgid "The PDNS server object is not initialized." msgstr "Das PDNS-Server-Objekt ist nicht initialisiert." -#: lib/pp_admintools/app/pdns.py:457 +#: lib/pp_admintools/app/pdns.py:455 msgid "Trying to get complete information about zone {!r} ..." msgstr "Versuch die kompletten Informationen über die Zone {!r} zu bekommen …" -#: lib/pp_admintools/app/pdns.py:463 +#: lib/pp_admintools/app/pdns.py:461 msgid "The given zone {} was not found." msgstr "Die angegebene Zone {} wurde nicht gefunden." -#: lib/pp_admintools/app/pdns.py:466 +#: lib/pp_admintools/app/pdns.py:464 msgid "Got a response:" msgstr "Erhaltene Antwort:" -#: lib/pp_admintools/app/pdns.py:471 +#: lib/pp_admintools/app/pdns.py:469 msgid "Zone object:" msgstr "Zonen-Objekt:" -#: lib/pp_admintools/app/remove_ldap_user.py:70 +#: lib/pp_admintools/app/remove_ldap_user.py:69 msgid "" "Disables or removes the given users from LDAP. If disabling, then the user will not be really " "removed, but disabled by locking the password, setting all status flags to {inact!r}, assigning " @@ -849,32 +890,32 @@ msgstr "" "auf {inact!r}, Zuweisen von {shell!r} als Login-Shell und Löschen des Nutzers aus allen Gruppen " "deaktiviert. Beim Löschen wird der Nutzer tatsächlich im LDAP gelöscht." -#: lib/pp_admintools/app/remove_ldap_user.py:115 +#: lib/pp_admintools/app/remove_ldap_user.py:114 msgid "Removing options" msgstr "Lösch-Optionen" -#: lib/pp_admintools/app/remove_ldap_user.py:118 +#: lib/pp_admintools/app/remove_ldap_user.py:117 msgid "This is the default." msgstr "Dieses ist die Vorgabe." -#: lib/pp_admintools/app/remove_ldap_user.py:119 +#: lib/pp_admintools/app/remove_ldap_user.py:118 msgid "This is mutually exclusive to {!r}." msgstr "Das schließt sich mit {!r} gegenseitig aus." -#: lib/pp_admintools/app/remove_ldap_user.py:121 +#: lib/pp_admintools/app/remove_ldap_user.py:120 msgid "Deactivating the user instead of removing it." msgstr "Deaktivieren der Nutzer anstatt Löschung." -#: lib/pp_admintools/app/remove_ldap_user.py:128 +#: lib/pp_admintools/app/remove_ldap_user.py:127 msgid "Removing the user from LDAP." msgstr "Löschen der übergebenen Nutzer im LDAP." -#: lib/pp_admintools/app/remove_ldap_user.py:136 lib/pp_admintools/app/set_ldap_password.py:269 -#: lib/pp_admintools/app/set_ldap_password.py:272 +#: lib/pp_admintools/app/remove_ldap_user.py:135 lib/pp_admintools/app/set_ldap_password.py:273 +#: lib/pp_admintools/app/set_ldap_password.py:276 msgid "USER" msgstr "NUTZER" -#: lib/pp_admintools/app/remove_ldap_user.py:137 +#: lib/pp_admintools/app/remove_ldap_user.py:136 msgid "" "The user, which should be deactivated or removed. They may be given by their Uid (the " "alphanumeric POSIX name), their mail address or their LDAP DN (be aware, that this may be " @@ -885,183 +926,187 @@ msgstr "" "angegeben werden. Bitte beachten, dass sich letzterer bei den verschiedenen LDAP-Instanzen " "unterscheiden kann." -#: lib/pp_admintools/app/remove_ldap_user.py:161 +#: lib/pp_admintools/app/remove_ldap_user.py:160 msgid "No users to remove given." msgstr "Kein Nutzername zum Löschen angegeben." -#: lib/pp_admintools/app/remove_ldap_user.py:174 +#: lib/pp_admintools/app/remove_ldap_user.py:173 msgid "Checking given instances for admin and read/write access." msgstr "Überprüfe die gegebenen Instanzen nach Admin- und Schreib-/Lesezugriffsrechten." -#: lib/pp_admintools/app/remove_ldap_user.py:189 +#: lib/pp_admintools/app/remove_ldap_user.py:180 +msgid "LDAP instance {!r} not found in configuration." +msgstr "Die LDAP-Instanz {!r} wurde nicht in der Konfiguration gefunden." + +#: lib/pp_admintools/app/remove_ldap_user.py:188 msgid "LDAP instance {!r} has only readonly access." msgstr "Die LDAP-Instanz {!r} besitzt nur Lesezugriffsrechte." -#: lib/pp_admintools/app/remove_ldap_user.py:194 +#: lib/pp_admintools/app/remove_ldap_user.py:193 msgid "No admin access to LDAP instance {!r}." msgstr "Keine Admin-Zugriffsrechte bei LDAP-Instanz {!r}." -#: lib/pp_admintools/app/remove_ldap_user.py:211 +#: lib/pp_admintools/app/remove_ldap_user.py:210 msgid "All given users were not found in any LDAP instance." msgstr "Alle übergebenen Nutzer wurden in keiner der LDAP-Instanzen gefunden." -#: lib/pp_admintools/app/remove_ldap_user.py:216 +#: lib/pp_admintools/app/remove_ldap_user.py:215 msgid "Evaluated DNs to remove:" msgstr "Zum Löschen ermittelte DNs:" -#: lib/pp_admintools/app/remove_ldap_user.py:225 +#: lib/pp_admintools/app/remove_ldap_user.py:224 msgid "Start disabling user entries in:" msgstr "Beginne Deaktivierung der Nutzereinträge in:" -#: lib/pp_admintools/app/remove_ldap_user.py:227 +#: lib/pp_admintools/app/remove_ldap_user.py:226 msgid "Start removing user entries in:" msgstr "Beginne Löschung der Nutzereinträge in:" -#: lib/pp_admintools/app/remove_ldap_user.py:231 +#: lib/pp_admintools/app/remove_ldap_user.py:230 msgid "Start disabling user entries ..." msgstr "Beginne Deaktivierung der Nutzereinträge …" -#: lib/pp_admintools/app/remove_ldap_user.py:233 +#: lib/pp_admintools/app/remove_ldap_user.py:232 msgid "Start removing user entries ..." msgstr "Beginne Löschung der Nutzereinträge …" -#: lib/pp_admintools/app/remove_ldap_user.py:248 +#: lib/pp_admintools/app/remove_ldap_user.py:247 msgid "Do you really want to deactivate the following users?" msgstr "Möchten Sie die folgenden Nutzer wirklich deaktivieren?" -#: lib/pp_admintools/app/remove_ldap_user.py:250 +#: lib/pp_admintools/app/remove_ldap_user.py:249 msgid "Do you really want to remove the following users?" msgstr "Möchten Sie die folgenden Nutzer wirklich löschen?" -#: lib/pp_admintools/app/remove_ldap_user.py:276 +#: lib/pp_admintools/app/remove_ldap_user.py:275 msgid "Deactivate [{yes}/{no}]?" msgstr "Deaktivieren [{yes}/{no}]?" -#: lib/pp_admintools/app/remove_ldap_user.py:278 +#: lib/pp_admintools/app/remove_ldap_user.py:277 msgid "Remove [{yes}/{no}]?" msgstr "Löschen [{yes}/{no}]?" -#: lib/pp_admintools/app/remove_ldap_user.py:280 lib/pp_admintools/app/set_ldap_password.py:579 +#: lib/pp_admintools/app/remove_ldap_user.py:279 lib/pp_admintools/app/set_ldap_password.py:583 msgid "yes" msgstr "ja" -#: lib/pp_admintools/app/remove_ldap_user.py:285 +#: lib/pp_admintools/app/remove_ldap_user.py:284 msgid "Abort deactivating by {cls}: {e}" msgstr "Abbruch der Deaktivierung durch {cls}: {e}" -#: lib/pp_admintools/app/remove_ldap_user.py:287 +#: lib/pp_admintools/app/remove_ldap_user.py:286 msgid "Abort removing by {cls}: {e}" msgstr "Abbruch des Löschens durch {cls}: {e}" -#: lib/pp_admintools/app/remove_ldap_user.py:296 +#: lib/pp_admintools/app/remove_ldap_user.py:295 msgid "Evaluating DNs of the user {!r} to remove ..." msgstr "Ermitteln der DNs des Nutzers {!r} zum Löschen …" -#: lib/pp_admintools/app/remove_ldap_user.py:310 lib/pp_admintools/app/set_ldap_password.py:527 +#: lib/pp_admintools/app/remove_ldap_user.py:309 lib/pp_admintools/app/set_ldap_password.py:531 msgid "Got DN {dn!r} for user {user!r} in LDAP instance {inst}." msgstr "Habe DN {dn!r} für den Nutzer {user!r} in der LDAP-Instanz {inst} ermittelt." -#: lib/pp_admintools/app/remove_ldap_user.py:317 lib/pp_admintools/app/set_ldap_password.py:532 +#: lib/pp_admintools/app/remove_ldap_user.py:316 lib/pp_admintools/app/set_ldap_password.py:536 msgid "Found {nr} entries for user {u!r} in LDAP instance {i}." msgstr "Fand {nr} Einträge für den Nutzer {u!r} in der LDAP-Instanz {i}." -#: lib/pp_admintools/app/remove_ldap_user.py:329 lib/pp_admintools/app/set_ldap_password.py:546 +#: lib/pp_admintools/app/remove_ldap_user.py:328 lib/pp_admintools/app/set_ldap_password.py:550 msgid "Did not found user {user!r} in LDAP instance {inst}." msgstr "Der Nutzer {user!r} wurde nicht in der LDAP-Instanz {inst} gefunden." -#: lib/pp_admintools/app/remove_ldap_user.py:338 +#: lib/pp_admintools/app/remove_ldap_user.py:337 msgid "Deactivating all given users from {} ..." msgstr "Deaktivieren aller übergebenen Nutzer in {} …" -#: lib/pp_admintools/app/remove_ldap_user.py:340 +#: lib/pp_admintools/app/remove_ldap_user.py:339 msgid "Removing all given users from {} ..." msgstr "Lösche alle übergebenen Nutzer in {} …" -#: lib/pp_admintools/app/remove_ldap_user.py:355 +#: lib/pp_admintools/app/remove_ldap_user.py:354 msgid "Deactivating user {dn!r} from {inst} ..." msgstr "Deaktivieren von Nutzer {dn!r} in {inst} …" -#: lib/pp_admintools/app/remove_ldap_user.py:358 +#: lib/pp_admintools/app/remove_ldap_user.py:357 msgid "Removing user {dn!r} from {inst} ..." msgstr "Lösche Nutzer {dn!r} in {inst} …" -#: lib/pp_admintools/app/remove_ldap_user.py:364 +#: lib/pp_admintools/app/remove_ldap_user.py:363 msgid "Attributes of {!r}:" msgstr "Attribute von {!r}:" -#: lib/pp_admintools/app/remove_ldap_user.py:385 +#: lib/pp_admintools/app/remove_ldap_user.py:384 msgid "{c} on removing user {dn!r}: {e}" msgstr "{c} beim Löschen des Nutzers {dn!r}: {e}" -#: lib/pp_admintools/app/remove_ldap_user.py:391 +#: lib/pp_admintools/app/remove_ldap_user.py:390 msgid "User {dn!r} successful deactivated on {inst}." msgstr "Der Nutzer {dn!r} wurde erfolgreich auf {inst} deaktiviert." -#: lib/pp_admintools/app/remove_ldap_user.py:394 +#: lib/pp_admintools/app/remove_ldap_user.py:393 msgid "User {dn!r} successful removed from {inst}." msgstr "Der Nutzer {dn!r} wurde erfolgreich von {inst} gelöscht." -#: lib/pp_admintools/app/remove_ldap_user.py:420 +#: lib/pp_admintools/app/remove_ldap_user.py:419 msgid "Updating user info for {dn!r} on {inst} ..." msgstr "Aktualisiere die Nutzerinformationenn für {dn!r} in {inst} …" -#: lib/pp_admintools/app/remove_ldap_user.py:425 lib/pp_admintools/app/set_ldap_password.py:610 +#: lib/pp_admintools/app/remove_ldap_user.py:424 lib/pp_admintools/app/set_ldap_password.py:610 msgid "{c} on deactivating user {dn!r}: {e}" msgstr "{c} beim Deaktivieren des Nutzers {dn!r}: {e}" -#: lib/pp_admintools/app/remove_ldap_user.py:441 +#: lib/pp_admintools/app/remove_ldap_user.py:440 msgid "Did not found any group memberships of {dn!r} in {inst}." msgstr "Keine Gruppenmitgliedschaften von {dn!r} in {inst} gefunden." -#: lib/pp_admintools/app/remove_ldap_user.py:447 lib/pp_admintools/app/remove_ldap_user.py:474 -#: lib/pp_admintools/app/remove_ldap_user.py:505 lib/pp_admintools/app/remove_ldap_user.py:536 +#: lib/pp_admintools/app/remove_ldap_user.py:446 lib/pp_admintools/app/remove_ldap_user.py:473 +#: lib/pp_admintools/app/remove_ldap_user.py:504 lib/pp_admintools/app/remove_ldap_user.py:535 msgid "Removing user {u!r} from group {g!r} ..." msgstr "Lösche Nutzer {u!r} aus der Gruppe {g!r} …" -#: lib/pp_admintools/app/remove_ldap_user.py:452 lib/pp_admintools/app/remove_ldap_user.py:479 -#: lib/pp_admintools/app/remove_ldap_user.py:510 lib/pp_admintools/app/remove_ldap_user.py:541 +#: lib/pp_admintools/app/remove_ldap_user.py:451 lib/pp_admintools/app/remove_ldap_user.py:478 +#: lib/pp_admintools/app/remove_ldap_user.py:509 lib/pp_admintools/app/remove_ldap_user.py:540 msgid "{c} on removing user {dn!r} from group {g!r}: {e}" msgstr "{c} beim Löschen des Nutzers {dn!r} von der Gruppe {g!r}: {e}" -#: lib/pp_admintools/app/remove_ldap_user.py:468 +#: lib/pp_admintools/app/remove_ldap_user.py:467 msgid "Did not found any unique group memberships of {dn!r} in {inst}." msgstr "Keine eindeutigen Gruppenmitgliedschaften von {dn!r} in {inst} gefunden." -#: lib/pp_admintools/app/remove_ldap_user.py:492 +#: lib/pp_admintools/app/remove_ldap_user.py:491 msgid "Deleting user {uid!r} from all POSIX groups in {inst}." msgstr "Lösche Nutzer {uid!r} aus allen POSIX-Gruppen in {inst} …" -#: lib/pp_admintools/app/remove_ldap_user.py:499 +#: lib/pp_admintools/app/remove_ldap_user.py:498 msgid "Did not found any POSIX group memberships of {uid!r} in {inst}." msgstr "Keine POSIX-Gruppenmitgliedschaften von {uid!r} in {inst} gefunden." -#: lib/pp_admintools/app/remove_ldap_user.py:523 +#: lib/pp_admintools/app/remove_ldap_user.py:522 msgid "Deleting user {uid!r} from all sudo groups in {inst}." msgstr "Lösche Nutzer {uid!r} aus allen sudo-Gruppen in {inst}." -#: lib/pp_admintools/app/remove_ldap_user.py:530 +#: lib/pp_admintools/app/remove_ldap_user.py:529 msgid "Did not found any sudo group memberships of {uid!r} in {inst}." msgstr "Keine sudo-Gruppenmitgliedschaften von {uid!r} in {inst} gefunden." -#: lib/pp_admintools/app/set_ldap_password.py:100 +#: lib/pp_admintools/app/set_ldap_password.py:104 msgid "The ancient and notorious 3 DES crypt method." msgstr "Die antike und berüchtigte 3 DES Verschlüsselungsmethode." -#: lib/pp_admintools/app/set_ldap_password.py:101 lib/pp_admintools/app/set_ldap_password.py:104 +#: lib/pp_admintools/app/set_ldap_password.py:105 lib/pp_admintools/app/set_ldap_password.py:108 msgid "Pure {} hashing method." msgstr "Reine {}-hashing Methode." -#: lib/pp_admintools/app/set_ldap_password.py:102 lib/pp_admintools/app/set_ldap_password.py:105 -#: lib/pp_admintools/app/set_ldap_password.py:107 lib/pp_admintools/app/set_ldap_password.py:109 +#: lib/pp_admintools/app/set_ldap_password.py:106 lib/pp_admintools/app/set_ldap_password.py:109 +#: lib/pp_admintools/app/set_ldap_password.py:111 lib/pp_admintools/app/set_ldap_password.py:113 msgid "A {} based hashing algorithm." msgstr "Ein {}-basierter Hashing-Algorithmus" -#: lib/pp_admintools/app/set_ldap_password.py:103 lib/pp_admintools/app/set_ldap_password.py:106 -#: lib/pp_admintools/app/set_ldap_password.py:108 lib/pp_admintools/app/set_ldap_password.py:110 +#: lib/pp_admintools/app/set_ldap_password.py:107 lib/pp_admintools/app/set_ldap_password.py:110 +#: lib/pp_admintools/app/set_ldap_password.py:112 lib/pp_admintools/app/set_ldap_password.py:114 msgid "Salted {} hashing method." msgstr "Gesalzene {}-hashing Methode." -#: lib/pp_admintools/app/set_ldap_password.py:111 +#: lib/pp_admintools/app/set_ldap_password.py:115 msgid "A hashing method derived from {} with additional computing rounds." msgstr "Eine von {} abgeleitete Hashing-Methode mit zusätzlichen Berechnungsrunden." @@ -1097,11 +1142,7 @@ msgstr "Verwende {} als das neue Nutzerpasswort. Wenn nicht angegeben, wird dana msgid "Do not check the quality of the new password with the {} library." msgstr "Keine Überprüfung der Qualität des neuen Passwortes mit der {}-Bibliothek." -#: lib/pp_admintools/app/set_ldap_password.py:246 -msgid "SCHEMA" -msgstr "SCHEMA" - -#: lib/pp_admintools/app/set_ldap_password.py:247 +#: lib/pp_admintools/app/set_ldap_password.py:245 msgid "" "The schema (hashing method) to use to hash the new password. It is possible to give here the " "value {val_list!r}, then all possible schemes are shown and exit. Default: {default!r}." @@ -1110,13 +1151,17 @@ msgstr "" "möglich, hier den Wert {val_list!r} anzugeben, dann werden alle verfügbaren Schemen aufgelistet." " Vorgabe: {default!r}." -#: lib/pp_admintools/app/set_ldap_password.py:251 +#: lib/pp_admintools/app/set_ldap_password.py:250 msgid "If you are not using an admin account, then the password will hashed only by the default schema." msgstr "" "Wenn kein Admin-Account verwendet wird, dann wird das Passwort ausschließlich mit dem Vorgabe-" "Schema gehasht." #: lib/pp_admintools/app/set_ldap_password.py:255 +msgid "SCHEMA" +msgstr "SCHEMA" + +#: lib/pp_admintools/app/set_ldap_password.py:259 msgid "" "The user, which password in the given LDAP instance should be changed. It may be given by its " "Uid (the alphanumeric POSIX name), its mail address or its LDAP DN." @@ -1125,11 +1170,11 @@ msgstr "" "seine Uid (der alphanumerische POSIX-Nutzername), als seine Mailadresse oder als seine LDAP-DN " "angegeben werden." -#: lib/pp_admintools/app/set_ldap_password.py:260 +#: lib/pp_admintools/app/set_ldap_password.py:264 msgid "If not given, then your current user name {!r} will be used." msgstr "Wenn nicht angegeben, dann wird der aktuelle Nutzername {!r} verwendet." -#: lib/pp_admintools/app/set_ldap_password.py:263 +#: lib/pp_admintools/app/set_ldap_password.py:267 msgid "" "If you are using a readonly LDAP instance or an instance w/o admin access, then you must provide" " somehow the current password of the user to change." @@ -1137,87 +1182,87 @@ msgstr "" "Wenn eine LDAP-Instanz verwendet wird, die nur Leserechte oder keinen Admin-Zugriff hat, dann " "muss irgendwie das neue Passwort des Nutzer zum Ändern angegeben werden." -#: lib/pp_admintools/app/set_ldap_password.py:316 +#: lib/pp_admintools/app/set_ldap_password.py:320 msgid "Could not detect your current login name." msgstr "Konnte den aktuellen Anmeldenamen nicht ermitteln." -#: lib/pp_admintools/app/set_ldap_password.py:321 +#: lib/pp_admintools/app/set_ldap_password.py:325 msgid "The user {!r} will never be managed by LDAP." msgstr "Der Nutzer {!r} wird niemals nimmer nicht von LDAP gemanagt." -#: lib/pp_admintools/app/set_ldap_password.py:357 +#: lib/pp_admintools/app/set_ldap_password.py:361 msgid "Usable Hashing schemes:" msgstr "Verfügbare Hashing-Schemen:" -#: lib/pp_admintools/app/set_ldap_password.py:366 +#: lib/pp_admintools/app/set_ldap_password.py:370 msgid "This schema cannot be used for authentication on a current freeradius server." msgstr "" "Dieses Schema kann nicht zur Authentifizierung an einem aktuellen Freeradius-Server verwendet " "werden." -#: lib/pp_admintools/app/set_ldap_password.py:370 +#: lib/pp_admintools/app/set_ldap_password.py:374 msgid "This is the default schema." msgstr "Das ist das Vorgabe-Schema." -#: lib/pp_admintools/app/set_ldap_password.py:385 +#: lib/pp_admintools/app/set_ldap_password.py:389 msgid "Using LDAP instance {inst!r} - {url}." msgstr "Verwende LDAP-Instanz {inst!r} - {url}." -#: lib/pp_admintools/app/set_ldap_password.py:389 +#: lib/pp_admintools/app/set_ldap_password.py:393 msgid "Current password of user {!r}:" msgstr "Aktuelles Passwort des Nutzers {!r}:" -#: lib/pp_admintools/app/set_ldap_password.py:390 lib/pp_admintools/app/set_ldap_password.py:410 +#: lib/pp_admintools/app/set_ldap_password.py:394 lib/pp_admintools/app/set_ldap_password.py:414 msgid "Repeat password:" msgstr "Passwort-Wiederholung:" -#: lib/pp_admintools/app/set_ldap_password.py:403 +#: lib/pp_admintools/app/set_ldap_password.py:407 msgid "Non admin users must use the default schema {!r} for hashing their password." msgstr "Nicht-Admin-Nutzer müssen das Vorgabeschema {!r} für das Hashen des Passwortes verwenden." -#: lib/pp_admintools/app/set_ldap_password.py:409 +#: lib/pp_admintools/app/set_ldap_password.py:413 msgid "New password of user {!r}:" msgstr "Neues Passwort für Nutzer {!r}:" -#: lib/pp_admintools/app/set_ldap_password.py:416 +#: lib/pp_admintools/app/set_ldap_password.py:420 msgid "Checking the quality of the new password was disabled." msgstr "Die Überprüfung der Qualität des neuen Passwortes wurde deaktiviert." -#: lib/pp_admintools/app/set_ldap_password.py:419 +#: lib/pp_admintools/app/set_ldap_password.py:423 msgid "Testing quality of new password ..." msgstr "Teste Qualität des neuen Passwortes …" -#: lib/pp_admintools/app/set_ldap_password.py:423 +#: lib/pp_admintools/app/set_ldap_password.py:427 msgid "Quality of the new password is not sufficient:" msgstr "Die Qualität des neuen Passwortes ist nicht ausreichend:" -#: lib/pp_admintools/app/set_ldap_password.py:428 +#: lib/pp_admintools/app/set_ldap_password.py:432 msgid "Cannot testing the quality of the new password, because the Python module {!r} is not installed." msgstr "" "Kann die Qualität des neuen Passwortes nicht überprüfen, da das Pythod-Modul {!r} nicht " "installiert ist." -#: lib/pp_admintools/app/set_ldap_password.py:455 +#: lib/pp_admintools/app/set_ldap_password.py:459 msgid "Unbinding user connection from LDAP server {} ..." msgstr "Trenne Verbindung des Nutzers zu LDAP-Server {} …" -#: lib/pp_admintools/app/set_ldap_password.py:466 +#: lib/pp_admintools/app/set_ldap_password.py:470 msgid "Testing connect to LDAP-Server {url} with current user {dn!r} and password ..." msgstr "Teste eine Anmeldung am LDAP-Server {url} als aktueller Nutzer {dn!r} mit Passwort …" -#: lib/pp_admintools/app/set_ldap_password.py:478 +#: lib/pp_admintools/app/set_ldap_password.py:482 msgid "Successful connected as {dn!r} to {url}." msgstr "Erfolgreich als {dn!r} an {url} angemeldet." -#: lib/pp_admintools/app/set_ldap_password.py:484 +#: lib/pp_admintools/app/set_ldap_password.py:488 msgid "Could not connect to {url} as {dn!r}: {e}" msgstr "Nutzer {dn!r} konnte nicht an {url} angemeldet werden: {e}" -#: lib/pp_admintools/app/set_ldap_password.py:495 +#: lib/pp_admintools/app/set_ldap_password.py:499 msgid "Trying to get current password hash of user {!r} ..." msgstr "Versuche den aktuellen Passwort-Hash des Nutzers {!r} zu holen …" -#: lib/pp_admintools/app/set_ldap_password.py:534 +#: lib/pp_admintools/app/set_ldap_password.py:538 msgid "" "Please use another username, or use the correct DN from the following list as a parameter for " "this script instead of the username:" @@ -1225,35 +1270,35 @@ msgstr "" "Bitte einen anderen Nutzernamen oder den richtigen DN aus der folgenden Liste als Parameter für " "dieses Skript als Nutzername angeben:" -#: lib/pp_admintools/app/set_ldap_password.py:551 +#: lib/pp_admintools/app/set_ldap_password.py:555 msgid "Changing the password of user {dn!r} in LDAP instance {inst}." msgstr "Ändern des Passwortes des Nutzers {dn!r} in der LDAP-Instanz {inst}." -#: lib/pp_admintools/app/set_ldap_password.py:558 +#: lib/pp_admintools/app/set_ldap_password.py:562 msgid "Setting password of {dn!r} with hashing schema {schema!r}." msgstr "Setze das Passwort von {dn!r} mit dem Hashing-Schema {schema!r}." -#: lib/pp_admintools/app/set_ldap_password.py:560 +#: lib/pp_admintools/app/set_ldap_password.py:564 msgid "Setting password of '{dn}' with hashing schema '{schema}' ..." msgstr "Setze das Passwort von '{dn}' mit dem Hashing-Schema '{schema}'." -#: lib/pp_admintools/app/set_ldap_password.py:565 +#: lib/pp_admintools/app/set_ldap_password.py:569 msgid "Current password hash: '{}'." msgstr "Aktueller Passwort-Hash: '{}'" -#: lib/pp_admintools/app/set_ldap_password.py:568 +#: lib/pp_admintools/app/set_ldap_password.py:572 msgid "The user '{}' has currently no password." msgstr "Der Nutzer '{}' hat aktuell kein Passwort." -#: lib/pp_admintools/app/set_ldap_password.py:572 +#: lib/pp_admintools/app/set_ldap_password.py:576 msgid "Used schema: {!r}." msgstr "Verwendetes Schama : {!r}." -#: lib/pp_admintools/app/set_ldap_password.py:574 +#: lib/pp_admintools/app/set_ldap_password.py:578 msgid "New password hash: '{}'." msgstr "Neuer Passwort-Hash: '{}'." -#: lib/pp_admintools/app/set_ldap_password.py:578 +#: lib/pp_admintools/app/set_ldap_password.py:582 msgid "Apply new password? [{yes}/{no}]?" msgstr "Neues Passwort setzen [{yes}/{no}]?" @@ -1273,6 +1318,26 @@ msgstr "Der Wert {v!r} für ein {what}-Port ist ungültig." msgid "Value {v!r} for a {what} port must be greater than 0 and less than {max}." msgstr "Der Wert {v!r} für ein {what}-Port muss größer als 0 und kleiner als {max} sein." +#: lib/pp_admintools/argparse_actions.py:65 lib/pp_admintools/argparse_actions.py:95 +msgid "Got a {c} for converting {v!r} into an integer value: {e}" +msgstr "Habe ein {c} bei der Konvertierung von {v!r} in einen Integer-Wert erhalten: {e}" + +#: lib/pp_admintools/argparse_actions.py:70 +msgid "The option must not be negative (given: {})." +msgstr "Die Option darf nich negativ sein (gegeben: {})." + +#: lib/pp_admintools/argparse_actions.py:101 lib/pp_admintools/argparse_actions.py:138 +msgid "The option must be greater or equal to {m} (given: {v})." +msgstr "Die Option muss größer oder gleich {m} sein (gegeben: {v})." + +#: lib/pp_admintools/argparse_actions.py:107 lib/pp_admintools/argparse_actions.py:143 +msgid "The option must be less or equal to {m} (given: {v})." +msgstr "Die Option muss kleiner oder gleich {m} sein (gegeben: {v})." + +#: lib/pp_admintools/argparse_actions.py:133 +msgid "Got a {c} for converting {v!r} into a float value: {e}" +msgstr "Habe ein {c} bei der Konvertierung von {v!r} in einen Float-Wert erhalten: {e}" + #: lib/pp_admintools/config/dns_deploy_zones.py:202 lib/pp_admintools/config/dns_deploy_zones.py:515 #: lib/pp_admintools/config/mail.py:149 lib/pp_admintools/config/pdns.py:187 msgid "Evaluating config section {!r}:" @@ -1343,42 +1408,42 @@ msgstr "Keine gültigen Master in der Konfiguration gefunden." msgid "Evaluated configuration:" msgstr "Evaluierte Konfiguration:" -#: lib/pp_admintools/config/ldap.py:162 +#: lib/pp_admintools/config/ldap.py:174 msgid "Invalid port {!r} for LDAP server given." msgstr "Ungültiger Port {!r} für den LDAP-Server angegeben." -#: lib/pp_admintools/config/ldap.py:175 +#: lib/pp_admintools/config/ldap.py:187 msgid "An empty Base DN for LDAP searches is not allowed." msgstr "Eine leere Basis-DN für LDAP-Suchen ist nicht erlaubt." -#: lib/pp_admintools/config/ldap.py:265 +#: lib/pp_admintools/config/ldap.py:277 msgid "Invalid production tier {!r} given." msgstr "Ungültige Produktionsstufe {!r} angegeben." -#: lib/pp_admintools/config/ldap.py:408 +#: lib/pp_admintools/config/ldap.py:332 +msgid "Invalid value {val!r} in section {sec!r} for a LDAP {what}." +msgstr "Ungültiger Wert {val!r} in Abschnitt {sec!r} für ein LDAP-{what}." + +#: lib/pp_admintools/config/ldap.py:401 +msgid "Unknown LDAP configuration key {key} found in section {sec!r}." +msgstr "Unbekannten Konfigurationsschlüssel {key} in Abschnitt {sec!r} gefunden." + +#: lib/pp_admintools/config/ldap.py:505 msgid "Evaluating LDAP config ..." msgstr "Ermittle LDAP-Konfiguration …" -#: lib/pp_admintools/config/ldap.py:412 +#: lib/pp_admintools/config/ldap.py:509 msgid "Evaluating LDAP section {!r} ..." msgstr "Evaluiere LDAP-Abschnitt {!r} …" -#: lib/pp_admintools/config/ldap.py:429 +#: lib/pp_admintools/config/ldap.py:526 msgid "Value {!r} for a timeout is invalid." msgstr "Der Wert {!r} für einen Timeout ist ungültig." -#: lib/pp_admintools/config/ldap.py:449 +#: lib/pp_admintools/config/ldap.py:546 msgid "Reading configuration of LDAP instance {!r} ..." msgstr "Lese Konfiguration der LDAP-Instanz {!r} …" -#: lib/pp_admintools/config/ldap.py:457 -msgid "Invalid value {val!r} in section {sec!r} for a LDAP {what}." -msgstr "Ungültiger Wert {val!r} in Abschnitt {sec!r} für ein LDAP-{what}." - -#: lib/pp_admintools/config/ldap.py:519 -msgid "Unknown LDAP configuration key {key} found in section {sec!r}." -msgstr "Unbekannten Konfigurationsschlüssel {key} in Abschnitt {sec!r} gefunden." - #: lib/pp_admintools/config/mail.py:170 lib/pp_admintools/config/mail.py:194 #: lib/pp_admintools/config/mail.py:262 msgid "Found invalid {what} {addr!r} in configuration." diff --git a/locale/en_US/LC_MESSAGES/pp_admintools.po b/locale/en_US/LC_MESSAGES/pp_admintools.po index 4507acf..2dc421c 100644 --- a/locale/en_US/LC_MESSAGES/pp_admintools.po +++ b/locale/en_US/LC_MESSAGES/pp_admintools.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: pp_admintools 0.9.1\n" "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n" -"POT-Creation-Date: 2022-10-17 17:45+0200\n" +"POT-Creation-Date: 2022-10-18 18:12+0200\n" "PO-Revision-Date: 2022-09-30 16:50+0200\n" "Last-Translator: Frank Brehm \n" "Language: en_US\n" @@ -26,618 +26,619 @@ msgstr "" msgid "Options for {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:267 +#: lib/pp_admintools/app/dns_deploy_zones.py:266 msgid "Keep a backup file for each changed configuration file." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:272 +#: lib/pp_admintools/app/dns_deploy_zones.py:271 msgid "Keeping the temporary directory instead of removing it at the end (e.g. for debugging purposes)" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:300 +#: lib/pp_admintools/app/dns_deploy_zones.py:299 msgid "Post init phase." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:304 +#: lib/pp_admintools/app/dns_deploy_zones.py:303 msgid "My own post init phase." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:320 +#: lib/pp_admintools/app/dns_deploy_zones.py:319 msgid "Unknown time zone: {!r}." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:340 +#: lib/pp_admintools/app/dns_deploy_zones.py:339 msgid "You must be root to execute this script." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:342 +#: lib/pp_admintools/app/dns_deploy_zones.py:341 msgid "But in simulation mode we are continuing nevertheless." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:352 +#: lib/pp_admintools/app/dns_deploy_zones.py:351 msgid "Using the global DNS master is not supported, please use 'local' or 'public'" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:360 +#: lib/pp_admintools/app/dns_deploy_zones.py:359 msgid "Starting: {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:367 +#: lib/pp_admintools/app/dns_deploy_zones.py:366 msgid "Could not occupy pidfile: {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:392 +#: lib/pp_admintools/app/dns_deploy_zones.py:391 msgid "Ending: {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:397 +#: lib/pp_admintools/app/dns_deploy_zones.py:396 msgid "Cleaning up ..." msgstr "Cleaning up …" -#: lib/pp_admintools/app/dns_deploy_zones.py:401 +#: lib/pp_admintools/app/dns_deploy_zones.py:400 msgid "Searching for {!r}." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:404 +#: lib/pp_admintools/app/dns_deploy_zones.py:403 msgid "Keep existing backup file {!r}." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:406 +#: lib/pp_admintools/app/dns_deploy_zones.py:405 msgid "Removing {!r} ..." msgstr "Removing {!r} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:412 +#: lib/pp_admintools/app/dns_deploy_zones.py:411 msgid "Error removing {p!r} - {c}: {e}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:417 +#: lib/pp_admintools/app/dns_deploy_zones.py:416 msgid "Temporary directory {!r} will not be removed. It's on yours to remove it manually." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:422 +#: lib/pp_admintools/app/dns_deploy_zones.py:421 msgid "Destroying temporary directory {!r} ..." msgstr "Destroying temporary directory {!r} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:431 +#: lib/pp_admintools/app/dns_deploy_zones.py:430 msgid "Temporary directory: {!r}." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:436 +#: lib/pp_admintools/app/dns_deploy_zones.py:435 msgid "Temporary zones conf: {!r}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:441 +#: lib/pp_admintools/app/dns_deploy_zones.py:440 msgid "Trying to get all keys from named.conf ..." msgstr "Trying to get all keys from named.conf …" -#: lib/pp_admintools/app/dns_deploy_zones.py:447 lib/pp_admintools/app/dns_deploy_zones.py:801 -#: lib/pp_admintools/app/dns_deploy_zones.py:837 lib/pp_admintools/app/dns_deploy_zones.py:869 -#: lib/pp_admintools/app/dns_deploy_zones.py:904 lib/pp_admintools/app/dns_deploy_zones.py:939 +#: lib/pp_admintools/app/dns_deploy_zones.py:446 lib/pp_admintools/app/dns_deploy_zones.py:800 +#: lib/pp_admintools/app/dns_deploy_zones.py:836 lib/pp_admintools/app/dns_deploy_zones.py:868 +#: lib/pp_admintools/app/dns_deploy_zones.py:903 lib/pp_admintools/app/dns_deploy_zones.py:938 #: lib/pp_admintools/app/mail.py:326 msgid "Executing: {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:453 lib/pp_admintools/app/dns_deploy_zones.py:807 -#: lib/pp_admintools/app/ldap.py:766 lib/pp_admintools/app/ldap.py:819 -#: lib/pp_admintools/app/ldap.py:872 lib/pp_admintools/app/ldap.py:1103 -#: lib/pp_admintools/app/ldap.py:1137 lib/pp_admintools/app/ldap.py:1171 -#: lib/pp_admintools/app/ldap.py:1205 +#: lib/pp_admintools/app/dns_deploy_zones.py:452 lib/pp_admintools/app/dns_deploy_zones.py:806 +#: lib/pp_admintools/app/ldap.py:787 lib/pp_admintools/app/ldap.py:840 +#: lib/pp_admintools/app/ldap.py:893 lib/pp_admintools/app/ldap.py:1124 +#: lib/pp_admintools/app/ldap.py:1158 lib/pp_admintools/app/ldap.py:1192 +#: lib/pp_admintools/app/ldap.py:1226 msgid "Result:" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:494 lib/pp_admintools/app/dns_deploy_zones.py:496 +#: lib/pp_admintools/app/dns_deploy_zones.py:493 lib/pp_admintools/app/dns_deploy_zones.py:495 msgid "Found named keys:" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:496 lib/pp_admintools/app/dns_deploy_zones.py:527 +#: lib/pp_admintools/app/dns_deploy_zones.py:495 lib/pp_admintools/app/dns_deploy_zones.py:526 msgid "None" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:501 +#: lib/pp_admintools/app/dns_deploy_zones.py:500 msgid "Generating {} ..." msgstr "Generating {} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:525 lib/pp_admintools/app/dns_deploy_zones.py:527 +#: lib/pp_admintools/app/dns_deploy_zones.py:524 lib/pp_admintools/app/dns_deploy_zones.py:526 msgid "Collected server configuration:" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:548 +#: lib/pp_admintools/app/dns_deploy_zones.py:547 msgid "Generated file {!r}:" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:564 +#: lib/pp_admintools/app/dns_deploy_zones.py:563 msgid "Pure local zone {!r} will not be considered." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:596 +#: lib/pp_admintools/app/dns_deploy_zones.py:595 msgid "Key {k!r} for zone {z!r} not found in named configuration." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:626 +#: lib/pp_admintools/app/dns_deploy_zones.py:625 msgid "Got IPv4 tuples: {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:650 +#: lib/pp_admintools/app/dns_deploy_zones.py:649 msgid "Got IPv6 tokens: {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:657 +#: lib/pp_admintools/app/dns_deploy_zones.py:656 msgid "Comparing generated files with existing ones." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:664 +#: lib/pp_admintools/app/dns_deploy_zones.py:663 msgid "Files to replace:" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:670 +#: lib/pp_admintools/app/dns_deploy_zones.py:669 msgid "Source file not defined." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:672 +#: lib/pp_admintools/app/dns_deploy_zones.py:671 msgid "Target file not defined." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:674 +#: lib/pp_admintools/app/dns_deploy_zones.py:673 msgid "Comparing {one!r} with {two!r} ..." msgstr "Comparing {one!r} with {two!r} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:678 lib/pp_admintools/app/dns_deploy_zones.py:687 +#: lib/pp_admintools/app/dns_deploy_zones.py:677 lib/pp_admintools/app/dns_deploy_zones.py:686 msgid "{what} {f!r} does not exists." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:679 lib/pp_admintools/app/dns_deploy_zones.py:683 +#: lib/pp_admintools/app/dns_deploy_zones.py:678 lib/pp_admintools/app/dns_deploy_zones.py:682 msgid "Source file" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:682 lib/pp_admintools/app/dns_deploy_zones.py:692 +#: lib/pp_admintools/app/dns_deploy_zones.py:681 lib/pp_admintools/app/dns_deploy_zones.py:691 msgid "{what} {f!r} is not a regular file." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:688 lib/pp_admintools/app/dns_deploy_zones.py:693 +#: lib/pp_admintools/app/dns_deploy_zones.py:687 lib/pp_admintools/app/dns_deploy_zones.py:692 msgid "Target file" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:699 lib/pp_admintools/app/dns_deploy_zones.py:716 +#: lib/pp_admintools/app/dns_deploy_zones.py:698 lib/pp_admintools/app/dns_deploy_zones.py:715 msgid "Reading {!r} ..." msgstr "Reading {!r} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:709 lib/pp_admintools/app/dns_deploy_zones.py:726 +#: lib/pp_admintools/app/dns_deploy_zones.py:708 lib/pp_admintools/app/dns_deploy_zones.py:725 msgid "Cleaned version of {!r}:" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:731 +#: lib/pp_admintools/app/dns_deploy_zones.py:730 msgid "" "Source file {sf!r} has different number essential lines ({sl}) than the target file {tf!r} ({tl}" " lines)." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:740 +#: lib/pp_admintools/app/dns_deploy_zones.py:739 msgid "Source file {sf!r} has a different content than the target file {tf!r}." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:752 +#: lib/pp_admintools/app/dns_deploy_zones.py:751 msgid "No replacement of any config files necessary." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:755 +#: lib/pp_admintools/app/dns_deploy_zones.py:754 msgid "Start replacing of config files ..." msgstr "Start replacing of config files …" -#: lib/pp_admintools/app/dns_deploy_zones.py:763 lib/pp_admintools/app/dns_deploy_zones.py:773 +#: lib/pp_admintools/app/dns_deploy_zones.py:762 lib/pp_admintools/app/dns_deploy_zones.py:772 msgid "Copying {frm!r} => {to!r} ..." msgstr "Copying {frm!r} => {to!r} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:769 +#: lib/pp_admintools/app/dns_deploy_zones.py:768 msgid "All backuped config files:" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:781 +#: lib/pp_admintools/app/dns_deploy_zones.py:780 msgid "Restoring of original config files because of an exception." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:785 +#: lib/pp_admintools/app/dns_deploy_zones.py:784 msgid "Moving {frm!r} => {to!r} ..." msgstr "Moving {frm!r} => {to!r} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:791 +#: lib/pp_admintools/app/dns_deploy_zones.py:790 msgid "Could not find backup file {!r}." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:796 +#: lib/pp_admintools/app/dns_deploy_zones.py:795 msgid "Checking syntax correctness of named.conf ..." msgstr "Checking syntax correctness of named.conf …" -#: lib/pp_admintools/app/dns_deploy_zones.py:817 +#: lib/pp_admintools/app/dns_deploy_zones.py:816 msgid "Reload or restart of named is not necessary." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:822 +#: lib/pp_admintools/app/dns_deploy_zones.py:821 msgid "Named is not running, please start it manually." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:833 +#: lib/pp_admintools/app/dns_deploy_zones.py:832 msgid "Checking, whether named is running ..." msgstr "Checking, whether named is running …" -#: lib/pp_admintools/app/dns_deploy_zones.py:851 lib/pp_admintools/app/dns_deploy_zones.py:886 -#: lib/pp_admintools/app/dns_deploy_zones.py:921 lib/pp_admintools/app/dns_deploy_zones.py:956 +#: lib/pp_admintools/app/dns_deploy_zones.py:850 lib/pp_admintools/app/dns_deploy_zones.py:885 +#: lib/pp_admintools/app/dns_deploy_zones.py:920 lib/pp_admintools/app/dns_deploy_zones.py:955 msgid "Return value: {!r}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:853 lib/pp_admintools/app/dns_deploy_zones.py:855 -#: lib/pp_admintools/app/dns_deploy_zones.py:888 lib/pp_admintools/app/dns_deploy_zones.py:890 -#: lib/pp_admintools/app/dns_deploy_zones.py:923 lib/pp_admintools/app/dns_deploy_zones.py:925 -#: lib/pp_admintools/app/dns_deploy_zones.py:958 lib/pp_admintools/app/dns_deploy_zones.py:960 +#: lib/pp_admintools/app/dns_deploy_zones.py:852 lib/pp_admintools/app/dns_deploy_zones.py:854 +#: lib/pp_admintools/app/dns_deploy_zones.py:887 lib/pp_admintools/app/dns_deploy_zones.py:889 +#: lib/pp_admintools/app/dns_deploy_zones.py:922 lib/pp_admintools/app/dns_deploy_zones.py:924 +#: lib/pp_admintools/app/dns_deploy_zones.py:957 lib/pp_admintools/app/dns_deploy_zones.py:959 msgid "Output on {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:865 +#: lib/pp_admintools/app/dns_deploy_zones.py:864 msgid "Starting {} ..." msgstr "Starting {} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:900 +#: lib/pp_admintools/app/dns_deploy_zones.py:899 msgid "Restarting {} ..." msgstr "Restarting {} …" -#: lib/pp_admintools/app/dns_deploy_zones.py:935 +#: lib/pp_admintools/app/dns_deploy_zones.py:934 msgid "Reloading {} ..." msgstr "Reloading {} …" -#: lib/pp_admintools/app/ldap.py:108 lib/pp_admintools/app/ldap.py:211 +#: lib/pp_admintools/app/ldap.py:109 lib/pp_admintools/app/ldap.py:213 msgid "The path {!r} must be an absolute path." msgstr "" -#: lib/pp_admintools/app/ldap.py:114 lib/pp_admintools/app/ldap.py:215 -#: lib/pp_admintools/app/ldap.py:1219 +#: lib/pp_admintools/app/ldap.py:115 lib/pp_admintools/app/ldap.py:217 +#: lib/pp_admintools/app/ldap.py:1240 msgid "The file {!r} does not exists." msgstr "" -#: lib/pp_admintools/app/ldap.py:118 lib/pp_admintools/app/ldap.py:219 -#: lib/pp_admintools/app/ldap.py:1224 +#: lib/pp_admintools/app/ldap.py:119 lib/pp_admintools/app/ldap.py:221 +#: lib/pp_admintools/app/ldap.py:1245 msgid "The given path {!r} exists, but is not a regular file." msgstr "" -#: lib/pp_admintools/app/ldap.py:122 lib/pp_admintools/app/ldap.py:223 -#: lib/pp_admintools/app/ldap.py:1229 +#: lib/pp_admintools/app/ldap.py:123 lib/pp_admintools/app/ldap.py:225 +#: lib/pp_admintools/app/ldap.py:1250 msgid "The given file {!r} is not readable." msgstr "" -#: lib/pp_admintools/app/ldap.py:143 +#: lib/pp_admintools/app/ldap.py:144 msgid "a port number must be greater than zero and less or equal to {}." msgstr "" -#: lib/pp_admintools/app/ldap.py:148 +#: lib/pp_admintools/app/ldap.py:149 msgid "Wrong port number {!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:256 +#: lib/pp_admintools/app/ldap.py:258 msgid "LDAP options" msgstr "" -#: lib/pp_admintools/app/ldap.py:258 +#: lib/pp_admintools/app/ldap.py:260 msgid "Options for the default LDAP connection" msgstr "" -#: lib/pp_admintools/app/ldap.py:260 +#: lib/pp_admintools/app/ldap.py:262 msgid "Options fo LDAP connections" msgstr "" -#: lib/pp_admintools/app/ldap.py:267 lib/pp_admintools/app/remove_ldap_user.py:280 -#: lib/pp_admintools/app/set_ldap_password.py:579 +#: lib/pp_admintools/app/ldap.py:269 lib/pp_admintools/app/remove_ldap_user.py:279 +#: lib/pp_admintools/app/set_ldap_password.py:583 msgid "No" msgstr "" -#: lib/pp_admintools/app/ldap.py:269 +#: lib/pp_admintools/app/ldap.py:271 msgid "Yes" msgstr "" -#: lib/pp_admintools/app/ldap.py:275 +#: lib/pp_admintools/app/ldap.py:277 msgid "HOST" msgstr "" -#: lib/pp_admintools/app/ldap.py:276 +#: lib/pp_admintools/app/ldap.py:278 msgid "Hostname or address of the LDAP server to use. Default: {!r}" msgstr "" -#: lib/pp_admintools/app/ldap.py:283 +#: lib/pp_admintools/app/ldap.py:285 msgid "Use ldaps to connect to the LDAP server. Default: {}" msgstr "" -#: lib/pp_admintools/app/ldap.py:288 lib/pp_admintools/app/mail.py:261 -#: lib/pp_admintools/app/pdns.py:274 +#: lib/pp_admintools/app/ldap.py:290 lib/pp_admintools/app/mail.py:261 +#: lib/pp_admintools/app/pdns.py:272 msgid "PORT" msgstr "" -#: lib/pp_admintools/app/ldap.py:290 +#: lib/pp_admintools/app/ldap.py:292 msgid "The port number to connect to the LDAP server. Default: {}" msgstr "" -#: lib/pp_admintools/app/ldap.py:296 +#: lib/pp_admintools/app/ldap.py:298 msgid "The base DN used as the root for the LDAP searches. Default: {!r}" msgstr "" -#: lib/pp_admintools/app/ldap.py:303 +#: lib/pp_admintools/app/ldap.py:305 msgid "The Bind DN to use to connect to the LDAP server. Default: {!r}" msgstr "" -#: lib/pp_admintools/app/ldap.py:311 lib/pp_admintools/app/set_ldap_password.py:204 +#: lib/pp_admintools/app/ldap.py:313 lib/pp_admintools/app/set_ldap_password.py:204 #: lib/pp_admintools/app/set_ldap_password.py:205 lib/pp_admintools/app/set_ldap_password.py:222 #: lib/pp_admintools/app/set_ldap_password.py:225 msgid "PASSWORD" msgstr "" -#: lib/pp_admintools/app/ldap.py:312 +#: lib/pp_admintools/app/ldap.py:314 msgid "Use PASSWORD as the password for simple LDAP authentication." msgstr "" -#: lib/pp_admintools/app/ldap.py:317 +#: lib/pp_admintools/app/ldap.py:319 msgid "" "Prompt for simple LDAP authentication. This is used instead of specifying the password on the " "command line." msgstr "" -#: lib/pp_admintools/app/ldap.py:323 lib/pp_admintools/app/set_ldap_password.py:216 +#: lib/pp_admintools/app/ldap.py:325 lib/pp_admintools/app/set_ldap_password.py:216 #: lib/pp_admintools/app/set_ldap_password.py:218 msgid "PASSWORD_FILE" msgstr "" -#: lib/pp_admintools/app/ldap.py:325 +#: lib/pp_admintools/app/ldap.py:327 msgid "Use contents of PASSWORD_FILE as the password for simple authentication." msgstr "" -#: lib/pp_admintools/app/ldap.py:333 lib/pp_admintools/app/pdns.py:248 +#: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/pdns.py:246 msgid "INSTANCE" msgstr "" -#: lib/pp_admintools/app/ldap.py:336 -msgid "" -"The LDAP instance (LDAP cluster) from configuration, where to execute this script. If not given," -" then the instance {!r} will be used." +#: lib/pp_admintools/app/ldap.py:338 +msgid "If not given, then the instance {!r} will be used." msgstr "" -#: lib/pp_admintools/app/ldap.py:339 +#: lib/pp_admintools/app/ldap.py:341 +msgid "The LDAP instance (LDAP cluster) from configuration, where to execute this script." +msgstr "" + +#: lib/pp_admintools/app/ldap.py:345 msgid "" "The LDAP instance (LDAP cluster) from configuration, where to execute this script. It is " "possible to give here the value {val_all!r}, then all found LDAP instances except {default!r} " "are used. It is alo possible to give the value {val_list!r}, then all configured LDAP instances " -"are shown, and the application is exiting. If not given, then the instance {default!r} will be " -"used." +"are shown, and the application is exiting." msgstr "" -#: lib/pp_admintools/app/ldap.py:358 +#: lib/pp_admintools/app/ldap.py:371 lib/pp_admintools/app/mirror_ldap.py:89 msgid "SECONDS" msgstr "" -#: lib/pp_admintools/app/ldap.py:360 +#: lib/pp_admintools/app/ldap.py:373 msgid "Using the given timeout in seconds for all LDAP operations. Default: {}" msgstr "" -#: lib/pp_admintools/app/ldap.py:394 +#: lib/pp_admintools/app/ldap.py:407 msgid "Checking given instances." msgstr "" -#: lib/pp_admintools/app/ldap.py:398 +#: lib/pp_admintools/app/ldap.py:411 msgid "Given insts:" msgstr "" -#: lib/pp_admintools/app/ldap.py:449 +#: lib/pp_admintools/app/ldap.py:462 msgid "Configured LDAP instances:" msgstr "" -#: lib/pp_admintools/app/ldap.py:466 +#: lib/pp_admintools/app/ldap.py:479 msgid "Verifying given instances ..." msgstr "Verifying given instances …" -#: lib/pp_admintools/app/ldap.py:477 +#: lib/pp_admintools/app/ldap.py:492 msgid "Used filter:" msgstr "" -#: lib/pp_admintools/app/ldap.py:507 lib/pp_admintools/app/remove_ldap_user.py:181 -msgid "LDAP instance {!r} not found in configuration." +#: lib/pp_admintools/app/ldap.py:526 +msgid "LDAP instance {!r} not found in configuration or is not usable." msgstr "" -#: lib/pp_admintools/app/ldap.py:515 +#: lib/pp_admintools/app/ldap.py:536 msgid "LDAP instances to use:" msgstr "" -#: lib/pp_admintools/app/ldap.py:564 +#: lib/pp_admintools/app/ldap.py:585 msgid "Preparations ..." msgstr "Preparations …" -#: lib/pp_admintools/app/ldap.py:567 +#: lib/pp_admintools/app/ldap.py:588 msgid "Open all necessary LDAP connections ..." msgstr "Open all necessary LDAP connections …" -#: lib/pp_admintools/app/ldap.py:581 +#: lib/pp_admintools/app/ldap.py:602 msgid "Password of user {usr} on LDAP instance {inst}:" msgstr "Password of user {usr} on LDAP instance {inst}:" -#: lib/pp_admintools/app/ldap.py:590 +#: lib/pp_admintools/app/ldap.py:611 msgid "Info about LDAP server {}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:600 +#: lib/pp_admintools/app/ldap.py:621 msgid "Trying to get LDAP server object for {} ..." msgstr "Trying to get LDAP server object for {} …" -#: lib/pp_admintools/app/ldap.py:616 +#: lib/pp_admintools/app/ldap.py:637 msgid "Connect options to server {!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:623 +#: lib/pp_admintools/app/ldap.py:644 msgid "LDAP server {s}: {re}" msgstr "" -#: lib/pp_admintools/app/ldap.py:637 +#: lib/pp_admintools/app/ldap.py:658 msgid "Connecting to LDAP server {url} as {dn!r} ..." msgstr "Connecting to LDAP server {url} as {dn!r} …" -#: lib/pp_admintools/app/ldap.py:649 +#: lib/pp_admintools/app/ldap.py:670 msgid "Finishing ..." msgstr "Finishing …" -#: lib/pp_admintools/app/ldap.py:658 +#: lib/pp_admintools/app/ldap.py:679 msgid "Disconnecting from all remaining LDAP instances ..." msgstr "Disconnecting from all remaining LDAP instances …" -#: lib/pp_admintools/app/ldap.py:671 +#: lib/pp_admintools/app/ldap.py:692 msgid "Unbinding from LDAP server {!r} ..." msgstr "Unbinding from LDAP server {!r} …" -#: lib/pp_admintools/app/ldap.py:678 +#: lib/pp_admintools/app/ldap.py:699 msgid "Disconnecting from LDAP server {!r} ..." msgstr "Disconnecting from LDAP server {!r} …" -#: lib/pp_admintools/app/ldap.py:687 +#: lib/pp_admintools/app/ldap.py:708 msgid "Trying to evaluate DN of user {user!r} in LDAP instance {inst} ..." msgstr "Trying to evaluate DN of user {user!r} in LDAP instance {inst} …" -#: lib/pp_admintools/app/ldap.py:692 +#: lib/pp_admintools/app/ldap.py:713 msgid "Trying to evaluate DN of user {u!r} as a mail address ..." msgstr "Trying to evaluate DN of user {u!r} as a mail address …" -#: lib/pp_admintools/app/ldap.py:699 +#: lib/pp_admintools/app/ldap.py:720 msgid "Trying to evaluate DN of user {u!r} as a LDAP DN ..." msgstr "Trying to evaluate DN of user {u!r} as a LDAP DN …" -#: lib/pp_admintools/app/ldap.py:706 +#: lib/pp_admintools/app/ldap.py:727 msgid "Trying to evaluate DN of user {u!r} as a UID (Posix user name) ..." msgstr "Trying to evaluate DN of user {u!r} as a UID (Posix user name) …" -#: lib/pp_admintools/app/ldap.py:715 lib/pp_admintools/app/remove_ldap_user.py:300 +#: lib/pp_admintools/app/ldap.py:736 lib/pp_admintools/app/remove_ldap_user.py:299 msgid "Empty user given." msgstr "" -#: lib/pp_admintools/app/ldap.py:718 +#: lib/pp_admintools/app/ldap.py:739 msgid "Trying to evaluate DN of user {u!r} as a CN ({c}) ..." msgstr "Trying to evaluate DN of user {u!r} as a CN ({c}) …" -#: lib/pp_admintools/app/ldap.py:748 lib/pp_admintools/app/ldap.py:801 -#: lib/pp_admintools/app/ldap.py:854 lib/pp_admintools/app/ldap.py:1088 -#: lib/pp_admintools/app/ldap.py:1122 lib/pp_admintools/app/ldap.py:1156 -#: lib/pp_admintools/app/ldap.py:1190 +#: lib/pp_admintools/app/ldap.py:769 lib/pp_admintools/app/ldap.py:822 +#: lib/pp_admintools/app/ldap.py:875 lib/pp_admintools/app/ldap.py:1109 +#: lib/pp_admintools/app/ldap.py:1143 lib/pp_admintools/app/ldap.py:1177 +#: lib/pp_admintools/app/ldap.py:1211 msgid "Searching in {uri}/{bdn} with filter: {fltr}" msgstr "" -#: lib/pp_admintools/app/ldap.py:759 +#: lib/pp_admintools/app/ldap.py:780 msgid "Result of searching for mail address {m!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:763 lib/pp_admintools/app/ldap.py:816 -#: lib/pp_admintools/app/ldap.py:869 lib/pp_admintools/app/ldap.py:957 -#: lib/pp_admintools/app/ldap.py:1100 lib/pp_admintools/app/ldap.py:1134 -#: lib/pp_admintools/app/ldap.py:1168 lib/pp_admintools/app/ldap.py:1202 +#: lib/pp_admintools/app/ldap.py:784 lib/pp_admintools/app/ldap.py:837 +#: lib/pp_admintools/app/ldap.py:890 lib/pp_admintools/app/ldap.py:978 +#: lib/pp_admintools/app/ldap.py:1121 lib/pp_admintools/app/ldap.py:1155 +#: lib/pp_admintools/app/ldap.py:1189 lib/pp_admintools/app/ldap.py:1223 msgid "Got a response entry:" msgstr "" -#: lib/pp_admintools/app/ldap.py:770 +#: lib/pp_admintools/app/ldap.py:791 msgid "User with mail address {m!r} not found in {uri}/{bdn}." msgstr "" -#: lib/pp_admintools/app/ldap.py:812 +#: lib/pp_admintools/app/ldap.py:833 msgid "Result of searching for uid {u!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:823 +#: lib/pp_admintools/app/ldap.py:844 msgid "User with uid {u!r} not found in {uri}/{bdn}." msgstr "" -#: lib/pp_admintools/app/ldap.py:865 +#: lib/pp_admintools/app/ldap.py:886 msgid "Result of searching for CN {cn!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:876 +#: lib/pp_admintools/app/ldap.py:897 msgid "User with cn {cn!r} not found in {uri}/{bdn}." msgstr "" -#: lib/pp_admintools/app/ldap.py:893 lib/pp_admintools/app/set_ldap_password.py:504 +#: lib/pp_admintools/app/ldap.py:914 lib/pp_admintools/app/set_ldap_password.py:508 msgid "User with DN {dn!r} not found in {uri}." msgstr "" -#: lib/pp_admintools/app/ldap.py:911 +#: lib/pp_admintools/app/ldap.py:932 msgid "ObjectClasses of {dn!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:921 +#: lib/pp_admintools/app/ldap.py:942 msgid "Entry {dn!r} in {uri} seems not to be an account." msgstr "" -#: lib/pp_admintools/app/ldap.py:943 +#: lib/pp_admintools/app/ldap.py:964 msgid "Searching DN {dn!r} in {uri}." msgstr "" -#: lib/pp_admintools/app/ldap.py:953 +#: lib/pp_admintools/app/ldap.py:974 msgid "Result of searching for DN {dn!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:961 +#: lib/pp_admintools/app/ldap.py:982 msgid "Entry with DN {dn!r} not found in {uri}." msgstr "" -#: lib/pp_admintools/app/ldap.py:1002 +#: lib/pp_admintools/app/ldap.py:1023 msgid "Applying changes on {uri} to DN {dn!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:1007 +#: lib/pp_admintools/app/ldap.py:1028 msgid "Simulation mode - changes are not applied." msgstr "" -#: lib/pp_admintools/app/ldap.py:1013 +#: lib/pp_admintools/app/ldap.py:1034 msgid "Modification NOT successfull - {c}: {e}" msgstr "" -#: lib/pp_admintools/app/ldap.py:1014 lib/pp_admintools/app/remove_ldap_user.py:427 -#: lib/pp_admintools/app/remove_ldap_user.py:454 lib/pp_admintools/app/remove_ldap_user.py:481 -#: lib/pp_admintools/app/remove_ldap_user.py:512 lib/pp_admintools/app/remove_ldap_user.py:543 +#: lib/pp_admintools/app/ldap.py:1035 lib/pp_admintools/app/remove_ldap_user.py:426 +#: lib/pp_admintools/app/remove_ldap_user.py:453 lib/pp_admintools/app/remove_ldap_user.py:480 +#: lib/pp_admintools/app/remove_ldap_user.py:511 lib/pp_admintools/app/remove_ldap_user.py:542 #: lib/pp_admintools/app/set_ldap_password.py:612 msgid "Changes:" msgstr "" -#: lib/pp_admintools/app/ldap.py:1026 +#: lib/pp_admintools/app/ldap.py:1047 msgid "Modification status: {!r}." msgstr "" -#: lib/pp_admintools/app/ldap.py:1028 +#: lib/pp_admintools/app/ldap.py:1049 msgid "Result of modifying:" msgstr "" -#: lib/pp_admintools/app/ldap.py:1031 +#: lib/pp_admintools/app/ldap.py:1052 msgid "Modification NOT successful: {desc} - {msg}" msgstr "" -#: lib/pp_admintools/app/ldap.py:1035 +#: lib/pp_admintools/app/ldap.py:1056 msgid "Modification successful." msgstr "" -#: lib/pp_admintools/app/ldap.py:1045 +#: lib/pp_admintools/app/ldap.py:1066 msgid "Deleting LDAP entry {dn!r} on {uri} ..." msgstr "Deleting LDAP entry {dn!r} on {uri} …" -#: lib/pp_admintools/app/ldap.py:1050 +#: lib/pp_admintools/app/ldap.py:1071 msgid "Simulation mode - deletion will not be executed." msgstr "" -#: lib/pp_admintools/app/ldap.py:1056 +#: lib/pp_admintools/app/ldap.py:1077 msgid "Deletion NOT successfull - {c}: {e}" msgstr "" -#: lib/pp_admintools/app/ldap.py:1060 +#: lib/pp_admintools/app/ldap.py:1081 msgid "Deletion status: {!r}." msgstr "" -#: lib/pp_admintools/app/ldap.py:1062 +#: lib/pp_admintools/app/ldap.py:1083 msgid "Result of deletion:" msgstr "" -#: lib/pp_admintools/app/ldap.py:1065 +#: lib/pp_admintools/app/ldap.py:1086 msgid "Deletion NOT successful: {desc} - {msg}" msgstr "" -#: lib/pp_admintools/app/ldap.py:1069 +#: lib/pp_admintools/app/ldap.py:1090 msgid "Deletion successful." msgstr "" -#: lib/pp_admintools/app/ldap.py:1216 +#: lib/pp_admintools/app/ldap.py:1237 msgid "Reading password file {!r} ..." msgstr "Reading password file {!r} …" @@ -722,103 +723,134 @@ msgstr "" msgid "Did not found sendmail executable." msgstr "" -#: lib/pp_admintools/app/pdns.py:100 lib/pp_admintools/app/pdns.py:184 +#: lib/pp_admintools/app/mirror_ldap.py:70 +msgid "" +"Mirror the content of a complete LDAP instance (server or cluster) to another instance. This " +"will be done first by clearing the target instance, then copying structural entries from the " +"source to the target instance and then copying all other entries. During this some " +"transformations are done, like substituting the content of some entry attributes by another " +"values." +msgstr "" + +#: lib/pp_admintools/app/mirror_ldap.py:86 +msgid "Miroring options" +msgstr "" + +#: lib/pp_admintools/app/mirror_ldap.py:91 +msgid "" +"Number of seconds to wait after each write operation. Given as a float value, and if set to " +"zero, there is no waiting after a write. (default: {:.1f})" +msgstr "" + +#: lib/pp_admintools/app/mirror_ldap.py:98 +msgid "NUMBER" +msgstr "" + +#: lib/pp_admintools/app/mirror_ldap.py:100 +msgid "Limiting the mirroring to the first NUMBER entries. This option is valid only in simulation mode." +msgstr "" + +#: lib/pp_admintools/app/mirror_ldap.py:107 +msgid "Mirror only structural entries (entries with childs)." +msgstr "" + +#: lib/pp_admintools/app/pdns.py:99 lib/pp_admintools/app/pdns.py:183 msgid "Configuration not available." msgstr "" -#: lib/pp_admintools/app/pdns.py:114 +#: lib/pp_admintools/app/pdns.py:113 msgid "Invalid API key {!r} given." msgstr "" -#: lib/pp_admintools/app/pdns.py:126 +#: lib/pp_admintools/app/pdns.py:125 msgid "Invalid API host {!r} given." msgstr "" -#: lib/pp_admintools/app/pdns.py:139 +#: lib/pp_admintools/app/pdns.py:138 msgid "Invalid API port {!r} given." msgstr "" -#: lib/pp_admintools/app/pdns.py:151 +#: lib/pp_admintools/app/pdns.py:150 msgid "Invalid API server name {!r} given." msgstr "" -#: lib/pp_admintools/app/pdns.py:169 lib/pp_admintools/app/pdns.py:172 +#: lib/pp_admintools/app/pdns.py:168 lib/pp_admintools/app/pdns.py:171 msgid "Invalid instance {!r} given." msgstr "" -#: lib/pp_admintools/app/pdns.py:180 +#: lib/pp_admintools/app/pdns.py:179 msgid "Evaluating instance {!r} ..." msgstr "Evaluating instance {!r} …" -#: lib/pp_admintools/app/pdns.py:188 +#: lib/pp_admintools/app/pdns.py:187 msgid "PDNS instance {!r} is not configured." msgstr "" -#: lib/pp_admintools/app/pdns.py:239 +#: lib/pp_admintools/app/pdns.py:238 msgid "PowerDNS API options" msgstr "" -#: lib/pp_admintools/app/pdns.py:249 +#: lib/pp_admintools/app/pdns.py:247 msgid "Select, which PowerDNS instance to use. Valid values: {v}, default: {d!r}." msgstr "" -#: lib/pp_admintools/app/pdns.py:257 lib/pp_admintools/app/pdns.py:263 -#: lib/pp_admintools/app/pdns.py:269 +#: lib/pp_admintools/app/pdns.py:255 lib/pp_admintools/app/pdns.py:261 +#: lib/pp_admintools/app/pdns.py:267 msgid "Using the {!r} PowerDNS instance." msgstr "" -#: lib/pp_admintools/app/pdns.py:277 +#: lib/pp_admintools/app/pdns.py:275 msgid "Which port to connect to PowerDNS API, default: {}." msgstr "" -#: lib/pp_admintools/app/pdns.py:302 +#: lib/pp_admintools/app/pdns.py:300 msgid "No path given for{d} [{s}]/{k} in configuration." msgstr "" -#: lib/pp_admintools/app/pdns.py:309 +#: lib/pp_admintools/app/pdns.py:307 msgid "Path {p!r} for{d} [{s}]/{k} in configuration must be an absolute path." msgstr "" -#: lib/pp_admintools/app/pdns.py:332 lib/pp_admintools/app/pdns.py:368 -#: lib/pp_admintools/app/pdns.py:395 +#: lib/pp_admintools/app/pdns.py:330 lib/pp_admintools/app/pdns.py:366 +#: lib/pp_admintools/app/pdns.py:393 msgid "Executing {} ..." msgstr "Executing {} …" -#: lib/pp_admintools/app/pdns.py:370 +#: lib/pp_admintools/app/pdns.py:368 msgid "Setting Loglevel of the requests module to {}." msgstr "" -#: lib/pp_admintools/app/pdns.py:384 +#: lib/pp_admintools/app/pdns.py:382 msgid "Executing nothing ..." msgstr "Executing nothing …" -#: lib/pp_admintools/app/pdns.py:404 lib/pp_admintools/app/pdns.py:426 -#: lib/pp_admintools/app/pdns.py:437 lib/pp_admintools/app/pdns.py:447 +#: lib/pp_admintools/app/pdns.py:402 lib/pp_admintools/app/pdns.py:424 +#: lib/pp_admintools/app/pdns.py:435 lib/pp_admintools/app/pdns.py:445 msgid "The PDNS server object does not exists." msgstr "" -#: lib/pp_admintools/app/pdns.py:406 lib/pp_admintools/app/pdns.py:428 -#: lib/pp_admintools/app/pdns.py:439 lib/pp_admintools/app/pdns.py:449 +#: lib/pp_admintools/app/pdns.py:404 lib/pp_admintools/app/pdns.py:426 +#: lib/pp_admintools/app/pdns.py:437 lib/pp_admintools/app/pdns.py:447 msgid "The PDNS server object is not initialized." msgstr "" -#: lib/pp_admintools/app/pdns.py:457 +#: lib/pp_admintools/app/pdns.py:455 msgid "Trying to get complete information about zone {!r} ..." msgstr "Trying to get complete information about zone {!r} …" -#: lib/pp_admintools/app/pdns.py:463 +#: lib/pp_admintools/app/pdns.py:461 msgid "The given zone {} was not found." msgstr "" -#: lib/pp_admintools/app/pdns.py:466 +#: lib/pp_admintools/app/pdns.py:464 msgid "Got a response:" msgstr "" -#: lib/pp_admintools/app/pdns.py:471 +#: lib/pp_admintools/app/pdns.py:469 msgid "Zone object:" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:70 +#: lib/pp_admintools/app/remove_ldap_user.py:69 msgid "" "Disables or removes the given users from LDAP. If disabling, then the user will not be really " "removed, but disabled by locking the password, setting all status flags to {inact!r}, assigning " @@ -826,215 +858,219 @@ msgid "" "user will be really removed from LDAP." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:115 +#: lib/pp_admintools/app/remove_ldap_user.py:114 msgid "Removing options" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:118 +#: lib/pp_admintools/app/remove_ldap_user.py:117 msgid "This is the default." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:119 +#: lib/pp_admintools/app/remove_ldap_user.py:118 msgid "This is mutually exclusive to {!r}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:121 +#: lib/pp_admintools/app/remove_ldap_user.py:120 msgid "Deactivating the user instead of removing it." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:128 +#: lib/pp_admintools/app/remove_ldap_user.py:127 msgid "Removing the user from LDAP." msgstr "Removing the user from LDAP." -#: lib/pp_admintools/app/remove_ldap_user.py:136 lib/pp_admintools/app/set_ldap_password.py:269 -#: lib/pp_admintools/app/set_ldap_password.py:272 +#: lib/pp_admintools/app/remove_ldap_user.py:135 lib/pp_admintools/app/set_ldap_password.py:273 +#: lib/pp_admintools/app/set_ldap_password.py:276 msgid "USER" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:137 +#: lib/pp_admintools/app/remove_ldap_user.py:136 msgid "" "The user, which should be deactivated or removed. They may be given by their Uid (the " "alphanumeric POSIX name), their mail address or their LDAP DN (be aware, that this may be " "different in the particular LDAP instances)." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:161 +#: lib/pp_admintools/app/remove_ldap_user.py:160 msgid "No users to remove given." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:174 +#: lib/pp_admintools/app/remove_ldap_user.py:173 msgid "Checking given instances for admin and read/write access." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:189 +#: lib/pp_admintools/app/remove_ldap_user.py:180 +msgid "LDAP instance {!r} not found in configuration." +msgstr "" + +#: lib/pp_admintools/app/remove_ldap_user.py:188 msgid "LDAP instance {!r} has only readonly access." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:194 +#: lib/pp_admintools/app/remove_ldap_user.py:193 msgid "No admin access to LDAP instance {!r}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:211 +#: lib/pp_admintools/app/remove_ldap_user.py:210 msgid "All given users were not found in any LDAP instance." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:216 +#: lib/pp_admintools/app/remove_ldap_user.py:215 msgid "Evaluated DNs to remove:" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:225 +#: lib/pp_admintools/app/remove_ldap_user.py:224 msgid "Start disabling user entries in:" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:227 +#: lib/pp_admintools/app/remove_ldap_user.py:226 msgid "Start removing user entries in:" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:231 +#: lib/pp_admintools/app/remove_ldap_user.py:230 msgid "Start disabling user entries ..." msgstr "Start disabling user entries …" -#: lib/pp_admintools/app/remove_ldap_user.py:233 +#: lib/pp_admintools/app/remove_ldap_user.py:232 msgid "Start removing user entries ..." msgstr "Start removing user entries …" -#: lib/pp_admintools/app/remove_ldap_user.py:248 +#: lib/pp_admintools/app/remove_ldap_user.py:247 msgid "Do you really want to deactivate the following users?" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:250 +#: lib/pp_admintools/app/remove_ldap_user.py:249 msgid "Do you really want to remove the following users?" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:276 +#: lib/pp_admintools/app/remove_ldap_user.py:275 msgid "Deactivate [{yes}/{no}]?" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:278 +#: lib/pp_admintools/app/remove_ldap_user.py:277 msgid "Remove [{yes}/{no}]?" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:280 lib/pp_admintools/app/set_ldap_password.py:579 +#: lib/pp_admintools/app/remove_ldap_user.py:279 lib/pp_admintools/app/set_ldap_password.py:583 msgid "yes" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:285 +#: lib/pp_admintools/app/remove_ldap_user.py:284 msgid "Abort deactivating by {cls}: {e}" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:287 +#: lib/pp_admintools/app/remove_ldap_user.py:286 msgid "Abort removing by {cls}: {e}" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:296 +#: lib/pp_admintools/app/remove_ldap_user.py:295 msgid "Evaluating DNs of the user {!r} to remove ..." msgstr "Evaluating DNs of the user {!r} to remove …" -#: lib/pp_admintools/app/remove_ldap_user.py:310 lib/pp_admintools/app/set_ldap_password.py:527 +#: lib/pp_admintools/app/remove_ldap_user.py:309 lib/pp_admintools/app/set_ldap_password.py:531 msgid "Got DN {dn!r} for user {user!r} in LDAP instance {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:317 lib/pp_admintools/app/set_ldap_password.py:532 +#: lib/pp_admintools/app/remove_ldap_user.py:316 lib/pp_admintools/app/set_ldap_password.py:536 msgid "Found {nr} entries for user {u!r} in LDAP instance {i}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:329 lib/pp_admintools/app/set_ldap_password.py:546 +#: lib/pp_admintools/app/remove_ldap_user.py:328 lib/pp_admintools/app/set_ldap_password.py:550 msgid "Did not found user {user!r} in LDAP instance {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:338 +#: lib/pp_admintools/app/remove_ldap_user.py:337 msgid "Deactivating all given users from {} ..." msgstr "Deactivating all given users from {} …" -#: lib/pp_admintools/app/remove_ldap_user.py:340 +#: lib/pp_admintools/app/remove_ldap_user.py:339 msgid "Removing all given users from {} ..." msgstr "Removing all given users from {} …" -#: lib/pp_admintools/app/remove_ldap_user.py:355 +#: lib/pp_admintools/app/remove_ldap_user.py:354 msgid "Deactivating user {dn!r} from {inst} ..." msgstr "Deactivating user {dn!r} from {inst} …" -#: lib/pp_admintools/app/remove_ldap_user.py:358 +#: lib/pp_admintools/app/remove_ldap_user.py:357 msgid "Removing user {dn!r} from {inst} ..." msgstr "Removing user {dn!r} from {inst} …" -#: lib/pp_admintools/app/remove_ldap_user.py:364 +#: lib/pp_admintools/app/remove_ldap_user.py:363 msgid "Attributes of {!r}:" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:385 +#: lib/pp_admintools/app/remove_ldap_user.py:384 msgid "{c} on removing user {dn!r}: {e}" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:391 +#: lib/pp_admintools/app/remove_ldap_user.py:390 msgid "User {dn!r} successful deactivated on {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:394 +#: lib/pp_admintools/app/remove_ldap_user.py:393 msgid "User {dn!r} successful removed from {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:420 +#: lib/pp_admintools/app/remove_ldap_user.py:419 msgid "Updating user info for {dn!r} on {inst} ..." msgstr "Updating user info for {dn!r} on {inst} …" -#: lib/pp_admintools/app/remove_ldap_user.py:425 lib/pp_admintools/app/set_ldap_password.py:610 +#: lib/pp_admintools/app/remove_ldap_user.py:424 lib/pp_admintools/app/set_ldap_password.py:610 msgid "{c} on deactivating user {dn!r}: {e}" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:441 +#: lib/pp_admintools/app/remove_ldap_user.py:440 msgid "Did not found any group memberships of {dn!r} in {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:447 lib/pp_admintools/app/remove_ldap_user.py:474 -#: lib/pp_admintools/app/remove_ldap_user.py:505 lib/pp_admintools/app/remove_ldap_user.py:536 +#: lib/pp_admintools/app/remove_ldap_user.py:446 lib/pp_admintools/app/remove_ldap_user.py:473 +#: lib/pp_admintools/app/remove_ldap_user.py:504 lib/pp_admintools/app/remove_ldap_user.py:535 msgid "Removing user {u!r} from group {g!r} ..." msgstr "Removing user {u!r} from group {g!r} …" -#: lib/pp_admintools/app/remove_ldap_user.py:452 lib/pp_admintools/app/remove_ldap_user.py:479 -#: lib/pp_admintools/app/remove_ldap_user.py:510 lib/pp_admintools/app/remove_ldap_user.py:541 +#: lib/pp_admintools/app/remove_ldap_user.py:451 lib/pp_admintools/app/remove_ldap_user.py:478 +#: lib/pp_admintools/app/remove_ldap_user.py:509 lib/pp_admintools/app/remove_ldap_user.py:540 msgid "{c} on removing user {dn!r} from group {g!r}: {e}" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:468 +#: lib/pp_admintools/app/remove_ldap_user.py:467 msgid "Did not found any unique group memberships of {dn!r} in {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:492 +#: lib/pp_admintools/app/remove_ldap_user.py:491 msgid "Deleting user {uid!r} from all POSIX groups in {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:499 +#: lib/pp_admintools/app/remove_ldap_user.py:498 msgid "Did not found any POSIX group memberships of {uid!r} in {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:523 +#: lib/pp_admintools/app/remove_ldap_user.py:522 msgid "Deleting user {uid!r} from all sudo groups in {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:530 +#: lib/pp_admintools/app/remove_ldap_user.py:529 msgid "Did not found any sudo group memberships of {uid!r} in {inst}." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:100 +#: lib/pp_admintools/app/set_ldap_password.py:104 msgid "The ancient and notorious 3 DES crypt method." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:101 lib/pp_admintools/app/set_ldap_password.py:104 +#: lib/pp_admintools/app/set_ldap_password.py:105 lib/pp_admintools/app/set_ldap_password.py:108 msgid "Pure {} hashing method." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:102 lib/pp_admintools/app/set_ldap_password.py:105 -#: lib/pp_admintools/app/set_ldap_password.py:107 lib/pp_admintools/app/set_ldap_password.py:109 +#: lib/pp_admintools/app/set_ldap_password.py:106 lib/pp_admintools/app/set_ldap_password.py:109 +#: lib/pp_admintools/app/set_ldap_password.py:111 lib/pp_admintools/app/set_ldap_password.py:113 msgid "A {} based hashing algorithm." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:103 lib/pp_admintools/app/set_ldap_password.py:106 -#: lib/pp_admintools/app/set_ldap_password.py:108 lib/pp_admintools/app/set_ldap_password.py:110 +#: lib/pp_admintools/app/set_ldap_password.py:107 lib/pp_admintools/app/set_ldap_password.py:110 +#: lib/pp_admintools/app/set_ldap_password.py:112 lib/pp_admintools/app/set_ldap_password.py:114 msgid "Salted {} hashing method." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:111 +#: lib/pp_admintools/app/set_ldap_password.py:115 msgid "A hashing method derived from {} with additional computing rounds." msgstr "" @@ -1066,147 +1102,147 @@ msgstr "" msgid "Do not check the quality of the new password with the {} library." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:246 -msgid "SCHEMA" -msgstr "" - -#: lib/pp_admintools/app/set_ldap_password.py:247 +#: lib/pp_admintools/app/set_ldap_password.py:245 msgid "" "The schema (hashing method) to use to hash the new password. It is possible to give here the " "value {val_list!r}, then all possible schemes are shown and exit. Default: {default!r}." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:251 +#: lib/pp_admintools/app/set_ldap_password.py:250 msgid "If you are not using an admin account, then the password will hashed only by the default schema." msgstr "" #: lib/pp_admintools/app/set_ldap_password.py:255 +msgid "SCHEMA" +msgstr "" + +#: lib/pp_admintools/app/set_ldap_password.py:259 msgid "" "The user, which password in the given LDAP instance should be changed. It may be given by its " "Uid (the alphanumeric POSIX name), its mail address or its LDAP DN." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:260 +#: lib/pp_admintools/app/set_ldap_password.py:264 msgid "If not given, then your current user name {!r} will be used." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:263 +#: lib/pp_admintools/app/set_ldap_password.py:267 msgid "" "If you are using a readonly LDAP instance or an instance w/o admin access, then you must provide" " somehow the current password of the user to change." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:316 +#: lib/pp_admintools/app/set_ldap_password.py:320 msgid "Could not detect your current login name." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:321 +#: lib/pp_admintools/app/set_ldap_password.py:325 msgid "The user {!r} will never be managed by LDAP." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:357 +#: lib/pp_admintools/app/set_ldap_password.py:361 msgid "Usable Hashing schemes:" msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:366 +#: lib/pp_admintools/app/set_ldap_password.py:370 msgid "This schema cannot be used for authentication on a current freeradius server." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:370 +#: lib/pp_admintools/app/set_ldap_password.py:374 msgid "This is the default schema." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:385 +#: lib/pp_admintools/app/set_ldap_password.py:389 msgid "Using LDAP instance {inst!r} - {url}." msgstr "Using LDAP instance {inst!r} - {url}." -#: lib/pp_admintools/app/set_ldap_password.py:389 +#: lib/pp_admintools/app/set_ldap_password.py:393 msgid "Current password of user {!r}:" msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:390 lib/pp_admintools/app/set_ldap_password.py:410 +#: lib/pp_admintools/app/set_ldap_password.py:394 lib/pp_admintools/app/set_ldap_password.py:414 msgid "Repeat password:" msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:403 +#: lib/pp_admintools/app/set_ldap_password.py:407 msgid "Non admin users must use the default schema {!r} for hashing their password." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:409 +#: lib/pp_admintools/app/set_ldap_password.py:413 msgid "New password of user {!r}:" msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:416 +#: lib/pp_admintools/app/set_ldap_password.py:420 msgid "Checking the quality of the new password was disabled." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:419 +#: lib/pp_admintools/app/set_ldap_password.py:423 msgid "Testing quality of new password ..." msgstr "Testing quality of new password …" -#: lib/pp_admintools/app/set_ldap_password.py:423 +#: lib/pp_admintools/app/set_ldap_password.py:427 msgid "Quality of the new password is not sufficient:" msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:428 +#: lib/pp_admintools/app/set_ldap_password.py:432 msgid "Cannot testing the quality of the new password, because the Python module {!r} is not installed." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:455 +#: lib/pp_admintools/app/set_ldap_password.py:459 msgid "Unbinding user connection from LDAP server {} ..." msgstr "Unbinding user connection from LDAP server {} …" -#: lib/pp_admintools/app/set_ldap_password.py:466 +#: lib/pp_admintools/app/set_ldap_password.py:470 msgid "Testing connect to LDAP-Server {url} with current user {dn!r} and password ..." msgstr "Testing connect to LDAP-Server {url} with current user {dn!r} and password …" -#: lib/pp_admintools/app/set_ldap_password.py:478 +#: lib/pp_admintools/app/set_ldap_password.py:482 msgid "Successful connected as {dn!r} to {url}." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:484 +#: lib/pp_admintools/app/set_ldap_password.py:488 msgid "Could not connect to {url} as {dn!r}: {e}" msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:495 +#: lib/pp_admintools/app/set_ldap_password.py:499 msgid "Trying to get current password hash of user {!r} ..." msgstr "Trying to get current password hash of user {!r} …" -#: lib/pp_admintools/app/set_ldap_password.py:534 +#: lib/pp_admintools/app/set_ldap_password.py:538 msgid "" "Please use another username, or use the correct DN from the following list as a parameter for " "this script instead of the username:" msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:551 +#: lib/pp_admintools/app/set_ldap_password.py:555 msgid "Changing the password of user {dn!r} in LDAP instance {inst}." msgstr "Changing the password of user {dn!r} in LDAP instance {inst}." -#: lib/pp_admintools/app/set_ldap_password.py:558 +#: lib/pp_admintools/app/set_ldap_password.py:562 msgid "Setting password of {dn!r} with hashing schema {schema!r}." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:560 +#: lib/pp_admintools/app/set_ldap_password.py:564 msgid "Setting password of '{dn}' with hashing schema '{schema}' ..." msgstr "Setting password of '{dn}' with hashing schema '{schema}' …" -#: lib/pp_admintools/app/set_ldap_password.py:565 +#: lib/pp_admintools/app/set_ldap_password.py:569 msgid "Current password hash: '{}'." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:568 +#: lib/pp_admintools/app/set_ldap_password.py:572 msgid "The user '{}' has currently no password." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:572 +#: lib/pp_admintools/app/set_ldap_password.py:576 msgid "Used schema: {!r}." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:574 +#: lib/pp_admintools/app/set_ldap_password.py:578 msgid "New password hash: '{}'." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:578 +#: lib/pp_admintools/app/set_ldap_password.py:582 msgid "Apply new password? [{yes}/{no}]?" msgstr "" @@ -1226,6 +1262,26 @@ msgstr "" msgid "Value {v!r} for a {what} port must be greater than 0 and less than {max}." msgstr "" +#: lib/pp_admintools/argparse_actions.py:65 lib/pp_admintools/argparse_actions.py:95 +msgid "Got a {c} for converting {v!r} into an integer value: {e}" +msgstr "" + +#: lib/pp_admintools/argparse_actions.py:70 +msgid "The option must not be negative (given: {})." +msgstr "" + +#: lib/pp_admintools/argparse_actions.py:101 lib/pp_admintools/argparse_actions.py:138 +msgid "The option must be greater or equal to {m} (given: {v})." +msgstr "" + +#: lib/pp_admintools/argparse_actions.py:107 lib/pp_admintools/argparse_actions.py:143 +msgid "The option must be less or equal to {m} (given: {v})." +msgstr "" + +#: lib/pp_admintools/argparse_actions.py:133 +msgid "Got a {c} for converting {v!r} into a float value: {e}" +msgstr "" + #: lib/pp_admintools/config/dns_deploy_zones.py:202 lib/pp_admintools/config/dns_deploy_zones.py:515 #: lib/pp_admintools/config/mail.py:149 lib/pp_admintools/config/pdns.py:187 msgid "Evaluating config section {!r}:" @@ -1296,42 +1352,42 @@ msgstr "" msgid "Evaluated configuration:" msgstr "" -#: lib/pp_admintools/config/ldap.py:162 +#: lib/pp_admintools/config/ldap.py:174 msgid "Invalid port {!r} for LDAP server given." msgstr "" -#: lib/pp_admintools/config/ldap.py:175 +#: lib/pp_admintools/config/ldap.py:187 msgid "An empty Base DN for LDAP searches is not allowed." msgstr "" -#: lib/pp_admintools/config/ldap.py:265 +#: lib/pp_admintools/config/ldap.py:277 msgid "Invalid production tier {!r} given." msgstr "" -#: lib/pp_admintools/config/ldap.py:408 +#: lib/pp_admintools/config/ldap.py:332 +msgid "Invalid value {val!r} in section {sec!r} for a LDAP {what}." +msgstr "" + +#: lib/pp_admintools/config/ldap.py:401 +msgid "Unknown LDAP configuration key {key} found in section {sec!r}." +msgstr "" + +#: lib/pp_admintools/config/ldap.py:505 msgid "Evaluating LDAP config ..." msgstr "Evaluating LDAP config …" -#: lib/pp_admintools/config/ldap.py:412 +#: lib/pp_admintools/config/ldap.py:509 msgid "Evaluating LDAP section {!r} ..." msgstr "Evaluating LDAP section {!r} …" -#: lib/pp_admintools/config/ldap.py:429 +#: lib/pp_admintools/config/ldap.py:526 msgid "Value {!r} for a timeout is invalid." msgstr "" -#: lib/pp_admintools/config/ldap.py:449 +#: lib/pp_admintools/config/ldap.py:546 msgid "Reading configuration of LDAP instance {!r} ..." msgstr "Reading configuration of LDAP instance {!r} …" -#: lib/pp_admintools/config/ldap.py:457 -msgid "Invalid value {val!r} in section {sec!r} for a LDAP {what}." -msgstr "" - -#: lib/pp_admintools/config/ldap.py:519 -msgid "Unknown LDAP configuration key {key} found in section {sec!r}." -msgstr "" - #: lib/pp_admintools/config/mail.py:170 lib/pp_admintools/config/mail.py:194 #: lib/pp_admintools/config/mail.py:262 msgid "Found invalid {what} {addr!r} in configuration." diff --git a/locale/pp_admintools.pot b/locale/pp_admintools.pot index 4f4e2f5..fe015a5 100644 --- a/locale/pp_admintools.pot +++ b/locale/pp_admintools.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: pp_admintools 0.9.1\n" "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n" -"POT-Creation-Date: 2022-10-17 17:45+0200\n" +"POT-Creation-Date: 2022-10-18 18:12+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,618 +25,619 @@ msgstr "" msgid "Options for {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:267 +#: lib/pp_admintools/app/dns_deploy_zones.py:266 msgid "Keep a backup file for each changed configuration file." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:272 +#: lib/pp_admintools/app/dns_deploy_zones.py:271 msgid "Keeping the temporary directory instead of removing it at the end (e.g. for debugging purposes)" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:300 +#: lib/pp_admintools/app/dns_deploy_zones.py:299 msgid "Post init phase." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:304 +#: lib/pp_admintools/app/dns_deploy_zones.py:303 msgid "My own post init phase." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:320 +#: lib/pp_admintools/app/dns_deploy_zones.py:319 msgid "Unknown time zone: {!r}." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:340 +#: lib/pp_admintools/app/dns_deploy_zones.py:339 msgid "You must be root to execute this script." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:342 +#: lib/pp_admintools/app/dns_deploy_zones.py:341 msgid "But in simulation mode we are continuing nevertheless." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:352 +#: lib/pp_admintools/app/dns_deploy_zones.py:351 msgid "Using the global DNS master is not supported, please use 'local' or 'public'" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:360 +#: lib/pp_admintools/app/dns_deploy_zones.py:359 msgid "Starting: {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:367 +#: lib/pp_admintools/app/dns_deploy_zones.py:366 msgid "Could not occupy pidfile: {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:392 +#: lib/pp_admintools/app/dns_deploy_zones.py:391 msgid "Ending: {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:397 +#: lib/pp_admintools/app/dns_deploy_zones.py:396 msgid "Cleaning up ..." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:401 +#: lib/pp_admintools/app/dns_deploy_zones.py:400 msgid "Searching for {!r}." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:404 +#: lib/pp_admintools/app/dns_deploy_zones.py:403 msgid "Keep existing backup file {!r}." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:406 +#: lib/pp_admintools/app/dns_deploy_zones.py:405 msgid "Removing {!r} ..." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:412 +#: lib/pp_admintools/app/dns_deploy_zones.py:411 msgid "Error removing {p!r} - {c}: {e}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:417 +#: lib/pp_admintools/app/dns_deploy_zones.py:416 msgid "Temporary directory {!r} will not be removed. It's on yours to remove it manually." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:422 +#: lib/pp_admintools/app/dns_deploy_zones.py:421 msgid "Destroying temporary directory {!r} ..." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:431 +#: lib/pp_admintools/app/dns_deploy_zones.py:430 msgid "Temporary directory: {!r}." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:436 +#: lib/pp_admintools/app/dns_deploy_zones.py:435 msgid "Temporary zones conf: {!r}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:441 +#: lib/pp_admintools/app/dns_deploy_zones.py:440 msgid "Trying to get all keys from named.conf ..." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:447 lib/pp_admintools/app/dns_deploy_zones.py:801 -#: lib/pp_admintools/app/dns_deploy_zones.py:837 lib/pp_admintools/app/dns_deploy_zones.py:869 -#: lib/pp_admintools/app/dns_deploy_zones.py:904 lib/pp_admintools/app/dns_deploy_zones.py:939 +#: lib/pp_admintools/app/dns_deploy_zones.py:446 lib/pp_admintools/app/dns_deploy_zones.py:800 +#: lib/pp_admintools/app/dns_deploy_zones.py:836 lib/pp_admintools/app/dns_deploy_zones.py:868 +#: lib/pp_admintools/app/dns_deploy_zones.py:903 lib/pp_admintools/app/dns_deploy_zones.py:938 #: lib/pp_admintools/app/mail.py:326 msgid "Executing: {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:453 lib/pp_admintools/app/dns_deploy_zones.py:807 -#: lib/pp_admintools/app/ldap.py:766 lib/pp_admintools/app/ldap.py:819 -#: lib/pp_admintools/app/ldap.py:872 lib/pp_admintools/app/ldap.py:1103 -#: lib/pp_admintools/app/ldap.py:1137 lib/pp_admintools/app/ldap.py:1171 -#: lib/pp_admintools/app/ldap.py:1205 +#: lib/pp_admintools/app/dns_deploy_zones.py:452 lib/pp_admintools/app/dns_deploy_zones.py:806 +#: lib/pp_admintools/app/ldap.py:787 lib/pp_admintools/app/ldap.py:840 +#: lib/pp_admintools/app/ldap.py:893 lib/pp_admintools/app/ldap.py:1124 +#: lib/pp_admintools/app/ldap.py:1158 lib/pp_admintools/app/ldap.py:1192 +#: lib/pp_admintools/app/ldap.py:1226 msgid "Result:" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:494 lib/pp_admintools/app/dns_deploy_zones.py:496 +#: lib/pp_admintools/app/dns_deploy_zones.py:493 lib/pp_admintools/app/dns_deploy_zones.py:495 msgid "Found named keys:" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:496 lib/pp_admintools/app/dns_deploy_zones.py:527 +#: lib/pp_admintools/app/dns_deploy_zones.py:495 lib/pp_admintools/app/dns_deploy_zones.py:526 msgid "None" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:501 +#: lib/pp_admintools/app/dns_deploy_zones.py:500 msgid "Generating {} ..." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:525 lib/pp_admintools/app/dns_deploy_zones.py:527 +#: lib/pp_admintools/app/dns_deploy_zones.py:524 lib/pp_admintools/app/dns_deploy_zones.py:526 msgid "Collected server configuration:" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:548 +#: lib/pp_admintools/app/dns_deploy_zones.py:547 msgid "Generated file {!r}:" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:564 +#: lib/pp_admintools/app/dns_deploy_zones.py:563 msgid "Pure local zone {!r} will not be considered." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:596 +#: lib/pp_admintools/app/dns_deploy_zones.py:595 msgid "Key {k!r} for zone {z!r} not found in named configuration." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:626 +#: lib/pp_admintools/app/dns_deploy_zones.py:625 msgid "Got IPv4 tuples: {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:650 +#: lib/pp_admintools/app/dns_deploy_zones.py:649 msgid "Got IPv6 tokens: {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:657 +#: lib/pp_admintools/app/dns_deploy_zones.py:656 msgid "Comparing generated files with existing ones." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:664 +#: lib/pp_admintools/app/dns_deploy_zones.py:663 msgid "Files to replace:" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:670 +#: lib/pp_admintools/app/dns_deploy_zones.py:669 msgid "Source file not defined." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:672 +#: lib/pp_admintools/app/dns_deploy_zones.py:671 msgid "Target file not defined." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:674 +#: lib/pp_admintools/app/dns_deploy_zones.py:673 msgid "Comparing {one!r} with {two!r} ..." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:678 lib/pp_admintools/app/dns_deploy_zones.py:687 +#: lib/pp_admintools/app/dns_deploy_zones.py:677 lib/pp_admintools/app/dns_deploy_zones.py:686 msgid "{what} {f!r} does not exists." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:679 lib/pp_admintools/app/dns_deploy_zones.py:683 +#: lib/pp_admintools/app/dns_deploy_zones.py:678 lib/pp_admintools/app/dns_deploy_zones.py:682 msgid "Source file" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:682 lib/pp_admintools/app/dns_deploy_zones.py:692 +#: lib/pp_admintools/app/dns_deploy_zones.py:681 lib/pp_admintools/app/dns_deploy_zones.py:691 msgid "{what} {f!r} is not a regular file." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:688 lib/pp_admintools/app/dns_deploy_zones.py:693 +#: lib/pp_admintools/app/dns_deploy_zones.py:687 lib/pp_admintools/app/dns_deploy_zones.py:692 msgid "Target file" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:699 lib/pp_admintools/app/dns_deploy_zones.py:716 +#: lib/pp_admintools/app/dns_deploy_zones.py:698 lib/pp_admintools/app/dns_deploy_zones.py:715 msgid "Reading {!r} ..." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:709 lib/pp_admintools/app/dns_deploy_zones.py:726 +#: lib/pp_admintools/app/dns_deploy_zones.py:708 lib/pp_admintools/app/dns_deploy_zones.py:725 msgid "Cleaned version of {!r}:" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:731 +#: lib/pp_admintools/app/dns_deploy_zones.py:730 msgid "" "Source file {sf!r} has different number essential lines ({sl}) than the target file {tf!r} ({tl}" " lines)." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:740 +#: lib/pp_admintools/app/dns_deploy_zones.py:739 msgid "Source file {sf!r} has a different content than the target file {tf!r}." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:752 +#: lib/pp_admintools/app/dns_deploy_zones.py:751 msgid "No replacement of any config files necessary." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:755 +#: lib/pp_admintools/app/dns_deploy_zones.py:754 msgid "Start replacing of config files ..." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:763 lib/pp_admintools/app/dns_deploy_zones.py:773 +#: lib/pp_admintools/app/dns_deploy_zones.py:762 lib/pp_admintools/app/dns_deploy_zones.py:772 msgid "Copying {frm!r} => {to!r} ..." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:769 +#: lib/pp_admintools/app/dns_deploy_zones.py:768 msgid "All backuped config files:" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:781 +#: lib/pp_admintools/app/dns_deploy_zones.py:780 msgid "Restoring of original config files because of an exception." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:785 +#: lib/pp_admintools/app/dns_deploy_zones.py:784 msgid "Moving {frm!r} => {to!r} ..." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:791 +#: lib/pp_admintools/app/dns_deploy_zones.py:790 msgid "Could not find backup file {!r}." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:796 +#: lib/pp_admintools/app/dns_deploy_zones.py:795 msgid "Checking syntax correctness of named.conf ..." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:817 +#: lib/pp_admintools/app/dns_deploy_zones.py:816 msgid "Reload or restart of named is not necessary." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:822 +#: lib/pp_admintools/app/dns_deploy_zones.py:821 msgid "Named is not running, please start it manually." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:833 +#: lib/pp_admintools/app/dns_deploy_zones.py:832 msgid "Checking, whether named is running ..." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:851 lib/pp_admintools/app/dns_deploy_zones.py:886 -#: lib/pp_admintools/app/dns_deploy_zones.py:921 lib/pp_admintools/app/dns_deploy_zones.py:956 +#: lib/pp_admintools/app/dns_deploy_zones.py:850 lib/pp_admintools/app/dns_deploy_zones.py:885 +#: lib/pp_admintools/app/dns_deploy_zones.py:920 lib/pp_admintools/app/dns_deploy_zones.py:955 msgid "Return value: {!r}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:853 lib/pp_admintools/app/dns_deploy_zones.py:855 -#: lib/pp_admintools/app/dns_deploy_zones.py:888 lib/pp_admintools/app/dns_deploy_zones.py:890 -#: lib/pp_admintools/app/dns_deploy_zones.py:923 lib/pp_admintools/app/dns_deploy_zones.py:925 -#: lib/pp_admintools/app/dns_deploy_zones.py:958 lib/pp_admintools/app/dns_deploy_zones.py:960 +#: lib/pp_admintools/app/dns_deploy_zones.py:852 lib/pp_admintools/app/dns_deploy_zones.py:854 +#: lib/pp_admintools/app/dns_deploy_zones.py:887 lib/pp_admintools/app/dns_deploy_zones.py:889 +#: lib/pp_admintools/app/dns_deploy_zones.py:922 lib/pp_admintools/app/dns_deploy_zones.py:924 +#: lib/pp_admintools/app/dns_deploy_zones.py:957 lib/pp_admintools/app/dns_deploy_zones.py:959 msgid "Output on {}" msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:865 +#: lib/pp_admintools/app/dns_deploy_zones.py:864 msgid "Starting {} ..." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:900 +#: lib/pp_admintools/app/dns_deploy_zones.py:899 msgid "Restarting {} ..." msgstr "" -#: lib/pp_admintools/app/dns_deploy_zones.py:935 +#: lib/pp_admintools/app/dns_deploy_zones.py:934 msgid "Reloading {} ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:108 lib/pp_admintools/app/ldap.py:211 +#: lib/pp_admintools/app/ldap.py:109 lib/pp_admintools/app/ldap.py:213 msgid "The path {!r} must be an absolute path." msgstr "" -#: lib/pp_admintools/app/ldap.py:114 lib/pp_admintools/app/ldap.py:215 -#: lib/pp_admintools/app/ldap.py:1219 +#: lib/pp_admintools/app/ldap.py:115 lib/pp_admintools/app/ldap.py:217 +#: lib/pp_admintools/app/ldap.py:1240 msgid "The file {!r} does not exists." msgstr "" -#: lib/pp_admintools/app/ldap.py:118 lib/pp_admintools/app/ldap.py:219 -#: lib/pp_admintools/app/ldap.py:1224 +#: lib/pp_admintools/app/ldap.py:119 lib/pp_admintools/app/ldap.py:221 +#: lib/pp_admintools/app/ldap.py:1245 msgid "The given path {!r} exists, but is not a regular file." msgstr "" -#: lib/pp_admintools/app/ldap.py:122 lib/pp_admintools/app/ldap.py:223 -#: lib/pp_admintools/app/ldap.py:1229 +#: lib/pp_admintools/app/ldap.py:123 lib/pp_admintools/app/ldap.py:225 +#: lib/pp_admintools/app/ldap.py:1250 msgid "The given file {!r} is not readable." msgstr "" -#: lib/pp_admintools/app/ldap.py:143 +#: lib/pp_admintools/app/ldap.py:144 msgid "a port number must be greater than zero and less or equal to {}." msgstr "" -#: lib/pp_admintools/app/ldap.py:148 +#: lib/pp_admintools/app/ldap.py:149 msgid "Wrong port number {!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:256 +#: lib/pp_admintools/app/ldap.py:258 msgid "LDAP options" msgstr "" -#: lib/pp_admintools/app/ldap.py:258 +#: lib/pp_admintools/app/ldap.py:260 msgid "Options for the default LDAP connection" msgstr "" -#: lib/pp_admintools/app/ldap.py:260 +#: lib/pp_admintools/app/ldap.py:262 msgid "Options fo LDAP connections" msgstr "" -#: lib/pp_admintools/app/ldap.py:267 lib/pp_admintools/app/remove_ldap_user.py:280 -#: lib/pp_admintools/app/set_ldap_password.py:579 +#: lib/pp_admintools/app/ldap.py:269 lib/pp_admintools/app/remove_ldap_user.py:279 +#: lib/pp_admintools/app/set_ldap_password.py:583 msgid "No" msgstr "" -#: lib/pp_admintools/app/ldap.py:269 +#: lib/pp_admintools/app/ldap.py:271 msgid "Yes" msgstr "" -#: lib/pp_admintools/app/ldap.py:275 +#: lib/pp_admintools/app/ldap.py:277 msgid "HOST" msgstr "" -#: lib/pp_admintools/app/ldap.py:276 +#: lib/pp_admintools/app/ldap.py:278 msgid "Hostname or address of the LDAP server to use. Default: {!r}" msgstr "" -#: lib/pp_admintools/app/ldap.py:283 +#: lib/pp_admintools/app/ldap.py:285 msgid "Use ldaps to connect to the LDAP server. Default: {}" msgstr "" -#: lib/pp_admintools/app/ldap.py:288 lib/pp_admintools/app/mail.py:261 -#: lib/pp_admintools/app/pdns.py:274 +#: lib/pp_admintools/app/ldap.py:290 lib/pp_admintools/app/mail.py:261 +#: lib/pp_admintools/app/pdns.py:272 msgid "PORT" msgstr "" -#: lib/pp_admintools/app/ldap.py:290 +#: lib/pp_admintools/app/ldap.py:292 msgid "The port number to connect to the LDAP server. Default: {}" msgstr "" -#: lib/pp_admintools/app/ldap.py:296 +#: lib/pp_admintools/app/ldap.py:298 msgid "The base DN used as the root for the LDAP searches. Default: {!r}" msgstr "" -#: lib/pp_admintools/app/ldap.py:303 +#: lib/pp_admintools/app/ldap.py:305 msgid "The Bind DN to use to connect to the LDAP server. Default: {!r}" msgstr "" -#: lib/pp_admintools/app/ldap.py:311 lib/pp_admintools/app/set_ldap_password.py:204 +#: lib/pp_admintools/app/ldap.py:313 lib/pp_admintools/app/set_ldap_password.py:204 #: lib/pp_admintools/app/set_ldap_password.py:205 lib/pp_admintools/app/set_ldap_password.py:222 #: lib/pp_admintools/app/set_ldap_password.py:225 msgid "PASSWORD" msgstr "" -#: lib/pp_admintools/app/ldap.py:312 +#: lib/pp_admintools/app/ldap.py:314 msgid "Use PASSWORD as the password for simple LDAP authentication." msgstr "" -#: lib/pp_admintools/app/ldap.py:317 +#: lib/pp_admintools/app/ldap.py:319 msgid "" "Prompt for simple LDAP authentication. This is used instead of specifying the password on the " "command line." msgstr "" -#: lib/pp_admintools/app/ldap.py:323 lib/pp_admintools/app/set_ldap_password.py:216 +#: lib/pp_admintools/app/ldap.py:325 lib/pp_admintools/app/set_ldap_password.py:216 #: lib/pp_admintools/app/set_ldap_password.py:218 msgid "PASSWORD_FILE" msgstr "" -#: lib/pp_admintools/app/ldap.py:325 +#: lib/pp_admintools/app/ldap.py:327 msgid "Use contents of PASSWORD_FILE as the password for simple authentication." msgstr "" -#: lib/pp_admintools/app/ldap.py:333 lib/pp_admintools/app/pdns.py:248 +#: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/pdns.py:246 msgid "INSTANCE" msgstr "" -#: lib/pp_admintools/app/ldap.py:336 -msgid "" -"The LDAP instance (LDAP cluster) from configuration, where to execute this script. If not given," -" then the instance {!r} will be used." +#: lib/pp_admintools/app/ldap.py:338 +msgid "If not given, then the instance {!r} will be used." msgstr "" -#: lib/pp_admintools/app/ldap.py:339 +#: lib/pp_admintools/app/ldap.py:341 +msgid "The LDAP instance (LDAP cluster) from configuration, where to execute this script." +msgstr "" + +#: lib/pp_admintools/app/ldap.py:345 msgid "" "The LDAP instance (LDAP cluster) from configuration, where to execute this script. It is " "possible to give here the value {val_all!r}, then all found LDAP instances except {default!r} " "are used. It is alo possible to give the value {val_list!r}, then all configured LDAP instances " -"are shown, and the application is exiting. If not given, then the instance {default!r} will be " -"used." +"are shown, and the application is exiting." msgstr "" -#: lib/pp_admintools/app/ldap.py:358 +#: lib/pp_admintools/app/ldap.py:371 lib/pp_admintools/app/mirror_ldap.py:89 msgid "SECONDS" msgstr "" -#: lib/pp_admintools/app/ldap.py:360 +#: lib/pp_admintools/app/ldap.py:373 msgid "Using the given timeout in seconds for all LDAP operations. Default: {}" msgstr "" -#: lib/pp_admintools/app/ldap.py:394 +#: lib/pp_admintools/app/ldap.py:407 msgid "Checking given instances." msgstr "" -#: lib/pp_admintools/app/ldap.py:398 +#: lib/pp_admintools/app/ldap.py:411 msgid "Given insts:" msgstr "" -#: lib/pp_admintools/app/ldap.py:449 +#: lib/pp_admintools/app/ldap.py:462 msgid "Configured LDAP instances:" msgstr "" -#: lib/pp_admintools/app/ldap.py:466 +#: lib/pp_admintools/app/ldap.py:479 msgid "Verifying given instances ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:477 +#: lib/pp_admintools/app/ldap.py:492 msgid "Used filter:" msgstr "" -#: lib/pp_admintools/app/ldap.py:507 lib/pp_admintools/app/remove_ldap_user.py:181 -msgid "LDAP instance {!r} not found in configuration." +#: lib/pp_admintools/app/ldap.py:526 +msgid "LDAP instance {!r} not found in configuration or is not usable." msgstr "" -#: lib/pp_admintools/app/ldap.py:515 +#: lib/pp_admintools/app/ldap.py:536 msgid "LDAP instances to use:" msgstr "" -#: lib/pp_admintools/app/ldap.py:564 +#: lib/pp_admintools/app/ldap.py:585 msgid "Preparations ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:567 +#: lib/pp_admintools/app/ldap.py:588 msgid "Open all necessary LDAP connections ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:581 +#: lib/pp_admintools/app/ldap.py:602 msgid "Password of user {usr} on LDAP instance {inst}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:590 +#: lib/pp_admintools/app/ldap.py:611 msgid "Info about LDAP server {}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:600 +#: lib/pp_admintools/app/ldap.py:621 msgid "Trying to get LDAP server object for {} ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:616 +#: lib/pp_admintools/app/ldap.py:637 msgid "Connect options to server {!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:623 +#: lib/pp_admintools/app/ldap.py:644 msgid "LDAP server {s}: {re}" msgstr "" -#: lib/pp_admintools/app/ldap.py:637 +#: lib/pp_admintools/app/ldap.py:658 msgid "Connecting to LDAP server {url} as {dn!r} ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:649 +#: lib/pp_admintools/app/ldap.py:670 msgid "Finishing ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:658 +#: lib/pp_admintools/app/ldap.py:679 msgid "Disconnecting from all remaining LDAP instances ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:671 +#: lib/pp_admintools/app/ldap.py:692 msgid "Unbinding from LDAP server {!r} ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:678 +#: lib/pp_admintools/app/ldap.py:699 msgid "Disconnecting from LDAP server {!r} ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:687 +#: lib/pp_admintools/app/ldap.py:708 msgid "Trying to evaluate DN of user {user!r} in LDAP instance {inst} ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:692 +#: lib/pp_admintools/app/ldap.py:713 msgid "Trying to evaluate DN of user {u!r} as a mail address ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:699 +#: lib/pp_admintools/app/ldap.py:720 msgid "Trying to evaluate DN of user {u!r} as a LDAP DN ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:706 +#: lib/pp_admintools/app/ldap.py:727 msgid "Trying to evaluate DN of user {u!r} as a UID (Posix user name) ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:715 lib/pp_admintools/app/remove_ldap_user.py:300 +#: lib/pp_admintools/app/ldap.py:736 lib/pp_admintools/app/remove_ldap_user.py:299 msgid "Empty user given." msgstr "" -#: lib/pp_admintools/app/ldap.py:718 +#: lib/pp_admintools/app/ldap.py:739 msgid "Trying to evaluate DN of user {u!r} as a CN ({c}) ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:748 lib/pp_admintools/app/ldap.py:801 -#: lib/pp_admintools/app/ldap.py:854 lib/pp_admintools/app/ldap.py:1088 -#: lib/pp_admintools/app/ldap.py:1122 lib/pp_admintools/app/ldap.py:1156 -#: lib/pp_admintools/app/ldap.py:1190 +#: lib/pp_admintools/app/ldap.py:769 lib/pp_admintools/app/ldap.py:822 +#: lib/pp_admintools/app/ldap.py:875 lib/pp_admintools/app/ldap.py:1109 +#: lib/pp_admintools/app/ldap.py:1143 lib/pp_admintools/app/ldap.py:1177 +#: lib/pp_admintools/app/ldap.py:1211 msgid "Searching in {uri}/{bdn} with filter: {fltr}" msgstr "" -#: lib/pp_admintools/app/ldap.py:759 +#: lib/pp_admintools/app/ldap.py:780 msgid "Result of searching for mail address {m!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:763 lib/pp_admintools/app/ldap.py:816 -#: lib/pp_admintools/app/ldap.py:869 lib/pp_admintools/app/ldap.py:957 -#: lib/pp_admintools/app/ldap.py:1100 lib/pp_admintools/app/ldap.py:1134 -#: lib/pp_admintools/app/ldap.py:1168 lib/pp_admintools/app/ldap.py:1202 +#: lib/pp_admintools/app/ldap.py:784 lib/pp_admintools/app/ldap.py:837 +#: lib/pp_admintools/app/ldap.py:890 lib/pp_admintools/app/ldap.py:978 +#: lib/pp_admintools/app/ldap.py:1121 lib/pp_admintools/app/ldap.py:1155 +#: lib/pp_admintools/app/ldap.py:1189 lib/pp_admintools/app/ldap.py:1223 msgid "Got a response entry:" msgstr "" -#: lib/pp_admintools/app/ldap.py:770 +#: lib/pp_admintools/app/ldap.py:791 msgid "User with mail address {m!r} not found in {uri}/{bdn}." msgstr "" -#: lib/pp_admintools/app/ldap.py:812 +#: lib/pp_admintools/app/ldap.py:833 msgid "Result of searching for uid {u!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:823 +#: lib/pp_admintools/app/ldap.py:844 msgid "User with uid {u!r} not found in {uri}/{bdn}." msgstr "" -#: lib/pp_admintools/app/ldap.py:865 +#: lib/pp_admintools/app/ldap.py:886 msgid "Result of searching for CN {cn!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:876 +#: lib/pp_admintools/app/ldap.py:897 msgid "User with cn {cn!r} not found in {uri}/{bdn}." msgstr "" -#: lib/pp_admintools/app/ldap.py:893 lib/pp_admintools/app/set_ldap_password.py:504 +#: lib/pp_admintools/app/ldap.py:914 lib/pp_admintools/app/set_ldap_password.py:508 msgid "User with DN {dn!r} not found in {uri}." msgstr "" -#: lib/pp_admintools/app/ldap.py:911 +#: lib/pp_admintools/app/ldap.py:932 msgid "ObjectClasses of {dn!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:921 +#: lib/pp_admintools/app/ldap.py:942 msgid "Entry {dn!r} in {uri} seems not to be an account." msgstr "" -#: lib/pp_admintools/app/ldap.py:943 +#: lib/pp_admintools/app/ldap.py:964 msgid "Searching DN {dn!r} in {uri}." msgstr "" -#: lib/pp_admintools/app/ldap.py:953 +#: lib/pp_admintools/app/ldap.py:974 msgid "Result of searching for DN {dn!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:961 +#: lib/pp_admintools/app/ldap.py:982 msgid "Entry with DN {dn!r} not found in {uri}." msgstr "" -#: lib/pp_admintools/app/ldap.py:1002 +#: lib/pp_admintools/app/ldap.py:1023 msgid "Applying changes on {uri} to DN {dn!r}:" msgstr "" -#: lib/pp_admintools/app/ldap.py:1007 +#: lib/pp_admintools/app/ldap.py:1028 msgid "Simulation mode - changes are not applied." msgstr "" -#: lib/pp_admintools/app/ldap.py:1013 +#: lib/pp_admintools/app/ldap.py:1034 msgid "Modification NOT successfull - {c}: {e}" msgstr "" -#: lib/pp_admintools/app/ldap.py:1014 lib/pp_admintools/app/remove_ldap_user.py:427 -#: lib/pp_admintools/app/remove_ldap_user.py:454 lib/pp_admintools/app/remove_ldap_user.py:481 -#: lib/pp_admintools/app/remove_ldap_user.py:512 lib/pp_admintools/app/remove_ldap_user.py:543 +#: lib/pp_admintools/app/ldap.py:1035 lib/pp_admintools/app/remove_ldap_user.py:426 +#: lib/pp_admintools/app/remove_ldap_user.py:453 lib/pp_admintools/app/remove_ldap_user.py:480 +#: lib/pp_admintools/app/remove_ldap_user.py:511 lib/pp_admintools/app/remove_ldap_user.py:542 #: lib/pp_admintools/app/set_ldap_password.py:612 msgid "Changes:" msgstr "" -#: lib/pp_admintools/app/ldap.py:1026 +#: lib/pp_admintools/app/ldap.py:1047 msgid "Modification status: {!r}." msgstr "" -#: lib/pp_admintools/app/ldap.py:1028 +#: lib/pp_admintools/app/ldap.py:1049 msgid "Result of modifying:" msgstr "" -#: lib/pp_admintools/app/ldap.py:1031 +#: lib/pp_admintools/app/ldap.py:1052 msgid "Modification NOT successful: {desc} - {msg}" msgstr "" -#: lib/pp_admintools/app/ldap.py:1035 +#: lib/pp_admintools/app/ldap.py:1056 msgid "Modification successful." msgstr "" -#: lib/pp_admintools/app/ldap.py:1045 +#: lib/pp_admintools/app/ldap.py:1066 msgid "Deleting LDAP entry {dn!r} on {uri} ..." msgstr "" -#: lib/pp_admintools/app/ldap.py:1050 +#: lib/pp_admintools/app/ldap.py:1071 msgid "Simulation mode - deletion will not be executed." msgstr "" -#: lib/pp_admintools/app/ldap.py:1056 +#: lib/pp_admintools/app/ldap.py:1077 msgid "Deletion NOT successfull - {c}: {e}" msgstr "" -#: lib/pp_admintools/app/ldap.py:1060 +#: lib/pp_admintools/app/ldap.py:1081 msgid "Deletion status: {!r}." msgstr "" -#: lib/pp_admintools/app/ldap.py:1062 +#: lib/pp_admintools/app/ldap.py:1083 msgid "Result of deletion:" msgstr "" -#: lib/pp_admintools/app/ldap.py:1065 +#: lib/pp_admintools/app/ldap.py:1086 msgid "Deletion NOT successful: {desc} - {msg}" msgstr "" -#: lib/pp_admintools/app/ldap.py:1069 +#: lib/pp_admintools/app/ldap.py:1090 msgid "Deletion successful." msgstr "" -#: lib/pp_admintools/app/ldap.py:1216 +#: lib/pp_admintools/app/ldap.py:1237 msgid "Reading password file {!r} ..." msgstr "" @@ -721,103 +722,134 @@ msgstr "" msgid "Did not found sendmail executable." msgstr "" -#: lib/pp_admintools/app/pdns.py:100 lib/pp_admintools/app/pdns.py:184 +#: lib/pp_admintools/app/mirror_ldap.py:70 +msgid "" +"Mirror the content of a complete LDAP instance (server or cluster) to another instance. This " +"will be done first by clearing the target instance, then copying structural entries from the " +"source to the target instance and then copying all other entries. During this some " +"transformations are done, like substituting the content of some entry attributes by another " +"values." +msgstr "" + +#: lib/pp_admintools/app/mirror_ldap.py:86 +msgid "Miroring options" +msgstr "" + +#: lib/pp_admintools/app/mirror_ldap.py:91 +msgid "" +"Number of seconds to wait after each write operation. Given as a float value, and if set to " +"zero, there is no waiting after a write. (default: {:.1f})" +msgstr "" + +#: lib/pp_admintools/app/mirror_ldap.py:98 +msgid "NUMBER" +msgstr "" + +#: lib/pp_admintools/app/mirror_ldap.py:100 +msgid "Limiting the mirroring to the first NUMBER entries. This option is valid only in simulation mode." +msgstr "" + +#: lib/pp_admintools/app/mirror_ldap.py:107 +msgid "Mirror only structural entries (entries with childs)." +msgstr "" + +#: lib/pp_admintools/app/pdns.py:99 lib/pp_admintools/app/pdns.py:183 msgid "Configuration not available." msgstr "" -#: lib/pp_admintools/app/pdns.py:114 +#: lib/pp_admintools/app/pdns.py:113 msgid "Invalid API key {!r} given." msgstr "" -#: lib/pp_admintools/app/pdns.py:126 +#: lib/pp_admintools/app/pdns.py:125 msgid "Invalid API host {!r} given." msgstr "" -#: lib/pp_admintools/app/pdns.py:139 +#: lib/pp_admintools/app/pdns.py:138 msgid "Invalid API port {!r} given." msgstr "" -#: lib/pp_admintools/app/pdns.py:151 +#: lib/pp_admintools/app/pdns.py:150 msgid "Invalid API server name {!r} given." msgstr "" -#: lib/pp_admintools/app/pdns.py:169 lib/pp_admintools/app/pdns.py:172 +#: lib/pp_admintools/app/pdns.py:168 lib/pp_admintools/app/pdns.py:171 msgid "Invalid instance {!r} given." msgstr "" -#: lib/pp_admintools/app/pdns.py:180 +#: lib/pp_admintools/app/pdns.py:179 msgid "Evaluating instance {!r} ..." msgstr "" -#: lib/pp_admintools/app/pdns.py:188 +#: lib/pp_admintools/app/pdns.py:187 msgid "PDNS instance {!r} is not configured." msgstr "" -#: lib/pp_admintools/app/pdns.py:239 +#: lib/pp_admintools/app/pdns.py:238 msgid "PowerDNS API options" msgstr "" -#: lib/pp_admintools/app/pdns.py:249 +#: lib/pp_admintools/app/pdns.py:247 msgid "Select, which PowerDNS instance to use. Valid values: {v}, default: {d!r}." msgstr "" -#: lib/pp_admintools/app/pdns.py:257 lib/pp_admintools/app/pdns.py:263 -#: lib/pp_admintools/app/pdns.py:269 +#: lib/pp_admintools/app/pdns.py:255 lib/pp_admintools/app/pdns.py:261 +#: lib/pp_admintools/app/pdns.py:267 msgid "Using the {!r} PowerDNS instance." msgstr "" -#: lib/pp_admintools/app/pdns.py:277 +#: lib/pp_admintools/app/pdns.py:275 msgid "Which port to connect to PowerDNS API, default: {}." msgstr "" -#: lib/pp_admintools/app/pdns.py:302 +#: lib/pp_admintools/app/pdns.py:300 msgid "No path given for{d} [{s}]/{k} in configuration." msgstr "" -#: lib/pp_admintools/app/pdns.py:309 +#: lib/pp_admintools/app/pdns.py:307 msgid "Path {p!r} for{d} [{s}]/{k} in configuration must be an absolute path." msgstr "" -#: lib/pp_admintools/app/pdns.py:332 lib/pp_admintools/app/pdns.py:368 -#: lib/pp_admintools/app/pdns.py:395 +#: lib/pp_admintools/app/pdns.py:330 lib/pp_admintools/app/pdns.py:366 +#: lib/pp_admintools/app/pdns.py:393 msgid "Executing {} ..." msgstr "" -#: lib/pp_admintools/app/pdns.py:370 +#: lib/pp_admintools/app/pdns.py:368 msgid "Setting Loglevel of the requests module to {}." msgstr "" -#: lib/pp_admintools/app/pdns.py:384 +#: lib/pp_admintools/app/pdns.py:382 msgid "Executing nothing ..." msgstr "" -#: lib/pp_admintools/app/pdns.py:404 lib/pp_admintools/app/pdns.py:426 -#: lib/pp_admintools/app/pdns.py:437 lib/pp_admintools/app/pdns.py:447 +#: lib/pp_admintools/app/pdns.py:402 lib/pp_admintools/app/pdns.py:424 +#: lib/pp_admintools/app/pdns.py:435 lib/pp_admintools/app/pdns.py:445 msgid "The PDNS server object does not exists." msgstr "" -#: lib/pp_admintools/app/pdns.py:406 lib/pp_admintools/app/pdns.py:428 -#: lib/pp_admintools/app/pdns.py:439 lib/pp_admintools/app/pdns.py:449 +#: lib/pp_admintools/app/pdns.py:404 lib/pp_admintools/app/pdns.py:426 +#: lib/pp_admintools/app/pdns.py:437 lib/pp_admintools/app/pdns.py:447 msgid "The PDNS server object is not initialized." msgstr "" -#: lib/pp_admintools/app/pdns.py:457 +#: lib/pp_admintools/app/pdns.py:455 msgid "Trying to get complete information about zone {!r} ..." msgstr "" -#: lib/pp_admintools/app/pdns.py:463 +#: lib/pp_admintools/app/pdns.py:461 msgid "The given zone {} was not found." msgstr "" -#: lib/pp_admintools/app/pdns.py:466 +#: lib/pp_admintools/app/pdns.py:464 msgid "Got a response:" msgstr "" -#: lib/pp_admintools/app/pdns.py:471 +#: lib/pp_admintools/app/pdns.py:469 msgid "Zone object:" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:70 +#: lib/pp_admintools/app/remove_ldap_user.py:69 msgid "" "Disables or removes the given users from LDAP. If disabling, then the user will not be really " "removed, but disabled by locking the password, setting all status flags to {inact!r}, assigning " @@ -825,215 +857,219 @@ msgid "" "user will be really removed from LDAP." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:115 +#: lib/pp_admintools/app/remove_ldap_user.py:114 msgid "Removing options" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:118 +#: lib/pp_admintools/app/remove_ldap_user.py:117 msgid "This is the default." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:119 +#: lib/pp_admintools/app/remove_ldap_user.py:118 msgid "This is mutually exclusive to {!r}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:121 +#: lib/pp_admintools/app/remove_ldap_user.py:120 msgid "Deactivating the user instead of removing it." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:128 +#: lib/pp_admintools/app/remove_ldap_user.py:127 msgid "Removing the user from LDAP." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:136 lib/pp_admintools/app/set_ldap_password.py:269 -#: lib/pp_admintools/app/set_ldap_password.py:272 +#: lib/pp_admintools/app/remove_ldap_user.py:135 lib/pp_admintools/app/set_ldap_password.py:273 +#: lib/pp_admintools/app/set_ldap_password.py:276 msgid "USER" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:137 +#: lib/pp_admintools/app/remove_ldap_user.py:136 msgid "" "The user, which should be deactivated or removed. They may be given by their Uid (the " "alphanumeric POSIX name), their mail address or their LDAP DN (be aware, that this may be " "different in the particular LDAP instances)." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:161 +#: lib/pp_admintools/app/remove_ldap_user.py:160 msgid "No users to remove given." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:174 +#: lib/pp_admintools/app/remove_ldap_user.py:173 msgid "Checking given instances for admin and read/write access." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:189 +#: lib/pp_admintools/app/remove_ldap_user.py:180 +msgid "LDAP instance {!r} not found in configuration." +msgstr "" + +#: lib/pp_admintools/app/remove_ldap_user.py:188 msgid "LDAP instance {!r} has only readonly access." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:194 +#: lib/pp_admintools/app/remove_ldap_user.py:193 msgid "No admin access to LDAP instance {!r}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:211 +#: lib/pp_admintools/app/remove_ldap_user.py:210 msgid "All given users were not found in any LDAP instance." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:216 +#: lib/pp_admintools/app/remove_ldap_user.py:215 msgid "Evaluated DNs to remove:" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:225 +#: lib/pp_admintools/app/remove_ldap_user.py:224 msgid "Start disabling user entries in:" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:227 +#: lib/pp_admintools/app/remove_ldap_user.py:226 msgid "Start removing user entries in:" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:231 +#: lib/pp_admintools/app/remove_ldap_user.py:230 msgid "Start disabling user entries ..." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:233 +#: lib/pp_admintools/app/remove_ldap_user.py:232 msgid "Start removing user entries ..." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:248 +#: lib/pp_admintools/app/remove_ldap_user.py:247 msgid "Do you really want to deactivate the following users?" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:250 +#: lib/pp_admintools/app/remove_ldap_user.py:249 msgid "Do you really want to remove the following users?" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:276 +#: lib/pp_admintools/app/remove_ldap_user.py:275 msgid "Deactivate [{yes}/{no}]?" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:278 +#: lib/pp_admintools/app/remove_ldap_user.py:277 msgid "Remove [{yes}/{no}]?" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:280 lib/pp_admintools/app/set_ldap_password.py:579 +#: lib/pp_admintools/app/remove_ldap_user.py:279 lib/pp_admintools/app/set_ldap_password.py:583 msgid "yes" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:285 +#: lib/pp_admintools/app/remove_ldap_user.py:284 msgid "Abort deactivating by {cls}: {e}" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:287 +#: lib/pp_admintools/app/remove_ldap_user.py:286 msgid "Abort removing by {cls}: {e}" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:296 +#: lib/pp_admintools/app/remove_ldap_user.py:295 msgid "Evaluating DNs of the user {!r} to remove ..." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:310 lib/pp_admintools/app/set_ldap_password.py:527 +#: lib/pp_admintools/app/remove_ldap_user.py:309 lib/pp_admintools/app/set_ldap_password.py:531 msgid "Got DN {dn!r} for user {user!r} in LDAP instance {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:317 lib/pp_admintools/app/set_ldap_password.py:532 +#: lib/pp_admintools/app/remove_ldap_user.py:316 lib/pp_admintools/app/set_ldap_password.py:536 msgid "Found {nr} entries for user {u!r} in LDAP instance {i}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:329 lib/pp_admintools/app/set_ldap_password.py:546 +#: lib/pp_admintools/app/remove_ldap_user.py:328 lib/pp_admintools/app/set_ldap_password.py:550 msgid "Did not found user {user!r} in LDAP instance {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:338 +#: lib/pp_admintools/app/remove_ldap_user.py:337 msgid "Deactivating all given users from {} ..." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:340 +#: lib/pp_admintools/app/remove_ldap_user.py:339 msgid "Removing all given users from {} ..." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:355 +#: lib/pp_admintools/app/remove_ldap_user.py:354 msgid "Deactivating user {dn!r} from {inst} ..." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:358 +#: lib/pp_admintools/app/remove_ldap_user.py:357 msgid "Removing user {dn!r} from {inst} ..." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:364 +#: lib/pp_admintools/app/remove_ldap_user.py:363 msgid "Attributes of {!r}:" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:385 +#: lib/pp_admintools/app/remove_ldap_user.py:384 msgid "{c} on removing user {dn!r}: {e}" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:391 +#: lib/pp_admintools/app/remove_ldap_user.py:390 msgid "User {dn!r} successful deactivated on {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:394 +#: lib/pp_admintools/app/remove_ldap_user.py:393 msgid "User {dn!r} successful removed from {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:420 +#: lib/pp_admintools/app/remove_ldap_user.py:419 msgid "Updating user info for {dn!r} on {inst} ..." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:425 lib/pp_admintools/app/set_ldap_password.py:610 +#: lib/pp_admintools/app/remove_ldap_user.py:424 lib/pp_admintools/app/set_ldap_password.py:610 msgid "{c} on deactivating user {dn!r}: {e}" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:441 +#: lib/pp_admintools/app/remove_ldap_user.py:440 msgid "Did not found any group memberships of {dn!r} in {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:447 lib/pp_admintools/app/remove_ldap_user.py:474 -#: lib/pp_admintools/app/remove_ldap_user.py:505 lib/pp_admintools/app/remove_ldap_user.py:536 +#: lib/pp_admintools/app/remove_ldap_user.py:446 lib/pp_admintools/app/remove_ldap_user.py:473 +#: lib/pp_admintools/app/remove_ldap_user.py:504 lib/pp_admintools/app/remove_ldap_user.py:535 msgid "Removing user {u!r} from group {g!r} ..." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:452 lib/pp_admintools/app/remove_ldap_user.py:479 -#: lib/pp_admintools/app/remove_ldap_user.py:510 lib/pp_admintools/app/remove_ldap_user.py:541 +#: lib/pp_admintools/app/remove_ldap_user.py:451 lib/pp_admintools/app/remove_ldap_user.py:478 +#: lib/pp_admintools/app/remove_ldap_user.py:509 lib/pp_admintools/app/remove_ldap_user.py:540 msgid "{c} on removing user {dn!r} from group {g!r}: {e}" msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:468 +#: lib/pp_admintools/app/remove_ldap_user.py:467 msgid "Did not found any unique group memberships of {dn!r} in {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:492 +#: lib/pp_admintools/app/remove_ldap_user.py:491 msgid "Deleting user {uid!r} from all POSIX groups in {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:499 +#: lib/pp_admintools/app/remove_ldap_user.py:498 msgid "Did not found any POSIX group memberships of {uid!r} in {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:523 +#: lib/pp_admintools/app/remove_ldap_user.py:522 msgid "Deleting user {uid!r} from all sudo groups in {inst}." msgstr "" -#: lib/pp_admintools/app/remove_ldap_user.py:530 +#: lib/pp_admintools/app/remove_ldap_user.py:529 msgid "Did not found any sudo group memberships of {uid!r} in {inst}." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:100 +#: lib/pp_admintools/app/set_ldap_password.py:104 msgid "The ancient and notorious 3 DES crypt method." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:101 lib/pp_admintools/app/set_ldap_password.py:104 +#: lib/pp_admintools/app/set_ldap_password.py:105 lib/pp_admintools/app/set_ldap_password.py:108 msgid "Pure {} hashing method." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:102 lib/pp_admintools/app/set_ldap_password.py:105 -#: lib/pp_admintools/app/set_ldap_password.py:107 lib/pp_admintools/app/set_ldap_password.py:109 +#: lib/pp_admintools/app/set_ldap_password.py:106 lib/pp_admintools/app/set_ldap_password.py:109 +#: lib/pp_admintools/app/set_ldap_password.py:111 lib/pp_admintools/app/set_ldap_password.py:113 msgid "A {} based hashing algorithm." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:103 lib/pp_admintools/app/set_ldap_password.py:106 -#: lib/pp_admintools/app/set_ldap_password.py:108 lib/pp_admintools/app/set_ldap_password.py:110 +#: lib/pp_admintools/app/set_ldap_password.py:107 lib/pp_admintools/app/set_ldap_password.py:110 +#: lib/pp_admintools/app/set_ldap_password.py:112 lib/pp_admintools/app/set_ldap_password.py:114 msgid "Salted {} hashing method." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:111 +#: lib/pp_admintools/app/set_ldap_password.py:115 msgid "A hashing method derived from {} with additional computing rounds." msgstr "" @@ -1065,147 +1101,147 @@ msgstr "" msgid "Do not check the quality of the new password with the {} library." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:246 -msgid "SCHEMA" -msgstr "" - -#: lib/pp_admintools/app/set_ldap_password.py:247 +#: lib/pp_admintools/app/set_ldap_password.py:245 msgid "" "The schema (hashing method) to use to hash the new password. It is possible to give here the " "value {val_list!r}, then all possible schemes are shown and exit. Default: {default!r}." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:251 +#: lib/pp_admintools/app/set_ldap_password.py:250 msgid "If you are not using an admin account, then the password will hashed only by the default schema." msgstr "" #: lib/pp_admintools/app/set_ldap_password.py:255 +msgid "SCHEMA" +msgstr "" + +#: lib/pp_admintools/app/set_ldap_password.py:259 msgid "" "The user, which password in the given LDAP instance should be changed. It may be given by its " "Uid (the alphanumeric POSIX name), its mail address or its LDAP DN." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:260 +#: lib/pp_admintools/app/set_ldap_password.py:264 msgid "If not given, then your current user name {!r} will be used." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:263 +#: lib/pp_admintools/app/set_ldap_password.py:267 msgid "" "If you are using a readonly LDAP instance or an instance w/o admin access, then you must provide" " somehow the current password of the user to change." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:316 +#: lib/pp_admintools/app/set_ldap_password.py:320 msgid "Could not detect your current login name." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:321 +#: lib/pp_admintools/app/set_ldap_password.py:325 msgid "The user {!r} will never be managed by LDAP." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:357 +#: lib/pp_admintools/app/set_ldap_password.py:361 msgid "Usable Hashing schemes:" msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:366 +#: lib/pp_admintools/app/set_ldap_password.py:370 msgid "This schema cannot be used for authentication on a current freeradius server." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:370 +#: lib/pp_admintools/app/set_ldap_password.py:374 msgid "This is the default schema." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:385 +#: lib/pp_admintools/app/set_ldap_password.py:389 msgid "Using LDAP instance {inst!r} - {url}." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:389 +#: lib/pp_admintools/app/set_ldap_password.py:393 msgid "Current password of user {!r}:" msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:390 lib/pp_admintools/app/set_ldap_password.py:410 +#: lib/pp_admintools/app/set_ldap_password.py:394 lib/pp_admintools/app/set_ldap_password.py:414 msgid "Repeat password:" msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:403 +#: lib/pp_admintools/app/set_ldap_password.py:407 msgid "Non admin users must use the default schema {!r} for hashing their password." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:409 +#: lib/pp_admintools/app/set_ldap_password.py:413 msgid "New password of user {!r}:" msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:416 +#: lib/pp_admintools/app/set_ldap_password.py:420 msgid "Checking the quality of the new password was disabled." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:419 +#: lib/pp_admintools/app/set_ldap_password.py:423 msgid "Testing quality of new password ..." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:423 +#: lib/pp_admintools/app/set_ldap_password.py:427 msgid "Quality of the new password is not sufficient:" msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:428 +#: lib/pp_admintools/app/set_ldap_password.py:432 msgid "Cannot testing the quality of the new password, because the Python module {!r} is not installed." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:455 +#: lib/pp_admintools/app/set_ldap_password.py:459 msgid "Unbinding user connection from LDAP server {} ..." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:466 +#: lib/pp_admintools/app/set_ldap_password.py:470 msgid "Testing connect to LDAP-Server {url} with current user {dn!r} and password ..." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:478 +#: lib/pp_admintools/app/set_ldap_password.py:482 msgid "Successful connected as {dn!r} to {url}." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:484 +#: lib/pp_admintools/app/set_ldap_password.py:488 msgid "Could not connect to {url} as {dn!r}: {e}" msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:495 +#: lib/pp_admintools/app/set_ldap_password.py:499 msgid "Trying to get current password hash of user {!r} ..." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:534 +#: lib/pp_admintools/app/set_ldap_password.py:538 msgid "" "Please use another username, or use the correct DN from the following list as a parameter for " "this script instead of the username:" msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:551 +#: lib/pp_admintools/app/set_ldap_password.py:555 msgid "Changing the password of user {dn!r} in LDAP instance {inst}." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:558 +#: lib/pp_admintools/app/set_ldap_password.py:562 msgid "Setting password of {dn!r} with hashing schema {schema!r}." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:560 +#: lib/pp_admintools/app/set_ldap_password.py:564 msgid "Setting password of '{dn}' with hashing schema '{schema}' ..." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:565 +#: lib/pp_admintools/app/set_ldap_password.py:569 msgid "Current password hash: '{}'." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:568 +#: lib/pp_admintools/app/set_ldap_password.py:572 msgid "The user '{}' has currently no password." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:572 +#: lib/pp_admintools/app/set_ldap_password.py:576 msgid "Used schema: {!r}." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:574 +#: lib/pp_admintools/app/set_ldap_password.py:578 msgid "New password hash: '{}'." msgstr "" -#: lib/pp_admintools/app/set_ldap_password.py:578 +#: lib/pp_admintools/app/set_ldap_password.py:582 msgid "Apply new password? [{yes}/{no}]?" msgstr "" @@ -1225,6 +1261,26 @@ msgstr "" msgid "Value {v!r} for a {what} port must be greater than 0 and less than {max}." msgstr "" +#: lib/pp_admintools/argparse_actions.py:65 lib/pp_admintools/argparse_actions.py:95 +msgid "Got a {c} for converting {v!r} into an integer value: {e}" +msgstr "" + +#: lib/pp_admintools/argparse_actions.py:70 +msgid "The option must not be negative (given: {})." +msgstr "" + +#: lib/pp_admintools/argparse_actions.py:101 lib/pp_admintools/argparse_actions.py:138 +msgid "The option must be greater or equal to {m} (given: {v})." +msgstr "" + +#: lib/pp_admintools/argparse_actions.py:107 lib/pp_admintools/argparse_actions.py:143 +msgid "The option must be less or equal to {m} (given: {v})." +msgstr "" + +#: lib/pp_admintools/argparse_actions.py:133 +msgid "Got a {c} for converting {v!r} into a float value: {e}" +msgstr "" + #: lib/pp_admintools/config/dns_deploy_zones.py:202 lib/pp_admintools/config/dns_deploy_zones.py:515 #: lib/pp_admintools/config/mail.py:149 lib/pp_admintools/config/pdns.py:187 msgid "Evaluating config section {!r}:" @@ -1295,40 +1351,40 @@ msgstr "" msgid "Evaluated configuration:" msgstr "" -#: lib/pp_admintools/config/ldap.py:162 +#: lib/pp_admintools/config/ldap.py:174 msgid "Invalid port {!r} for LDAP server given." msgstr "" -#: lib/pp_admintools/config/ldap.py:175 +#: lib/pp_admintools/config/ldap.py:187 msgid "An empty Base DN for LDAP searches is not allowed." msgstr "" -#: lib/pp_admintools/config/ldap.py:265 +#: lib/pp_admintools/config/ldap.py:277 msgid "Invalid production tier {!r} given." msgstr "" -#: lib/pp_admintools/config/ldap.py:408 -msgid "Evaluating LDAP config ..." +#: lib/pp_admintools/config/ldap.py:332 +msgid "Invalid value {val!r} in section {sec!r} for a LDAP {what}." msgstr "" -#: lib/pp_admintools/config/ldap.py:412 -msgid "Evaluating LDAP section {!r} ..." +#: lib/pp_admintools/config/ldap.py:401 +msgid "Unknown LDAP configuration key {key} found in section {sec!r}." msgstr "" -#: lib/pp_admintools/config/ldap.py:429 -msgid "Value {!r} for a timeout is invalid." +#: lib/pp_admintools/config/ldap.py:505 +msgid "Evaluating LDAP config ..." msgstr "" -#: lib/pp_admintools/config/ldap.py:449 -msgid "Reading configuration of LDAP instance {!r} ..." +#: lib/pp_admintools/config/ldap.py:509 +msgid "Evaluating LDAP section {!r} ..." msgstr "" -#: lib/pp_admintools/config/ldap.py:457 -msgid "Invalid value {val!r} in section {sec!r} for a LDAP {what}." +#: lib/pp_admintools/config/ldap.py:526 +msgid "Value {!r} for a timeout is invalid." msgstr "" -#: lib/pp_admintools/config/ldap.py:519 -msgid "Unknown LDAP configuration key {key} found in section {sec!r}." +#: lib/pp_admintools/config/ldap.py:546 +msgid "Reading configuration of LDAP instance {!r} ..." msgstr "" #: lib/pp_admintools/config/mail.py:170 lib/pp_admintools/config/mail.py:194 -- 2.39.5