]> Frank Brehm's Git Trees - pixelpark/pp-admin-tools.git/commitdiff
Translations
authorFrank Brehm <frank.brehm@pixelpark.com>
Tue, 22 Aug 2023 11:46:37 +0000 (13:46 +0200)
committerFrank Brehm <frank.brehm@pixelpark.com>
Tue, 22 Aug 2023 11:46:37 +0000 (13:46 +0200)
lib/pp_admintools/app/check_ldap_pwd_schemes.py
lib/pp_admintools/app/ldap.py
locale/de_DE/LC_MESSAGES/pp_admintools.po
locale/en_US/LC_MESSAGES/pp_admintools.po
locale/pp_admintools.pot

index aea4f96ceaa88ea296fea1aa620112dcd1d58892..3c6d5bec9d64b768142040d00d82fa579ff23c46 100644 (file)
@@ -82,11 +82,10 @@ class CheckLdapPwdSchemesApplication(BaseLdapApplication):
             appname=appname, base_dir=base_dir, initialized=False)
 
         desc = _(
-            'Reports the password hashing schemes of userPassword attributes in LDAP. '
-            'This application retrieves the password hashing schemes of userPassword '
-            'attributes. Without a filter or a Base-DN the hashing schemes of all '
-            'userPassword attributes are shown. One can filter the output by a regular '
-            'LDAP-filter rule of by one or more hashing schemes.')
+            'Reports the password hashing schemes of {attr} attributes in LDAP. '
+            'Without a filter or a more special Base-DN the hashing schemes of all {attr} '
+            'attributes in the LDAP tree are shown. One can filter the output by a regular '
+            'LDAP-filter rule of by one or more hashing schemes.').format(attr='userPassword')
 
         super(CheckLdapPwdSchemesApplication, self).__init__(
             appname=appname, description=desc, base_dir=base_dir,
@@ -123,9 +122,9 @@ class CheckLdapPwdSchemesApplication(BaseLdapApplication):
         schema_list.append('help')
 
         help_txt = _(
-            'One or more schemes (hashing methods) for filtering the userPassword attributes. '
+            'One or more schemes (hashing methods) for filtering the {attr} attributes. '
             'It is possible to give here the value {val_list!r}, then all possible schemes '
-            'are shown and exit.').format(val_list='list')
+            'are shown and exit.').format(attr='userPassword', val_list='list')
 
         app_group.add_argument(
             '-S', '--schema', metavar=_('SCHEMA'), dest='filter_schema', choices=schema_list,
@@ -167,8 +166,9 @@ class CheckLdapPwdSchemesApplication(BaseLdapApplication):
         ldap_url = self.cfg.ldap_connection[self.instance].url
 
         msg = _(
-            'Start reporting password hashing schemes if userPassword attributes '
-            'in in LDAP instance {inst!r} ({url}) ...').format(inst=self.instance, url=ldap_url)
+            'Start reporting password hashing schemes of {attr} attributes '
+            'in in LDAP instance {inst!r} ({url}) ...').format(
+            attr='userPassword', inst=self.instance, url=ldap_url)
         LOG.debug(msg)
 
         ldap_filter = self.default_filter
index 55270221e322029cc909f9eee2c6f5657e566560..01ea148a2ebf4f39bf4f5979aeb1a1b1a28e2c34 100644 (file)
@@ -791,12 +791,12 @@ class BaseLdapApplication(BaseDPXApplication):
             ldap_connection = Connection(
                 ldap_server, bind_dn, bind_pw, client_strategy=SAFE_SYNC, auto_bind=True)
         except LDAPBindError as e:
