]> Frank Brehm's Git Trees - pixelpark/pp-admin-tools.git/commitdiff
Translations
authorFrank Brehm <frank.brehm@pixelpark.com>
Wed, 10 May 2023 14:52:42 +0000 (16:52 +0200)
committerFrank Brehm <frank.brehm@pixelpark.com>
Wed, 10 May 2023 14:52:42 +0000 (16:52 +0200)
lib/pp_admintools/app/duplicate_attribs.py
locale/de_DE/LC_MESSAGES/pp_admintools.po
locale/en_US/LC_MESSAGES/pp_admintools.po
locale/pp_admintools.pot

index 7469cedfa7d394440c0e7dfe89a26e6e0171408b..91180ad5f3e8162d71301189fe7bfbe2f89773a5 100644 (file)
@@ -21,14 +21,11 @@ from functools import cmp_to_key
 from fb_tools.xlate import format_list
 
 # Own modules
-from .. import pp
-
 from ..xlate import XLATOR
 
-from .ldap import LdapAppError, FatalLDAPError
 from .ldap import BaseLdapApplication
 
-__version__ = '0.3.0'
+__version__ = '0.3.1'
 LOG = logging.getLogger(__name__)
 
 _ = XLATOR.gettext
@@ -76,16 +73,16 @@ class EvalDuplicateAttribsApplication(BaseLdapApplication):
         eval_group.add_argument(
             '-U', '--uniq-attribs', nargs='*', dest='uniq_attribs', metavar=_('ATTRIBUTE'),
             help=_(
-                "All attributes, which should be unique over the complete LDAP tree. "
-                "Per default the following attributes should be unique:"
-                ) + ' ' + format_list(self.default_uniq_attributes, do_repr=True),
+                "All attribute types, which should be unique over the complete LDAP tree. "
+                "Per default the following attribute types should be unique:"
+            ) + ' ' + format_list(self.default_uniq_attributes, do_repr=True),
         )
 
         eval_group.add_argument(
             '--dependend-attribs', nargs='*', dest='dependend_attribs', metavar=_('ATTRIBUTE'),
             help=_(
-                "All attributes, where their uniqueness depends on an additional "
-                "LDAP filter. For instance, dhe attribute 'gidNumber' should be unique for "
+                "All attribute types, where their uniqueness depends on an additional "
+                "LDAP filter. For instance, the attribute 'gidNumber' should be unique for "
                 "all entries, which are using the objectClass 'posixGroup'. The value "
                 "for this argument should be in the form: 'ATTRIBUTE: \"FILTER\"'. For the latter "
                 "example this would be: 'gidNumber: \"objectClass=posixGroup\"' (which "
@@ -131,7 +128,7 @@ class EvalDuplicateAttribsApplication(BaseLdapApplication):
                     dep_attribs[attr_name] = attr_filter
                 else:
                     wrong_attribs = True
-                    msg = _("Wrong definition if a filter dependend unique attribute given:")
+                    msg = _("Wrong definition for a filter dependend unique attribute given:")
                     msg += ' {!r}'.format(attrib)
                     LOG.error(msg)
             if wrong_attribs:
index 5d3b0067bc1d085acf58201c8446f84d617c23a6..ea6455ecf32ac59d5ed752eb7777b731e1e09261 100644 (file)
@@ -5,18 +5,18 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: pp_admintools \n"
+"Project-Id-Version: pp_admintools 0.8.7\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-01-11 17:51+0100\n"
-"PO-Revision-Date: 2023-01-11 17:55+0100\n"
+"POT-Creation-Date: 2023-05-10 16:23+0200\n"
+"PO-Revision-Date: 2023-05-10 16:00+0100\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: de_DE\n"
 "Language-Team: de_DE <solution@pixelpark.com>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.11.0\n"
+"Generated-By: Babel 2.8.0\n"
 
 #: lib/pp_admintools/app/__init__.py:114
 msgid "Using logfile {!r}."
@@ -44,7 +44,9 @@ msgstr "DATEI"
 
 #: lib/pp_admintools/app/check_ldap_dn_attributes.py:105
 msgid "Exportig the faulty entries and attributes into a YAML file, if there were found some of them."
-msgstr "Exportieren der fehlerhaften Einträge und Attribute in eine YAML-Datei, falls welche gefunden wurden."
+msgstr ""
+"Exportieren der fehlerhaften Einträge und Attribute in eine YAML-Datei, falls welche gefunden "
+"wurden."
 
 #: lib/pp_admintools/app/check_ldap_dn_attributes.py:134
 msgid "Created export file {!r}."
@@ -195,10 +197,10 @@ msgid "Executing: {}"
 msgstr "Führe aus: {}"
 
 #: lib/pp_admintools/app/dns_deploy_zones.py:456 lib/pp_admintools/app/dns_deploy_zones.py:810
-#: lib/pp_admintools/app/ldap.py:810 lib/pp_admintools/app/ldap.py:944
-#: lib/pp_admintools/app/ldap.py:997 lib/pp_admintools/app/ldap.py:1050
-#: lib/pp_admintools/app/ldap.py:1338 lib/pp_admintools/app/ldap.py:1372
-#: lib/pp_admintools/app/ldap.py:1406 lib/pp_admintools/app/ldap.py:1440
+#: lib/pp_admintools/app/ldap.py:872 lib/pp_admintools/app/ldap.py:1006
+#: lib/pp_admintools/app/ldap.py:1059 lib/pp_admintools/app/ldap.py:1112
+#: lib/pp_admintools/app/ldap.py:1400 lib/pp_admintools/app/ldap.py:1434
+#: lib/pp_admintools/app/ldap.py:1468 lib/pp_admintools/app/ldap.py:1502
 msgid "Result:"
 msgstr "Ergebnis:"
 
@@ -362,22 +364,81 @@ msgstr "Neu starten {} …"
 msgid "Reloading {} ..."
 msgstr "Reload {} …"
 
+#: lib/pp_admintools/app/duplicate_attribs.py:61
+msgid "Evaluating all LDAP entries, which are using duplicate attributes, which should be unique."
+msgstr "Ermittelt alle LDAP-Einträge, die Duplikat-Attribute haben, welche aber eindeutig sein sollten."
+
+#: lib/pp_admintools/app/duplicate_attribs.py:74
+msgid "Evaluation options"
+msgstr "Evaluationsoptionen"
+
+#: lib/pp_admintools/app/duplicate_attribs.py:77 lib/pp_admintools/app/duplicate_attribs.py:85
+msgid "ATTRIBUTE"
+msgstr "ATTRIBUT"
+
+#: lib/pp_admintools/app/duplicate_attribs.py:78
+msgid ""
+"All attribute types, which should be unique over the complete LDAP tree. Per default the "
+"following attribute types should be unique:"
+msgstr ""
+"Alle Attributtypen, die eindeutig über den gesamten LDAP-Baum sein sollten. Per Vorgabe sollen "
+"die folgenden Attributtypen eindeutig sein:"
+
+#: lib/pp_admintools/app/duplicate_attribs.py:86
+msgid ""
+"All attribute types, where their uniqueness depends on an additional LDAP filter. For instance, "
+"the attribute 'gidNumber' should be unique for all entries, which are using the objectClass "
+"'posixGroup'. The value for this argument should be in the form: 'ATTRIBUTE: \"FILTER\"'. For "
+"the latter example this would be: 'gidNumber: \"objectClass=posixGroup\"' (which is also the "
+"default for this option). Please note, that this filter will be wrapped by parenthesis."
+msgstr ""
+"Alle Attributtypen, deren Eindeutigkeit von einem zusätzlichen LDAP-Filter abhängt. Zum Beispiel"
+" soll das Attribut 'gidNumber' eindeutig für alle Einträge sein, die die Objektklasse "
+"'posixGroup' verwenden.Der Wert dieses Arguments soll ind der Form 'ATTRIBUT: \"FILTER\"' "
+"erfolgen. Für das vorangegangene Beispiel würde das demzufolge 'gidNumber: "
+"\"objectClass=posixGroup\"' sein (welches auch die Vorgabe diese Option ist). Bitte beachten, "
+"dass dieser Filter von der Anwendung automatich mit Klammern umschlossen wird."
+
+#: lib/pp_admintools/app/duplicate_attribs.py:134
+msgid "Wrong definition for a filter dependend unique attribute given:"
+msgstr "Ungültige Definition für einen Filter eines eindeutigen Attributes angegeben:"
+
+#: lib/pp_admintools/app/duplicate_attribs.py:153
+msgid "Checking for globally unique attribute '"
+msgstr "Überprüfe global eindeutiges Attribut '"
+
+#: lib/pp_admintools/app/duplicate_attribs.py:154 lib/pp_admintools/app/duplicate_attribs.py:168
+msgid "' ..."
+msgstr "' …"
+
+#: lib/pp_admintools/app/duplicate_attribs.py:167
+msgid "Checking for dependend unique attribute '"
+msgstr "Überprüfe abhängig eindeutiges Attribut '"
+
+#: lib/pp_admintools/app/duplicate_attribs.py:175 lib/pp_admintools/app/ldap.py:559
+msgid "Used filter:"
+msgstr "Verwendeter Filter:"
+
+#: lib/pp_admintools/app/duplicate_attribs.py:219
+msgid "No duplicates for attribute {!r} found."
+msgstr "Keine Duplikate für das Attribut {!r} gefunden."
+
 #: lib/pp_admintools/app/ldap.py:117 lib/pp_admintools/app/ldap.py:280
 msgid "The path {!r} must be an absolute path."
 msgstr "Der Pfad {!r} muss ein absoluter Pfad sein."
 
 #: lib/pp_admintools/app/ldap.py:123 lib/pp_admintools/app/ldap.py:284
-#: lib/pp_admintools/app/ldap.py:1454
+#: lib/pp_admintools/app/ldap.py:1516
 msgid "The file {!r} does not exists."
 msgstr "Die Datei {!r} existiert nicht."
 
 #: lib/pp_admintools/app/ldap.py:127 lib/pp_admintools/app/ldap.py:288
-#: lib/pp_admintools/app/ldap.py:1459
+#: lib/pp_admintools/app/ldap.py:1521
 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:131 lib/pp_admintools/app/ldap.py:292
-#: lib/pp_admintools/app/ldap.py:1464
+#: lib/pp_admintools/app/ldap.py:1526
 msgid "The given file {!r} is not readable."
 msgstr "Die angegebene Datei {} ist nicht lesbar."
 
@@ -515,292 +576,318 @@ msgstr "Konfigurierte LDAP-Instanzen:"
 
 #: lib/pp_admintools/app/ldap.py:546
 msgid "Verifying given instances ..."
-msgstr "Überprüfene Instanzen …"
+msgstr "Überprüfe Instanzen …"
 
-#: lib/pp_admintools/app/ldap.py:559
-msgid "Used filter:"
-msgstr "Verwendeter Filter:"
+#: lib/pp_admintools/app/ldap.py:582
+msgid "Filtered instances:"
+msgstr "Gefilterte Instanzen:"
 
-#: lib/pp_admintools/app/ldap.py:584
+#: lib/pp_admintools/app/ldap.py:587
 msgid "LDAP instances to use:"
 msgstr "Verwendete LDAP-Instanzen:"
 
-#: lib/pp_admintools/app/ldap.py:600
+#: lib/pp_admintools/app/ldap.py:603
 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:655
+#: lib/pp_admintools/app/ldap.py:658
 msgid "Preparations ..."
 msgstr "Vorbereitungen …"
 
-#: lib/pp_admintools/app/ldap.py:658
+#: lib/pp_admintools/app/ldap.py:661
 msgid "Open all necessary LDAP connections ..."
 msgstr "Öffne alle notwendigen LDAP-Verbindungen …"
 
-#: lib/pp_admintools/app/ldap.py:672
+#: lib/pp_admintools/app/ldap.py:675
 msgid "Password of user {usr} on LDAP instance {inst}:"
 msgstr "Passwort des Nutzers {usr} der LDAP-Instanz {inst}:"
 
-#: lib/pp_admintools/app/ldap.py:681
+#: lib/pp_admintools/app/ldap.py:684
 msgid "Info about LDAP server {}:"
 msgstr "Informationen zu LDAP-Server {}:"
 
-#: lib/pp_admintools/app/ldap.py:691
+#: lib/pp_admintools/app/ldap.py:694
 msgid "Trying to get LDAP server object for {} ..."
 msgstr "Versuche ein LDAP-Server-Objekt für {} zu bekommen …"
 
-#: lib/pp_admintools/app/ldap.py:707
+#: lib/pp_admintools/app/ldap.py:710
 msgid "Connect options to server {!r}:"
 msgstr "Verbindungs-Optionen zu Server {!r}:"
 
-#: lib/pp_admintools/app/ldap.py:714
+#: lib/pp_admintools/app/ldap.py:717
 msgid "LDAP server {s}: {re}"
 msgstr "LDAP-Server {s}: {re}"
 
-#: lib/pp_admintools/app/ldap.py:728
+#: lib/pp_admintools/app/ldap.py:731
 msgid "Connecting to LDAP server {url} as {dn!r} ..."
 msgstr "Verbinde mit LDAP-Server {url} als {dn!r} …"
 
-#: lib/pp_admintools/app/ldap.py:740
+#: lib/pp_admintools/app/ldap.py:743
 msgid "Finishing ..."
 msgstr "Beende …"
 
-#: lib/pp_admintools/app/ldap.py:750
+#: lib/pp_admintools/app/ldap.py:753
 msgid "Disconnecting from all remaining LDAP instances ..."
 msgstr "Trenne Verbindung zu allen verbleibenden LDAP-Instanzen …"
 
-#: lib/pp_admintools/app/ldap.py:763
+#: lib/pp_admintools/app/ldap.py:766
 msgid "Unbinding from LDAP server {!r} ..."
 msgstr "Trenne Bindung zu LDAP-Server {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:770
+#: lib/pp_admintools/app/ldap.py:773
 msgid "Disconnecting from LDAP server {!r} ..."
 msgstr "Trenne Verbindung zu LDAP-Server {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:787 lib/pp_admintools/app/ldap.py:830
+#: lib/pp_admintools/app/ldap.py:796
+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:808
+msgid "Result of searching:"
+msgstr "Ergebnis der Suche:"
+
+#: lib/pp_admintools/app/ldap.py:813
+msgid "Found entry {!r}."
+msgstr "Gefundener Eintrag:"
+
+#: lib/pp_admintools/app/ldap.py:820
+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:824
+msgid "Got response entries:"
+msgstr "Erhaltene Antworteinträge:"
+
+#: lib/pp_admintools/app/ldap.py:828
+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:849 lib/pp_admintools/app/ldap.py:892
 msgid "Using LDAP filter: {!r}"
 msgstr "Verwende LDAP-Filter: {!r}."
 
-#: lib/pp_admintools/app/ldap.py:796 lib/pp_admintools/app/ldap.py:839
+#: lib/pp_admintools/app/ldap.py:858 lib/pp_admintools/app/ldap.py:901
 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:800 lib/pp_admintools/app/ldap.py:843
-#: lib/pp_admintools/app/ldap.py:941 lib/pp_admintools/app/ldap.py:994
-#: lib/pp_admintools/app/ldap.py:1047 lib/pp_admintools/app/ldap.py:1135
-#: lib/pp_admintools/app/ldap.py:1335 lib/pp_admintools/app/ldap.py:1369
-#: lib/pp_admintools/app/ldap.py:1403 lib/pp_admintools/app/ldap.py:1437
+#: lib/pp_admintools/app/ldap.py:862 lib/pp_admintools/app/ldap.py:905
+#: lib/pp_admintools/app/ldap.py:1003 lib/pp_admintools/app/ldap.py:1056
+#: lib/pp_admintools/app/ldap.py:1109 lib/pp_admintools/app/ldap.py:1197
+#: lib/pp_admintools/app/ldap.py:1397 lib/pp_admintools/app/ldap.py:1431
+#: lib/pp_admintools/app/ldap.py:1465 lib/pp_admintools/app/ldap.py:1499
 msgid "Got a response entry:"
 msgstr "Erhaltener Antwort-Eintrag:"
 
-#: lib/pp_admintools/app/ldap.py:826
+#: lib/pp_admintools/app/ldap.py:888
 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:865
+#: lib/pp_admintools/app/ldap.py:927
 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:870
+#: lib/pp_admintools/app/ldap.py:932
 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:877
+#: lib/pp_admintools/app/ldap.py:939
 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:884
+#: lib/pp_admintools/app/ldap.py:946
 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:893 lib/pp_admintools/app/remove_ldap_user.py:290
+#: lib/pp_admintools/app/ldap.py:955 lib/pp_admintools/app/remove_ldap_user.py:290
 msgid "Empty user given."
 msgstr "Leere Nutzername übergeben."
 
-#: lib/pp_admintools/app/ldap.py:896
+#: lib/pp_admintools/app/ldap.py:958
 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:926 lib/pp_admintools/app/ldap.py:979
-#: lib/pp_admintools/app/ldap.py:1032 lib/pp_admintools/app/ldap.py:1323
-#: lib/pp_admintools/app/ldap.py:1357 lib/pp_admintools/app/ldap.py:1391
-#: lib/pp_admintools/app/ldap.py:1425
+#: lib/pp_admintools/app/ldap.py:988 lib/pp_admintools/app/ldap.py:1041
+#: lib/pp_admintools/app/ldap.py:1094 lib/pp_admintools/app/ldap.py:1385
+#: lib/pp_admintools/app/ldap.py:1419 lib/pp_admintools/app/ldap.py:1453
+#: lib/pp_admintools/app/ldap.py:1487
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr "Suche in {uri}/{bdn} mit dem Filter: {fltr}"
 
-#: lib/pp_admintools/app/ldap.py:937
+#: lib/pp_admintools/app/ldap.py:999
 msgid "Result of searching for mail address {m!r}:"
 msgstr "Ergebnis der Suche nach der Mailadresse {m!r}:"
 
-#: lib/pp_admintools/app/ldap.py:948
+#: lib/pp_admintools/app/ldap.py:1010
 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:990
+#: lib/pp_admintools/app/ldap.py:1052
 msgid "Result of searching for uid {u!r}:"
 msgstr "Ergebnis der Suche nach UID {u!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1001
+#: lib/pp_admintools/app/ldap.py:1063
 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:1043
+#: lib/pp_admintools/app/ldap.py:1105
 msgid "Result of searching for CN {cn!r}:"
 msgstr "Ergebnis der Suche nach CN {cn!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1054
+#: lib/pp_admintools/app/ldap.py:1116
 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:1071 lib/pp_admintools/app/set_ldap_password.py:411
+#: lib/pp_admintools/app/ldap.py:1133 lib/pp_admintools/app/set_ldap_password.py:411
 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:1089
+#: lib/pp_admintools/app/ldap.py:1151
 msgid "ObjectClasses of {dn!r}:"
 msgstr "ObjectClasses von {dn!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1099
+#: lib/pp_admintools/app/ldap.py:1161
 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:1121
+#: lib/pp_admintools/app/ldap.py:1183
 msgid "Searching DN {dn!r} in {uri}."
 msgstr "Suche DN {dn!r} in {uri}."
 
-#: lib/pp_admintools/app/ldap.py:1131
+#: lib/pp_admintools/app/ldap.py:1193
 msgid "Result of searching for DN {dn!r}:"
 msgstr "Ergebnis der Suche nach dem DN {dn!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1139
+#: lib/pp_admintools/app/ldap.py:1201
 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:1184
+#: lib/pp_admintools/app/ldap.py:1246
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr "Erstelle Eintrag {dn!r} in {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1190
+#: lib/pp_admintools/app/ldap.py:1252
 msgid "Simulation mode - entry will not be created."
 msgstr "Simulationsmodus - der Eintrag wird nicht erstellt."
 
-#: lib/pp_admintools/app/ldap.py:1197
+#: lib/pp_admintools/app/ldap.py:1259
 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:1212
+#: lib/pp_admintools/app/ldap.py:1274
 msgid "Creation status: {!r}."
 msgstr "Erstellungsstatus: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:1214
+#: lib/pp_admintools/app/ldap.py:1276
 msgid "Result of creating:"
 msgstr "Ergebnis der Erstellung:"
 
-#: lib/pp_admintools/app/ldap.py:1217
+#: lib/pp_admintools/app/ldap.py:1279
 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:1223
+#: lib/pp_admintools/app/ldap.py:1285
 msgid "Creation successful."
 msgstr "Die Erstellung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1234
+#: lib/pp_admintools/app/ldap.py:1296
 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:1239
+#: lib/pp_admintools/app/ldap.py:1301
 msgid "Simulation mode - changes are not applied."
 msgstr "Simulationsmodus - hier wird jetzt nichts geändert."
 
-#: lib/pp_admintools/app/ldap.py:1245
+#: lib/pp_admintools/app/ldap.py:1307
 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:1247 lib/pp_admintools/app/ldap.py:1266
+#: lib/pp_admintools/app/ldap.py:1309 lib/pp_admintools/app/ldap.py:1328
 #: lib/pp_admintools/app/remove_ldap_user.py:417 lib/pp_admintools/app/remove_ldap_user.py:444
 #: lib/pp_admintools/app/remove_ldap_user.py:471 lib/pp_admintools/app/remove_ldap_user.py:502
 #: lib/pp_admintools/app/remove_ldap_user.py:533 lib/pp_admintools/app/set_ldap_password.py:521
 msgid "Changes:"
 msgstr "Änderungen:"
 
-#: lib/pp_admintools/app/ldap.py:1259
+#: lib/pp_admintools/app/ldap.py:1321
 msgid "Modification status: {!r}."
 msgstr "Änderungsstatus: {!r}."
 
-#: lib/pp_admintools/app/ldap.py:1261
+#: lib/pp_admintools/app/ldap.py:1323
 msgid "Result of modifying:"
 msgstr "Ergebnis der Änderung:"
 
-#: lib/pp_admintools/app/ldap.py:1264
+#: lib/pp_admintools/app/ldap.py:1326
 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:1269
+#: lib/pp_admintools/app/ldap.py:1331
 msgid "Modification successful."
 msgstr "Die Änderung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1279
+#: lib/pp_admintools/app/ldap.py:1341
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr "Lösche LDAP-Eintrag {dn!r} in {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1284
+#: lib/pp_admintools/app/ldap.py:1346
 msgid "Simulation mode - deletion will not be executed."
 msgstr "Simulationsmodus - hier wird jetzt nichts gelöscht."
 
-#: lib/pp_admintools/app/ldap.py:1290
+#: lib/pp_admintools/app/ldap.py:1352
 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:1295
+#: lib/pp_admintools/app/ldap.py:1357
 msgid "Deletion status: {!r}."
 msgstr "Löschstatus: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:1297
+#: lib/pp_admintools/app/ldap.py:1359
 msgid "Result of deletion:"
 msgstr "Ergebnis der Löschung:"
 
-#: lib/pp_admintools/app/ldap.py:1300
+#: lib/pp_admintools/app/ldap.py:1362
 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:1304
+#: lib/pp_admintools/app/ldap.py:1366
 msgid "Deletion successful."
 msgstr "Die Löschung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1451
+#: lib/pp_admintools/app/ldap.py:1513
 msgid "Reading password file {!r} ..."
 msgstr "Lese Passwortdatei {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:1482
+#: lib/pp_admintools/app/ldap.py:1544
 msgid "Could not detect RDN from DN {!r}."
 msgstr "Konnte RDN nich aus {!r} ermitteln."
 
-#: lib/pp_admintools/app/ldap.py:1486
+#: lib/pp_admintools/app/ldap.py:1548
 msgid "Found RDN attribute {!r}."
 msgstr "Fand RDN-Attribut {!r}."
 
-#: lib/pp_admintools/app/ldap.py:1492
+#: lib/pp_admintools/app/ldap.py:1554
 msgid "RDN attribute {!r} will not be touched."
 msgstr "Das RDN-Attribut {!r} wird nicht angefasst."
 
-#: lib/pp_admintools/app/ldap.py:1498 lib/pp_admintools/app/ldap.py:1517
-#: lib/pp_admintools/app/ldap.py:1590
+#: lib/pp_admintools/app/ldap.py:1560 lib/pp_admintools/app/ldap.py:1579
+#: lib/pp_admintools/app/ldap.py:1652
 msgid "Attribute {!r} will not be touched."
 msgstr "Das Attribut {!r} wird nicht angefasst."
 
-#: lib/pp_admintools/app/ldap.py:1551
+#: lib/pp_admintools/app/ldap.py:1613
 msgid "Values to add to attribute {!r}:"
 msgstr "Werte, die zu Attribut {!r} hinzugefügt werden:"
 
-#: lib/pp_admintools/app/ldap.py:1555
+#: lib/pp_admintools/app/ldap.py:1617
 msgid "Values to removed from attribute {!r}:"
 msgstr "Werte, die von Attribut {!r} gelöscht werden."
 
-#: lib/pp_admintools/app/ldap.py:1572
+#: lib/pp_admintools/app/ldap.py:1634
 msgid "Changes for attribute {!r}:"
 msgstr "Änedrungen für Attribut {!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1575
+#: lib/pp_admintools/app/ldap.py:1637
 msgid "No changes to attribute {!r}."
 msgstr "Keine Änderungen an Attribut {!r}."
 
@@ -1774,7 +1861,7 @@ msgid "Got a {c} for converting {v!r} into a float value: {e}"
 msgstr "Habe ein {c} bei der Konvertierung von {v!r} in einen Float-Wert erhalten: {e}"
 
 #: lib/pp_admintools/config/dns_deploy_zones.py:204 lib/pp_admintools/config/dns_deploy_zones.py:517
-#: lib/pp_admintools/config/mail.py:150 lib/pp_admintools/config/pdns.py:188
+#: lib/pp_admintools/config/mail.py:147 lib/pp_admintools/config/pdns.py:188
 msgid "Evaluating config section {!r}:"
 msgstr "Evaluiere Konfigurations-Abschnitt {!r}:"
 
@@ -1879,36 +1966,36 @@ msgstr "Der Wert {!r} für einen Timeout ist ungültig."
 msgid "Reading configuration of LDAP instance {!r} ..."
 msgstr "Lese Konfiguration der LDAP-Instanz {!r} …"
 
-#: lib/pp_admintools/config/mail.py:171 lib/pp_admintools/config/mail.py:195
-#: lib/pp_admintools/config/mail.py:263
+#: lib/pp_admintools/config/mail.py:168 lib/pp_admintools/config/mail.py:192
+#: lib/pp_admintools/config/mail.py:264
 msgid "Found invalid {what} {addr!r} in configuration."
 msgstr "Ungültige {what} {addr!r} in der Konfiguration gefunden."
 
-#: lib/pp_admintools/config/mail.py:196
+#: lib/pp_admintools/config/mail.py:193
 msgid "from address"
 msgstr "Absender-Adresse"
 
-#: lib/pp_admintools/config/mail.py:212 lib/pp_admintools/config/mail.py:216
+#: lib/pp_admintools/config/mail.py:211 lib/pp_admintools/config/mail.py:215
 msgid "recipient mail address"
 msgstr "Empfänger-Adresse"
 
-#: lib/pp_admintools/config/mail.py:236 lib/pp_admintools/config/mail.py:240
+#: lib/pp_admintools/config/mail.py:237 lib/pp_admintools/config/mail.py:241
 msgid "cc mail address"
 msgstr "CC-Mail-Adresse."
 
-#: lib/pp_admintools/config/mail.py:264
+#: lib/pp_admintools/config/mail.py:265
 msgid "reply to address"
 msgstr "Reply-To-Adresse"
 
-#: lib/pp_admintools/config/mail.py:280
+#: lib/pp_admintools/config/mail.py:281
 msgid "Found invalid mail method {!r} in configuration."
 msgstr "Ungültige Mail-Methode {!r} in der Konfiguration gefunden."
 
-#: lib/pp_admintools/config/mail.py:314
+#: lib/pp_admintools/config/mail.py:315
 msgid "Value {!r} for SMTP port is invalid:"
 msgstr "Der Wert {!r} für einen SMTP-Port ist ungültig:"
 
-#: lib/pp_admintools/config/mail.py:319
+#: lib/pp_admintools/config/mail.py:320
 msgid "Found invalid SMTP port number {} in configuration."
 msgstr "Ungültige SMTP-Port-Nummer {!r} in der Konfiguration gefunden."
 
index 2997b1640d3afdd59307b93d6a5a4673a3d502aa..6ab3093cc69b9ab81f8534511ca241285006a1a7 100644 (file)
@@ -5,18 +5,18 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: pp_admintools \n"
+"Project-Id-Version: pp_admintools 0.8.7\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-01-11 17:51+0100\n"
-"PO-Revision-Date: 2023-01-11 17:50+0100\n"
+"POT-Creation-Date: 2023-05-10 16:23+0200\n"
+"PO-Revision-Date: 2023-05-10 16:00+0100\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: en_US\n"
 "Language-Team: Frank Brehm <frank.brehm@pixelpark.com>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.11.0\n"
+"Generated-By: Babel 2.8.0\n"
 
 #: lib/pp_admintools/app/__init__.py:114
 msgid "Using logfile {!r}."
@@ -191,10 +191,10 @@ msgid "Executing: {}"
 msgstr ""
 
 #: lib/pp_admintools/app/dns_deploy_zones.py:456 lib/pp_admintools/app/dns_deploy_zones.py:810
-#: lib/pp_admintools/app/ldap.py:810 lib/pp_admintools/app/ldap.py:944
-#: lib/pp_admintools/app/ldap.py:997 lib/pp_admintools/app/ldap.py:1050
-#: lib/pp_admintools/app/ldap.py:1338 lib/pp_admintools/app/ldap.py:1372
-#: lib/pp_admintools/app/ldap.py:1406 lib/pp_admintools/app/ldap.py:1440
+#: lib/pp_admintools/app/ldap.py:872 lib/pp_admintools/app/ldap.py:1006
+#: lib/pp_admintools/app/ldap.py:1059 lib/pp_admintools/app/ldap.py:1112
+#: lib/pp_admintools/app/ldap.py:1400 lib/pp_admintools/app/ldap.py:1434
+#: lib/pp_admintools/app/ldap.py:1468 lib/pp_admintools/app/ldap.py:1502
 msgid "Result:"
 msgstr ""
 
@@ -356,22 +356,73 @@ msgstr "Restarting {} …"
 msgid "Reloading {} ..."
 msgstr "Reloading {} …"
 
+#: lib/pp_admintools/app/duplicate_attribs.py:61
+msgid "Evaluating all LDAP entries, which are using duplicate attributes, which should be unique."
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:74
+msgid "Evaluation options"
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:77 lib/pp_admintools/app/duplicate_attribs.py:85
+msgid "ATTRIBUTE"
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:78
+msgid ""
+"All attribute types, which should be unique over the complete LDAP tree. Per default the "
+"following attribute types should be unique:"
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:86
+msgid ""
+"All attribute types, where their uniqueness depends on an additional LDAP filter. For instance, "
+"the attribute 'gidNumber' should be unique for all entries, which are using the objectClass "
+"'posixGroup'. The value for this argument should be in the form: 'ATTRIBUTE: \"FILTER\"'. For "
+"the latter example this would be: 'gidNumber: \"objectClass=posixGroup\"' (which is also the "
+"default for this option). Please note, that this filter will be wrapped by parenthesis."
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:134
+msgid "Wrong definition for a filter dependend unique attribute given:"
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:153
+msgid "Checking for globally unique attribute '"
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:154 lib/pp_admintools/app/duplicate_attribs.py:168
+msgid "' ..."
+msgstr "' …"
+
+#: lib/pp_admintools/app/duplicate_attribs.py:167
+msgid "Checking for dependend unique attribute '"
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:175 lib/pp_admintools/app/ldap.py:559
+msgid "Used filter:"
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:219
+msgid "No duplicates for attribute {!r} found."
+msgstr ""
+
 #: lib/pp_admintools/app/ldap.py:117 lib/pp_admintools/app/ldap.py:280
 msgid "The path {!r} must be an absolute path."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:123 lib/pp_admintools/app/ldap.py:284
-#: lib/pp_admintools/app/ldap.py:1454
+#: lib/pp_admintools/app/ldap.py:1516
 msgid "The file {!r} does not exists."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:127 lib/pp_admintools/app/ldap.py:288
-#: lib/pp_admintools/app/ldap.py:1459
+#: lib/pp_admintools/app/ldap.py:1521
 msgid "The given path {!r} exists, but is not a regular file."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:131 lib/pp_admintools/app/ldap.py:292
-#: lib/pp_admintools/app/ldap.py:1464
+#: lib/pp_admintools/app/ldap.py:1526
 msgid "The given file {!r} is not readable."
 msgstr ""
 
@@ -503,290 +554,316 @@ msgstr ""
 msgid "Verifying given instances ..."
 msgstr "Verifying given instances …"
 
-#: lib/pp_admintools/app/ldap.py:559
-msgid "Used filter:"
+#: lib/pp_admintools/app/ldap.py:582
+msgid "Filtered instances:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:584
+#: lib/pp_admintools/app/ldap.py:587
 msgid "LDAP instances to use:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:600
+#: lib/pp_admintools/app/ldap.py:603
 msgid "LDAP instance {!r} not found in configuration or is not usable."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:655
+#: lib/pp_admintools/app/ldap.py:658
 msgid "Preparations ..."
 msgstr "Preparations …"
 
-#: lib/pp_admintools/app/ldap.py:658
+#: lib/pp_admintools/app/ldap.py:661
 msgid "Open all necessary LDAP connections ..."
 msgstr "Open all necessary LDAP connections …"
 
-#: lib/pp_admintools/app/ldap.py:672
+#: lib/pp_admintools/app/ldap.py:675
 msgid "Password of user {usr} on LDAP instance {inst}:"
 msgstr "Password of user {usr} on LDAP instance {inst}:"
 
-#: lib/pp_admintools/app/ldap.py:681
+#: lib/pp_admintools/app/ldap.py:684
 msgid "Info about LDAP server {}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:691
+#: lib/pp_admintools/app/ldap.py:694
 msgid "Trying to get LDAP server object for {} ..."
 msgstr "Trying to get LDAP server object for {} …"
 
-#: lib/pp_admintools/app/ldap.py:707
+#: lib/pp_admintools/app/ldap.py:710
 msgid "Connect options to server {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:714
+#: lib/pp_admintools/app/ldap.py:717
 msgid "LDAP server {s}: {re}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:728
+#: lib/pp_admintools/app/ldap.py:731
 msgid "Connecting to LDAP server {url} as {dn!r} ..."
 msgstr "Connecting to LDAP server {url} as {dn!r} …"
 
-#: lib/pp_admintools/app/ldap.py:740
+#: lib/pp_admintools/app/ldap.py:743
 msgid "Finishing ..."
 msgstr "Finishing …"
 
-#: lib/pp_admintools/app/ldap.py:750
+#: lib/pp_admintools/app/ldap.py:753
 msgid "Disconnecting from all remaining LDAP instances ..."
 msgstr "Disconnecting from all remaining LDAP instances …"
 
-#: lib/pp_admintools/app/ldap.py:763
+#: lib/pp_admintools/app/ldap.py:766
 msgid "Unbinding from LDAP server {!r} ..."
 msgstr "Unbinding from LDAP server {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:770
+#: lib/pp_admintools/app/ldap.py:773
 msgid "Disconnecting from LDAP server {!r} ..."
 msgstr "Disconnecting from LDAP server {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:787 lib/pp_admintools/app/ldap.py:830
+#: lib/pp_admintools/app/ldap.py:796
+msgid "Searching in {uri}/{bdn} for all entries with filter {fltr!r}, giving attributes:"
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:808
+msgid "Result of searching:"
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:813
+msgid "Found entry {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:820
+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:824
+msgid "Got response entries:"
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:828
+msgid "No entry found with filter {fltr!r} in {uri}/{bdn}."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:849 lib/pp_admintools/app/ldap.py:892
 msgid "Using LDAP filter: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:796 lib/pp_admintools/app/ldap.py:839
+#: lib/pp_admintools/app/ldap.py:858 lib/pp_admintools/app/ldap.py:901
 msgid "Result of searching for DNs of all entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:800 lib/pp_admintools/app/ldap.py:843
-#: lib/pp_admintools/app/ldap.py:941 lib/pp_admintools/app/ldap.py:994
-#: lib/pp_admintools/app/ldap.py:1047 lib/pp_admintools/app/ldap.py:1135
-#: lib/pp_admintools/app/ldap.py:1335 lib/pp_admintools/app/ldap.py:1369
-#: lib/pp_admintools/app/ldap.py:1403 lib/pp_admintools/app/ldap.py:1437
+#: lib/pp_admintools/app/ldap.py:862 lib/pp_admintools/app/ldap.py:905
+#: lib/pp_admintools/app/ldap.py:1003 lib/pp_admintools/app/ldap.py:1056
+#: lib/pp_admintools/app/ldap.py:1109 lib/pp_admintools/app/ldap.py:1197
+#: lib/pp_admintools/app/ldap.py:1397 lib/pp_admintools/app/ldap.py:1431
+#: lib/pp_admintools/app/ldap.py:1465 lib/pp_admintools/app/ldap.py:1499
 msgid "Got a response entry:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:826
+#: lib/pp_admintools/app/ldap.py:888
 msgid "Getting all Entry DNs of LDAP instance {i!r} below {b!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:865
+#: lib/pp_admintools/app/ldap.py:927
 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:870
+#: lib/pp_admintools/app/ldap.py:932
 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:877
+#: lib/pp_admintools/app/ldap.py:939
 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:884
+#: lib/pp_admintools/app/ldap.py:946
 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:893 lib/pp_admintools/app/remove_ldap_user.py:290
+#: lib/pp_admintools/app/ldap.py:955 lib/pp_admintools/app/remove_ldap_user.py:290
 msgid "Empty user given."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:896
+#: lib/pp_admintools/app/ldap.py:958
 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:926 lib/pp_admintools/app/ldap.py:979
-#: lib/pp_admintools/app/ldap.py:1032 lib/pp_admintools/app/ldap.py:1323
-#: lib/pp_admintools/app/ldap.py:1357 lib/pp_admintools/app/ldap.py:1391
-#: lib/pp_admintools/app/ldap.py:1425
+#: lib/pp_admintools/app/ldap.py:988 lib/pp_admintools/app/ldap.py:1041
+#: lib/pp_admintools/app/ldap.py:1094 lib/pp_admintools/app/ldap.py:1385
+#: lib/pp_admintools/app/ldap.py:1419 lib/pp_admintools/app/ldap.py:1453
+#: lib/pp_admintools/app/ldap.py:1487
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:937
+#: lib/pp_admintools/app/ldap.py:999
 msgid "Result of searching for mail address {m!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:948
+#: lib/pp_admintools/app/ldap.py:1010
 msgid "User with mail address {m!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:990
+#: lib/pp_admintools/app/ldap.py:1052
 msgid "Result of searching for uid {u!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1001
+#: lib/pp_admintools/app/ldap.py:1063
 msgid "User with uid {u!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1043
+#: lib/pp_admintools/app/ldap.py:1105
 msgid "Result of searching for CN {cn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1054
+#: lib/pp_admintools/app/ldap.py:1116
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1071 lib/pp_admintools/app/set_ldap_password.py:411
+#: lib/pp_admintools/app/ldap.py:1133 lib/pp_admintools/app/set_ldap_password.py:411
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1089
+#: lib/pp_admintools/app/ldap.py:1151
 msgid "ObjectClasses of {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1099
+#: lib/pp_admintools/app/ldap.py:1161
 msgid "Entry {dn!r} in {uri} seems not to be an account."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1121
+#: lib/pp_admintools/app/ldap.py:1183
 msgid "Searching DN {dn!r} in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1131
+#: lib/pp_admintools/app/ldap.py:1193
 msgid "Result of searching for DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1139
+#: lib/pp_admintools/app/ldap.py:1201
 msgid "Entry with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1184
+#: lib/pp_admintools/app/ldap.py:1246
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr "Creating entry {dn!r} on {uri}:"
 
-#: lib/pp_admintools/app/ldap.py:1190
+#: lib/pp_admintools/app/ldap.py:1252
 msgid "Simulation mode - entry will not be created."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1197
+#: lib/pp_admintools/app/ldap.py:1259
 msgid "Creation of entry {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1212
+#: lib/pp_admintools/app/ldap.py:1274
 msgid "Creation status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1214
+#: lib/pp_admintools/app/ldap.py:1276
 msgid "Result of creating:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1217
+#: lib/pp_admintools/app/ldap.py:1279
 msgid "Creation of entry {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1223
+#: lib/pp_admintools/app/ldap.py:1285
 msgid "Creation successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1234
+#: lib/pp_admintools/app/ldap.py:1296
 msgid "Applying changes on {uri} to DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1239
+#: lib/pp_admintools/app/ldap.py:1301
 msgid "Simulation mode - changes are not applied."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1245
+#: lib/pp_admintools/app/ldap.py:1307
 msgid "Modification of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1247 lib/pp_admintools/app/ldap.py:1266
+#: lib/pp_admintools/app/ldap.py:1309 lib/pp_admintools/app/ldap.py:1328
 #: lib/pp_admintools/app/remove_ldap_user.py:417 lib/pp_admintools/app/remove_ldap_user.py:444
 #: lib/pp_admintools/app/remove_ldap_user.py:471 lib/pp_admintools/app/remove_ldap_user.py:502
 #: lib/pp_admintools/app/remove_ldap_user.py:533 lib/pp_admintools/app/set_ldap_password.py:521
 msgid "Changes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1259
+#: lib/pp_admintools/app/ldap.py:1321
 msgid "Modification status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1261
+#: lib/pp_admintools/app/ldap.py:1323
 msgid "Result of modifying:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1264
+#: lib/pp_admintools/app/ldap.py:1326
 msgid "Modification of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1269
+#: lib/pp_admintools/app/ldap.py:1331
 msgid "Modification successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1279
+#: lib/pp_admintools/app/ldap.py:1341
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr "Deleting LDAP entry {dn!r} on {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1284
+#: lib/pp_admintools/app/ldap.py:1346
 msgid "Simulation mode - deletion will not be executed."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1290
+#: lib/pp_admintools/app/ldap.py:1352
 msgid "Deletion of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1295
+#: lib/pp_admintools/app/ldap.py:1357
 msgid "Deletion status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1297
+#: lib/pp_admintools/app/ldap.py:1359
 msgid "Result of deletion:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1300
+#: lib/pp_admintools/app/ldap.py:1362
 msgid "Deletion of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1304
+#: lib/pp_admintools/app/ldap.py:1366
 msgid "Deletion successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1451
+#: lib/pp_admintools/app/ldap.py:1513
 msgid "Reading password file {!r} ..."
 msgstr "Reading password file {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:1482
+#: lib/pp_admintools/app/ldap.py:1544
 msgid "Could not detect RDN from DN {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1486
+#: lib/pp_admintools/app/ldap.py:1548
 msgid "Found RDN attribute {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1492
+#: lib/pp_admintools/app/ldap.py:1554
 msgid "RDN attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1498 lib/pp_admintools/app/ldap.py:1517
-#: lib/pp_admintools/app/ldap.py:1590
+#: lib/pp_admintools/app/ldap.py:1560 lib/pp_admintools/app/ldap.py:1579
+#: lib/pp_admintools/app/ldap.py:1652
 msgid "Attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1551
+#: lib/pp_admintools/app/ldap.py:1613
 msgid "Values to add to attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1555
+#: lib/pp_admintools/app/ldap.py:1617
 msgid "Values to removed from attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1572
+#: lib/pp_admintools/app/ldap.py:1634
 msgid "Changes for attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1575
+#: lib/pp_admintools/app/ldap.py:1637
 msgid "No changes to attribute {!r}."
 msgstr ""
 
@@ -1706,7 +1783,7 @@ msgid "Got a {c} for converting {v!r} into a float value: {e}"
 msgstr ""
 
 #: lib/pp_admintools/config/dns_deploy_zones.py:204 lib/pp_admintools/config/dns_deploy_zones.py:517
-#: lib/pp_admintools/config/mail.py:150 lib/pp_admintools/config/pdns.py:188
+#: lib/pp_admintools/config/mail.py:147 lib/pp_admintools/config/pdns.py:188
 msgid "Evaluating config section {!r}:"
 msgstr ""
 
@@ -1811,36 +1888,36 @@ msgstr ""
 msgid "Reading configuration of LDAP instance {!r} ..."
 msgstr "Reading configuration of LDAP instance {!r} …"
 
-#: lib/pp_admintools/config/mail.py:171 lib/pp_admintools/config/mail.py:195
-#: lib/pp_admintools/config/mail.py:263
+#: lib/pp_admintools/config/mail.py:168 lib/pp_admintools/config/mail.py:192
+#: lib/pp_admintools/config/mail.py:264
 msgid "Found invalid {what} {addr!r} in configuration."
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:196
+#: lib/pp_admintools/config/mail.py:193
 msgid "from address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:212 lib/pp_admintools/config/mail.py:216
+#: lib/pp_admintools/config/mail.py:211 lib/pp_admintools/config/mail.py:215
 msgid "recipient mail address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:236 lib/pp_admintools/config/mail.py:240
+#: lib/pp_admintools/config/mail.py:237 lib/pp_admintools/config/mail.py:241
 msgid "cc mail address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:264
+#: lib/pp_admintools/config/mail.py:265
 msgid "reply to address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:280
+#: lib/pp_admintools/config/mail.py:281
 msgid "Found invalid mail method {!r} in configuration."
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:314
+#: lib/pp_admintools/config/mail.py:315
 msgid "Value {!r} for SMTP port is invalid:"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:319
+#: lib/pp_admintools/config/mail.py:320
 msgid "Found invalid SMTP port number {} in configuration."
 msgstr ""
 
index 3eafd8a7d3411f67a7db4facd7ad3cf2076a2a1c..5b962258fcf7048c2f5324386e0d38ecf9afa827 100644 (file)
@@ -6,16 +6,16 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: pp_admintools VERSION\n"
+"Project-Id-Version: pp_admintools 0.8.7\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-01-11 17:51+0100\n"
+"POT-Creation-Date: 2023-05-10 16:23+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"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.11.0\n"
+"Generated-By: Babel 2.8.0\n"
 
 #: lib/pp_admintools/app/__init__.py:114
 msgid "Using logfile {!r}."
@@ -190,10 +190,10 @@ msgid "Executing: {}"
 msgstr ""
 
 #: lib/pp_admintools/app/dns_deploy_zones.py:456 lib/pp_admintools/app/dns_deploy_zones.py:810
-#: lib/pp_admintools/app/ldap.py:810 lib/pp_admintools/app/ldap.py:944
-#: lib/pp_admintools/app/ldap.py:997 lib/pp_admintools/app/ldap.py:1050
-#: lib/pp_admintools/app/ldap.py:1338 lib/pp_admintools/app/ldap.py:1372
-#: lib/pp_admintools/app/ldap.py:1406 lib/pp_admintools/app/ldap.py:1440
+#: lib/pp_admintools/app/ldap.py:872 lib/pp_admintools/app/ldap.py:1006
+#: lib/pp_admintools/app/ldap.py:1059 lib/pp_admintools/app/ldap.py:1112
+#: lib/pp_admintools/app/ldap.py:1400 lib/pp_admintools/app/ldap.py:1434
+#: lib/pp_admintools/app/ldap.py:1468 lib/pp_admintools/app/ldap.py:1502
 msgid "Result:"
 msgstr ""
 
@@ -355,22 +355,73 @@ msgstr ""
 msgid "Reloading {} ..."
 msgstr ""
 
+#: lib/pp_admintools/app/duplicate_attribs.py:61
+msgid "Evaluating all LDAP entries, which are using duplicate attributes, which should be unique."
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:74
+msgid "Evaluation options"
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:77 lib/pp_admintools/app/duplicate_attribs.py:85
+msgid "ATTRIBUTE"
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:78
+msgid ""
+"All attribute types, which should be unique over the complete LDAP tree. Per default the "
+"following attribute types should be unique:"
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:86
+msgid ""
+"All attribute types, where their uniqueness depends on an additional LDAP filter. For instance, "
+"the attribute 'gidNumber' should be unique for all entries, which are using the objectClass "
+"'posixGroup'. The value for this argument should be in the form: 'ATTRIBUTE: \"FILTER\"'. For "
+"the latter example this would be: 'gidNumber: \"objectClass=posixGroup\"' (which is also the "
+"default for this option). Please note, that this filter will be wrapped by parenthesis."
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:134
+msgid "Wrong definition for a filter dependend unique attribute given:"
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:153
+msgid "Checking for globally unique attribute '"
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:154 lib/pp_admintools/app/duplicate_attribs.py:168
+msgid "' ..."
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:167
+msgid "Checking for dependend unique attribute '"
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:175 lib/pp_admintools/app/ldap.py:559
+msgid "Used filter:"
+msgstr ""
+
+#: lib/pp_admintools/app/duplicate_attribs.py:219
+msgid "No duplicates for attribute {!r} found."
+msgstr ""
+
 #: lib/pp_admintools/app/ldap.py:117 lib/pp_admintools/app/ldap.py:280
 msgid "The path {!r} must be an absolute path."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:123 lib/pp_admintools/app/ldap.py:284
-#: lib/pp_admintools/app/ldap.py:1454
+#: lib/pp_admintools/app/ldap.py:1516
 msgid "The file {!r} does not exists."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:127 lib/pp_admintools/app/ldap.py:288
-#: lib/pp_admintools/app/ldap.py:1459
+#: lib/pp_admintools/app/ldap.py:1521
 msgid "The given path {!r} exists, but is not a regular file."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:131 lib/pp_admintools/app/ldap.py:292
-#: lib/pp_admintools/app/ldap.py:1464
+#: lib/pp_admintools/app/ldap.py:1526
 msgid "The given file {!r} is not readable."
 msgstr ""
 
@@ -502,290 +553,316 @@ msgstr ""
 msgid "Verifying given instances ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:559
-msgid "Used filter:"
+#: lib/pp_admintools/app/ldap.py:582
+msgid "Filtered instances:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:584
+#: lib/pp_admintools/app/ldap.py:587
 msgid "LDAP instances to use:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:600
+#: lib/pp_admintools/app/ldap.py:603
 msgid "LDAP instance {!r} not found in configuration or is not usable."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:655
+#: lib/pp_admintools/app/ldap.py:658
 msgid "Preparations ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:658
+#: lib/pp_admintools/app/ldap.py:661
 msgid "Open all necessary LDAP connections ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:672
+#: lib/pp_admintools/app/ldap.py:675
 msgid "Password of user {usr} on LDAP instance {inst}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:681
+#: lib/pp_admintools/app/ldap.py:684
 msgid "Info about LDAP server {}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:691
+#: lib/pp_admintools/app/ldap.py:694
 msgid "Trying to get LDAP server object for {} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:707
+#: lib/pp_admintools/app/ldap.py:710
 msgid "Connect options to server {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:714
+#: lib/pp_admintools/app/ldap.py:717
 msgid "LDAP server {s}: {re}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:728
+#: lib/pp_admintools/app/ldap.py:731
 msgid "Connecting to LDAP server {url} as {dn!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:740
+#: lib/pp_admintools/app/ldap.py:743
 msgid "Finishing ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:750
+#: lib/pp_admintools/app/ldap.py:753
 msgid "Disconnecting from all remaining LDAP instances ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:763
+#: lib/pp_admintools/app/ldap.py:766
 msgid "Unbinding from LDAP server {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:770
+#: lib/pp_admintools/app/ldap.py:773
 msgid "Disconnecting from LDAP server {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:787 lib/pp_admintools/app/ldap.py:830
+#: lib/pp_admintools/app/ldap.py:796
+msgid "Searching in {uri}/{bdn} for all entries with filter {fltr!r}, giving attributes:"
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:808
+msgid "Result of searching:"
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:813
+msgid "Found entry {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:820
+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:824
+msgid "Got response entries:"
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:828
+msgid "No entry found with filter {fltr!r} in {uri}/{bdn}."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:849 lib/pp_admintools/app/ldap.py:892
 msgid "Using LDAP filter: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:796 lib/pp_admintools/app/ldap.py:839
+#: lib/pp_admintools/app/ldap.py:858 lib/pp_admintools/app/ldap.py:901
 msgid "Result of searching for DNs of all entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:800 lib/pp_admintools/app/ldap.py:843
-#: lib/pp_admintools/app/ldap.py:941 lib/pp_admintools/app/ldap.py:994
-#: lib/pp_admintools/app/ldap.py:1047 lib/pp_admintools/app/ldap.py:1135
-#: lib/pp_admintools/app/ldap.py:1335 lib/pp_admintools/app/ldap.py:1369
-#: lib/pp_admintools/app/ldap.py:1403 lib/pp_admintools/app/ldap.py:1437
+#: lib/pp_admintools/app/ldap.py:862 lib/pp_admintools/app/ldap.py:905
+#: lib/pp_admintools/app/ldap.py:1003 lib/pp_admintools/app/ldap.py:1056
+#: lib/pp_admintools/app/ldap.py:1109 lib/pp_admintools/app/ldap.py:1197
+#: lib/pp_admintools/app/ldap.py:1397 lib/pp_admintools/app/ldap.py:1431
+#: lib/pp_admintools/app/ldap.py:1465 lib/pp_admintools/app/ldap.py:1499
 msgid "Got a response entry:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:826
+#: lib/pp_admintools/app/ldap.py:888
 msgid "Getting all Entry DNs of LDAP instance {i!r} below {b!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:865
+#: lib/pp_admintools/app/ldap.py:927
 msgid "Trying to evaluate DN of user {user!r} in LDAP instance {inst} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:870
+#: lib/pp_admintools/app/ldap.py:932
 msgid "Trying to evaluate DN of user {u!r} as a mail address ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:877
+#: lib/pp_admintools/app/ldap.py:939
 msgid "Trying to evaluate DN of user {u!r} as a LDAP DN ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:884
+#: lib/pp_admintools/app/ldap.py:946
 msgid "Trying to evaluate DN of user {u!r} as a UID (Posix user name) ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:893 lib/pp_admintools/app/remove_ldap_user.py:290
+#: lib/pp_admintools/app/ldap.py:955 lib/pp_admintools/app/remove_ldap_user.py:290
 msgid "Empty user given."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:896
+#: lib/pp_admintools/app/ldap.py:958
 msgid "Trying to evaluate DN of user {u!r} as a CN ({c}) ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:926 lib/pp_admintools/app/ldap.py:979
-#: lib/pp_admintools/app/ldap.py:1032 lib/pp_admintools/app/ldap.py:1323
-#: lib/pp_admintools/app/ldap.py:1357 lib/pp_admintools/app/ldap.py:1391
-#: lib/pp_admintools/app/ldap.py:1425
+#: lib/pp_admintools/app/ldap.py:988 lib/pp_admintools/app/ldap.py:1041
+#: lib/pp_admintools/app/ldap.py:1094 lib/pp_admintools/app/ldap.py:1385
+#: lib/pp_admintools/app/ldap.py:1419 lib/pp_admintools/app/ldap.py:1453
+#: lib/pp_admintools/app/ldap.py:1487
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:937
+#: lib/pp_admintools/app/ldap.py:999
 msgid "Result of searching for mail address {m!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:948
+#: lib/pp_admintools/app/ldap.py:1010
 msgid "User with mail address {m!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:990
+#: lib/pp_admintools/app/ldap.py:1052
 msgid "Result of searching for uid {u!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1001
+#: lib/pp_admintools/app/ldap.py:1063
 msgid "User with uid {u!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1043
+#: lib/pp_admintools/app/ldap.py:1105
 msgid "Result of searching for CN {cn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1054
+#: lib/pp_admintools/app/ldap.py:1116
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1071 lib/pp_admintools/app/set_ldap_password.py:411
+#: lib/pp_admintools/app/ldap.py:1133 lib/pp_admintools/app/set_ldap_password.py:411
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1089
+#: lib/pp_admintools/app/ldap.py:1151
 msgid "ObjectClasses of {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1099
+#: lib/pp_admintools/app/ldap.py:1161
 msgid "Entry {dn!r} in {uri} seems not to be an account."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1121
+#: lib/pp_admintools/app/ldap.py:1183
 msgid "Searching DN {dn!r} in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1131
+#: lib/pp_admintools/app/ldap.py:1193
 msgid "Result of searching for DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1139
+#: lib/pp_admintools/app/ldap.py:1201
 msgid "Entry with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1184
+#: lib/pp_admintools/app/ldap.py:1246
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1190
+#: lib/pp_admintools/app/ldap.py:1252
 msgid "Simulation mode - entry will not be created."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1197
+#: lib/pp_admintools/app/ldap.py:1259
 msgid "Creation of entry {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1212
+#: lib/pp_admintools/app/ldap.py:1274
 msgid "Creation status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1214
+#: lib/pp_admintools/app/ldap.py:1276
 msgid "Result of creating:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1217
+#: lib/pp_admintools/app/ldap.py:1279
 msgid "Creation of entry {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1223
+#: lib/pp_admintools/app/ldap.py:1285
 msgid "Creation successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1234
+#: lib/pp_admintools/app/ldap.py:1296
 msgid "Applying changes on {uri} to DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1239
+#: lib/pp_admintools/app/ldap.py:1301
 msgid "Simulation mode - changes are not applied."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1245
+#: lib/pp_admintools/app/ldap.py:1307
 msgid "Modification of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1247 lib/pp_admintools/app/ldap.py:1266
+#: lib/pp_admintools/app/ldap.py:1309 lib/pp_admintools/app/ldap.py:1328
 #: lib/pp_admintools/app/remove_ldap_user.py:417 lib/pp_admintools/app/remove_ldap_user.py:444
 #: lib/pp_admintools/app/remove_ldap_user.py:471 lib/pp_admintools/app/remove_ldap_user.py:502
 #: lib/pp_admintools/app/remove_ldap_user.py:533 lib/pp_admintools/app/set_ldap_password.py:521
 msgid "Changes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1259
+#: lib/pp_admintools/app/ldap.py:1321
 msgid "Modification status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1261
+#: lib/pp_admintools/app/ldap.py:1323
 msgid "Result of modifying:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1264
+#: lib/pp_admintools/app/ldap.py:1326
 msgid "Modification of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1269
+#: lib/pp_admintools/app/ldap.py:1331
 msgid "Modification successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1279
+#: lib/pp_admintools/app/ldap.py:1341
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1284
+#: lib/pp_admintools/app/ldap.py:1346
 msgid "Simulation mode - deletion will not be executed."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1290
+#: lib/pp_admintools/app/ldap.py:1352
 msgid "Deletion of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1295
+#: lib/pp_admintools/app/ldap.py:1357
 msgid "Deletion status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1297
+#: lib/pp_admintools/app/ldap.py:1359
 msgid "Result of deletion:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1300
+#: lib/pp_admintools/app/ldap.py:1362
 msgid "Deletion of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1304
+#: lib/pp_admintools/app/ldap.py:1366
 msgid "Deletion successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1451
+#: lib/pp_admintools/app/ldap.py:1513
 msgid "Reading password file {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1482
+#: lib/pp_admintools/app/ldap.py:1544
 msgid "Could not detect RDN from DN {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1486
+#: lib/pp_admintools/app/ldap.py:1548
 msgid "Found RDN attribute {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1492
+#: lib/pp_admintools/app/ldap.py:1554
 msgid "RDN attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1498 lib/pp_admintools/app/ldap.py:1517
-#: lib/pp_admintools/app/ldap.py:1590
+#: lib/pp_admintools/app/ldap.py:1560 lib/pp_admintools/app/ldap.py:1579
+#: lib/pp_admintools/app/ldap.py:1652
 msgid "Attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1551
+#: lib/pp_admintools/app/ldap.py:1613
 msgid "Values to add to attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1555
+#: lib/pp_admintools/app/ldap.py:1617
 msgid "Values to removed from attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1572
+#: lib/pp_admintools/app/ldap.py:1634
 msgid "Changes for attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1575
+#: lib/pp_admintools/app/ldap.py:1637
 msgid "No changes to attribute {!r}."
 msgstr ""
 
@@ -1705,7 +1782,7 @@ msgid "Got a {c} for converting {v!r} into a float value: {e}"
 msgstr ""
 
 #: lib/pp_admintools/config/dns_deploy_zones.py:204 lib/pp_admintools/config/dns_deploy_zones.py:517
-#: lib/pp_admintools/config/mail.py:150 lib/pp_admintools/config/pdns.py:188
+#: lib/pp_admintools/config/mail.py:147 lib/pp_admintools/config/pdns.py:188
 msgid "Evaluating config section {!r}:"
 msgstr ""
 
@@ -1810,36 +1887,36 @@ msgstr ""
 msgid "Reading configuration of LDAP instance {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:171 lib/pp_admintools/config/mail.py:195
-#: lib/pp_admintools/config/mail.py:263
+#: lib/pp_admintools/config/mail.py:168 lib/pp_admintools/config/mail.py:192
+#: lib/pp_admintools/config/mail.py:264
 msgid "Found invalid {what} {addr!r} in configuration."
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:196
+#: lib/pp_admintools/config/mail.py:193
 msgid "from address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:212 lib/pp_admintools/config/mail.py:216
+#: lib/pp_admintools/config/mail.py:211 lib/pp_admintools/config/mail.py:215
 msgid "recipient mail address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:236 lib/pp_admintools/config/mail.py:240
+#: lib/pp_admintools/config/mail.py:237 lib/pp_admintools/config/mail.py:241
 msgid "cc mail address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:264
+#: lib/pp_admintools/config/mail.py:265
 msgid "reply to address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:280
+#: lib/pp_admintools/config/mail.py:281
 msgid "Found invalid mail method {!r} in configuration."
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:314
+#: lib/pp_admintools/config/mail.py:315
 msgid "Value {!r} for SMTP port is invalid:"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:319
+#: lib/pp_admintools/config/mail.py:320
 msgid "Found invalid SMTP port number {} in configuration."
 msgstr ""