-            msg = _('Could not connect to LDAP server {url!r} as {user!r}: {e}.').format(
+            msg = _('Could not connect to LDAP server {url!r} as {user!r}: {e}').format(
                 url=connect_info.url, user=bind_dn, e=e)
             LOG.error(msg)
             self.exit(8)
         except LDAPException as e:
-            msg = _('{c} on connecting to LDAP server {url!r} as {user!r}: {e}.').format(
+            msg = _('{c} on connecting to LDAP server {url!r} as {user!r}: {e}').format(
                 c=e.__class__.__name__, url=connect_info.url, user=bind_dn, e=e)
             LOG.error(msg)
             self.exit(9)
index f585670e8e9b30ad4d6079f6c74db39b34dce380..c99f0aa8002110da9f013dd968221eac98bb329a 100644 (file)
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: pp_admintools 0.9.0\n"
+"Project-Id-Version: pp_admintools 0.10.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-06-15 16:42+0200\n"
-"PO-Revision-Date: 2023-06-15 16:25+0200\n"
+"POT-Creation-Date: 2023-08-22 13:39+0200\n"
+"PO-Revision-Date: 2023-08-22 13:40+0200\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: de_DE\n"
 "Language-Team: de_DE <solution@pixelpark.com>\n"
@@ -44,7 +44,7 @@ msgstr ""
 "Die DN des LDAP-Containers (meistens eine OU), in dem alle virtuellen Aliaseinträge geplegt "
 "werden sollen. Vorgabe: {!r}"
 
-#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:439
+#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:461
 #: lib/pp_admintools/app/mirror_ldap.py:118 lib/pp_admintools/app/pdns.py:284
 msgid "SECONDS"
 msgstr "SEKUNDEN"
@@ -85,10 +85,10 @@ msgstr "Fehler {} beim Ermitteln der Lookup-Tabellentypen"
 
 #: lib/pp_admintools/app/barracuda_sync.py:231 lib/pp_admintools/app/barracuda_sync.py:427
 #: lib/pp_admintools/app/dns_deploy_zones.py:434 lib/pp_admintools/app/dns_deploy_zones.py:788
-#: lib/pp_admintools/app/ldap.py:896 lib/pp_admintools/app/ldap.py:1029
-#: lib/pp_admintools/app/ldap.py:1082 lib/pp_admintools/app/ldap.py:1135
-#: lib/pp_admintools/app/ldap.py:1423 lib/pp_admintools/app/ldap.py:1457
-#: lib/pp_admintools/app/ldap.py:1491 lib/pp_admintools/app/ldap.py:1525
+#: lib/pp_admintools/app/ldap.py:958 lib/pp_admintools/app/ldap.py:1091
+#: lib/pp_admintools/app/ldap.py:1144 lib/pp_admintools/app/ldap.py:1197
+#: lib/pp_admintools/app/ldap.py:1485 lib/pp_admintools/app/ldap.py:1519
+#: lib/pp_admintools/app/ldap.py:1553 lib/pp_admintools/app/ldap.py:1587
 msgid "Result:"
 msgstr "Ergebnis:"
 
@@ -294,7 +294,7 @@ msgstr "Es sollen keine LDAP-Einträge geändert werden."
 msgid "LDAP Entries to modified:"
 msgstr "Zu ändernde LDAP-Einträge:"
 
-#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1638
+#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1700
 msgid "Values to add to attribute {!r}:"
 msgstr "Werte, die zu Attribut {!r} hinzugefügt werden:"
 
@@ -302,11 +302,11 @@ msgstr "Werte, die zu Attribut {!r} hinzugefügt werden:"
 msgid "Values to be removed from attribute {!r}:"
 msgstr "Werte, die von Attribut {!r} gelöscht werden sollen:"
 
-#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1659
+#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1721
 msgid "Changes for attribute {!r}:"
 msgstr "Änedrungen für Attribut {!r}:"
 
-#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1662
+#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1724
 msgid "No changes to attribute {!r}."
 msgstr "Keine Änderungen an Attribut {!r}."
 
@@ -377,6 +377,7 @@ msgstr ""
 "DN-Syntax der Attribute überprüft, und ob sie existierende Einträge im LDAP referenzieren."
 
 #: lib/pp_admintools/app/check_ldap_dn_attributes.py:97
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:106
 msgid "Script options"
 msgstr "Skript-Optionen"
 
@@ -433,11 +434,74 @@ msgid "Checking DN-like attributes of entry {!r} ..."
 msgstr "Überprüfe Attribute mit DN-Syntax von Eintrag {!r} …"
 
 #: lib/pp_admintools/app/check_ldap_dn_attributes.py:219
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:234
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:190
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:233
 msgid "Got attributes:"
 msgstr "Gefundene Attribute:"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:76
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:84
+msgid ""
+"Reports the password hashing schemes of {attr} attributes in LDAP. Without a filter or a more "
+"special Base-DN the hashing schemes of all {attr} attributes in the LDAP tree are shown. One can"
+" filter the output by a regular LDAP-filter rule of by one or more hashing schemes."
+msgstr ""
+"Stellt die Passwort-Hashing-Mechanismen der {attr}-Attribute im LDAP dar. Ohne einen Filter oder"
+" eine speziellere Basis-DN werden die Hashing-Mechanismen aller {attr}-Attribute im LDAP-Baum "
+"angezeigt. Man kann die Ausgabe durch einen regulären LDAP-Filter bzw. durch die Angabe von "
+"einem oder mehreren Hashing-Schemen filtern."
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:109
+msgid "FILTER"
+msgstr "FILTER"
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:110
+msgid ""
+"An additional LDAP filter to limit the entries to print out their password hashing schema. "
+"Please note, that this filter will be wrapped by parantheses to combine it with the default "
+"filter {!r}."
+msgstr ""
+"Ein zusätzlicher LDAP-Filter, um die Anzahl der Einträgem, deren Passwort-Hashing-Schema "
+"angezeigt werden soll. Bitte beachten, dass dieser Filter mit Klammern umgeben wird, um ihn mit "
+"dem Vorgabe-Filter {!r} zu verbinden."
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:124
+msgid ""
+"One or more schemes (hashing methods) for filtering the {attr} attributes. It is possible to "
+"give here the value {val_list!r}, then all possible schemes are shown and exit."
+msgstr ""
+"Ein oder mehrere Schemen (Hashing-Methoden) zum Filtern der {attr}-Attribute. Es ist möglich, "
+"den Wert {val_list!r} anzugeben, dann werden alle verfügbaren Hashing-Methoden ausgegeben und "
+"beendet."
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:130 lib/pp_admintools/app/set_ldap_password.py:183
+msgid "SCHEMA"
+msgstr "SCHEMA"
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:136
+msgid "Show more details in output, e.g. the entry DN."
+msgstr "Zeigt mehr Details in der Ausgabe an, die DNs der Einträge."
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:168
+msgid ""
+"Start reporting password hashing schemes of {attr} attributes in in LDAP instance {inst!r} "
+"({url}) ..."
+msgstr ""
+"Beginne mit der Ausgabe der Passwort-Hashing-Mechanismen der {attr}-Attribute in der LDAP-"
+"Instanz {inst!r} ({url}) …"
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:181
+msgid "Used LDAP filter: {!r}."
+msgstr "Verwendeter LDAP-Filter: {!r}."
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:223
+msgid "Found entry {!r} with data:"
+msgstr "Fand Eintrag {!r} mit folgenden Daten:"
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:227
+msgid "Found entry DNs:"
+msgstr "Gefundener Eintrag-DNs:"
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:75
 msgid ""
 "Removes all LDAP groups, which does not have any members, that means, they are one of the "
 "following objectClasses: {ocl}, and they have none of the following attributes: {atl}."
@@ -445,77 +509,77 @@ msgstr ""
 "Löscht alle LDAP-Gruppen, die keine Mitglieder haben. Das heißt, sie haben eine der folgenden "
 "Objektklassen: {ocl}, und sie besitzen keines der folgenden Attribute: {atl}."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:125 lib/pp_admintools/app/remove_ldap_user.py:134
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:124 lib/pp_admintools/app/remove_ldap_user.py:134
 msgid "Removing options"
 msgstr "Lösch-Optionen"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:129
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:128
 msgid "The base DN used as the root for the LDAP search."
 msgstr "Die Basis-DN, die als Ausgangspunkt bei der LDAP-Suche verwendet werden soll."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:155 lib/pp_admintools/app/remove_ldap_user.py:202
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:154 lib/pp_admintools/app/remove_ldap_user.py:202
 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/clean_empty_ldap_groups.py:162 lib/pp_admintools/app/remove_ldap_user.py:209
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:161 lib/pp_admintools/app/remove_ldap_user.py:209
 msgid "LDAP instance {!r} not found in configuration."
 msgstr "Die LDAP-Instanz {!r} wurde nicht in der Konfiguration gefunden."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:170 lib/pp_admintools/app/remove_ldap_user.py:217
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:169 lib/pp_admintools/app/remove_ldap_user.py:217
 msgid "LDAP instance {!r} has only readonly access."
 msgstr "Die LDAP-Instanz {!r} besitzt nur Lesezugriffsrechte."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:175 lib/pp_admintools/app/remove_ldap_user.py:222
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:174 lib/pp_admintools/app/remove_ldap_user.py:222
 msgid "No admin access to LDAP instance {!r}."
 msgstr "Keine Admin-Zugriffsrechte bei LDAP-Instanz {!r}."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:185
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:184
 msgid "Searching for empty groups ..."
 msgstr "Suche nach leeren Gruppen …"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:192
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:191
 msgid "No more empty groups left for removing."
 msgstr "Keine weitern Gruppen zu Löschen."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:195
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:194
 msgid "Lap {} on searching for empty groups to remove."
 msgstr "Runde {} bei der Suche nach zu löschenden leeren Gruppen."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:230
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:229
 msgid "Searching for member attributes of {!r} ..."
 msgstr "Suche nach Mitglieds-Attributen von {!r} …"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:240
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:239
 msgid "Found attribute {at!r} in group {g!r}."
 msgstr "Fand Attribut {at!r} in Gruppe {g!r}."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:243
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:242
 msgid "Group {!r} is not empty!"
 msgstr "Die Gruppe {!r} ist nicht leer!"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:248
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:247
 msgid "Removing group {!r} ..."
 msgstr "Lösche Gruppe {!r} …"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:252
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:251
 msgid "Dont't removing group {!r}."
 msgstr "Kein Löschen der Gruppe {!r}."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:259
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:258
 msgid "Do you really want to remove the group '{}'"
 msgstr "Möchten Sie die Gruppe '{}' wirklich löschen"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:260
 msgid "[{yes}/{no}]?"
 msgstr "[{yes}/{no}]?"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:262 lib/pp_admintools/app/ldap.py:336
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261 lib/pp_admintools/app/ldap.py:337
 #: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:308
 #: lib/pp_admintools/app/set_ldap_password.py:489
 msgid "No"
 msgstr "Nein"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:262 lib/pp_admintools/app/mirror_ldap.py:238
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261 lib/pp_admintools/app/mirror_ldap.py:238
 #: lib/pp_admintools/app/remove_ldap_user.py:308 lib/pp_admintools/app/set_ldap_password.py:489
 msgid "yes"
 msgstr "ja"
@@ -833,7 +897,7 @@ msgstr "' …"
 msgid "Checking for dependend unique attribute '"
 msgstr "Überprüfe abhängig eindeutiges Attribut '"
 
-#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:564
+#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:586
 msgid "Used filter:"
 msgstr "Verwendeter Filter:"
 
@@ -841,89 +905,89 @@ msgstr "Verwendeter Filter:"
 msgid "No duplicates for attribute {!r} found."
 msgstr "Keine Duplikate für das Attribut {!r} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:115 lib/pp_admintools/app/ldap.py:283
+#: lib/pp_admintools/app/ldap.py:116 lib/pp_admintools/app/ldap.py:284
 msgid "The path {!r} must be an absolute path."
 msgstr "Der Pfad {!r} muss ein absoluter Pfad sein."
 
-#: lib/pp_admintools/app/ldap.py:121 lib/pp_admintools/app/ldap.py:287
-#: lib/pp_admintools/app/ldap.py:1541
+#: lib/pp_admintools/app/ldap.py:122 lib/pp_admintools/app/ldap.py:288
+#: lib/pp_admintools/app/ldap.py:1603
 msgid "The file {!r} does not exists."
 msgstr "Die Datei {!r} existiert nicht."
 
-#: lib/pp_admintools/app/ldap.py:125 lib/pp_admintools/app/ldap.py:291
-#: lib/pp_admintools/app/ldap.py:1546
+#: lib/pp_admintools/app/ldap.py:126 lib/pp_admintools/app/ldap.py:292
+#: lib/pp_admintools/app/ldap.py:1608
 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:129 lib/pp_admintools/app/ldap.py:295
-#: lib/pp_admintools/app/ldap.py:1551
+#: lib/pp_admintools/app/ldap.py:130 lib/pp_admintools/app/ldap.py:296
+#: lib/pp_admintools/app/ldap.py:1613
 msgid "The given file {!r} is not readable."
 msgstr "Die angegebene Datei {} ist nicht lesbar."
 
-#: lib/pp_admintools/app/ldap.py:151
+#: lib/pp_admintools/app/ldap.py:152
 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:156
+#: lib/pp_admintools/app/ldap.py:157
 msgid "Wrong port number {!r}:"
 msgstr "Ungültige Portnummer {!r}."
 
-#: lib/pp_admintools/app/ldap.py:325
+#: lib/pp_admintools/app/ldap.py:326
 msgid "LDAP options"
 msgstr "LDAP-Optionen"
 
-#: lib/pp_admintools/app/ldap.py:327
+#: lib/pp_admintools/app/ldap.py:328
 msgid "Options for the default LDAP connection"
 msgstr "Optionen für die Vorgabe-LDAP-Verbindung"
 
-#: lib/pp_admintools/app/ldap.py:329
+#: lib/pp_admintools/app/ldap.py:330
 msgid "Options fo LDAP connections"
 msgstr "Optionen für die LDAP-Verbindungen"
 
-#: lib/pp_admintools/app/ldap.py:338
+#: lib/pp_admintools/app/ldap.py:339
 msgid "Yes"
 msgstr "Ja"
 
-#: lib/pp_admintools/app/ldap.py:344
+#: lib/pp_admintools/app/ldap.py:345 lib/pp_admintools/app/ldap.py:441
 msgid "HOST"
 msgstr "HOST"
 
-#: lib/pp_admintools/app/ldap.py:345
+#: lib/pp_admintools/app/ldap.py:346
 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:352
+#: lib/pp_admintools/app/ldap.py:353
 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:357 lib/pp_admintools/app/mail.py:250
-#: lib/pp_admintools/app/pdns.py:273
+#: lib/pp_admintools/app/ldap.py:358 lib/pp_admintools/app/ldap.py:447
+#: lib/pp_admintools/app/mail.py:250 lib/pp_admintools/app/pdns.py:273
 msgid "PORT"
 msgstr "PORT"
 
-#: lib/pp_admintools/app/ldap.py:359
+#: lib/pp_admintools/app/ldap.py:360
 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:365
+#: lib/pp_admintools/app/ldap.py:366
 msgid "The base DN used as the root for the LDAP searches. Default: {!r}"
 msgstr "Die Basis-DN, die als Ausgangspunkt bei LDAP-Suchen verwendet werden soll. Vorgabe: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:372
+#: lib/pp_admintools/app/ldap.py:373
 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:380 lib/pp_admintools/app/mk_ldap_passwd.py:131
+#: lib/pp_admintools/app/ldap.py:381 lib/pp_admintools/app/mk_ldap_passwd.py:131
 #: lib/pp_admintools/app/set_ldap_password.py:131 lib/pp_admintools/app/set_ldap_password.py:132
 #: lib/pp_admintools/app/set_ldap_password.py:149 lib/pp_admintools/app/set_ldap_password.py:152
 msgid "PASSWORD"
 msgstr "PASSWORT"
 
-#: lib/pp_admintools/app/ldap.py:381
+#: lib/pp_admintools/app/ldap.py:382
 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:386
+#: lib/pp_admintools/app/ldap.py:387
 msgid ""
 "Prompt for simple LDAP authentication. This is used instead of specifying the password on the "
 "command line."
@@ -931,30 +995,30 @@ 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:392 lib/pp_admintools/app/set_ldap_password.py:143
+#: lib/pp_admintools/app/ldap.py:393 lib/pp_admintools/app/set_ldap_password.py:143
 #: lib/pp_admintools/app/set_ldap_password.py:145
 msgid "PASSWORD_FILE"
 msgstr "PASSWORT_DATEI"
 
-#: lib/pp_admintools/app/ldap.py:394
+#: lib/pp_admintools/app/ldap.py:395
 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:402 lib/pp_admintools/app/pdns.py:247
+#: lib/pp_admintools/app/ldap.py:403 lib/pp_admintools/app/pdns.py:247
 msgid "INSTANCE"
 msgstr "INSTANZ"
 
-#: lib/pp_admintools/app/ldap.py:405
+#: lib/pp_admintools/app/ldap.py:406
 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:409
+#: lib/pp_admintools/app/ldap.py:410
 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."
 
-#: lib/pp_admintools/app/ldap.py:413
+#: lib/pp_admintools/app/ldap.py:414
 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} "
@@ -966,258 +1030,280 @@ msgstr ""
 " 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."
 
-#: lib/pp_admintools/app/ldap.py:441
+#: lib/pp_admintools/app/ldap.py:442
+msgid "Override configured hostname or address of the LDAP server."
+msgstr "Überschreibt den konfigurierten Hostnamen oder die Adresse des zu verwendenden LDAP-Servers."
+
+#: lib/pp_admintools/app/ldap.py:449
+msgid "Override the configured port number to connect to the LDAP server."
+msgstr "Überschreibt den konfigurierten TCP Port für die Verbindung mit dem LDAP-Server."
+
+#: lib/pp_admintools/app/ldap.py:454
+msgid "Override the configured base DN of the instance used as the root for the LDAP searches."
+msgstr ""
+"Überschreibt die konfigurierte Basis-DN, die als Ausgangspunkt bei der LDAP-Suche verwendet "
+"werden soll."
+
+#: lib/pp_admintools/app/ldap.py:463
 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:468
+#: lib/pp_admintools/app/ldap.py:490
 msgid "Limiting console timeout to {} seconds due to LDAP timeout."
 msgstr ""
 "Begrenze wegen des LDAP-Zeitüberschreitungslimits das Zeitüberschreitungslimit der Konsole auf "
 "{} Sekunden."
 
-#: lib/pp_admintools/app/ldap.py:479
+#: lib/pp_admintools/app/ldap.py:501
 msgid "Checking given instances."
 msgstr "Überprüfe die übergebenen Instanzen."
 
-#: lib/pp_admintools/app/ldap.py:483
+#: lib/pp_admintools/app/ldap.py:505
 msgid "Given insts:"
 msgstr "Übergebene Instanzen:"
 
-#: lib/pp_admintools/app/ldap.py:534
+#: lib/pp_admintools/app/ldap.py:556
 msgid "Configured LDAP instances:"
 msgstr "Konfigurierte LDAP-Instanzen:"
 
-#: lib/pp_admintools/app/ldap.py:551
+#: lib/pp_admintools/app/ldap.py:573
 msgid "Verifying given instances ..."
 msgstr "Überprüfe Instanzen …"
 
-#: lib/pp_admintools/app/ldap.py:587
+#: lib/pp_admintools/app/ldap.py:609
 msgid "Filtered instances:"
 msgstr "Gefilterte Instanzen:"
 
-#: lib/pp_admintools/app/ldap.py:592
+#: lib/pp_admintools/app/ldap.py:617
 msgid "LDAP instances to use:"
 msgstr "Verwendete LDAP-Instanzen:"
 
-#: lib/pp_admintools/app/ldap.py:608
+#: lib/pp_admintools/app/ldap.py:633
 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:663
+#: lib/pp_admintools/app/ldap.py:713
 msgid "Preparations ..."
 msgstr "Vorbereitungen …"
 
-#: lib/pp_admintools/app/ldap.py:666
+#: lib/pp_admintools/app/ldap.py:716
 msgid "Open all necessary LDAP connections ..."
 msgstr "Öffne alle notwendigen LDAP-Verbindungen …"
 
-#: lib/pp_admintools/app/ldap.py:680
+#: lib/pp_admintools/app/ldap.py:730
 msgid "Password of user {usr} on LDAP instance {inst}:"
 msgstr "Passwort des Nutzers {usr} der LDAP-Instanz {inst}:"
 
-#: lib/pp_admintools/app/ldap.py:689
+#: lib/pp_admintools/app/ldap.py:739
 msgid "Info about LDAP server {}:"
 msgstr "Informationen zu LDAP-Server {}:"
 
-#: lib/pp_admintools/app/ldap.py:699
+#: lib/pp_admintools/app/ldap.py:749
 msgid "Trying to get LDAP server object for {} ..."
 msgstr "Versuche ein LDAP-Server-Objekt für {} zu bekommen …"
 
-#: lib/pp_admintools/app/ldap.py:715
+#: lib/pp_admintools/app/ldap.py:765
 msgid "Connect options to server {!r}:"
 msgstr "Verbindungs-Optionen zu Server {!r}:"
 
-#: lib/pp_admintools/app/ldap.py:722
+#: lib/pp_admintools/app/ldap.py:772
 msgid "LDAP server {s}: {re}"
 msgstr "LDAP-Server {s}: {re}"
 
-#: lib/pp_admintools/app/ldap.py:736
+#: lib/pp_admintools/app/ldap.py:786
 msgid "Connecting to LDAP server {url} as {dn!r} ..."
 msgstr "Verbinde mit LDAP-Server {url} als {dn!r} …"
 
-#: lib/pp_admintools/app/ldap.py:748
+#: lib/pp_admintools/app/ldap.py:794
+msgid "Could not connect to LDAP server {url!r} as {user!r}: {e}"
+msgstr "Konnte keine Verbindung zum LDAP-Server {url!r} als Nutzer {url!r} herstellen: {e}"
+
+#: lib/pp_admintools/app/ldap.py:799
+msgid "{c} on connecting to LDAP server {url!r} as {user!r}: {e}"
+msgstr "{c} beim Verbinden mit LDAP-Server {url} als {user!r}: {e}"
+
+#: lib/pp_admintools/app/ldap.py:809
 msgid "Finishing ..."
 msgstr "Beende …"
 
-#: lib/pp_admintools/app/ldap.py:758
+#: lib/pp_admintools/app/ldap.py:820
 msgid "Disconnecting from all remaining LDAP instances ..."
 msgstr "Trenne Verbindung zu allen verbleibenden LDAP-Instanzen …"
 
-#: lib/pp_admintools/app/ldap.py:771
+#: lib/pp_admintools/app/ldap.py:833
 msgid "Unbinding from LDAP server {!r} ..."
 msgstr "Trenne Bindung zu LDAP-Server {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:778
+#: lib/pp_admintools/app/ldap.py:840
 msgid "Disconnecting from LDAP server {!r} ..."
 msgstr "Trenne Verbindung zu LDAP-Server {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:805
+#: lib/pp_admintools/app/ldap.py:867
 msgid "Searching in {uri}/{bdn} for all entries with filter {fltr!r}, giving attributes:"
 msgstr "Suche in {uri}/{bdn} nach allen Einträgen mit dem Filter {fltr!r} und den angegebenen Attributen:"
 
-#: lib/pp_admintools/app/ldap.py:817
+#: lib/pp_admintools/app/ldap.py:879
 msgid "Result of searching:"
 msgstr "Ergebnis der Suche:"
 
-#: lib/pp_admintools/app/ldap.py:822
+#: lib/pp_admintools/app/ldap.py:884
 msgid "Found entry {!r}."
 msgstr "Gefundener Eintrag:"
 
-#: lib/pp_admintools/app/ldap.py:829 lib/pp_admintools/app/ldap.py:873
+#: lib/pp_admintools/app/ldap.py:891 lib/pp_admintools/app/ldap.py:935
 msgid "Found one entry with filter {fltr!r} in {uri}/{bdn}."
 msgid_plural "Found {nr} enries with filter {fltr!r} in {uri}/{bdn}."
 msgstr[0] "Fand einen Eintrag mit dem Filter {fltr!r} in {uri}/{bdn}."
 msgstr[1] "Fand {nr} Einträge mit dem Filter {fltr!r} in {uri}/{bdn}."
 
-#: lib/pp_admintools/app/ldap.py:833
+#: lib/pp_admintools/app/ldap.py:895
 msgid "Got response entries:"
 msgstr "Erhaltene Antworteinträge:"
 
-#: lib/pp_admintools/app/ldap.py:837 lib/pp_admintools/app/ldap.py:885
+#: lib/pp_admintools/app/ldap.py:899 lib/pp_admintools/app/ldap.py:947
 msgid "No entry found with filter {fltr!r} in {uri}/{bdn}."
 msgstr "Keinen Eintrag mit dem Filter {fltr!r} in {uri}/{bdn} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:861 lib/pp_admintools/app/ldap.py:915
+#: lib/pp_admintools/app/ldap.py:923 lib/pp_admintools/app/ldap.py:977
 msgid "Using LDAP filter: {!r}"
 msgstr "Verwende LDAP-Filter: {!r}."
 
-#: lib/pp_admintools/app/ldap.py:877 lib/pp_admintools/app/ldap.py:924
+#: lib/pp_admintools/app/ldap.py:939 lib/pp_admintools/app/ldap.py:986
 msgid "Result of searching for DNs of all entries:"
 msgstr "Ergebnis der Suche nach den DNs aller Einträge:"
 
-#: lib/pp_admintools/app/ldap.py:881 lib/pp_admintools/app/ldap.py:928
-#: lib/pp_admintools/app/ldap.py:1026 lib/pp_admintools/app/ldap.py:1079
-#: lib/pp_admintools/app/ldap.py:1132 lib/pp_admintools/app/ldap.py:1220
-#: lib/pp_admintools/app/ldap.py:1420 lib/pp_admintools/app/ldap.py:1454
-#: lib/pp_admintools/app/ldap.py:1488 lib/pp_admintools/app/ldap.py:1522
+#: lib/pp_admintools/app/ldap.py:943 lib/pp_admintools/app/ldap.py:990
+#: lib/pp_admintools/app/ldap.py:1088 lib/pp_admintools/app/ldap.py:1141
+#: lib/pp_admintools/app/ldap.py:1194 lib/pp_admintools/app/ldap.py:1282
+#: lib/pp_admintools/app/ldap.py:1482 lib/pp_admintools/app/ldap.py:1516
+#: lib/pp_admintools/app/ldap.py:1550 lib/pp_admintools/app/ldap.py:1584
 msgid "Got a response entry:"
 msgstr "Erhaltener Antwort-Eintrag:"
 
-#: lib/pp_admintools/app/ldap.py:911
+#: lib/pp_admintools/app/ldap.py:973
 msgid "Getting all Entry DNs of LDAP instance {i!r} below {b!r}."
 msgstr "Hole DNs aller Einträge der LDAP-Instanz {i!r} unterhalb von {b!r}."
 
-#: lib/pp_admintools/app/ldap.py:950
+#: lib/pp_admintools/app/ldap.py:1012
 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:955
+#: lib/pp_admintools/app/ldap.py:1017
 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:962
+#: lib/pp_admintools/app/ldap.py:1024
 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:969
+#: lib/pp_admintools/app/ldap.py:1031
 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:978 lib/pp_admintools/app/remove_ldap_user.py:318
+#: lib/pp_admintools/app/ldap.py:1040 lib/pp_admintools/app/remove_ldap_user.py:318
 msgid "Empty user given."
 msgstr "Leere Nutzername übergeben."
 
-#: lib/pp_admintools/app/ldap.py:981
+#: lib/pp_admintools/app/ldap.py:1043
 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:1011 lib/pp_admintools/app/ldap.py:1064
-#: lib/pp_admintools/app/ldap.py:1117 lib/pp_admintools/app/ldap.py:1408
-#: lib/pp_admintools/app/ldap.py:1442 lib/pp_admintools/app/ldap.py:1476
-#: lib/pp_admintools/app/ldap.py:1510
+#: lib/pp_admintools/app/ldap.py:1073 lib/pp_admintools/app/ldap.py:1126
+#: lib/pp_admintools/app/ldap.py:1179 lib/pp_admintools/app/ldap.py:1470
+#: lib/pp_admintools/app/ldap.py:1504 lib/pp_admintools/app/ldap.py:1538
+#: lib/pp_admintools/app/ldap.py:1572
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr "Suche in {uri}/{bdn} mit dem Filter: {fltr}"
 
-#: lib/pp_admintools/app/ldap.py:1022
+#: lib/pp_admintools/app/ldap.py:1084
 msgid "Result of searching for mail address {m!r}:"
 msgstr "Ergebnis der Suche nach der Mailadresse {m!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1033
+#: lib/pp_admintools/app/ldap.py:1095
 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:1075
+#: lib/pp_admintools/app/ldap.py:1137
 msgid "Result of searching for uid {u!r}:"
 msgstr "Ergebnis der Suche nach UID {u!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1086
+#: lib/pp_admintools/app/ldap.py:1148
 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:1128
+#: lib/pp_admintools/app/ldap.py:1190
 msgid "Result of searching for CN {cn!r}:"
 msgstr "Ergebnis der Suche nach CN {cn!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1139
+#: lib/pp_admintools/app/ldap.py:1201
 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:1156 lib/pp_admintools/app/set_ldap_password.py:409
+#: lib/pp_admintools/app/ldap.py:1218 lib/pp_admintools/app/set_ldap_password.py:409
 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:1174
+#: lib/pp_admintools/app/ldap.py:1236
 msgid "ObjectClasses of {dn!r}:"
 msgstr "ObjectClasses von {dn!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1184
+#: lib/pp_admintools/app/ldap.py:1246
 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:1206
+#: lib/pp_admintools/app/ldap.py:1268
 msgid "Searching DN {dn!r} in {uri}."
 msgstr "Suche DN {dn!r} in {uri}."
 
-#: lib/pp_admintools/app/ldap.py:1216
+#: lib/pp_admintools/app/ldap.py:1278
 msgid "Result of searching for DN {dn!r}:"
 msgstr "Ergebnis der Suche nach dem DN {dn!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1224
+#: lib/pp_admintools/app/ldap.py:1286
 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:1269
+#: lib/pp_admintools/app/ldap.py:1331
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr "Erstelle Eintrag {dn!r} in {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1275
+#: lib/pp_admintools/app/ldap.py:1337
 msgid "Simulation mode - entry will not be created."
 msgstr "Simulationsmodus - der Eintrag wird nicht erstellt."
 
-#: lib/pp_admintools/app/ldap.py:1282
+#: lib/pp_admintools/app/ldap.py:1344
 msgid "Creation of entry {dn!r} was NOT successfull - {c}: {e}"
 msgstr "Die Erstellung des Eintrags {dn!r} war NICHT erfolgreich - {c}: {e}"
 
-#: lib/pp_admintools/app/ldap.py:1297
+#: lib/pp_admintools/app/ldap.py:1359
 msgid "Creation status: {!r}."
 msgstr "Erstellungsstatus: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:1299
+#: lib/pp_admintools/app/ldap.py:1361
 msgid "Result of creating:"
 msgstr "Ergebnis der Erstellung:"
 
-#: lib/pp_admintools/app/ldap.py:1302
+#: lib/pp_admintools/app/ldap.py:1364
 msgid "Creation of entry {dn!r} was NOT successful: {desc} - {msg}"
 msgstr "Die Erstellung des Eintrags {dn!r} war NICHT erfolgreich - {desc}: {msg}"
 
-#: lib/pp_admintools/app/ldap.py:1308
+#: lib/pp_admintools/app/ldap.py:1370
 msgid "Creation successful."
 msgstr "Die Erstellung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1319
+#: lib/pp_admintools/app/ldap.py:1381
 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:1324
+#: lib/pp_admintools/app/ldap.py:1386
 msgid "Simulation mode - changes are not applied."
 msgstr "Simulationsmodus - hier wird jetzt nichts geändert."
 
-#: lib/pp_admintools/app/ldap.py:1330
+#: lib/pp_admintools/app/ldap.py:1392
 msgid "Modification of {dn!r} was NOT successfull - {c}: {e}"
 msgstr "Die Änderung von {dn!r} war NICHT erfolgreich - {c}: {e}"
 
-#: lib/pp_admintools/app/ldap.py:1332 lib/pp_admintools/app/ldap.py:1351
+#: lib/pp_admintools/app/ldap.py:1394 lib/pp_admintools/app/ldap.py:1413
 #: lib/pp_admintools/app/remove_ldap_user.py:449 lib/pp_admintools/app/remove_ldap_user.py:476
 #: lib/pp_admintools/app/remove_ldap_user.py:503 lib/pp_admintools/app/remove_ldap_user.py:534
 #: lib/pp_admintools/app/remove_ldap_user.py:565 lib/pp_admintools/app/remove_ldap_user.py:681
@@ -1225,72 +1311,72 @@ msgstr "Die Änderung von {dn!r} war NICHT erfolgreich - {c}: {e}"
 msgid "Changes:"
 msgstr "Änderungen:"
 
-#: lib/pp_admintools/app/ldap.py:1344
+#: lib/pp_admintools/app/ldap.py:1406
 msgid "Modification status: {!r}."
 msgstr "Änderungsstatus: {!r}."
 
-#: lib/pp_admintools/app/ldap.py:1346
+#: lib/pp_admintools/app/ldap.py:1408
 msgid "Result of modifying:"
 msgstr "Ergebnis der Änderung:"
 
-#: lib/pp_admintools/app/ldap.py:1349
+#: lib/pp_admintools/app/ldap.py:1411
 msgid "Modification of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr "Die Änderung von {dn!r} war NICHT erfolgreich - {desc}: {msg}"
 
-#: lib/pp_admintools/app/ldap.py:1354
+#: lib/pp_admintools/app/ldap.py:1416
 msgid "Modification successful."
 msgstr "Die Änderung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1364
+#: lib/pp_admintools/app/ldap.py:1426
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr "Lösche LDAP-Eintrag {dn!r} in {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1369
+#: lib/pp_admintools/app/ldap.py:1431
 msgid "Simulation mode - deletion will not be executed."
 msgstr "Simulationsmodus - hier wird jetzt nichts gelöscht."
 
-#: lib/pp_admintools/app/ldap.py:1375
+#: lib/pp_admintools/app/ldap.py:1437
 msgid "Deletion of {dn!r} was NOT successfull - {c}: {e}"
 msgstr "Das Löschen von {dn!r} war NICHT erfolgreich - {c}: {e}"
 
-#: lib/pp_admintools/app/ldap.py:1380
+#: lib/pp_admintools/app/ldap.py:1442
 msgid "Deletion status: {!r}."
 msgstr "Löschstatus: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:1382
+#: lib/pp_admintools/app/ldap.py:1444
 msgid "Result of deletion:"
 msgstr "Ergebnis der Löschung:"
 
-#: lib/pp_admintools/app/ldap.py:1385
+#: lib/pp_admintools/app/ldap.py:1447
 msgid "Deletion of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr "Das Löschen von {dn!r} war NICHT erfolgreich - {desc}: {msg}"
 
-#: lib/pp_admintools/app/ldap.py:1389
+#: lib/pp_admintools/app/ldap.py:1451
 msgid "Deletion successful."
 msgstr "Die Löschung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1538
+#: lib/pp_admintools/app/ldap.py:1600
 msgid "Reading password file {!r} ..."
 msgstr "Lese Passwortdatei {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:1569
+#: lib/pp_admintools/app/ldap.py:1631
 msgid "Could not detect RDN from DN {!r}."
 msgstr "Konnte RDN nich aus {!r} ermitteln."
 
-#: lib/pp_admintools/app/ldap.py:1573
+#: lib/pp_admintools/app/ldap.py:1635
 msgid "Found RDN attribute {!r}."
 msgstr "Fand RDN-Attribut {!r}."
 
-#: lib/pp_admintools/app/ldap.py:1579
+#: lib/pp_admintools/app/ldap.py:1641
 msgid "RDN attribute {!r} will not be touched."
 msgstr "Das RDN-Attribut {!r} wird nicht angefasst."
 
-#: lib/pp_admintools/app/ldap.py:1585 lib/pp_admintools/app/ldap.py:1604
-#: lib/pp_admintools/app/ldap.py:1682
+#: lib/pp_admintools/app/ldap.py:1647 lib/pp_admintools/app/ldap.py:1666
+#: lib/pp_admintools/app/ldap.py:1744
 msgid "Attribute {!r} will not be touched."
 msgstr "Das Attribut {!r} wird nicht angefasst."
 
-#: lib/pp_admintools/app/ldap.py:1642
+#: lib/pp_admintools/app/ldap.py:1704
 msgid "Values to removed from attribute {!r}:"
 msgstr "Werte, die von Attribut {!r} gelöscht werden."
 
@@ -2129,10 +2215,6 @@ 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:183
-msgid "SCHEMA"
-msgstr "SCHEMA"
-
 #: lib/pp_admintools/app/set_ldap_password.py:187
 msgid ""
 "The user, which password in the given LDAP instance should be changed. It may be given by its "
@@ -2497,93 +2579,93 @@ msgstr "Suche nach API-Schlüssel für PowerDNS-Instanz {!r} …"
 msgid "Found API key of PDNS instance {inst!r}: {key!r}."
 msgstr "Fand API-Schlüssel für PowerDNS-Instanz {inst!r}: {key!r}."
 
-#: lib/pp_admintools/handler/ldap_password.py:60
+#: lib/pp_admintools/handler/ldap_password.py:61
 msgid "Encryption schema {!r} not found."
 msgstr "Das Verschlüsselungs-Schema {!r} wurde nicht gefunden."
 
-#: lib/pp_admintools/handler/ldap_password.py:114
+#: lib/pp_admintools/handler/ldap_password.py:133
 msgid "The ancient and notorious 3 DES crypt method."
 msgstr "Die antike und berüchtigte 3 DES Verschlüsselungsmethode."
 
-#: lib/pp_admintools/handler/ldap_password.py:115 lib/pp_admintools/handler/ldap_password.py:118
+#: lib/pp_admintools/handler/ldap_password.py:134 lib/pp_admintools/handler/ldap_password.py:137
 msgid "Pure {} hashing method."
 msgstr "Reine {}-hashing Methode."
 
-#: lib/pp_admintools/handler/ldap_password.py:116 lib/pp_admintools/handler/ldap_password.py:119
-#: lib/pp_admintools/handler/ldap_password.py:121 lib/pp_admintools/handler/ldap_password.py:123
+#: lib/pp_admintools/handler/ldap_password.py:135 lib/pp_admintools/handler/ldap_password.py:138
+#: lib/pp_admintools/handler/ldap_password.py:140 lib/pp_admintools/handler/ldap_password.py:142
 msgid "A {} based hashing algorithm."
 msgstr "Ein {}-basierter Hashing-Algorithmus"
 
-#: lib/pp_admintools/handler/ldap_password.py:117 lib/pp_admintools/handler/ldap_password.py:120
-#: lib/pp_admintools/handler/ldap_password.py:122 lib/pp_admintools/handler/ldap_password.py:124
+#: lib/pp_admintools/handler/ldap_password.py:136 lib/pp_admintools/handler/ldap_password.py:139
+#: lib/pp_admintools/handler/ldap_password.py:141 lib/pp_admintools/handler/ldap_password.py:143
 msgid "Salted {} hashing method."
 msgstr "Gesalzene {}-hashing Methode."
 
-#: lib/pp_admintools/handler/ldap_password.py:125
+#: lib/pp_admintools/handler/ldap_password.py:144
 msgid "A hashing method derived from {} with additional computing rounds."
 msgstr "Eine von {} abgeleitete Hashing-Methode mit zusätzlichen Berechnungsrunden."
 
-#: lib/pp_admintools/handler/ldap_password.py:245
+#: lib/pp_admintools/handler/ldap_password.py:268
 msgid "Invalid schema {!r} given for update."
 msgstr "Ungültiges Schema {!r} für Update angegeben."
 
-#: lib/pp_admintools/handler/ldap_password.py:282
+#: lib/pp_admintools/handler/ldap_password.py:305
 msgid "Usable Hashing schemes:"
 msgstr "Verfügbare Hashing-Schemen:"
 
-#: lib/pp_admintools/handler/ldap_password.py:291
+#: lib/pp_admintools/handler/ldap_password.py:314
 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/handler/ldap_password.py:295
+#: lib/pp_admintools/handler/ldap_password.py:318
 msgid "This is the default schema."
 msgstr "Das ist das Vorgabe-Schema."
 
-#: lib/pp_admintools/handler/ldap_password.py:339
+#: lib/pp_admintools/handler/ldap_password.py:362
 msgid "The password schema {!r} does not support a password salt."
 msgstr "Das Passwort-Schema {!r} unterstützt keine Passwort-Salt."
 
-#: lib/pp_admintools/handler/ldap_password.py:343
+#: lib/pp_admintools/handler/ldap_password.py:366
 msgid "The password salt must be at least by {} characters."
 msgstr "Der Passwort-Salt muss mindestens {} Zeichen lang sein."
 
-#: lib/pp_admintools/handler/ldap_password.py:347
+#: lib/pp_admintools/handler/ldap_password.py:370
 msgid "The password salt may have a length of maximum {} characters."
 msgstr "Der Passwort-Salt darf höchstens {} Zeichen lang sein."
 
-#: lib/pp_admintools/handler/ldap_password.py:357
+#: lib/pp_admintools/handler/ldap_password.py:380
 msgid "Found invalid character {!r} in password salt."
 msgstr "Ungültige Zeichen {!r} im Passwort-Salt gefunden."
 
-#: lib/pp_admintools/handler/ldap_password.py:370
+#: lib/pp_admintools/handler/ldap_password.py:393
 msgid "The password schema {!r} does not support calculation rounds."
 msgstr "Das Passwort-Schema {!r} unterstützt keine Berechnungsrunden."
 
-#: lib/pp_admintools/handler/ldap_password.py:376
+#: lib/pp_admintools/handler/ldap_password.py:399
 msgid "Wrong value {v!r} for calculation rounds: {e}"
 msgstr "Ungültiger Wert {v!r} für Berechnungsrunden: {e}"
 
-#: lib/pp_admintools/handler/ldap_password.py:380
+#: lib/pp_admintools/handler/ldap_password.py:403
 msgid "The value for the calculation rounds has to be at least {}."
 msgstr "Der Wert für Berechnungsrunden muss mindestens {} betragen."
 
-#: lib/pp_admintools/handler/ldap_password.py:385
+#: lib/pp_admintools/handler/ldap_password.py:408
 msgid "The value for the calculation rounds has to at most {}."
 msgstr "Der Wert für Berechnungsrunden darf höchstens {} betragen."
 
-#: lib/pp_admintools/handler/ldap_password.py:418
+#: lib/pp_admintools/handler/ldap_password.py:441
 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/handler/ldap_password.py:424
+#: lib/pp_admintools/handler/ldap_password.py:447
 msgid "Testing quality of new password ..."
 msgstr "Teste Qualität des neuen Passwortes …"
 
-#: lib/pp_admintools/handler/ldap_password.py:428
+#: lib/pp_admintools/handler/ldap_password.py:451
 msgid "Quality of the new password is not sufficient:"
 msgstr "Die Qualität des neuen Passwortes ist nicht ausreichend:"
 
index ad3e12ba8e853659c7007766c1829aa4efd4850b..9c7b51a92a58dc5157e9fd4ac44603a6f565d8a0 100644 (file)
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: pp_admintools 0.9.0\n"
+"Project-Id-Version: pp_admintools 0.10.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-06-15 16:42+0200\n"
-"PO-Revision-Date: 2023-06-15 16:20+0200\n"
+"POT-Creation-Date: 2023-08-22 13:39+0200\n"
+"PO-Revision-Date: 2023-08-22 14:45+0200\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: en_US\n"
 "Language-Team: Frank Brehm <frank.brehm@pixelpark.com>\n"
@@ -40,7 +40,7 @@ msgid ""
 "Default: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:439
+#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:461
 #: lib/pp_admintools/app/mirror_ldap.py:118 lib/pp_admintools/app/pdns.py:284
 msgid "SECONDS"
 msgstr ""
@@ -77,10 +77,10 @@ msgstr ""
 
 #: lib/pp_admintools/app/barracuda_sync.py:231 lib/pp_admintools/app/barracuda_sync.py:427
 #: lib/pp_admintools/app/dns_deploy_zones.py:434 lib/pp_admintools/app/dns_deploy_zones.py:788
-#: lib/pp_admintools/app/ldap.py:896 lib/pp_admintools/app/ldap.py:1029
-#: lib/pp_admintools/app/ldap.py:1082 lib/pp_admintools/app/ldap.py:1135
-#: lib/pp_admintools/app/ldap.py:1423 lib/pp_admintools/app/ldap.py:1457
-#: lib/pp_admintools/app/ldap.py:1491 lib/pp_admintools/app/ldap.py:1525
+#: lib/pp_admintools/app/ldap.py:958 lib/pp_admintools/app/ldap.py:1091
+#: lib/pp_admintools/app/ldap.py:1144 lib/pp_admintools/app/ldap.py:1197
+#: lib/pp_admintools/app/ldap.py:1485 lib/pp_admintools/app/ldap.py:1519
+#: lib/pp_admintools/app/ldap.py:1553 lib/pp_admintools/app/ldap.py:1587
 msgid "Result:"
 msgstr ""
 
@@ -284,7 +284,7 @@ msgstr ""
 msgid "LDAP Entries to modified:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1638
+#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1700
 msgid "Values to add to attribute {!r}:"
 msgstr ""
 
@@ -292,11 +292,11 @@ msgstr ""
 msgid "Values to be removed from attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1659
+#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1721
 msgid "Changes for attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1662
+#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1724
 msgid "No changes to attribute {!r}."
 msgstr ""
 
@@ -365,6 +365,7 @@ msgid ""
 msgstr ""
 
 #: lib/pp_admintools/app/check_ldap_dn_attributes.py:97
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:106
 msgid "Script options"
 msgstr ""
 
@@ -419,87 +420,138 @@ msgid "Checking DN-like attributes of entry {!r} ..."
 msgstr "Checking DN-like attributes of entry {!r} …"
 
 #: lib/pp_admintools/app/check_ldap_dn_attributes.py:219
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:234
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:190
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:233
 msgid "Got attributes:"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:76
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:84
+msgid ""
+"Reports the password hashing schemes of {attr} attributes in LDAP. Without a filter or a more "
+"special Base-DN the hashing schemes of all {attr} attributes in the LDAP tree are shown. One can"
+" filter the output by a regular LDAP-filter rule of by one or more hashing schemes."
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:109
+msgid "FILTER"
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:110
+msgid ""
+"An additional LDAP filter to limit the entries to print out their password hashing schema. "
+"Please note, that this filter will be wrapped by parantheses to combine it with the default "
+"filter {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:124
+msgid ""
+"One or more schemes (hashing methods) for filtering the {attr} attributes. It is possible to "
+"give here the value {val_list!r}, then all possible schemes are shown and exit."
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:130 lib/pp_admintools/app/set_ldap_password.py:183
+msgid "SCHEMA"
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:136
+msgid "Show more details in output, e.g. the entry DN."
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:168
+msgid ""
+"Start reporting password hashing schemes of {attr} attributes in in LDAP instance {inst!r} "
+"({url}) ..."
+msgstr "Start reporting password hashing schemes of {attr} attributes in in LDAP instance {inst!r} ({url})  …"
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:181
+msgid "Used LDAP filter: {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:223
+msgid "Found entry {!r} with data:"
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:227
+msgid "Found entry DNs:"
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:75
 msgid ""
 "Removes all LDAP groups, which does not have any members, that means, they are one of the "
 "following objectClasses: {ocl}, and they have none of the following attributes: {atl}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:125 lib/pp_admintools/app/remove_ldap_user.py:134
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:124 lib/pp_admintools/app/remove_ldap_user.py:134
 msgid "Removing options"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:129
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:128
 msgid "The base DN used as the root for the LDAP search."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:155 lib/pp_admintools/app/remove_ldap_user.py:202
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:154 lib/pp_admintools/app/remove_ldap_user.py:202
 msgid "Checking given instances for admin and read/write access."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:162 lib/pp_admintools/app/remove_ldap_user.py:209
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:161 lib/pp_admintools/app/remove_ldap_user.py:209
 msgid "LDAP instance {!r} not found in configuration."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:170 lib/pp_admintools/app/remove_ldap_user.py:217
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:169 lib/pp_admintools/app/remove_ldap_user.py:217
 msgid "LDAP instance {!r} has only readonly access."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:175 lib/pp_admintools/app/remove_ldap_user.py:222
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:174 lib/pp_admintools/app/remove_ldap_user.py:222
 msgid "No admin access to LDAP instance {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:185
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:184
 msgid "Searching for empty groups ..."
 msgstr "Searching for empty groups …"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:192
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:191
 msgid "No more empty groups left for removing."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:195
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:194
 msgid "Lap {} on searching for empty groups to remove."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:230
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:229
 msgid "Searching for member attributes of {!r} ..."
 msgstr "Searching for member attributes of {!r} …"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:240
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:239
 msgid "Found attribute {at!r} in group {g!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:243
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:242
 msgid "Group {!r} is not empty!"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:248
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:247
 msgid "Removing group {!r} ..."
 msgstr "Removing group {!r} …"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:252
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:251
 msgid "Dont't removing group {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:259
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:258
 msgid "Do you really want to remove the group '{}'"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:260
 msgid "[{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:262 lib/pp_admintools/app/ldap.py:336
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261 lib/pp_admintools/app/ldap.py:337
 #: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:308
 #: lib/pp_admintools/app/set_ldap_password.py:489
 msgid "No"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:262 lib/pp_admintools/app/mirror_ldap.py:238
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261 lib/pp_admintools/app/mirror_ldap.py:238
 #: lib/pp_admintools/app/remove_ldap_user.py:308 lib/pp_admintools/app/set_ldap_password.py:489
 msgid "yes"
 msgstr ""
@@ -805,7 +857,7 @@ msgstr "' …"
 msgid "Checking for dependend unique attribute '"
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:564
+#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:586
 msgid "Used filter:"
 msgstr ""
 
@@ -813,116 +865,116 @@ msgstr ""
 msgid "No duplicates for attribute {!r} found."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:115 lib/pp_admintools/app/ldap.py:283
+#: lib/pp_admintools/app/ldap.py:116 lib/pp_admintools/app/ldap.py:284
 msgid "The path {!r} must be an absolute path."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:121 lib/pp_admintools/app/ldap.py:287
-#: lib/pp_admintools/app/ldap.py:1541
+#: lib/pp_admintools/app/ldap.py:122 lib/pp_admintools/app/ldap.py:288
+#: lib/pp_admintools/app/ldap.py:1603
 msgid "The file {!r} does not exists."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:125 lib/pp_admintools/app/ldap.py:291
-#: lib/pp_admintools/app/ldap.py:1546
+#: lib/pp_admintools/app/ldap.py:126 lib/pp_admintools/app/ldap.py:292
+#: lib/pp_admintools/app/ldap.py:1608
 msgid "The given path {!r} exists, but is not a regular file."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:129 lib/pp_admintools/app/ldap.py:295
-#: lib/pp_admintools/app/ldap.py:1551
+#: lib/pp_admintools/app/ldap.py:130 lib/pp_admintools/app/ldap.py:296
+#: lib/pp_admintools/app/ldap.py:1613
 msgid "The given file {!r} is not readable."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:151
+#: lib/pp_admintools/app/ldap.py:152
 msgid "a port number must be greater than zero and less or equal to {}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:156
+#: lib/pp_admintools/app/ldap.py:157
 msgid "Wrong port number {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:325
+#: lib/pp_admintools/app/ldap.py:326
 msgid "LDAP options"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:327
+#: lib/pp_admintools/app/ldap.py:328
 msgid "Options for the default LDAP connection"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:329
+#: lib/pp_admintools/app/ldap.py:330
 msgid "Options fo LDAP connections"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:338
+#: lib/pp_admintools/app/ldap.py:339
 msgid "Yes"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:344
+#: lib/pp_admintools/app/ldap.py:345 lib/pp_admintools/app/ldap.py:441
 msgid "HOST"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:345
+#: lib/pp_admintools/app/ldap.py:346
 msgid "Hostname or address of the LDAP server to use. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:352
+#: lib/pp_admintools/app/ldap.py:353
 msgid "Use ldaps to connect to the LDAP server. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:357 lib/pp_admintools/app/mail.py:250
-#: lib/pp_admintools/app/pdns.py:273
+#: lib/pp_admintools/app/ldap.py:358 lib/pp_admintools/app/ldap.py:447
+#: lib/pp_admintools/app/mail.py:250 lib/pp_admintools/app/pdns.py:273
 msgid "PORT"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:359
+#: lib/pp_admintools/app/ldap.py:360
 msgid "The port number to connect to the LDAP server. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:365
+#: lib/pp_admintools/app/ldap.py:366
 msgid "The base DN used as the root for the LDAP searches. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:372
+#: lib/pp_admintools/app/ldap.py:373
 msgid "The Bind DN to use to connect to the LDAP server. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:380 lib/pp_admintools/app/mk_ldap_passwd.py:131
+#: lib/pp_admintools/app/ldap.py:381 lib/pp_admintools/app/mk_ldap_passwd.py:131
 #: lib/pp_admintools/app/set_ldap_password.py:131 lib/pp_admintools/app/set_ldap_password.py:132
 #: lib/pp_admintools/app/set_ldap_password.py:149 lib/pp_admintools/app/set_ldap_password.py:152
 msgid "PASSWORD"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:381
+#: lib/pp_admintools/app/ldap.py:382
 msgid "Use PASSWORD as the password for simple LDAP authentication."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:386
+#: lib/pp_admintools/app/ldap.py:387
 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:392 lib/pp_admintools/app/set_ldap_password.py:143
+#: lib/pp_admintools/app/ldap.py:393 lib/pp_admintools/app/set_ldap_password.py:143
 #: lib/pp_admintools/app/set_ldap_password.py:145
 msgid "PASSWORD_FILE"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:394
+#: lib/pp_admintools/app/ldap.py:395
 msgid "Use contents of PASSWORD_FILE as the password for simple authentication."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:402 lib/pp_admintools/app/pdns.py:247
+#: lib/pp_admintools/app/ldap.py:403 lib/pp_admintools/app/pdns.py:247
 msgid "INSTANCE"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:405
+#: lib/pp_admintools/app/ldap.py:406
 msgid "If not given, then the instance {!r} will be used."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:409
+#: lib/pp_admintools/app/ldap.py:410
 msgid "The LDAP instance (LDAP cluster) from configuration, where to execute this script."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:413
+#: lib/pp_admintools/app/ldap.py:414
 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} "
@@ -930,256 +982,276 @@ msgid ""
 "are shown, and the application is exiting."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:441
+#: lib/pp_admintools/app/ldap.py:442
+msgid "Override configured hostname or address of the LDAP server."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:449
+msgid "Override the configured port number to connect to the LDAP server."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:454
+msgid "Override the configured base DN of the instance used as the root for the LDAP searches."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:463
 msgid "Using the given timeout in seconds for all LDAP operations. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:468
+#: lib/pp_admintools/app/ldap.py:490
 msgid "Limiting console timeout to {} seconds due to LDAP timeout."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:479
+#: lib/pp_admintools/app/ldap.py:501
 msgid "Checking given instances."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:483
+#: lib/pp_admintools/app/ldap.py:505
 msgid "Given insts:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:534
+#: lib/pp_admintools/app/ldap.py:556
 msgid "Configured LDAP instances:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:551
+#: lib/pp_admintools/app/ldap.py:573
 msgid "Verifying given instances ..."
 msgstr "Verifying given instances …"
 
-#: lib/pp_admintools/app/ldap.py:587
+#: lib/pp_admintools/app/ldap.py:609
 msgid "Filtered instances:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:592
+#: lib/pp_admintools/app/ldap.py:617
 msgid "LDAP instances to use:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:608
+#: lib/pp_admintools/app/ldap.py:633
 msgid "LDAP instance {!r} not found in configuration or is not usable."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:663
+#: lib/pp_admintools/app/ldap.py:713
 msgid "Preparations ..."
 msgstr "Preparations …"
 
-#: lib/pp_admintools/app/ldap.py:666
+#: lib/pp_admintools/app/ldap.py:716
 msgid "Open all necessary LDAP connections ..."
 msgstr "Open all necessary LDAP connections …"
 
-#: lib/pp_admintools/app/ldap.py:680
+#: lib/pp_admintools/app/ldap.py:730
 msgid "Password of user {usr} on LDAP instance {inst}:"
 msgstr "Password of user {usr} on LDAP instance {inst}:"
 
-#: lib/pp_admintools/app/ldap.py:689
+#: lib/pp_admintools/app/ldap.py:739
 msgid "Info about LDAP server {}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:699
+#: lib/pp_admintools/app/ldap.py:749
 msgid "Trying to get LDAP server object for {} ..."
 msgstr "Trying to get LDAP server object for {} …"
 
-#: lib/pp_admintools/app/ldap.py:715
+#: lib/pp_admintools/app/ldap.py:765
 msgid "Connect options to server {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:722
+#: lib/pp_admintools/app/ldap.py:772
 msgid "LDAP server {s}: {re}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:736
+#: lib/pp_admintools/app/ldap.py:786
 msgid "Connecting to LDAP server {url} as {dn!r} ..."
 msgstr "Connecting to LDAP server {url} as {dn!r} …"
 
-#: lib/pp_admintools/app/ldap.py:748
+#: lib/pp_admintools/app/ldap.py:794
+msgid "Could not connect to LDAP server {url!r} as {user!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:799
+msgid "{c} on connecting to LDAP server {url!r} as {user!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:809
 msgid "Finishing ..."
 msgstr "Finishing …"
 
-#: lib/pp_admintools/app/ldap.py:758
+#: lib/pp_admintools/app/ldap.py:820
 msgid "Disconnecting from all remaining LDAP instances ..."
 msgstr "Disconnecting from all remaining LDAP instances …"
 
-#: lib/pp_admintools/app/ldap.py:771
+#: lib/pp_admintools/app/ldap.py:833
 msgid "Unbinding from LDAP server {!r} ..."
 msgstr "Unbinding from LDAP server {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:778
+#: lib/pp_admintools/app/ldap.py:840
 msgid "Disconnecting from LDAP server {!r} ..."
 msgstr "Disconnecting from LDAP server {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:805
+#: lib/pp_admintools/app/ldap.py:867
 msgid "Searching in {uri}/{bdn} for all entries with filter {fltr!r}, giving attributes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:817
+#: lib/pp_admintools/app/ldap.py:879
 msgid "Result of searching:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:822
+#: lib/pp_admintools/app/ldap.py:884
 msgid "Found entry {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:829 lib/pp_admintools/app/ldap.py:873
+#: lib/pp_admintools/app/ldap.py:891 lib/pp_admintools/app/ldap.py:935
 msgid "Found one entry with filter {fltr!r} in {uri}/{bdn}."
 msgid_plural "Found {nr} enries with filter {fltr!r} in {uri}/{bdn}."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/ldap.py:833
+#: lib/pp_admintools/app/ldap.py:895
 msgid "Got response entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:837 lib/pp_admintools/app/ldap.py:885
+#: lib/pp_admintools/app/ldap.py:899 lib/pp_admintools/app/ldap.py:947
 msgid "No entry found with filter {fltr!r} in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:861 lib/pp_admintools/app/ldap.py:915
+#: lib/pp_admintools/app/ldap.py:923 lib/pp_admintools/app/ldap.py:977
 msgid "Using LDAP filter: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:877 lib/pp_admintools/app/ldap.py:924
+#: lib/pp_admintools/app/ldap.py:939 lib/pp_admintools/app/ldap.py:986
 msgid "Result of searching for DNs of all entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:881 lib/pp_admintools/app/ldap.py:928
-#: lib/pp_admintools/app/ldap.py:1026 lib/pp_admintools/app/ldap.py:1079
-#: lib/pp_admintools/app/ldap.py:1132 lib/pp_admintools/app/ldap.py:1220
-#: lib/pp_admintools/app/ldap.py:1420 lib/pp_admintools/app/ldap.py:1454
-#: lib/pp_admintools/app/ldap.py:1488 lib/pp_admintools/app/ldap.py:1522
+#: lib/pp_admintools/app/ldap.py:943 lib/pp_admintools/app/ldap.py:990
+#: lib/pp_admintools/app/ldap.py:1088 lib/pp_admintools/app/ldap.py:1141
+#: lib/pp_admintools/app/ldap.py:1194 lib/pp_admintools/app/ldap.py:1282
+#: lib/pp_admintools/app/ldap.py:1482 lib/pp_admintools/app/ldap.py:1516
+#: lib/pp_admintools/app/ldap.py:1550 lib/pp_admintools/app/ldap.py:1584
 msgid "Got a response entry:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:911
+#: lib/pp_admintools/app/ldap.py:973
 msgid "Getting all Entry DNs of LDAP instance {i!r} below {b!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:950
+#: lib/pp_admintools/app/ldap.py:1012
 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:955
+#: lib/pp_admintools/app/ldap.py:1017
 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:962
+#: lib/pp_admintools/app/ldap.py:1024
 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:969
+#: lib/pp_admintools/app/ldap.py:1031
 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:978 lib/pp_admintools/app/remove_ldap_user.py:318
+#: lib/pp_admintools/app/ldap.py:1040 lib/pp_admintools/app/remove_ldap_user.py:318
 msgid "Empty user given."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:981
+#: lib/pp_admintools/app/ldap.py:1043
 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:1011 lib/pp_admintools/app/ldap.py:1064
-#: lib/pp_admintools/app/ldap.py:1117 lib/pp_admintools/app/ldap.py:1408
-#: lib/pp_admintools/app/ldap.py:1442 lib/pp_admintools/app/ldap.py:1476
-#: lib/pp_admintools/app/ldap.py:1510
+#: lib/pp_admintools/app/ldap.py:1073 lib/pp_admintools/app/ldap.py:1126
+#: lib/pp_admintools/app/ldap.py:1179 lib/pp_admintools/app/ldap.py:1470
+#: lib/pp_admintools/app/ldap.py:1504 lib/pp_admintools/app/ldap.py:1538
+#: lib/pp_admintools/app/ldap.py:1572
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1022
+#: lib/pp_admintools/app/ldap.py:1084
 msgid "Result of searching for mail address {m!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1033
+#: lib/pp_admintools/app/ldap.py:1095
 msgid "User with mail address {m!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1075
+#: lib/pp_admintools/app/ldap.py:1137
 msgid "Result of searching for uid {u!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1086
+#: lib/pp_admintools/app/ldap.py:1148
 msgid "User with uid {u!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1128
+#: lib/pp_admintools/app/ldap.py:1190
 msgid "Result of searching for CN {cn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1139
+#: lib/pp_admintools/app/ldap.py:1201
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1156 lib/pp_admintools/app/set_ldap_password.py:409
+#: lib/pp_admintools/app/ldap.py:1218 lib/pp_admintools/app/set_ldap_password.py:409
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1174
+#: lib/pp_admintools/app/ldap.py:1236
 msgid "ObjectClasses of {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1184
+#: lib/pp_admintools/app/ldap.py:1246
 msgid "Entry {dn!r} in {uri} seems not to be an account."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1206
+#: lib/pp_admintools/app/ldap.py:1268
 msgid "Searching DN {dn!r} in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1216
+#: lib/pp_admintools/app/ldap.py:1278
 msgid "Result of searching for DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1224
+#: lib/pp_admintools/app/ldap.py:1286
 msgid "Entry with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1269
+#: lib/pp_admintools/app/ldap.py:1331
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr "Creating entry {dn!r} on {uri}:"
 
-#: lib/pp_admintools/app/ldap.py:1275
+#: lib/pp_admintools/app/ldap.py:1337
 msgid "Simulation mode - entry will not be created."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1282
+#: lib/pp_admintools/app/ldap.py:1344
 msgid "Creation of entry {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1297
+#: lib/pp_admintools/app/ldap.py:1359
 msgid "Creation status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1299
+#: lib/pp_admintools/app/ldap.py:1361
 msgid "Result of creating:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1302
+#: lib/pp_admintools/app/ldap.py:1364
 msgid "Creation of entry {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1308
+#: lib/pp_admintools/app/ldap.py:1370
 msgid "Creation successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1319
+#: lib/pp_admintools/app/ldap.py:1381
 msgid "Applying changes on {uri} to DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1324
+#: lib/pp_admintools/app/ldap.py:1386
 msgid "Simulation mode - changes are not applied."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1330
+#: lib/pp_admintools/app/ldap.py:1392
 msgid "Modification of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1332 lib/pp_admintools/app/ldap.py:1351
+#: lib/pp_admintools/app/ldap.py:1394 lib/pp_admintools/app/ldap.py:1413
 #: lib/pp_admintools/app/remove_ldap_user.py:449 lib/pp_admintools/app/remove_ldap_user.py:476
 #: lib/pp_admintools/app/remove_ldap_user.py:503 lib/pp_admintools/app/remove_ldap_user.py:534
 #: lib/pp_admintools/app/remove_ldap_user.py:565 lib/pp_admintools/app/remove_ldap_user.py:681
@@ -1187,72 +1259,72 @@ msgstr ""
 msgid "Changes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1344
+#: lib/pp_admintools/app/ldap.py:1406
 msgid "Modification status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1346
+#: lib/pp_admintools/app/ldap.py:1408
 msgid "Result of modifying:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1349
+#: lib/pp_admintools/app/ldap.py:1411
 msgid "Modification of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1354
+#: lib/pp_admintools/app/ldap.py:1416
 msgid "Modification successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1364
+#: lib/pp_admintools/app/ldap.py:1426
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr "Deleting LDAP entry {dn!r} on {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1369
+#: lib/pp_admintools/app/ldap.py:1431
 msgid "Simulation mode - deletion will not be executed."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1375
+#: lib/pp_admintools/app/ldap.py:1437
 msgid "Deletion of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1380
+#: lib/pp_admintools/app/ldap.py:1442
 msgid "Deletion status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1382
+#: lib/pp_admintools/app/ldap.py:1444
 msgid "Result of deletion:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1385
+#: lib/pp_admintools/app/ldap.py:1447
 msgid "Deletion of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1389
+#: lib/pp_admintools/app/ldap.py:1451
 msgid "Deletion successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1538
+#: lib/pp_admintools/app/ldap.py:1600
 msgid "Reading password file {!r} ..."
 msgstr "Reading password file {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:1569
+#: lib/pp_admintools/app/ldap.py:1631
 msgid "Could not detect RDN from DN {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1573
+#: lib/pp_admintools/app/ldap.py:1635
 msgid "Found RDN attribute {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1579
+#: lib/pp_admintools/app/ldap.py:1641
 msgid "RDN attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1585 lib/pp_admintools/app/ldap.py:1604
-#: lib/pp_admintools/app/ldap.py:1682
+#: lib/pp_admintools/app/ldap.py:1647 lib/pp_admintools/app/ldap.py:1666
+#: lib/pp_admintools/app/ldap.py:1744
 msgid "Attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1642
+#: lib/pp_admintools/app/ldap.py:1704
 msgid "Values to removed from attribute {!r}:"
 msgstr ""
 
@@ -2044,10 +2116,6 @@ msgstr ""
 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:183
-msgid "SCHEMA"
-msgstr ""
-
 #: lib/pp_admintools/app/set_ldap_password.py:187
 msgid ""
 "The user, which password in the given LDAP instance should be changed. It may be given by its "
@@ -2405,89 +2473,89 @@ msgstr "Searching for API key of PDNS instance {!r} …"
 msgid "Found API key of PDNS instance {inst!r}: {key!r}."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:60
+#: lib/pp_admintools/handler/ldap_password.py:61
 msgid "Encryption schema {!r} not found."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:114
+#: lib/pp_admintools/handler/ldap_password.py:133
 msgid "The ancient and notorious 3 DES crypt method."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:115 lib/pp_admintools/handler/ldap_password.py:118
+#: lib/pp_admintools/handler/ldap_password.py:134 lib/pp_admintools/handler/ldap_password.py:137
 msgid "Pure {} hashing method."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:116 lib/pp_admintools/handler/ldap_password.py:119
-#: lib/pp_admintools/handler/ldap_password.py:121 lib/pp_admintools/handler/ldap_password.py:123
+#: lib/pp_admintools/handler/ldap_password.py:135 lib/pp_admintools/handler/ldap_password.py:138
+#: lib/pp_admintools/handler/ldap_password.py:140 lib/pp_admintools/handler/ldap_password.py:142
 msgid "A {} based hashing algorithm."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:117 lib/pp_admintools/handler/ldap_password.py:120
-#: lib/pp_admintools/handler/ldap_password.py:122 lib/pp_admintools/handler/ldap_password.py:124
+#: lib/pp_admintools/handler/ldap_password.py:136 lib/pp_admintools/handler/ldap_password.py:139
+#: lib/pp_admintools/handler/ldap_password.py:141 lib/pp_admintools/handler/ldap_password.py:143
 msgid "Salted {} hashing method."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:125
+#: lib/pp_admintools/handler/ldap_password.py:144
 msgid "A hashing method derived from {} with additional computing rounds."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:245
+#: lib/pp_admintools/handler/ldap_password.py:268
 msgid "Invalid schema {!r} given for update."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:282
+#: lib/pp_admintools/handler/ldap_password.py:305
 msgid "Usable Hashing schemes:"
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:291
+#: lib/pp_admintools/handler/ldap_password.py:314
 msgid "This schema cannot be used for authentication on a current freeradius server."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:295
+#: lib/pp_admintools/handler/ldap_password.py:318
 msgid "This is the default schema."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:339
+#: lib/pp_admintools/handler/ldap_password.py:362
 msgid "The password schema {!r} does not support a password salt."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:343
+#: lib/pp_admintools/handler/ldap_password.py:366
 msgid "The password salt must be at least by {} characters."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:347
+#: lib/pp_admintools/handler/ldap_password.py:370
 msgid "The password salt may have a length of maximum {} characters."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:357
+#: lib/pp_admintools/handler/ldap_password.py:380
 msgid "Found invalid character {!r} in password salt."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:370
+#: lib/pp_admintools/handler/ldap_password.py:393
 msgid "The password schema {!r} does not support calculation rounds."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:376
+#: lib/pp_admintools/handler/ldap_password.py:399
 msgid "Wrong value {v!r} for calculation rounds: {e}"
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:380
+#: lib/pp_admintools/handler/ldap_password.py:403
 msgid "The value for the calculation rounds has to be at least {}."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:385
+#: lib/pp_admintools/handler/ldap_password.py:408
 msgid "The value for the calculation rounds has to at most {}."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:418
+#: lib/pp_admintools/handler/ldap_password.py:441
 msgid "Cannot testing the quality of the new password, because the Python module {!r} is not installed."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:424
+#: lib/pp_admintools/handler/ldap_password.py:447
 msgid "Testing quality of new password ..."
 msgstr "Testing quality of new password …"
 
-#: lib/pp_admintools/handler/ldap_password.py:428
+#: lib/pp_admintools/handler/ldap_password.py:451
 msgid "Quality of the new password is not sufficient:"
 msgstr ""
 
index 74e7f0d0452a23db6508efcc3bd9e9715eda0da8..0c8230b01fbf1875c0c5dfd756d81d33e8334252 100644 (file)
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: pp_admintools 0.9.0\n"
+"Project-Id-Version: pp_admintools 0.10.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-06-15 16:42+0200\n"
+"POT-Creation-Date: 2023-08-22 13:39+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <frank.brehm@pixelpark.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -39,7 +39,7 @@ msgid ""
 "Default: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:439
+#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:461
 #: lib/pp_admintools/app/mirror_ldap.py:118 lib/pp_admintools/app/pdns.py:284
 msgid "SECONDS"
 msgstr ""
@@ -76,10 +76,10 @@ msgstr ""
 
 #: lib/pp_admintools/app/barracuda_sync.py:231 lib/pp_admintools/app/barracuda_sync.py:427
 #: lib/pp_admintools/app/dns_deploy_zones.py:434 lib/pp_admintools/app/dns_deploy_zones.py:788
-#: lib/pp_admintools/app/ldap.py:896 lib/pp_admintools/app/ldap.py:1029
-#: lib/pp_admintools/app/ldap.py:1082 lib/pp_admintools/app/ldap.py:1135
-#: lib/pp_admintools/app/ldap.py:1423 lib/pp_admintools/app/ldap.py:1457
-#: lib/pp_admintools/app/ldap.py:1491 lib/pp_admintools/app/ldap.py:1525
+#: lib/pp_admintools/app/ldap.py:958 lib/pp_admintools/app/ldap.py:1091
+#: lib/pp_admintools/app/ldap.py:1144 lib/pp_admintools/app/ldap.py:1197
+#: lib/pp_admintools/app/ldap.py:1485 lib/pp_admintools/app/ldap.py:1519
+#: lib/pp_admintools/app/ldap.py:1553 lib/pp_admintools/app/ldap.py:1587
 msgid "Result:"
 msgstr ""
 
@@ -283,7 +283,7 @@ msgstr ""
 msgid "LDAP Entries to modified:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1638
+#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1700
 msgid "Values to add to attribute {!r}:"
 msgstr ""
 
@@ -291,11 +291,11 @@ msgstr ""
 msgid "Values to be removed from attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1659
+#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1721
 msgid "Changes for attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1662
+#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1724
 msgid "No changes to attribute {!r}."
 msgstr ""
 
@@ -364,6 +364,7 @@ msgid ""
 msgstr ""
 
 #: lib/pp_admintools/app/check_ldap_dn_attributes.py:97
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:106
 msgid "Script options"
 msgstr ""
 
@@ -418,87 +419,138 @@ msgid "Checking DN-like attributes of entry {!r} ..."
 msgstr ""
 
 #: lib/pp_admintools/app/check_ldap_dn_attributes.py:219
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:234
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:190
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:233
 msgid "Got attributes:"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:76
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:84
+msgid ""
+"Reports the password hashing schemes of {attr} attributes in LDAP. Without a filter or a more "
+"special Base-DN the hashing schemes of all {attr} attributes in the LDAP tree are shown. One can"
+" filter the output by a regular LDAP-filter rule of by one or more hashing schemes."
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:109
+msgid "FILTER"
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:110
+msgid ""
+"An additional LDAP filter to limit the entries to print out their password hashing schema. "
+"Please note, that this filter will be wrapped by parantheses to combine it with the default "
+"filter {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:124
+msgid ""
+"One or more schemes (hashing methods) for filtering the {attr} attributes. It is possible to "
+"give here the value {val_list!r}, then all possible schemes are shown and exit."
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:130 lib/pp_admintools/app/set_ldap_password.py:183
+msgid "SCHEMA"
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:136
+msgid "Show more details in output, e.g. the entry DN."
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:168
+msgid ""
+"Start reporting password hashing schemes of {attr} attributes in in LDAP instance {inst!r} "
+"({url}) ..."
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:181
+msgid "Used LDAP filter: {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:223
+msgid "Found entry {!r} with data:"
+msgstr ""
+
+#: lib/pp_admintools/app/check_ldap_pwd_schemes.py:227
+msgid "Found entry DNs:"
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:75
 msgid ""
 "Removes all LDAP groups, which does not have any members, that means, they are one of the "
 "following objectClasses: {ocl}, and they have none of the following attributes: {atl}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:125 lib/pp_admintools/app/remove_ldap_user.py:134
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:124 lib/pp_admintools/app/remove_ldap_user.py:134
 msgid "Removing options"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:129
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:128
 msgid "The base DN used as the root for the LDAP search."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:155 lib/pp_admintools/app/remove_ldap_user.py:202
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:154 lib/pp_admintools/app/remove_ldap_user.py:202
 msgid "Checking given instances for admin and read/write access."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:162 lib/pp_admintools/app/remove_ldap_user.py:209
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:161 lib/pp_admintools/app/remove_ldap_user.py:209
 msgid "LDAP instance {!r} not found in configuration."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:170 lib/pp_admintools/app/remove_ldap_user.py:217
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:169 lib/pp_admintools/app/remove_ldap_user.py:217
 msgid "LDAP instance {!r} has only readonly access."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:175 lib/pp_admintools/app/remove_ldap_user.py:222
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:174 lib/pp_admintools/app/remove_ldap_user.py:222
 msgid "No admin access to LDAP instance {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:185
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:184
 msgid "Searching for empty groups ..."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:192
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:191
 msgid "No more empty groups left for removing."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:195
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:194
 msgid "Lap {} on searching for empty groups to remove."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:230
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:229
 msgid "Searching for member attributes of {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:240
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:239
 msgid "Found attribute {at!r} in group {g!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:243
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:242
 msgid "Group {!r} is not empty!"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:248
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:247
 msgid "Removing group {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:252
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:251
 msgid "Dont't removing group {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:259
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:258
 msgid "Do you really want to remove the group '{}'"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:260
 msgid "[{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:262 lib/pp_admintools/app/ldap.py:336
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261 lib/pp_admintools/app/ldap.py:337
 #: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:308
 #: lib/pp_admintools/app/set_ldap_password.py:489
 msgid "No"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:262 lib/pp_admintools/app/mirror_ldap.py:238
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261 lib/pp_admintools/app/mirror_ldap.py:238
 #: lib/pp_admintools/app/remove_ldap_user.py:308 lib/pp_admintools/app/set_ldap_password.py:489
 msgid "yes"
 msgstr ""
@@ -804,7 +856,7 @@ msgstr ""
 msgid "Checking for dependend unique attribute '"
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:564
+#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:586
 msgid "Used filter:"
 msgstr ""
 
@@ -812,116 +864,116 @@ msgstr ""
 msgid "No duplicates for attribute {!r} found."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:115 lib/pp_admintools/app/ldap.py:283
+#: lib/pp_admintools/app/ldap.py:116 lib/pp_admintools/app/ldap.py:284
 msgid "The path {!r} must be an absolute path."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:121 lib/pp_admintools/app/ldap.py:287
-#: lib/pp_admintools/app/ldap.py:1541
+#: lib/pp_admintools/app/ldap.py:122 lib/pp_admintools/app/ldap.py:288
+#: lib/pp_admintools/app/ldap.py:1603
 msgid "The file {!r} does not exists."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:125 lib/pp_admintools/app/ldap.py:291
-#: lib/pp_admintools/app/ldap.py:1546
+#: lib/pp_admintools/app/ldap.py:126 lib/pp_admintools/app/ldap.py:292
+#: lib/pp_admintools/app/ldap.py:1608
 msgid "The given path {!r} exists, but is not a regular file."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:129 lib/pp_admintools/app/ldap.py:295
-#: lib/pp_admintools/app/ldap.py:1551
+#: lib/pp_admintools/app/ldap.py:130 lib/pp_admintools/app/ldap.py:296
+#: lib/pp_admintools/app/ldap.py:1613
 msgid "The given file {!r} is not readable."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:151
+#: lib/pp_admintools/app/ldap.py:152
 msgid "a port number must be greater than zero and less or equal to {}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:156
+#: lib/pp_admintools/app/ldap.py:157
 msgid "Wrong port number {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:325
+#: lib/pp_admintools/app/ldap.py:326
 msgid "LDAP options"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:327
+#: lib/pp_admintools/app/ldap.py:328
 msgid "Options for the default LDAP connection"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:329
+#: lib/pp_admintools/app/ldap.py:330
 msgid "Options fo LDAP connections"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:338
+#: lib/pp_admintools/app/ldap.py:339
 msgid "Yes"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:344
+#: lib/pp_admintools/app/ldap.py:345 lib/pp_admintools/app/ldap.py:441
 msgid "HOST"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:345
+#: lib/pp_admintools/app/ldap.py:346
 msgid "Hostname or address of the LDAP server to use. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:352
+#: lib/pp_admintools/app/ldap.py:353
 msgid "Use ldaps to connect to the LDAP server. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:357 lib/pp_admintools/app/mail.py:250
-#: lib/pp_admintools/app/pdns.py:273
+#: lib/pp_admintools/app/ldap.py:358 lib/pp_admintools/app/ldap.py:447
+#: lib/pp_admintools/app/mail.py:250 lib/pp_admintools/app/pdns.py:273
 msgid "PORT"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:359
+#: lib/pp_admintools/app/ldap.py:360
 msgid "The port number to connect to the LDAP server. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:365
+#: lib/pp_admintools/app/ldap.py:366
 msgid "The base DN used as the root for the LDAP searches. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:372
+#: lib/pp_admintools/app/ldap.py:373
 msgid "The Bind DN to use to connect to the LDAP server. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:380 lib/pp_admintools/app/mk_ldap_passwd.py:131
+#: lib/pp_admintools/app/ldap.py:381 lib/pp_admintools/app/mk_ldap_passwd.py:131
 #: lib/pp_admintools/app/set_ldap_password.py:131 lib/pp_admintools/app/set_ldap_password.py:132
 #: lib/pp_admintools/app/set_ldap_password.py:149 lib/pp_admintools/app/set_ldap_password.py:152
 msgid "PASSWORD"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:381
+#: lib/pp_admintools/app/ldap.py:382
 msgid "Use PASSWORD as the password for simple LDAP authentication."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:386
+#: lib/pp_admintools/app/ldap.py:387
 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:392 lib/pp_admintools/app/set_ldap_password.py:143
+#: lib/pp_admintools/app/ldap.py:393 lib/pp_admintools/app/set_ldap_password.py:143
 #: lib/pp_admintools/app/set_ldap_password.py:145
 msgid "PASSWORD_FILE"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:394
+#: lib/pp_admintools/app/ldap.py:395
 msgid "Use contents of PASSWORD_FILE as the password for simple authentication."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:402 lib/pp_admintools/app/pdns.py:247
+#: lib/pp_admintools/app/ldap.py:403 lib/pp_admintools/app/pdns.py:247
 msgid "INSTANCE"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:405
+#: lib/pp_admintools/app/ldap.py:406
 msgid "If not given, then the instance {!r} will be used."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:409
+#: lib/pp_admintools/app/ldap.py:410
 msgid "The LDAP instance (LDAP cluster) from configuration, where to execute this script."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:413
+#: lib/pp_admintools/app/ldap.py:414
 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} "
@@ -929,256 +981,276 @@ msgid ""
 "are shown, and the application is exiting."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:441
+#: lib/pp_admintools/app/ldap.py:442
+msgid "Override configured hostname or address of the LDAP server."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:449
+msgid "Override the configured port number to connect to the LDAP server."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:454
+msgid "Override the configured base DN of the instance used as the root for the LDAP searches."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:463
 msgid "Using the given timeout in seconds for all LDAP operations. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:468
+#: lib/pp_admintools/app/ldap.py:490
 msgid "Limiting console timeout to {} seconds due to LDAP timeout."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:479
+#: lib/pp_admintools/app/ldap.py:501
 msgid "Checking given instances."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:483
+#: lib/pp_admintools/app/ldap.py:505
 msgid "Given insts:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:534
+#: lib/pp_admintools/app/ldap.py:556
 msgid "Configured LDAP instances:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:551
+#: lib/pp_admintools/app/ldap.py:573
 msgid "Verifying given instances ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:587
+#: lib/pp_admintools/app/ldap.py:609
 msgid "Filtered instances:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:592
+#: lib/pp_admintools/app/ldap.py:617
 msgid "LDAP instances to use:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:608
+#: lib/pp_admintools/app/ldap.py:633
 msgid "LDAP instance {!r} not found in configuration or is not usable."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:663
+#: lib/pp_admintools/app/ldap.py:713
 msgid "Preparations ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:666
+#: lib/pp_admintools/app/ldap.py:716
 msgid "Open all necessary LDAP connections ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:680
+#: lib/pp_admintools/app/ldap.py:730
 msgid "Password of user {usr} on LDAP instance {inst}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:689
+#: lib/pp_admintools/app/ldap.py:739
 msgid "Info about LDAP server {}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:699
+#: lib/pp_admintools/app/ldap.py:749
 msgid "Trying to get LDAP server object for {} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:715
+#: lib/pp_admintools/app/ldap.py:765
 msgid "Connect options to server {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:722
+#: lib/pp_admintools/app/ldap.py:772
 msgid "LDAP server {s}: {re}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:736
+#: lib/pp_admintools/app/ldap.py:786
 msgid "Connecting to LDAP server {url} as {dn!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:748
+#: lib/pp_admintools/app/ldap.py:794
+msgid "Could not connect to LDAP server {url!r} as {user!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:799
+msgid "{c} on connecting to LDAP server {url!r} as {user!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:809
 msgid "Finishing ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:758
+#: lib/pp_admintools/app/ldap.py:820
 msgid "Disconnecting from all remaining LDAP instances ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:771
+#: lib/pp_admintools/app/ldap.py:833
 msgid "Unbinding from LDAP server {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:778
+#: lib/pp_admintools/app/ldap.py:840
 msgid "Disconnecting from LDAP server {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:805
+#: lib/pp_admintools/app/ldap.py:867
 msgid "Searching in {uri}/{bdn} for all entries with filter {fltr!r}, giving attributes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:817
+#: lib/pp_admintools/app/ldap.py:879
 msgid "Result of searching:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:822
+#: lib/pp_admintools/app/ldap.py:884
 msgid "Found entry {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:829 lib/pp_admintools/app/ldap.py:873
+#: lib/pp_admintools/app/ldap.py:891 lib/pp_admintools/app/ldap.py:935
 msgid "Found one entry with filter {fltr!r} in {uri}/{bdn}."
 msgid_plural "Found {nr} enries with filter {fltr!r} in {uri}/{bdn}."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/ldap.py:833
+#: lib/pp_admintools/app/ldap.py:895
 msgid "Got response entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:837 lib/pp_admintools/app/ldap.py:885
+#: lib/pp_admintools/app/ldap.py:899 lib/pp_admintools/app/ldap.py:947
 msgid "No entry found with filter {fltr!r} in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:861 lib/pp_admintools/app/ldap.py:915
+#: lib/pp_admintools/app/ldap.py:923 lib/pp_admintools/app/ldap.py:977
 msgid "Using LDAP filter: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:877 lib/pp_admintools/app/ldap.py:924
+#: lib/pp_admintools/app/ldap.py:939 lib/pp_admintools/app/ldap.py:986
 msgid "Result of searching for DNs of all entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:881 lib/pp_admintools/app/ldap.py:928
-#: lib/pp_admintools/app/ldap.py:1026 lib/pp_admintools/app/ldap.py:1079
-#: lib/pp_admintools/app/ldap.py:1132 lib/pp_admintools/app/ldap.py:1220
-#: lib/pp_admintools/app/ldap.py:1420 lib/pp_admintools/app/ldap.py:1454
-#: lib/pp_admintools/app/ldap.py:1488 lib/pp_admintools/app/ldap.py:1522
+#: lib/pp_admintools/app/ldap.py:943 lib/pp_admintools/app/ldap.py:990
+#: lib/pp_admintools/app/ldap.py:1088 lib/pp_admintools/app/ldap.py:1141
+#: lib/pp_admintools/app/ldap.py:1194 lib/pp_admintools/app/ldap.py:1282
+#: lib/pp_admintools/app/ldap.py:1482 lib/pp_admintools/app/ldap.py:1516
+#: lib/pp_admintools/app/ldap.py:1550 lib/pp_admintools/app/ldap.py:1584
 msgid "Got a response entry:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:911
+#: lib/pp_admintools/app/ldap.py:973
 msgid "Getting all Entry DNs of LDAP instance {i!r} below {b!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:950
+#: lib/pp_admintools/app/ldap.py:1012
 msgid "Trying to evaluate DN of user {user!r} in LDAP instance {inst} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:955
+#: lib/pp_admintools/app/ldap.py:1017
 msgid "Trying to evaluate DN of user {u!r} as a mail address ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:962
+#: lib/pp_admintools/app/ldap.py:1024
 msgid "Trying to evaluate DN of user {u!r} as a LDAP DN ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:969
+#: lib/pp_admintools/app/ldap.py:1031
 msgid "Trying to evaluate DN of user {u!r} as a UID (Posix user name) ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:978 lib/pp_admintools/app/remove_ldap_user.py:318
+#: lib/pp_admintools/app/ldap.py:1040 lib/pp_admintools/app/remove_ldap_user.py:318
 msgid "Empty user given."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:981
+#: lib/pp_admintools/app/ldap.py:1043
 msgid "Trying to evaluate DN of user {u!r} as a CN ({c}) ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1011 lib/pp_admintools/app/ldap.py:1064
-#: lib/pp_admintools/app/ldap.py:1117 lib/pp_admintools/app/ldap.py:1408
-#: lib/pp_admintools/app/ldap.py:1442 lib/pp_admintools/app/ldap.py:1476
-#: lib/pp_admintools/app/ldap.py:1510
+#: lib/pp_admintools/app/ldap.py:1073 lib/pp_admintools/app/ldap.py:1126
+#: lib/pp_admintools/app/ldap.py:1179 lib/pp_admintools/app/ldap.py:1470
+#: lib/pp_admintools/app/ldap.py:1504 lib/pp_admintools/app/ldap.py:1538
+#: lib/pp_admintools/app/ldap.py:1572
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1022
+#: lib/pp_admintools/app/ldap.py:1084
 msgid "Result of searching for mail address {m!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1033
+#: lib/pp_admintools/app/ldap.py:1095
 msgid "User with mail address {m!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1075
+#: lib/pp_admintools/app/ldap.py:1137
 msgid "Result of searching for uid {u!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1086
+#: lib/pp_admintools/app/ldap.py:1148
 msgid "User with uid {u!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1128
+#: lib/pp_admintools/app/ldap.py:1190
 msgid "Result of searching for CN {cn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1139
+#: lib/pp_admintools/app/ldap.py:1201
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1156 lib/pp_admintools/app/set_ldap_password.py:409
+#: lib/pp_admintools/app/ldap.py:1218 lib/pp_admintools/app/set_ldap_password.py:409
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1174
+#: lib/pp_admintools/app/ldap.py:1236
 msgid "ObjectClasses of {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1184
+#: lib/pp_admintools/app/ldap.py:1246
 msgid "Entry {dn!r} in {uri} seems not to be an account."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1206
+#: lib/pp_admintools/app/ldap.py:1268
 msgid "Searching DN {dn!r} in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1216
+#: lib/pp_admintools/app/ldap.py:1278
 msgid "Result of searching for DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1224
+#: lib/pp_admintools/app/ldap.py:1286
 msgid "Entry with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1269
+#: lib/pp_admintools/app/ldap.py:1331
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1275
+#: lib/pp_admintools/app/ldap.py:1337
 msgid "Simulation mode - entry will not be created."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1282
+#: lib/pp_admintools/app/ldap.py:1344
 msgid "Creation of entry {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1297
+#: lib/pp_admintools/app/ldap.py:1359
 msgid "Creation status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1299
+#: lib/pp_admintools/app/ldap.py:1361
 msgid "Result of creating:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1302
+#: lib/pp_admintools/app/ldap.py:1364
 msgid "Creation of entry {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1308
+#: lib/pp_admintools/app/ldap.py:1370
 msgid "Creation successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1319
+#: lib/pp_admintools/app/ldap.py:1381
 msgid "Applying changes on {uri} to DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1324
+#: lib/pp_admintools/app/ldap.py:1386
 msgid "Simulation mode - changes are not applied."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1330
+#: lib/pp_admintools/app/ldap.py:1392
 msgid "Modification of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1332 lib/pp_admintools/app/ldap.py:1351
+#: lib/pp_admintools/app/ldap.py:1394 lib/pp_admintools/app/ldap.py:1413
 #: lib/pp_admintools/app/remove_ldap_user.py:449 lib/pp_admintools/app/remove_ldap_user.py:476
 #: lib/pp_admintools/app/remove_ldap_user.py:503 lib/pp_admintools/app/remove_ldap_user.py:534
 #: lib/pp_admintools/app/remove_ldap_user.py:565 lib/pp_admintools/app/remove_ldap_user.py:681
@@ -1186,72 +1258,72 @@ msgstr ""
 msgid "Changes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1344
+#: lib/pp_admintools/app/ldap.py:1406
 msgid "Modification status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1346
+#: lib/pp_admintools/app/ldap.py:1408
 msgid "Result of modifying:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1349
+#: lib/pp_admintools/app/ldap.py:1411
 msgid "Modification of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1354
+#: lib/pp_admintools/app/ldap.py:1416
 msgid "Modification successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1364
+#: lib/pp_admintools/app/ldap.py:1426
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1369
+#: lib/pp_admintools/app/ldap.py:1431
 msgid "Simulation mode - deletion will not be executed."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1375
+#: lib/pp_admintools/app/ldap.py:1437
 msgid "Deletion of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1380
+#: lib/pp_admintools/app/ldap.py:1442
 msgid "Deletion status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1382
+#: lib/pp_admintools/app/ldap.py:1444
 msgid "Result of deletion:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1385
+#: lib/pp_admintools/app/ldap.py:1447
 msgid "Deletion of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1389
+#: lib/pp_admintools/app/ldap.py:1451
 msgid "Deletion successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1538
+#: lib/pp_admintools/app/ldap.py:1600
 msgid "Reading password file {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1569
+#: lib/pp_admintools/app/ldap.py:1631
 msgid "Could not detect RDN from DN {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1573
+#: lib/pp_admintools/app/ldap.py:1635
 msgid "Found RDN attribute {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1579
+#: lib/pp_admintools/app/ldap.py:1641
 msgid "RDN attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1585 lib/pp_admintools/app/ldap.py:1604
-#: lib/pp_admintools/app/ldap.py:1682
+#: lib/pp_admintools/app/ldap.py:1647 lib/pp_admintools/app/ldap.py:1666
+#: lib/pp_admintools/app/ldap.py:1744
 msgid "Attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1642
+#: lib/pp_admintools/app/ldap.py:1704
 msgid "Values to removed from attribute {!r}:"
 msgstr ""
 
@@ -2043,10 +2115,6 @@ msgstr ""
 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:183
-msgid "SCHEMA"
-msgstr ""
-
 #: lib/pp_admintools/app/set_ldap_password.py:187
 msgid ""
 "The user, which password in the given LDAP instance should be changed. It may be given by its "
@@ -2404,89 +2472,89 @@ msgstr ""
 msgid "Found API key of PDNS instance {inst!r}: {key!r}."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:60
+#: lib/pp_admintools/handler/ldap_password.py:61
 msgid "Encryption schema {!r} not found."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:114
+#: lib/pp_admintools/handler/ldap_password.py:133
 msgid "The ancient and notorious 3 DES crypt method."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:115 lib/pp_admintools/handler/ldap_password.py:118
+#: lib/pp_admintools/handler/ldap_password.py:134 lib/pp_admintools/handler/ldap_password.py:137
 msgid "Pure {} hashing method."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:116 lib/pp_admintools/handler/ldap_password.py:119
-#: lib/pp_admintools/handler/ldap_password.py:121 lib/pp_admintools/handler/ldap_password.py:123
+#: lib/pp_admintools/handler/ldap_password.py:135 lib/pp_admintools/handler/ldap_password.py:138
+#: lib/pp_admintools/handler/ldap_password.py:140 lib/pp_admintools/handler/ldap_password.py:142
 msgid "A {} based hashing algorithm."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:117 lib/pp_admintools/handler/ldap_password.py:120
-#: lib/pp_admintools/handler/ldap_password.py:122 lib/pp_admintools/handler/ldap_password.py:124
+#: lib/pp_admintools/handler/ldap_password.py:136 lib/pp_admintools/handler/ldap_password.py:139
+#: lib/pp_admintools/handler/ldap_password.py:141 lib/pp_admintools/handler/ldap_password.py:143
 msgid "Salted {} hashing method."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:125
+#: lib/pp_admintools/handler/ldap_password.py:144
 msgid "A hashing method derived from {} with additional computing rounds."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:245
+#: lib/pp_admintools/handler/ldap_password.py:268
 msgid "Invalid schema {!r} given for update."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:282
+#: lib/pp_admintools/handler/ldap_password.py:305
 msgid "Usable Hashing schemes:"
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:291
+#: lib/pp_admintools/handler/ldap_password.py:314
 msgid "This schema cannot be used for authentication on a current freeradius server."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:295
+#: lib/pp_admintools/handler/ldap_password.py:318
 msgid "This is the default schema."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:339
+#: lib/pp_admintools/handler/ldap_password.py:362
 msgid "The password schema {!r} does not support a password salt."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:343
+#: lib/pp_admintools/handler/ldap_password.py:366
 msgid "The password salt must be at least by {} characters."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:347
+#: lib/pp_admintools/handler/ldap_password.py:370
 msgid "The password salt may have a length of maximum {} characters."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:357
+#: lib/pp_admintools/handler/ldap_password.py:380
 msgid "Found invalid character {!r} in password salt."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:370
+#: lib/pp_admintools/handler/ldap_password.py:393
 msgid "The password schema {!r} does not support calculation rounds."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:376
+#: lib/pp_admintools/handler/ldap_password.py:399
 msgid "Wrong value {v!r} for calculation rounds: {e}"
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:380
+#: lib/pp_admintools/handler/ldap_password.py:403
 msgid "The value for the calculation rounds has to be at least {}."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:385
+#: lib/pp_admintools/handler/ldap_password.py:408
 msgid "The value for the calculation rounds has to at most {}."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:418
+#: lib/pp_admintools/handler/ldap_password.py:441
 msgid "Cannot testing the quality of the new password, because the Python module {!r} is not installed."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:424
+#: lib/pp_admintools/handler/ldap_password.py:447
 msgid "Testing quality of new password ..."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:428
+#: lib/pp_admintools/handler/ldap_password.py:451
 msgid "Quality of the new password is not sufficient:"
 msgstr ""