summaryrefslogtreecommitdiffstats
path: root/install/po/ipa.pot
diff options
context:
space:
mode:
authorTomas Babej <tbabej@redhat.com>2015-06-24 13:48:02 +0200
committerTomas Babej <tbabej@redhat.com>2015-07-07 12:07:15 +0200
commit12b053df300cb58aad157797f4e30283e45033f5 (patch)
treedf8a7dddc9a59130fd5a7f94b6e6eca805b471d6 /install/po/ipa.pot
parentc6e6b216e943ec9457e7c3bd04b473af8b906ca8 (diff)
downloadfreeipa-12b053df300cb58aad157797f4e30283e45033f5.tar.gz
freeipa-12b053df300cb58aad157797f4e30283e45033f5.tar.xz
freeipa-12b053df300cb58aad157797f4e30283e45033f5.zip
l10n: Update translation strings
* Generate new l10n strings * Include newly created python implicit files * Merges already translated strings from Zanata https://fedorahosted.org/freeipa/ticket/4832 Reviewed-By: Martin Basti <mbasti@redhat.com>
Diffstat (limited to 'install/po/ipa.pot')
-rw-r--r--install/po/ipa.pot6635
1 files changed, 4651 insertions, 1984 deletions
diff --git a/install/po/ipa.pot b/install/po/ipa.pot
index bc24273f3..fc5a84db3 100644
--- a/install/po/ipa.pot
+++ b/install/po/ipa.pot
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: ipa\n"
"Report-Msgid-Bugs-To: https://hosted.fedoraproject.org/projects/freeipa/"
"newticket\n"
-"POT-Creation-Date: 2014-07-07 15:24+0200\n"
+"POT-Creation-Date: 2015-06-24 13:48+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,7 +24,7 @@ msgstr ""
msgid "Enter %(label)s again to verify: "
msgstr ""
-#: ipalib/cli.py:607 ipa-client/ipa-getkeytab.c:739
+#: ipalib/cli.py:607 ipa-client/ipa-getkeytab.c:587
#, c-format
msgid "Passwords do not match!"
msgstr ""
@@ -41,36 +41,36 @@ msgstr ""
msgid "The topic or command name."
msgstr ""
-#: ipalib/cli.py:844
+#: ipalib/cli.py:847
msgid "Topic commands:"
msgstr ""
-#: ipalib/cli.py:849
+#: ipalib/cli.py:852
msgid "To get command help, use:"
msgstr ""
-#: ipalib/cli.py:850
+#: ipalib/cli.py:853
msgid " ipa <command> --help"
msgstr ""
-#: ipalib/cli.py:859
+#: ipalib/cli.py:862
msgid "Command name"
msgstr ""
-#: ipalib/cli.py:1027
+#: ipalib/cli.py:1030
msgid "Positional arguments"
msgstr ""
-#: ipalib/cli.py:1175
+#: ipalib/cli.py:1178
#, python-format
msgid "Same as --%s"
msgstr ""
-#: ipalib/cli.py:1178
+#: ipalib/cli.py:1181
msgid "Deprecated options"
msgstr ""
-#: ipalib/cli.py:1300
+#: ipalib/cli.py:1303
msgid "No file to read"
msgstr ""
@@ -170,320 +170,325 @@ msgstr ""
msgid "Principal %(principal)s cannot be authenticated: %(message)s"
msgstr ""
-#: ipalib/errors.py:603
+#: ipalib/errors.py:609
#, python-format
msgid "Insufficient access: %(info)s"
msgstr ""
-#: ipalib/errors.py:647
+#: ipalib/errors.py:653
#, python-format
msgid "command '%(name)s' takes no arguments"
msgstr ""
-#: ipalib/errors.py:667
+#: ipalib/errors.py:673
#, python-format
msgid "command '%(name)s' takes at most %(count)d argument"
msgid_plural "command '%(name)s' takes at most %(count)d arguments"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/errors.py:697
+#: ipalib/errors.py:703
#, python-format
msgid "overlapping arguments and options: %(names)s"
msgstr ""
-#: ipalib/errors.py:713
+#: ipalib/errors.py:719
#, python-format
msgid "'%(name)s' is required"
msgstr ""
-#: ipalib/errors.py:729 ipalib/errors.py:745
+#: ipalib/errors.py:735 ipalib/errors.py:751
#, python-format
msgid "invalid '%(name)s': %(error)s"
msgstr ""
-#: ipalib/errors.py:761
+#: ipalib/errors.py:767
#, python-format
msgid "api has no such namespace: '%(name)s'"
msgstr ""
-#: ipalib/errors.py:770
+#: ipalib/errors.py:776
msgid "Passwords do not match"
msgstr ""
-#: ipalib/errors.py:779
+#: ipalib/errors.py:785
msgid "Command not implemented"
msgstr ""
-#: ipalib/errors.py:788
+#: ipalib/errors.py:794
msgid "Client is not configured. Run ipa-client-install."
msgstr ""
-#: ipalib/errors.py:797
+#: ipalib/errors.py:803
#, python-format
msgid "Could not get %(name)s interactively"
msgstr ""
-#: ipalib/errors.py:812
+#: ipalib/errors.py:818
#, python-format
msgid "Command '%(name)s' has been deprecated"
msgstr ""
-#: ipalib/errors.py:840 ipalib/errors.py:1080 ipalib/errors.py:1174
-#: ipalib/errors.py:1605 ipalib/errors.py:1622
+#: ipalib/errors.py:834
+#, python-format
+msgid "Domain '%(domain)s' is not a root domain for forest '%(forest)s'"
+msgstr ""
+
+#: ipalib/errors.py:862 ipalib/errors.py:1102 ipalib/errors.py:1196
+#: ipalib/errors.py:1658 ipalib/errors.py:1675
#, python-format
msgid "%(reason)s"
msgstr ""
-#: ipalib/errors.py:856
+#: ipalib/errors.py:878
msgid "This entry already exists"
msgstr ""
-#: ipalib/errors.py:872
+#: ipalib/errors.py:894
msgid "You must enroll a host in order to create a host service"
msgstr ""
-#: ipalib/errors.py:888
+#: ipalib/errors.py:910
#, python-format
msgid ""
"Service principal is not of the form: service/fully-qualified host name: "
"%(reason)s"
msgstr ""
-#: ipalib/errors.py:904
+#: ipalib/errors.py:926
msgid ""
"The realm for the principal does not match the realm for this IPA server"
msgstr ""
-#: ipalib/errors.py:920
+#: ipalib/errors.py:942
msgid "This command requires root access"
msgstr ""
-#: ipalib/errors.py:936
+#: ipalib/errors.py:958
msgid "This is already a posix group"
msgstr ""
-#: ipalib/errors.py:952
+#: ipalib/errors.py:974
#, python-format
msgid "Principal is not of the form user@REALM: '%(principal)s'"
msgstr ""
-#: ipalib/errors.py:968
+#: ipalib/errors.py:990
msgid "This entry is already enabled"
msgstr ""
-#: ipalib/errors.py:984
+#: ipalib/errors.py:1006
msgid "This entry is already disabled"
msgstr ""
-#: ipalib/errors.py:1000
+#: ipalib/errors.py:1022
msgid "This entry cannot be enabled or disabled"
msgstr ""
-#: ipalib/errors.py:1016
+#: ipalib/errors.py:1038
msgid "This entry is not a member"
msgstr ""
-#: ipalib/errors.py:1032
+#: ipalib/errors.py:1054
msgid "A group may not be a member of itself"
msgstr ""
-#: ipalib/errors.py:1048
+#: ipalib/errors.py:1070
msgid "This entry is already a member"
msgstr ""
-#: ipalib/errors.py:1064
+#: ipalib/errors.py:1086
#, python-format
msgid "Base64 decoding failed: %(reason)s"
msgstr ""
-#: ipalib/errors.py:1096
+#: ipalib/errors.py:1118
msgid "A group may not be added as a member of itself"
msgstr ""
-#: ipalib/errors.py:1112
+#: ipalib/errors.py:1134
msgid "The default users group cannot be removed"
msgstr ""
-#: ipalib/errors.py:1128
-msgid "Host does not have corresponding DNS A record"
+#: ipalib/errors.py:1150
+msgid "Host does not have corresponding DNS A/AAAA record"
msgstr ""
-#: ipalib/errors.py:1143
+#: ipalib/errors.py:1165
msgid "Deleting a managed group is not allowed. It must be detached first."
msgstr ""
-#: ipalib/errors.py:1158
+#: ipalib/errors.py:1180
msgid "A managed group cannot have a password policy."
msgstr ""
-#: ipalib/errors.py:1190
+#: ipalib/errors.py:1212
#, python-format
msgid "'%(entry)s' doesn't have a certificate."
msgstr ""
-#: ipalib/errors.py:1206
+#: ipalib/errors.py:1228
#, python-format
msgid "Unable to create private group. A group '%(group)s' already exists."
msgstr ""
-#: ipalib/errors.py:1222
+#: ipalib/errors.py:1244
#, python-format
msgid ""
"A problem was encountered when verifying that all members were %(verb)s: "
"%(exc)s"
msgstr ""
-#: ipalib/errors.py:1240
+#: ipalib/errors.py:1262
#, python-format
msgid "%(attr)s does not contain '%(value)s'"
msgstr ""
-#: ipalib/errors.py:1257
+#: ipalib/errors.py:1279
#, python-format
msgid ""
"The search criteria was not specific enough. Expected 1 and found %(found)d."
msgstr ""
-#: ipalib/errors.py:1274
+#: ipalib/errors.py:1296
msgid "This group already allows external members"
msgstr ""
-#: ipalib/errors.py:1291
+#: ipalib/errors.py:1313
msgid "This group cannot be posix because it is external"
msgstr ""
-#: ipalib/errors.py:1308
+#: ipalib/errors.py:1330
msgid "This is already a posix group and cannot be converted to external one"
msgstr ""
-#: ipalib/errors.py:1331
+#: ipalib/errors.py:1384
#, python-format
msgid "no command nor help topic '%(topic)s'"
msgstr ""
-#: ipalib/errors.py:1355
+#: ipalib/errors.py:1408
msgid "change collided with another change"
msgstr ""
-#: ipalib/errors.py:1371
+#: ipalib/errors.py:1424
msgid "no modifications to be performed"
msgstr ""
-#: ipalib/errors.py:1387
+#: ipalib/errors.py:1440
#, python-format
msgid "%(desc)s: %(info)s"
msgstr ""
-#: ipalib/errors.py:1403
+#: ipalib/errors.py:1456
msgid "limits exceeded for this query"
msgstr ""
-#: ipalib/errors.py:1418
+#: ipalib/errors.py:1471
#, python-format
msgid "%(info)s"
msgstr ""
-#: ipalib/errors.py:1433
+#: ipalib/errors.py:1486
msgid "modifying primary key is not allowed"
msgstr ""
-#: ipalib/errors.py:1449
+#: ipalib/errors.py:1502
#, python-format
msgid "%(attr)s: Only one value allowed."
msgstr ""
-#: ipalib/errors.py:1465
+#: ipalib/errors.py:1518
#, python-format
msgid "%(attr)s: Invalid syntax."
msgstr ""
-#: ipalib/errors.py:1481
+#: ipalib/errors.py:1534
#, python-format
msgid "Bad search filter %(info)s"
msgstr ""
-#: ipalib/errors.py:1497
+#: ipalib/errors.py:1550
msgid "Not allowed on non-leaf entry"
msgstr ""
-#: ipalib/errors.py:1513
+#: ipalib/errors.py:1566
msgid "LDAP timeout"
msgstr ""
-#: ipalib/errors.py:1531
+#: ipalib/errors.py:1584
#, python-format
msgid "DNS check failed: Expected {%(expected)s} got {%(got)s}"
msgstr ""
-#: ipalib/errors.py:1547
+#: ipalib/errors.py:1600
#, python-format
msgid "%(task)s LDAP task timeout, Task DN: '%(task_dn)s'"
msgstr ""
-#: ipalib/errors.py:1572
+#: ipalib/errors.py:1625
#, python-format
msgid "Certificate operation cannot be completed: %(error)s"
msgstr ""
-#: ipalib/errors.py:1588
+#: ipalib/errors.py:1641
#, python-format
msgid "Certificate format error: %(error)s"
msgstr ""
-#: ipalib/errors.py:1639
+#: ipalib/errors.py:1692
msgid "Already registered"
msgstr ""
-#: ipalib/errors.py:1655
+#: ipalib/errors.py:1708
msgid "Not registered yet"
msgstr ""
-#: ipalib/errors.py:1671
+#: ipalib/errors.py:1724
#, python-format
msgid "%(key)s cannot be deleted because %(label)s %(dependent)s requires it"
msgstr ""
-#: ipalib/errors.py:1687
+#: ipalib/errors.py:1740
#, python-format
msgid ""
"%(key)s cannot be deleted or disabled because it is the last member of "
"%(label)s %(container)s"
msgstr ""
-#: ipalib/errors.py:1703
+#: ipalib/errors.py:1756
#, python-format
msgid "%(label)s %(key)s cannot be deleted/modified: %(reason)s"
msgstr ""
-#: ipalib/errors.py:1720
+#: ipalib/errors.py:1773
#, python-format
msgid "%(name)s certificate is not valid"
msgstr ""
-#: ipalib/frontend.py:412
+#: ipalib/frontend.py:416
msgid "Results are truncated, try a more specific search"
msgstr ""
-#: ipalib/frontend.py:535
+#: ipalib/frontend.py:541
#, python-format
msgid "Unknown option: %(option)s"
msgstr ""
-#: ipalib/frontend.py:898
+#: ipalib/frontend.py:904
msgid ""
"Retrieve and print all attributes from the server. Affects command output."
msgstr ""
-#: ipalib/frontend.py:904
+#: ipalib/frontend.py:910
msgid "Print entries as stored on the server. Only affects output format."
msgstr ""
-#: ipalib/frontend.py:910 ipalib/plugins/batch.py:73
+#: ipalib/frontend.py:916 ipalib/plugins/batch.py:73
msgid "Client version. Used to determine if server will accept request."
msgstr ""
-#: ipalib/frontend.py:1087
+#: ipalib/frontend.py:1093
msgid "Forward to server instead of running locally"
msgstr ""
@@ -512,6 +517,53 @@ msgid ""
"%(additional_info)s"
msgstr ""
+#: ipalib/messages.py:168
+#, python-format
+msgid "'%(option)s' option is deprecated. %(additional_info)s"
+msgstr ""
+
+#: ipalib/messages.py:178
+#, python-format
+msgid ""
+"Semantic of %(label)s was changed. %(current_behavior)s\n"
+"%(hint)s"
+msgstr ""
+
+#: ipalib/messages.py:189
+#, python-format
+msgid "DNS server %(server)s: %(error)s."
+msgstr ""
+
+#: ipalib/messages.py:199
+#, python-format
+msgid ""
+"DNS server %(server)s does not support DNSSEC: %(error)s.\n"
+"If DNSSEC validation is enabled on IPA server(s), please disable it."
+msgstr ""
+
+#: ipalib/messages.py:212
+#, python-format
+msgid ""
+"forward zone \"%(fwzone)s\" is not effective because of missing proper NS "
+"delegation in authoritative zone \"%(authzone)s\". Please add NS record "
+"\"%(ns_rec)s\" to parent zone \"%(authzone)s\"."
+msgstr ""
+
+#: ipalib/messages.py:226
+#, python-format
+msgid ""
+"DNS server %(server)s does not support EDNS0 (RFC 6891): %(error)s.\n"
+"If DNSSEC validation is enabled on IPA server(s), please disable it."
+msgstr ""
+
+#: ipalib/messages.py:239
+#, python-format
+msgid ""
+"DNSSEC validation failed: %(error)s.\n"
+"Please verify your DNSSEC configuration or disable DNSSEC validation on all "
+"IPA servers."
+msgstr ""
+
#: ipalib/output.py:93
msgid "A dictionary representing an LDAP entry"
msgstr ""
@@ -544,7 +596,7 @@ msgstr ""
msgid "List of deletions that failed"
msgstr ""
-#: ipalib/output.py:193 ipalib/plugins/dns.py:308
+#: ipalib/output.py:193 ipalib/plugins/dns.py:313
msgid "True means the operation was successful"
msgstr ""
@@ -677,36 +729,11 @@ msgstr ""
msgid "must be DNS name"
msgstr ""
-#: ipalib/parameters.py:1955
-msgid "invalid escape code in domain name"
-msgstr ""
-
-#: ipalib/parameters.py:1957 ipalib/util.py:240
-msgid "empty DNS label"
-msgstr ""
-
-#: ipalib/parameters.py:1959
-msgid "domain name cannot be longer than 255 characters"
-msgstr ""
-
-#: ipalib/parameters.py:1961
-msgid "DNS label cannot be longer than 63 characters"
-msgstr ""
-
-#: ipalib/parameters.py:1963
-msgid "invalid domain name"
-msgstr ""
-
-#: ipalib/parameters.py:1975
-#, python-format
-msgid "domain name '%(domain)s' should be normalized to: %(normalized)s"
-msgstr ""
-
-#: ipalib/parameters.py:1991
+#: ipalib/parameters.py:1966
msgid "must be absolute"
msgstr ""
-#: ipalib/parameters.py:1995
+#: ipalib/parameters.py:1970
msgid "must be relative"
msgstr ""
@@ -817,8 +844,8 @@ msgstr ""
msgid "Attributes"
msgstr ""
-#: ipalib/plugins/aci.py:472 ipalib/plugins/otptoken.py:141
-#: ipalib/plugins/permission.py:315
+#: ipalib/plugins/aci.py:472 ipalib/plugins/otptoken.py:160
+#: ipalib/plugins/permission.py:333
msgid "Type"
msgstr ""
@@ -834,7 +861,8 @@ msgstr ""
msgid "Member of a group"
msgstr ""
-#: ipalib/plugins/aci.py:485 ipalib/plugins/internal.py:206
+#: ipalib/plugins/aci.py:485 ipalib/plugins/internal.py:216
+#: ipalib/plugins/internal.py:591
msgid "Filter"
msgstr ""
@@ -842,7 +870,7 @@ msgstr ""
msgid "Legal LDAP filter (e.g. ou=Engineering)"
msgstr ""
-#: ipalib/plugins/aci.py:491 ipalib/plugins/permission.py:277
+#: ipalib/plugins/aci.py:491 ipalib/plugins/permission.py:278
msgid "Subtree"
msgstr ""
@@ -850,7 +878,7 @@ msgstr ""
msgid "Subtree to apply ACI to"
msgstr ""
-#: ipalib/plugins/aci.py:497 ipalib/plugins/permission.py:309
+#: ipalib/plugins/aci.py:497 ipalib/plugins/permission.py:327
msgid "Target group"
msgstr ""
@@ -957,10 +985,11 @@ msgid ""
"against existing entries, thus rebuilding their membership.\n"
msgstr ""
-#: ipalib/plugins/automember.py:50 ipalib/plugins/host.py:79
-#: ipalib/plugins/otptoken.py:46 ipalib/plugins/otptoken_yubikey.py:37
+#: ipalib/plugins/automember.py:50 ipalib/plugins/host.py:80
+#: ipalib/plugins/otptoken.py:46 ipalib/plugins/otptoken_yubikey.py:38
#: ipalib/plugins/permission.py:90 ipalib/plugins/radiusproxy.py:35
-#: ipalib/plugins/sudorule.py:66
+#: ipalib/plugins/server.py:19 ipalib/plugins/sudorule.py:66
+#: ipalib/plugins/vault.py:52
msgid ""
"\n"
"EXAMPLES:\n"
@@ -1157,14 +1186,16 @@ msgid "Auto Membership Rule"
msgstr ""
#: ipalib/plugins/automember.py:237 ipalib/plugins/automount.py:600
-#: ipalib/plugins/group.py:222 ipalib/plugins/hbacrule.py:233
-#: ipalib/plugins/hbacsvc.py:108 ipalib/plugins/hbacsvcgroup.py:112
-#: ipalib/plugins/host.py:385 ipalib/plugins/hostgroup.py:144
-#: ipalib/plugins/netgroup.py:179 ipalib/plugins/otptoken.py:149
-#: ipalib/plugins/privilege.py:107 ipalib/plugins/radiusproxy.py:109
-#: ipalib/plugins/role.py:139 ipalib/plugins/selinuxusermap.py:227
-#: ipalib/plugins/sudocmd.py:119 ipalib/plugins/sudocmdgroup.py:122
-#: ipalib/plugins/sudorule.py:223
+#: ipalib/plugins/caacl.py:222 ipalib/plugins/group.py:242
+#: ipalib/plugins/hbacrule.py:233 ipalib/plugins/hbacsvc.py:108
+#: ipalib/plugins/hbacsvcgroup.py:112 ipalib/plugins/host.py:459
+#: ipalib/plugins/hostgroup.py:156 ipalib/plugins/idviews.py:82
+#: ipalib/plugins/idviews.py:553 ipalib/plugins/netgroup.py:189
+#: ipalib/plugins/otptoken.py:169 ipalib/plugins/privilege.py:107
+#: ipalib/plugins/radiusproxy.py:109 ipalib/plugins/role.py:141
+#: ipalib/plugins/selinuxusermap.py:227 ipalib/plugins/sudocmd.py:119
+#: ipalib/plugins/sudocmdgroup.py:122 ipalib/plugins/sudorule.py:223
+#: ipalib/plugins/vault.py:195
msgid "Description"
msgstr ""
@@ -1363,9 +1394,10 @@ msgstr ""
msgid "Rebuild membership for all members of a grouping"
msgstr ""
-#: ipalib/plugins/automember.py:657 ipalib/plugins/hbacrule.py:240
-#: ipalib/plugins/internal.py:513 ipalib/plugins/selinuxusermap.py:234
-#: ipalib/plugins/sudorule.py:267 ipalib/plugins/user.py:429
+#: ipalib/plugins/automember.py:657 ipalib/plugins/baseuser.py:208
+#: ipalib/plugins/caacl.py:269 ipalib/plugins/hbacrule.py:240
+#: ipalib/plugins/internal.py:573 ipalib/plugins/selinuxusermap.py:234
+#: ipalib/plugins/sudorule.py:267 ipalib/plugins/user.py:125
msgid "Users"
msgstr ""
@@ -1373,9 +1405,10 @@ msgstr ""
msgid "Rebuild membership for specified users"
msgstr ""
-#: ipalib/plugins/automember.py:662 ipalib/plugins/hbacrule.py:248
-#: ipalib/plugins/host.py:373 ipalib/plugins/internal.py:507
-#: ipalib/plugins/selinuxusermap.py:242 ipalib/plugins/sudorule.py:280
+#: ipalib/plugins/automember.py:662 ipalib/plugins/caacl.py:277
+#: ipalib/plugins/hbacrule.py:248 ipalib/plugins/host.py:447
+#: ipalib/plugins/internal.py:567 ipalib/plugins/selinuxusermap.py:242
+#: ipalib/plugins/sudorule.py:280
msgid "Hosts"
msgstr ""
@@ -1415,20 +1448,20 @@ msgstr ""
msgid "users cannot be set when type is 'hostgroup'"
msgstr ""
-#: ipalib/plugins/automember.py:759
+#: ipalib/plugins/automember.py:762
msgid "Automember rebuild membership task started"
msgstr ""
-#: ipalib/plugins/automember.py:763 ipalib/plugins/internal.py:158
+#: ipalib/plugins/automember.py:766 ipalib/plugins/internal.py:158
msgid "Automember rebuild membership task completed"
msgstr ""
-#: ipalib/plugins/automember.py:780
+#: ipalib/plugins/automember.py:783
#, python-format
msgid "Task DN = '%s'"
msgstr ""
-#: ipalib/plugins/automember.py:783 ipalib/plugins/internal.py:702
+#: ipalib/plugins/automember.py:786 ipalib/plugins/internal.py:792
msgid "Automember"
msgstr ""
@@ -1556,7 +1589,7 @@ msgstr ""
msgid "Automount Location"
msgstr ""
-#: ipalib/plugins/automount.py:243 ipalib/plugins/host.py:395
+#: ipalib/plugins/automount.py:243 ipalib/plugins/host.py:469
msgid "Location"
msgstr ""
@@ -1716,7 +1749,7 @@ msgid "automount keys"
msgstr ""
#: ipalib/plugins/automount.py:701 ipalib/plugins/automount.py:950
-#: ipalib/plugins/automount.py:1057 ipalib/plugins/otptoken.py:191
+#: ipalib/plugins/automount.py:1057 ipalib/plugins/otptoken.py:214
msgid "Key"
msgstr ""
@@ -1837,13 +1870,14 @@ msgstr[1] ""
msgid "Display an automount key."
msgstr ""
-#: ipalib/plugins/baseldap.py:43 ipalib/plugins/internal.py:292
-#: ipalib/plugins/internal.py:666 ipalib/plugins/migration.py:502
-#: ipalib/plugins/otptoken.py:442 ipalib/plugins/user.py:497
+#: ipalib/plugins/baseldap.py:43 ipalib/plugins/baseuser.py:276
+#: ipalib/plugins/internal.py:196 ipalib/plugins/internal.py:314
+#: ipalib/plugins/internal.py:756 ipalib/plugins/migration.py:500
+#: ipalib/plugins/otptoken.py:522
msgid "Password"
msgstr ""
-#: ipalib/plugins/baseldap.py:46
+#: ipalib/plugins/baseldap.py:46 ipalib/plugins/servicedelegation.py:100
msgid "Failed members"
msgstr ""
@@ -1871,7 +1905,7 @@ msgstr ""
msgid "Member of host-groups"
msgstr ""
-#: ipalib/plugins/baseldap.py:73 ipalib/plugins/role.py:128
+#: ipalib/plugins/baseldap.py:73 ipalib/plugins/role.py:130
msgid "Roles"
msgstr ""
@@ -1976,190 +2010,762 @@ msgstr ""
msgid "Invalid format. Should be name=value"
msgstr ""
-#: ipalib/plugins/baseldap.py:311
+#: ipalib/plugins/baseldap.py:319
msgid "External host"
msgstr ""
-#: ipalib/plugins/baseldap.py:483
+#: ipalib/plugins/baseldap.py:491
msgid "An IPA master host cannot be deleted or disabled"
msgstr ""
-#: ipalib/plugins/baseldap.py:497
+#: ipalib/plugins/baseldap.py:522
msgid "entry"
msgstr ""
-#: ipalib/plugins/baseldap.py:498
+#: ipalib/plugins/baseldap.py:523
msgid "entries"
msgstr ""
-#: ipalib/plugins/baseldap.py:531 ipalib/plugins/baseldap.py:532
+#: ipalib/plugins/baseldap.py:556 ipalib/plugins/baseldap.py:557
msgid "Entry"
msgstr ""
-#: ipalib/plugins/baseldap.py:535
+#: ipalib/plugins/baseldap.py:560
#, python-format
msgid "container entry (%(container)s) not found"
msgstr ""
-#: ipalib/plugins/baseldap.py:536
+#: ipalib/plugins/baseldap.py:561
#, python-format
msgid "%(parent)s: %(oname)s not found"
msgstr ""
-#: ipalib/plugins/baseldap.py:537
+#: ipalib/plugins/baseldap.py:562
#, python-format
msgid "%(pkey)s: %(oname)s not found"
msgstr ""
-#: ipalib/plugins/baseldap.py:538
+#: ipalib/plugins/baseldap.py:563
#, python-format
msgid "%(oname)s with name \"%(pkey)s\" already exists"
msgstr ""
-#: ipalib/plugins/baseldap.py:738 ipalib/plugins/baseldap.py:746
-#: ipalib/plugins/baseldap.py:751
+#: ipalib/plugins/baseldap.py:844 ipalib/plugins/baseldap.py:852
+#: ipalib/plugins/baseldap.py:857
#, python-format
msgid "attribute \"%(attribute)s\" not allowed"
msgstr ""
-#: ipalib/plugins/baseldap.py:813
+#: ipalib/plugins/baseldap.py:919
msgid ""
"Set an attribute to a name/value pair. Format is attr=value.\n"
"For multi-valued attributes, the command replaces the values already present."
msgstr ""
-#: ipalib/plugins/baseldap.py:819
+#: ipalib/plugins/baseldap.py:925
msgid ""
"Add an attribute/value pair. Format is attr=value. The attribute\n"
"must be part of the schema."
msgstr ""
-#: ipalib/plugins/baseldap.py:825
+#: ipalib/plugins/baseldap.py:931
msgid ""
"Delete an attribute/value pair. The option will be evaluated\n"
"last, after all sets and adds."
msgstr ""
-#: ipalib/plugins/baseldap.py:859
+#: ipalib/plugins/baseldap.py:965
msgid "attribute is not configurable"
msgstr ""
-#: ipalib/plugins/baseldap.py:962
+#: ipalib/plugins/baseldap.py:1068
msgid "No such attribute on this entry"
msgstr ""
-#: ipalib/plugins/baseldap.py:1058
+#: ipalib/plugins/baseldap.py:1164
msgid "Suppress processing of membership attributes."
msgstr ""
-#: ipalib/plugins/baseldap.py:1235
+#: ipalib/plugins/baseldap.py:1343
msgid "Continuous mode: Don't stop on errors."
msgstr ""
-#: ipalib/plugins/baseldap.py:1256 ipalib/plugins/baseldap.py:1332
+#: ipalib/plugins/baseldap.py:1364 ipalib/plugins/baseldap.py:1442
msgid "Rights"
msgstr ""
-#: ipalib/plugins/baseldap.py:1257 ipalib/plugins/baseldap.py:1333
+#: ipalib/plugins/baseldap.py:1365 ipalib/plugins/baseldap.py:1443
msgid ""
"Display the access rights of this entry (requires --all). See ipa man page "
"for details."
msgstr ""
-#: ipalib/plugins/baseldap.py:1342
+#: ipalib/plugins/baseldap.py:1452
msgid "Rename"
msgstr ""
-#: ipalib/plugins/baseldap.py:1343
+#: ipalib/plugins/baseldap.py:1453
#, python-format
msgid "Rename the %(ldap_obj_name)s object"
msgstr ""
-#: ipalib/plugins/baseldap.py:1424
+#: ipalib/plugins/baseldap.py:1543
msgid "the entry was deleted while being modified"
msgstr ""
-#: ipalib/plugins/baseldap.py:1555 ipalib/plugins/baseldap.py:2023
+#: ipalib/plugins/baseldap.py:1676 ipalib/plugins/baseldap.py:2151
#, python-format
msgid "%s"
msgstr ""
-#: ipalib/plugins/baseldap.py:1567
+#: ipalib/plugins/baseldap.py:1688 ipalib/plugins/servicedelegation.py:184
+#: ipalib/plugins/servicedelegation.py:267
#, python-format
msgid "member %s"
msgstr ""
-#: ipalib/plugins/baseldap.py:1597 ipalib/plugins/baseldap.py:2048
+#: ipalib/plugins/baseldap.py:1718 ipalib/plugins/baseldap.py:2176
#, python-format
msgid "%s to add"
msgstr ""
-#: ipalib/plugins/baseldap.py:1605 ipalib/plugins/baseldap.py:2060
+#: ipalib/plugins/baseldap.py:1726 ipalib/plugins/baseldap.py:2188
#: ipalib/plugins/privilege.py:176 ipalib/plugins/privilege.py:231
-#: ipalib/plugins/role.py:211 ipalib/plugins/role.py:234
+#: ipalib/plugins/role.py:213 ipalib/plugins/role.py:236
msgid "Members that could not be added"
msgstr ""
-#: ipalib/plugins/baseldap.py:1609 ipalib/plugins/baseldap.py:2064
+#: ipalib/plugins/baseldap.py:1730 ipalib/plugins/baseldap.py:2192
msgid "Number of members added"
msgstr ""
-#: ipalib/plugins/baseldap.py:1697 ipalib/plugins/baseldap.py:2152
+#: ipalib/plugins/baseldap.py:1820 ipalib/plugins/baseldap.py:2277
#, python-format
msgid "%s to remove"
msgstr ""
-#: ipalib/plugins/baseldap.py:1704 ipalib/plugins/baseldap.py:2164
+#: ipalib/plugins/baseldap.py:1827 ipalib/plugins/baseldap.py:2289
msgid "Members that could not be removed"
msgstr ""
-#: ipalib/plugins/baseldap.py:1708 ipalib/plugins/baseldap.py:2168
+#: ipalib/plugins/baseldap.py:1831 ipalib/plugins/baseldap.py:2293
msgid "Number of members removed"
msgstr ""
-#: ipalib/plugins/baseldap.py:1797
+#: ipalib/plugins/baseldap.py:1922
msgid "Primary key only"
msgstr ""
-#: ipalib/plugins/baseldap.py:1798
+#: ipalib/plugins/baseldap.py:1923
#, python-format
msgid "Results should contain primary key attribute only (\"%s\")"
msgstr ""
-#: ipalib/plugins/baseldap.py:1806
+#: ipalib/plugins/baseldap.py:1931
#, python-format
msgid ""
"Search for %(searched_object)s with these %(relationship)s %(ldap_object)s."
msgstr ""
-#: ipalib/plugins/baseldap.py:1807
+#: ipalib/plugins/baseldap.py:1932
#, python-format
msgid ""
"Search for %(searched_object)s without these %(relationship)s "
"%(ldap_object)s."
msgstr ""
-#: ipalib/plugins/baseldap.py:1816
+#: ipalib/plugins/baseldap.py:1941
msgid "Time Limit"
msgstr ""
-#: ipalib/plugins/baseldap.py:1817
+#: ipalib/plugins/baseldap.py:1942
msgid "Time limit of search in seconds"
msgstr ""
-#: ipalib/plugins/baseldap.py:1823 ipalib/plugins/cert.py:721
+#: ipalib/plugins/baseldap.py:1948 ipalib/plugins/cert.py:786
#: ipalib/plugins/hbactest.py:289
msgid "Size Limit"
msgstr ""
-#: ipalib/plugins/baseldap.py:1824
+#: ipalib/plugins/baseldap.py:1949
msgid "Maximum number of entries returned"
msgstr ""
+#: ipalib/plugins/baseuser.py:44
+msgid ""
+"\n"
+"Baseuser\n"
+"\n"
+"This contains common definitions for user/stageuser\n"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:56
+msgid "Kerberos keys available"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:59 ipalib/plugins/host.py:217
+msgid "SSH public key fingerprint"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:65 ipalib/plugins/radiusproxy.py:114
+msgid "Server"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:68
+msgid "Failed logins"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:71
+msgid "Last successful authentication"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:74
+msgid "Last failed authentication"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:77
+msgid "Time now"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:98
+msgid "must be TRUE or FALSE"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:209 ipalib/plugins/internal.py:571
+#: ipalib/plugins/internal.py:637 ipalib/plugins/pwpolicy.py:524
+#: ipalib/plugins/user.py:126
+msgid "User"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:217 ipalib/plugins/idviews.py:690
+msgid "User login"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:224
+msgid "First name"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:228
+msgid "Last name"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:231
+msgid "Full name"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:236
+msgid "Display name"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:241
+msgid "Initials"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:247 ipalib/plugins/idviews.py:709
+msgid "Home directory"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:250 ipalib/plugins/idviews.py:700
+msgid "GECOS"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:256 ipalib/plugins/idviews.py:713
+msgid "Login shell"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:260
+msgid "Kerberos principal"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:268
+msgid "Kerberos principal expiration"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:272
+msgid "Email address"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:277
+msgid "Prompt to set the user password"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:283
+msgid "Generate a random user password"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:288 ipalib/plugins/host.py:493
+msgid "Random password"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:293 ipalib/plugins/idviews.py:695
+msgid "UID"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:294
+msgid "User ID Number (system will assign one if not provided)"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:298 ipalib/plugins/group.py:247
+#: ipalib/plugins/idviews.py:703 ipalib/plugins/idviews.py:775
+msgid "GID"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:299 ipalib/plugins/idviews.py:704
+#: ipalib/plugins/idviews.py:776
+msgid "Group ID Number"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:304
+msgid "Street address"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:308
+msgid "City"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:312
+msgid "State/Province"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:315
+msgid "ZIP"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:319
+msgid "Telephone Number"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:322
+msgid "Mobile Telephone Number"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:325
+msgid "Pager Number"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:329
+msgid "Fax Number"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:333
+msgid "Org. Unit"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:336
+msgid "Job Title"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:339 ipalib/plugins/otptoken.py:178
+msgid "Manager"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:342
+msgid "Car License"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:346 ipalib/plugins/host.py:516
+#: ipalib/plugins/idviews.py:720
+msgid "SSH public key"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:353
+msgid "User authentication types"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:354
+msgid "Types of supported user authentication"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:360 ipalib/plugins/host.py:523
+msgid "Class"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:361
+msgid ""
+"User category (semantics placed on this attribute are for local "
+"interpretation)"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:366
+msgid "RADIUS proxy configuration"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:370
+msgid "RADIUS proxy username"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:373
+msgid "Department Number"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:376
+msgid "Employee Number"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:379
+msgid "Employee Type"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:382
+msgid "Preferred Language"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:389 ipalib/plugins/cert.py:258
+#: ipalib/plugins/cert.py:566 ipalib/plugins/host.py:498
+#: ipalib/plugins/internal.py:354 ipalib/plugins/service.py:453
+msgid "Certificate"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:390 ipalib/plugins/host.py:499
+#: ipalib/plugins/service.py:454
+msgid "Base-64 encoded server certificate"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:409 ipalib/plugins/baseuser.py:413
+#, python-format
+msgid "invalid e-mail format: %(email)s"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:439
+#, python-format
+msgid "manager %(manager)s not found"
+msgstr ""
+
+#: ipalib/plugins/baseuser.py:491 ipalib/plugins/stageuser.py:300
+#: ipalib/plugins/stageuser.py:526 ipalib/plugins/user.py:442
+#, python-format
+msgid "can be at most %(len)d characters"
+msgstr ""
+
#: ipalib/plugins/batch.py:66
msgid "Nested Methods to execute"
msgstr ""
+#: ipalib/plugins/caacl.py:20
+msgid ""
+"\n"
+"Manage CA ACL rules.\n"
+"\n"
+"This plugin is used to define rules governing which principals are\n"
+"permitted to have certificates issued using a given certificate\n"
+"profile.\n"
+"\n"
+"PROFILE ID SYNTAX:\n"
+"\n"
+"A Profile ID is a string without spaces or punctuation starting with a "
+"letter\n"
+"and followed by a sequence of letters, digits or underscore (\"_\").\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Create a CA ACL \"test\" that grants all users access to the\n"
+" \"UserCert\" profile:\n"
+" ipa caacl-add test --usercat=all\n"
+" ipa caacl-add-profile test --certprofiles UserCert\n"
+"\n"
+" Display the properties of a named CA ACL:\n"
+" ipa caacl-show test\n"
+"\n"
+" Create a CA ACL to let user \"alice\" use the \"DNP3\" profile:\n"
+" ipa caacl-add-profile alice_dnp3 --certprofiles DNP3\n"
+" ipa caacl-add-user alice_dnp3 --user=alice\n"
+"\n"
+" Disable a CA ACL:\n"
+" ipa caacl-disable test\n"
+"\n"
+" Remove a CA ACL:\n"
+" ipa caacl-del test\n"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:135 ipalib/plugins/caacl.py:212
+msgid "CA ACL"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:136 ipalib/plugins/caacl.py:211
+msgid "CA ACLs"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:217
+msgid "ACL name"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:225 ipalib/plugins/hbacrule.py:236
+#: ipalib/plugins/internal.py:785 ipalib/plugins/selinuxusermap.py:230
+#: ipalib/plugins/sudorule.py:226
+msgid "Enabled"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:237
+msgid "Profile category"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:238
+msgid "Profile category the ACL applies to"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:243 ipalib/plugins/hbacrule.py:210
+#: ipalib/plugins/netgroup.py:206 ipalib/plugins/selinuxusermap.py:215
+#: ipalib/plugins/sudorule.py:231
+msgid "User category"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:244
+msgid "User category the ACL applies to"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:249 ipalib/plugins/hbacrule.py:216
+#: ipalib/plugins/netgroup.py:212 ipalib/plugins/selinuxusermap.py:221
+#: ipalib/plugins/sudorule.py:237
+msgid "Host category"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:250
+msgid "Host category the ACL applies to"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:255 ipalib/plugins/hbacrule.py:223
+msgid "Service category"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:256
+msgid "Service category the ACL applies to"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:265
+msgid "Profiles"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:273 ipalib/plugins/group.py:227
+#: ipalib/plugins/hbacrule.py:244 ipalib/plugins/internal.py:572
+#: ipalib/plugins/selinuxusermap.py:238 ipalib/plugins/sudorule.py:271
+msgid "User Groups"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:281 ipalib/plugins/hbacrule.py:252
+#: ipalib/plugins/hostgroup.py:141 ipalib/plugins/internal.py:566
+#: ipalib/plugins/selinuxusermap.py:246 ipalib/plugins/sudorule.py:284
+msgid "Host Groups"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:285 ipalib/plugins/hbacrule.py:258
+#: ipalib/plugins/internal.py:485 ipalib/plugins/service.py:440
+msgid "Services"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:293
+msgid "Create a new CA ACL."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:295
+#, python-format
+msgid "Added CA ACL \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/caacl.py:305
+msgid "Delete a CA ACL."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:307
+#, python-format
+msgid "Deleted CA ACL \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/caacl.py:312
+msgid "Modify a CA ACL."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:314
+#, python-format
+msgid "Modified CA ACL \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/caacl.py:332
+msgid ""
+"profile category cannot be set to 'all' while there are allowed profiles"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:336 ipalib/plugins/hbacrule.py:316
+#: ipalib/plugins/netgroup.py:279
+msgid "user category cannot be set to 'all' while there are allowed users"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:340 ipalib/plugins/hbacrule.py:318
+#: ipalib/plugins/netgroup.py:281
+msgid "host category cannot be set to 'all' while there are allowed hosts"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:344 ipalib/plugins/hbacrule.py:320
+msgid ""
+"service category cannot be set to 'all' while there are allowed services"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:351
+msgid "Search for CA ACLs."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:354
+#, python-format
+msgid "%(count)d CA ACL matched"
+msgid_plural "%(count)d CA ACLs matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/caacl.py:360
+msgid "Display the properties of a CA ACL."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:365
+msgid "Enable a CA ACL."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:367
+#, python-format
+msgid "Enabled CA ACL \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/caacl.py:394
+msgid "Disable a CA ACL."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:396
+#, python-format
+msgid "Disabled CA ACL \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/caacl.py:423
+msgid "Add users and groups to a CA ACL."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:427
+#, python-format
+msgid "%i user or group added."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:428
+#, python-format
+msgid "%i users or groups added."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:439 ipalib/plugins/hbacrule.py:499
+#: ipalib/plugins/selinuxusermap.py:509 ipalib/plugins/sudorule.py:590
+msgid "users cannot be added when user category='all'"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:445
+msgid "Remove users and groups from a CA ACL."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:449
+#, python-format
+msgid "%i user or group removed."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:450
+#, python-format
+msgid "%i users or groups removed."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:455
+msgid "Add target hosts and hostgroups to a CA ACL."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:459
+#, python-format
+msgid "%i host or hostgroup added."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:460
+#, python-format
+msgid "%i hosts or hostgroups added."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:471 ipalib/plugins/hbacrule.py:530
+#: ipalib/plugins/selinuxusermap.py:542 ipalib/plugins/sudorule.py:644
+msgid "hosts cannot be added when host category='all'"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:477
+msgid "Remove target hosts and hostgroups from a CA ACL."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:481
+#, python-format
+msgid "%i host or hostgroup removed."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:482
+#, python-format
+msgid "%i hosts or hostgroups removed."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:487
+msgid "Add services to a CA ACL."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:490
+#, python-format
+msgid "%i service added."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:490
+#, python-format
+msgid "%i services added."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:501 ipalib/plugins/hbacrule.py:585
+msgid "services cannot be added when service category='all'"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:507
+msgid "Remove services from a CA ACL."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:510
+#, python-format
+msgid "%i service removed."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:510
+#, python-format
+msgid "%i services removed."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:515
+msgid "Failed profiles"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:526
+msgid "Add profiles to a CA ACL."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:531
+#, python-format
+msgid "%i profile added."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:531
+#, python-format
+msgid "%i profiles added."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:542
+msgid "profiles cannot be added when profile category='all'"
+msgstr ""
+
+#: ipalib/plugins/caacl.py:548
+msgid "Remove profiles from a CA ACL."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:553
+#, python-format
+msgid "%i profile removed."
+msgstr ""
+
+#: ipalib/plugins/caacl.py:553
+#, python-format
+msgid "%i profiles removed."
+msgstr ""
+
#: ipalib/plugins/cert.py:47
msgid ""
"\n"
@@ -2244,274 +2850,425 @@ msgid ""
"\n"
msgstr ""
-#: ipalib/plugins/cert.py:155 ipalib/plugins/cert.py:320
+#: ipalib/plugins/cert.py:157 ipalib/plugins/cert.py:366
#, python-format
msgid "Failure decoding Certificate Signing Request: %s"
msgstr ""
-#: ipalib/plugins/cert.py:219
+#: ipalib/plugins/cert.py:221 ipalib/plugins/certprofile.py:65
+msgid "CA is not configured"
+msgstr ""
+
+#: ipalib/plugins/cert.py:225
msgid "Submit a certificate signing request."
msgstr ""
-#: ipalib/plugins/cert.py:223
+#: ipalib/plugins/cert.py:229
msgid "CSR"
msgstr ""
-#: ipalib/plugins/cert.py:232 ipalib/plugins/service.py:371
+#: ipalib/plugins/cert.py:238 ipalib/plugins/service.py:446
msgid "Principal"
msgstr ""
-#: ipalib/plugins/cert.py:233
-msgid "Service principal for this certificate (e.g. HTTP/test.example.com)"
+#: ipalib/plugins/cert.py:239
+msgid "Principal for this certificate (e.g. HTTP/test.example.com)"
msgstr ""
-#: ipalib/plugins/cert.py:240
+#: ipalib/plugins/cert.py:246
msgid "automatically add the principal if it doesn't exist"
msgstr ""
-#: ipalib/plugins/cert.py:248 ipalib/plugins/cert.py:504
-#: ipalib/plugins/host.py:424 ipalib/plugins/internal.py:332
-#: ipalib/plugins/service.py:378
-msgid "Certificate"
+#: ipalib/plugins/cert.py:251 ipalib/plugins/certprofile.py:102
+msgid "Profile ID"
+msgstr ""
+
+#: ipalib/plugins/cert.py:252
+msgid "Certificate Profile to use"
msgstr ""
-#: ipalib/plugins/cert.py:251 ipalib/plugins/cert.py:507
-#: ipalib/plugins/cert.py:661 ipalib/plugins/cert.py:662
-#: ipalib/plugins/host.py:169 ipalib/plugins/internal.py:345
-#: ipalib/plugins/service.py:105
+#: ipalib/plugins/cert.py:261 ipalib/plugins/cert.py:569
+#: ipalib/plugins/cert.py:726 ipalib/plugins/cert.py:727
+#: ipalib/plugins/host.py:187 ipalib/plugins/internal.py:367
+#: ipalib/plugins/service.py:108
msgid "Subject"
msgstr ""
-#: ipalib/plugins/cert.py:254 ipalib/plugins/cert.py:510
-#: ipalib/plugins/host.py:178 ipalib/plugins/service.py:114
+#: ipalib/plugins/cert.py:264 ipalib/plugins/cert.py:572
+#: ipalib/plugins/host.py:196 ipalib/plugins/service.py:117
msgid "Issuer"
msgstr ""
-#: ipalib/plugins/cert.py:257 ipalib/plugins/cert.py:513
-#: ipalib/plugins/host.py:181 ipalib/plugins/service.py:117
+#: ipalib/plugins/cert.py:267 ipalib/plugins/cert.py:575
+#: ipalib/plugins/host.py:199 ipalib/plugins/service.py:120
msgid "Not Before"
msgstr ""
-#: ipalib/plugins/cert.py:260 ipalib/plugins/cert.py:516
-#: ipalib/plugins/host.py:184 ipalib/plugins/service.py:120
+#: ipalib/plugins/cert.py:270 ipalib/plugins/cert.py:578
+#: ipalib/plugins/host.py:202 ipalib/plugins/service.py:123
msgid "Not After"
msgstr ""
-#: ipalib/plugins/cert.py:263 ipalib/plugins/cert.py:519
-#: ipalib/plugins/host.py:187 ipalib/plugins/service.py:123
+#: ipalib/plugins/cert.py:273 ipalib/plugins/cert.py:581
+#: ipalib/plugins/host.py:205 ipalib/plugins/service.py:126
msgid "Fingerprint (MD5)"
msgstr ""
-#: ipalib/plugins/cert.py:266 ipalib/plugins/cert.py:522
-#: ipalib/plugins/host.py:190 ipalib/plugins/service.py:126
+#: ipalib/plugins/cert.py:276 ipalib/plugins/cert.py:584
+#: ipalib/plugins/host.py:208 ipalib/plugins/service.py:129
msgid "Fingerprint (SHA1)"
msgstr ""
-#: ipalib/plugins/cert.py:269 ipalib/plugins/cert.py:491
-#: ipalib/plugins/cert.py:735
+#: ipalib/plugins/cert.py:279 ipalib/plugins/cert.py:553
+#: ipalib/plugins/cert.py:800
msgid "Serial number"
msgstr ""
-#: ipalib/plugins/cert.py:272 ipalib/plugins/cert.py:528
-#: ipalib/plugins/cert.py:732
+#: ipalib/plugins/cert.py:282 ipalib/plugins/cert.py:590
+#: ipalib/plugins/cert.py:797
msgid "Serial number (hex)"
msgstr ""
-#: ipalib/plugins/cert.py:279 ipalib/plugins/misc.py:61
+#: ipalib/plugins/cert.py:289 ipalib/plugins/misc.py:61
msgid "Dictionary mapping variable name to value"
msgstr ""
-#: ipalib/plugins/cert.py:332
-msgid "No hostname was found in subject of request."
-msgstr ""
-
-#: ipalib/plugins/cert.py:337
+#: ipalib/plugins/cert.py:336
#, python-format
msgid ""
-"hostname in subject of request '%(subject_host)s' does not match principal "
-"hostname '%(hostname)s'"
+"Principal '%(principal)s' is not permitted to use CA '%(ca)s' with profile "
+"'%(profile_id)s' for certificate issuance."
msgstr ""
-#: ipalib/plugins/cert.py:344
-#, python-format
-msgid "extension %s is forbidden"
+#: ipalib/plugins/cert.py:391
+msgid "The principal for this request doesn't exist."
+msgstr ""
+
+#: ipalib/plugins/cert.py:399
+msgid "No Common Name was found in subject of request."
msgstr ""
-#: ipalib/plugins/cert.py:352
+#: ipalib/plugins/cert.py:404
#, python-format
-msgid "subject alt name type %s is forbidden"
+msgid ""
+"hostname in subject of request '%(cn)s' does not match principal hostname "
+"'%(hostname)s'"
msgstr ""
-#: ipalib/plugins/cert.py:366
-msgid "The service principal for this request doesn't exist."
+#: ipalib/plugins/cert.py:413
+msgid "DN commonName does not match any of user's email addresses"
msgstr ""
-#: ipalib/plugins/cert.py:371
-msgid "You need to be a member of the serviceadmin role to add services"
+#: ipalib/plugins/cert.py:423
+msgid "DN emailAddress does not match any of user's email addresses"
msgstr ""
-#: ipalib/plugins/cert.py:378
+#: ipalib/plugins/cert.py:430
+#, python-format
+msgid "extension %s is forbidden"
+msgstr ""
+
+#: ipalib/plugins/cert.py:434
#, python-format
msgid ""
"Insufficient 'write' privilege to the 'userCertificate' attribute of entry "
"'%s'."
msgstr ""
-#: ipalib/plugins/cert.py:396
+#: ipalib/plugins/cert.py:452
+#, python-format
+msgid "subject alt name type %s is forbidden for user principals"
+msgstr ""
+
+#: ipalib/plugins/cert.py:459
#, python-format
msgid ""
"The service principal for subject alt name %s in certificate request does "
"not exist"
msgstr ""
-#: ipalib/plugins/cert.py:402
+#: ipalib/plugins/cert.py:466
#, python-format
msgid ""
"Insufficient privilege to create a certificate with subject alt name '%s'."
msgstr ""
-#: ipalib/plugins/cert.py:408
+#: ipalib/plugins/cert.py:472
#, python-format
-msgid ""
-"Principal '%s' in subject alt name does not match requested service principal"
+msgid "Principal '%s' in subject alt name does not match requested principal"
+msgstr ""
+
+#: ipalib/plugins/cert.py:480
+msgid "RFC822Name does not match any of user's email addresses"
+msgstr ""
+
+#: ipalib/plugins/cert.py:486
+#, python-format
+msgid "subject alt name type %s is forbidden for non-user principals"
msgstr ""
-#: ipalib/plugins/cert.py:412
+#: ipalib/plugins/cert.py:491
#, python-format
msgid "Subject alt name type %s is forbidden"
msgstr ""
-#: ipalib/plugins/cert.py:465
+#: ipalib/plugins/cert.py:526
msgid "Check the status of a certificate signing request."
msgstr ""
-#: ipalib/plugins/cert.py:469
+#: ipalib/plugins/cert.py:530
msgid "Request id"
msgstr ""
-#: ipalib/plugins/cert.py:475
+#: ipalib/plugins/cert.py:536
msgid "Request status"
msgstr ""
-#: ipalib/plugins/cert.py:492
+#: ipalib/plugins/cert.py:554
msgid "Serial number in decimal or if prefixed with 0x in hexadecimal"
msgstr ""
-#: ipalib/plugins/cert.py:498
+#: ipalib/plugins/cert.py:560
msgid "Retrieve an existing certificate."
msgstr ""
-#: ipalib/plugins/cert.py:525 ipalib/plugins/host.py:193
-#: ipalib/plugins/internal.py:342 ipalib/plugins/internal.py:372
-#: ipalib/plugins/service.py:129
+#: ipalib/plugins/cert.py:587 ipalib/plugins/host.py:211
+#: ipalib/plugins/internal.py:364 ipalib/plugins/internal.py:394
+#: ipalib/plugins/service.py:132
msgid "Revocation reason"
msgstr ""
-#: ipalib/plugins/cert.py:534
+#: ipalib/plugins/cert.py:596
msgid "Output filename"
msgstr ""
-#: ipalib/plugins/cert.py:535
+#: ipalib/plugins/cert.py:597
msgid "File to store the certificate in."
msgstr ""
-#: ipalib/plugins/cert.py:586
+#: ipalib/plugins/cert.py:649
msgid "Revoke a certificate."
msgstr ""
-#: ipalib/plugins/cert.py:592
+#: ipalib/plugins/cert.py:655
msgid "Revoked"
msgstr ""
-#: ipalib/plugins/cert.py:600 ipalib/plugins/cert.py:666
+#: ipalib/plugins/cert.py:663 ipalib/plugins/cert.py:731
msgid "Reason"
msgstr ""
-#: ipalib/plugins/cert.py:601 ipalib/plugins/cert.py:667
+#: ipalib/plugins/cert.py:664 ipalib/plugins/cert.py:732
msgid "Reason for revoking the certificate (0-10)"
msgstr ""
-#: ipalib/plugins/cert.py:623
+#: ipalib/plugins/cert.py:687
msgid "7 is not a valid revocation reason"
msgstr ""
-#: ipalib/plugins/cert.py:633
+#: ipalib/plugins/cert.py:697
msgid "Take a revoked certificate off hold."
msgstr ""
-#: ipalib/plugins/cert.py:639
+#: ipalib/plugins/cert.py:703
msgid "Unrevoked"
msgstr ""
-#: ipalib/plugins/cert.py:642 ipalib/plugins/internal.py:261
+#: ipalib/plugins/cert.py:706 ipalib/plugins/internal.py:275
msgid "Error"
msgstr ""
-#: ipalib/plugins/cert.py:657
+#: ipalib/plugins/cert.py:722
msgid "Search for existing certificates."
msgstr ""
-#: ipalib/plugins/cert.py:673
+#: ipalib/plugins/cert.py:738
msgid "minimum serial number"
msgstr ""
-#: ipalib/plugins/cert.py:679
+#: ipalib/plugins/cert.py:744
msgid "maximum serial number"
msgstr ""
-#: ipalib/plugins/cert.py:685
+#: ipalib/plugins/cert.py:750
msgid "match the common name exactly"
msgstr ""
-#: ipalib/plugins/cert.py:689
+#: ipalib/plugins/cert.py:754
msgid "Valid not after from this date (YYYY-mm-dd)"
msgstr ""
-#: ipalib/plugins/cert.py:693
+#: ipalib/plugins/cert.py:758
msgid "Valid not after to this date (YYYY-mm-dd)"
msgstr ""
-#: ipalib/plugins/cert.py:697
+#: ipalib/plugins/cert.py:762
msgid "Valid not before from this date (YYYY-mm-dd)"
msgstr ""
-#: ipalib/plugins/cert.py:701
+#: ipalib/plugins/cert.py:766
msgid "Valid not before to this date (YYYY-mm-dd)"
msgstr ""
-#: ipalib/plugins/cert.py:705
+#: ipalib/plugins/cert.py:770
msgid "Issued on from this date (YYYY-mm-dd)"
msgstr ""
-#: ipalib/plugins/cert.py:709
+#: ipalib/plugins/cert.py:774
msgid "Issued on to this date (YYYY-mm-dd)"
msgstr ""
-#: ipalib/plugins/cert.py:713
+#: ipalib/plugins/cert.py:778
msgid "Revoked on from this date (YYYY-mm-dd)"
msgstr ""
-#: ipalib/plugins/cert.py:717
+#: ipalib/plugins/cert.py:782
msgid "Revoked on to this date (YYYY-mm-dd)"
msgstr ""
-#: ipalib/plugins/cert.py:722
+#: ipalib/plugins/cert.py:787
msgid "Maximum number of certs returned"
msgstr ""
-#: ipalib/plugins/cert.py:738 ipalib/plugins/internal.py:380
-#: ipalib/plugins/internal.py:489 ipalib/plugins/internal.py:576
-#: ipalib/plugins/internal.py:696
+#: ipalib/plugins/cert.py:803 ipalib/plugins/internal.py:402
+#: ipalib/plugins/internal.py:520 ipalib/plugins/internal.py:647
+#: ipalib/plugins/internal.py:786
msgid "Status"
msgstr ""
-#: ipalib/plugins/cert.py:743
+#: ipalib/plugins/cert.py:808
#, python-format
msgid "%(count)d certificate matched"
msgid_plural "%(count)d certificates matched"
msgstr[0] ""
msgstr[1] ""
+#: ipalib/plugins/certprofile.py:20
+msgid ""
+"\n"
+"Manage Certificate Profiles\n"
+"\n"
+"Certificate Profiles are used by Certificate Authority (CA) in the signing "
+"of\n"
+"certificates to determine if a Certificate Signing Request (CSR) is "
+"acceptable,\n"
+"and if so what features and extensions will be present on the certificate.\n"
+"\n"
+"The Certificate Profile format is the property-list format understood by "
+"the\n"
+"Dogtag or Red Hat Certificate System CA.\n"
+"\n"
+"PROFILE ID SYNTAX:\n"
+"\n"
+"A Profile ID is a string without spaces or punctuation starting with a "
+"letter\n"
+"and followed by a sequence of letters, digits or underscore (\"_\").\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Import a profile that will not store issued certificates:\n"
+" ipa certprofile-import ShortLivedUserCert \\\n"
+" --file UserCert.profile --summary \"User Certificates\" \\\n"
+" --store=false\n"
+"\n"
+" Delete a certificate profile:\n"
+" ipa certprofile-del ShortLivedUserCert\n"
+"\n"
+" Show information about a profile:\n"
+" ipa certprofile-show ShortLivedUserCert\n"
+"\n"
+" Search for profiles that do not store certificates:\n"
+" ipa certprofile-find --store=false\n"
+"\n"
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:74
+msgid "invalid Profile ID"
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:85 ipalib/plugins/certprofile.py:96
+msgid "Certificate Profile"
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:86 ipalib/plugins/certprofile.py:95
+msgid "Certificate Profiles"
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:103
+msgid "Profile ID for referring to this profile"
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:108
+msgid "Profile description"
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:109
+msgid "Brief description of this profile"
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:114
+msgid "Store issued certificates"
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:115
+msgid "Whether to store certs issued using this profile"
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:164
+msgid "Search for Certificate Profiles."
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:166
+#, python-format
+msgid "%(count)d profile matched"
+msgid_plural "%(count)d profiles matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/certprofile.py:176
+msgid "Display the properties of a Certificate Profile."
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:185
+msgid "Import a Certificate Profile."
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:186
+#, python-format
+msgid "Imported profile \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:189
+msgid "Filename"
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:203
+msgid "Profile ID is not present in profile data"
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:206
+#, python-format
+msgid "Profile ID '%(cli_value)s' does not match profile data '%(file_value)s'"
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:232
+msgid "Delete a Certificate Profile."
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:233
+#, python-format
+msgid "Deleted profile \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:248
+msgid "Modify Certificate Profile configuration."
+msgstr ""
+
+#: ipalib/plugins/certprofile.py:249
+#, python-format
+msgid "Modified Certificate Profile \"%(value)s\""
+msgstr ""
+
#: ipalib/plugins/config.py:33
msgid ""
"\n"
@@ -2797,6 +3554,7 @@ msgid "Delegation"
msgstr ""
#: ipalib/plugins/delegation.py:81 ipalib/plugins/delegation.py:82
+#: ipalib/plugins/servicedelegation.py:161
msgid "Delegation name"
msgstr ""
@@ -2858,19 +3616,19 @@ msgstr[1] ""
msgid "Display information about a delegation."
msgstr ""
-#: ipalib/plugins/dns.py:49
+#: ipalib/plugins/dns.py:56
msgid ""
"\n"
"Domain Name System (DNS)\n"
msgstr ""
-#: ipalib/plugins/dns.py:51
+#: ipalib/plugins/dns.py:58
msgid ""
"\n"
"Manage DNS zone and resource records.\n"
msgstr ""
-#: ipalib/plugins/dns.py:53
+#: ipalib/plugins/dns.py:60
msgid ""
"\n"
"SUPPORTED ZONE TYPES\n"
@@ -2881,13 +3639,13 @@ msgid ""
" (a set of DNS servers).\n"
msgstr ""
-#: ipalib/plugins/dns.py:59
+#: ipalib/plugins/dns.py:66
msgid ""
"\n"
"USING STRUCTURED PER-TYPE OPTIONS\n"
msgstr ""
-#: ipalib/plugins/dns.py:61
+#: ipalib/plugins/dns.py:68
msgid ""
"\n"
"There are many structured DNS RR types where DNS data stored in LDAP server\n"
@@ -2897,7 +3655,7 @@ msgid ""
"minutes, seconds of latitude and longitude, altitude or precision).\n"
msgstr ""
-#: ipalib/plugins/dns.py:67
+#: ipalib/plugins/dns.py:74
msgid ""
"\n"
"It may be difficult to manipulate such DNS records without making a mistake\n"
@@ -2912,7 +3670,7 @@ msgid ""
"--mx-preference and --mx-exchanger.\n"
msgstr ""
-#: ipalib/plugins/dns.py:75
+#: ipalib/plugins/dns.py:82
msgid ""
"\n"
"When adding a record, either RR specific options or standard option for a "
@@ -2927,30 +3685,28 @@ msgid ""
"ipa dnsrecord-mod --mx-rec=\"0 mx.example.com.\" --mx-preference=1\n"
msgstr ""
-#: ipalib/plugins/dns.py:84
+#: ipalib/plugins/dns.py:91
msgid ""
"\n"
"\n"
"EXAMPLES:\n"
msgstr ""
-#: ipalib/plugins/dns.py:87
+#: ipalib/plugins/dns.py:94
msgid ""
"\n"
" Add new zone:\n"
-" ipa dnszone-add example.com --name-server=ns \\\n"
-" --admin-email=admin@example.com \\\n"
-" --ip-address=192.0.2.1\n"
+" ipa dnszone-add example.com --admin-email=admin@example.com\n"
msgstr ""
-#: ipalib/plugins/dns.py:92
+#: ipalib/plugins/dns.py:97
msgid ""
"\n"
" Add system permission that can be used for per-zone privilege delegation:\n"
" ipa dnszone-add-permission example.com\n"
msgstr ""
-#: ipalib/plugins/dns.py:95
+#: ipalib/plugins/dns.py:100
msgid ""
"\n"
" Modify the zone to allow dynamic updates for hosts own records in realm "
@@ -2958,7 +3714,7 @@ msgid ""
" ipa dnszone-mod example.com --dynamic-update=TRUE\n"
msgstr ""
-#: ipalib/plugins/dns.py:98
+#: ipalib/plugins/dns.py:103
msgid ""
"\n"
" This is the equivalent of:\n"
@@ -2967,43 +3723,42 @@ msgid ""
"krb5-self * AAAA; grant EXAMPLE.COM krb5-self * SSHFP;\"\n"
msgstr ""
-#: ipalib/plugins/dns.py:102
+#: ipalib/plugins/dns.py:107
msgid ""
"\n"
" Modify the zone to allow zone transfers for local network only:\n"
" ipa dnszone-mod example.com --allow-transfer=192.0.2.0/24\n"
msgstr ""
-#: ipalib/plugins/dns.py:105
+#: ipalib/plugins/dns.py:110
msgid ""
"\n"
" Add new reverse zone specified by network IP address:\n"
-" ipa dnszone-add --name-from-ip=192.0.2.0/24 \\\n"
-" --name-server=ns.example.com.\n"
+" ipa dnszone-add --name-from-ip=192.0.2.0/24\n"
msgstr ""
-#: ipalib/plugins/dns.py:109
+#: ipalib/plugins/dns.py:113
msgid ""
"\n"
" Add second nameserver for example.com:\n"
" ipa dnsrecord-add example.com @ --ns-rec=nameserver2.example.com\n"
msgstr ""
-#: ipalib/plugins/dns.py:112
+#: ipalib/plugins/dns.py:116
msgid ""
"\n"
" Add a mail server for example.com:\n"
" ipa dnsrecord-add example.com @ --mx-rec=\"10 mail1\"\n"
msgstr ""
-#: ipalib/plugins/dns.py:115
+#: ipalib/plugins/dns.py:119
msgid ""
"\n"
" Add another record using MX record specific options:\n"
" ipa dnsrecord-add example.com @ --mx-preference=20 --mx-exchanger=mail2\n"
msgstr ""
-#: ipalib/plugins/dns.py:118
+#: ipalib/plugins/dns.py:122
msgid ""
"\n"
" Add another record using interactive mode (started when dnsrecord-add, "
@@ -3021,14 +3776,14 @@ msgid ""
" NS record: nameserver.example.com., nameserver2.example.com.\n"
msgstr ""
-#: ipalib/plugins/dns.py:131
+#: ipalib/plugins/dns.py:135
msgid ""
"\n"
" Delete previously added nameserver from example.com:\n"
" ipa dnsrecord-del example.com @ --ns-rec=nameserver2.example.com.\n"
msgstr ""
-#: ipalib/plugins/dns.py:134
+#: ipalib/plugins/dns.py:138
msgid ""
"\n"
" Add LOC record for example.com:\n"
@@ -3036,7 +3791,7 @@ msgid ""
"227.64m\"\n"
msgstr ""
-#: ipalib/plugins/dns.py:137
+#: ipalib/plugins/dns.py:141
msgid ""
"\n"
" Add new A record for www.example.com. Create a reverse record in "
@@ -3047,14 +3802,14 @@ msgid ""
" ipa dnsrecord-add example.com www --a-rec=192.0.2.2 --a-create-reverse\n"
msgstr ""
-#: ipalib/plugins/dns.py:142
+#: ipalib/plugins/dns.py:146
msgid ""
"\n"
" Add new PTR record for www.example.com\n"
" ipa dnsrecord-add 2.0.192.in-addr.arpa. 2 --ptr-rec=www.example.com.\n"
msgstr ""
-#: ipalib/plugins/dns.py:145
+#: ipalib/plugins/dns.py:149
msgid ""
"\n"
" Add new SRV records for LDAP servers. Three quarters of the requests\n"
@@ -3068,7 +3823,7 @@ msgid ""
"example.com\"\n"
msgstr ""
-#: ipalib/plugins/dns.py:152
+#: ipalib/plugins/dns.py:156
msgid ""
"\n"
" The interactive mode can be used for easy modification:\n"
@@ -3092,14 +3847,14 @@ msgid ""
"389 slow.example.com\n"
msgstr ""
-#: ipalib/plugins/dns.py:169
+#: ipalib/plugins/dns.py:173
msgid ""
"\n"
" After this modification, three fifths of the requests should go to\n"
" fast.example.com and two fifths to slow.example.com.\n"
msgstr ""
-#: ipalib/plugins/dns.py:172
+#: ipalib/plugins/dns.py:176
msgid ""
"\n"
" An example of the interactive mode for dnsrecord-del command:\n"
@@ -3117,42 +3872,42 @@ msgid ""
"deleted)\n"
msgstr ""
-#: ipalib/plugins/dns.py:185
+#: ipalib/plugins/dns.py:189
msgid ""
"\n"
" Show zone example.com:\n"
" ipa dnszone-show example.com\n"
msgstr ""
-#: ipalib/plugins/dns.py:188
+#: ipalib/plugins/dns.py:192
msgid ""
"\n"
" Find zone with \"example\" in its domain name:\n"
" ipa dnszone-find example\n"
msgstr ""
-#: ipalib/plugins/dns.py:191
+#: ipalib/plugins/dns.py:195
msgid ""
"\n"
" Find records for resources with \"www\" in their name in zone example.com:\n"
" ipa dnsrecord-find example.com www\n"
msgstr ""
-#: ipalib/plugins/dns.py:194
+#: ipalib/plugins/dns.py:198
msgid ""
"\n"
" Find A records with value 192.0.2.2 in zone example.com\n"
" ipa dnsrecord-find example.com --a-rec=192.0.2.2\n"
msgstr ""
-#: ipalib/plugins/dns.py:197
+#: ipalib/plugins/dns.py:201
msgid ""
"\n"
" Show records for resource www in zone example.com\n"
" ipa dnsrecord-show example.com www\n"
msgstr ""
-#: ipalib/plugins/dns.py:200
+#: ipalib/plugins/dns.py:204
msgid ""
"\n"
" Delegate zone sub.example to another nameserver:\n"
@@ -3160,14 +3915,14 @@ msgid ""
" ipa dnsrecord-add example.com sub --ns-rec=ns.sub.example.com.\n"
msgstr ""
-#: ipalib/plugins/dns.py:204
+#: ipalib/plugins/dns.py:208
msgid ""
"\n"
" Delete zone example.com with all resource records:\n"
" ipa dnszone-del example.com\n"
msgstr ""
-#: ipalib/plugins/dns.py:207
+#: ipalib/plugins/dns.py:211
msgid ""
"\n"
" If a global forwarder is configured, all queries for which this server is "
@@ -3177,14 +3932,15 @@ msgid ""
" Global forwarding configuration can be overridden per-zone.\n"
msgstr ""
-#: ipalib/plugins/dns.py:211
+#: ipalib/plugins/dns.py:215
msgid ""
"\n"
-" Semantics of forwarding in IPA matches BIND sematics and depends on type\n"
-" of the zone:\n"
+" Semantics of forwarding in IPA matches BIND semantics and depends on the "
+"type\n"
+" of zone:\n"
" * Master zone: local BIND replies authoritatively to queries for data in\n"
" the given zone (including authoritative NXDOMAIN answers) and forwarding\n"
-" affects only queries for names bellow zone cuts (NS records) of locally\n"
+" affects only queries for names below zone cuts (NS records) of locally\n"
" served zones.\n"
"\n"
" * Forward zone: forward zone contains no authoritative data. BIND "
@@ -3193,7 +3949,7 @@ msgid ""
" forwarders.\n"
msgstr ""
-#: ipalib/plugins/dns.py:222
+#: ipalib/plugins/dns.py:226
msgid ""
"\n"
" Semantics of the --forwarder-policy option:\n"
@@ -3204,14 +3960,14 @@ msgid ""
" return failure.\n"
msgstr ""
-#: ipalib/plugins/dns.py:229
+#: ipalib/plugins/dns.py:233
msgid ""
"\n"
" Disable global forwarding for given sub-tree:\n"
" ipa dnszone-mod example.com --forward-policy=none\n"
msgstr ""
-#: ipalib/plugins/dns.py:232
+#: ipalib/plugins/dns.py:236
msgid ""
"\n"
" This configuration forwards all queries for names outside the example.com\n"
@@ -3220,7 +3976,7 @@ msgid ""
"etc.).\n"
msgstr ""
-#: ipalib/plugins/dns.py:236
+#: ipalib/plugins/dns.py:240
msgid ""
"\n"
" Forward all requests for the zone external.example.com to another "
@@ -3232,35 +3988,35 @@ msgid ""
" --forwarder=203.0.113.1\n"
msgstr ""
-#: ipalib/plugins/dns.py:242
+#: ipalib/plugins/dns.py:246
msgid ""
"\n"
" Change forward-policy for external.example.com:\n"
" ipa dnsforwardzone-mod external.example.com --forward-policy=only\n"
msgstr ""
-#: ipalib/plugins/dns.py:245
+#: ipalib/plugins/dns.py:249
msgid ""
"\n"
" Show forward zone external.example.com:\n"
" ipa dnsforwardzone-show external.example.com\n"
msgstr ""
-#: ipalib/plugins/dns.py:248
+#: ipalib/plugins/dns.py:252
msgid ""
"\n"
" List all forward zones:\n"
" ipa dnsforwardzone-find\n"
msgstr ""
-#: ipalib/plugins/dns.py:251
+#: ipalib/plugins/dns.py:255
msgid ""
"\n"
" Delete forward zone external.example.com:\n"
" ipa dnsforwardzone-del external.example.com\n"
msgstr ""
-#: ipalib/plugins/dns.py:254
+#: ipalib/plugins/dns.py:258
msgid ""
"\n"
" Resolve a host name to see if it exists (will add default IPA domain\n"
@@ -3269,14 +4025,14 @@ msgid ""
" ipa dns-resolve www\n"
msgstr ""
-#: ipalib/plugins/dns.py:259
+#: ipalib/plugins/dns.py:263
msgid ""
"\n"
"\n"
"GLOBAL DNS CONFIGURATION\n"
msgstr ""
-#: ipalib/plugins/dns.py:262
+#: ipalib/plugins/dns.py:266
msgid ""
"\n"
"DNS configuration passed to command line install script is stored in a "
@@ -3287,269 +4043,273 @@ msgid ""
"server:\n"
msgstr ""
-#: ipalib/plugins/dns.py:267
+#: ipalib/plugins/dns.py:271
msgid ""
"\n"
" Show global DNS configuration:\n"
" ipa dnsconfig-show\n"
msgstr ""
-#: ipalib/plugins/dns.py:270
+#: ipalib/plugins/dns.py:274
msgid ""
"\n"
" Modify global DNS configuration and set a list of global forwarders:\n"
" ipa dnsconfig-mod --forwarder=203.0.113.113\n"
msgstr ""
-#: ipalib/plugins/dns.py:309
+#: ipalib/plugins/dns.py:314
msgid "Permission value"
msgstr ""
-#: ipalib/plugins/dns.py:355
+#: ipalib/plugins/dns.py:360
#, python-format
msgid "invalid IP address version (is %(value)d, must be %(required_value)d)!"
msgstr ""
-#: ipalib/plugins/dns.py:358
+#: ipalib/plugins/dns.py:363
msgid "invalid IP address format"
msgstr ""
-#: ipalib/plugins/dns.py:371
+#: ipalib/plugins/dns.py:376
msgid "invalid IP network format"
msgstr ""
-#: ipalib/plugins/dns.py:380
+#: ipalib/plugins/dns.py:385
msgid "each ACL element must be terminated with a semicolon"
msgstr ""
-#: ipalib/plugins/dns.py:397
+#: ipalib/plugins/dns.py:402
msgid "invalid address format"
msgstr ""
-#: ipalib/plugins/dns.py:447
+#: ipalib/plugins/dns.py:452
#, python-format
msgid "%(port)s is not a valid port"
msgstr ""
-#: ipalib/plugins/dns.py:458
+#: ipalib/plugins/dns.py:463
msgid ""
"expected format: <0-255> <0-255> <0-65535> even-"
"length_hexadecimal_digits_or_hyphen"
msgstr ""
-#: ipalib/plugins/dns.py:467
+#: ipalib/plugins/dns.py:472
msgid "algorithm value: allowed interval 0-255"
msgstr ""
-#: ipalib/plugins/dns.py:470
+#: ipalib/plugins/dns.py:475
msgid "flags value: allowed interval 0-255"
msgstr ""
-#: ipalib/plugins/dns.py:473
+#: ipalib/plugins/dns.py:478
msgid "iterations value: allowed interval 0-65535"
msgstr ""
-#: ipalib/plugins/dns.py:481
+#: ipalib/plugins/dns.py:486
#, python-format
msgid "salt value: %(err)s"
msgstr ""
-#: ipalib/plugins/dns.py:488
+#: ipalib/plugins/dns.py:493
msgid "invalid domain-name: not fully qualified"
msgstr ""
-#: ipalib/plugins/dns.py:543
+#: ipalib/plugins/dns.py:502
+msgid "should not be a wildcard domain name (RFC 4592 section 4)"
+msgstr ""
+
+#: ipalib/plugins/dns.py:556
#, python-format
msgid "DNS reverse zone for IP address %(addr)s not found"
msgstr ""
-#: ipalib/plugins/dns.py:558
+#: ipalib/plugins/dns.py:571
#, python-format
msgid "DNS zone %(zone)s not found"
msgstr ""
-#: ipalib/plugins/dns.py:572
+#: ipalib/plugins/dns.py:585
#, python-format
msgid "IP address %(ip)s is already assigned in domain %(domain)s."
msgstr ""
-#: ipalib/plugins/dns.py:585
+#: ipalib/plugins/dns.py:598
#, python-format
msgid ""
"Reverse record for IP address %(ip)s already exists in reverse zone %(zone)s."
msgstr ""
-#: ipalib/plugins/dns.py:662
+#: ipalib/plugins/dns.py:675
#, python-format
msgid "%s record"
msgstr ""
-#: ipalib/plugins/dns.py:664
+#: ipalib/plugins/dns.py:677
#, python-format
msgid "Raw %s records"
msgstr ""
-#: ipalib/plugins/dns.py:665
+#: ipalib/plugins/dns.py:678
#, python-format
msgid "%s Record"
msgstr ""
-#: ipalib/plugins/dns.py:666
+#: ipalib/plugins/dns.py:679
#, python-format
msgid "(see RFC %s for details)"
msgstr ""
-#: ipalib/plugins/dns.py:731
+#: ipalib/plugins/dns.py:744
#, python-format
msgid "'%s' is a required part of DNS record"
msgstr ""
-#: ipalib/plugins/dns.py:738
+#: ipalib/plugins/dns.py:751
msgid "Invalid number of parts!"
msgstr ""
-#: ipalib/plugins/dns.py:793
+#: ipalib/plugins/dns.py:806
#, python-format
msgid "DNS RR type \"%s\" is not supported by bind-dyndb-ldap plugin"
msgstr ""
-#: ipalib/plugins/dns.py:809
+#: ipalib/plugins/dns.py:822
#, python-format
msgid "format must be specified as \"%(format)s\" %(rfcs)s"
msgstr ""
-#: ipalib/plugins/dns.py:933
+#: ipalib/plugins/dns.py:947
msgid "Create reverse"
msgstr ""
-#: ipalib/plugins/dns.py:934
+#: ipalib/plugins/dns.py:948
msgid "Create reverse record for this IP Address"
msgstr ""
-#: ipalib/plugins/dns.py:969
+#: ipalib/plugins/dns.py:983
#, python-format
msgid "Cannot create reverse record for \"%(value)s\": %(exc)s"
msgstr ""
-#: ipalib/plugins/dns.py:978 ipalib/plugins/dns.py:1001
-#: ipalib/plugins/host.py:525
+#: ipalib/plugins/dns.py:1003 ipalib/plugins/dns.py:1026
+#: ipalib/plugins/host.py:603
msgid "IP Address"
msgstr ""
-#: ipalib/plugins/dns.py:987 ipalib/plugins/dns.py:1530
+#: ipalib/plugins/dns.py:1012 ipalib/plugins/dns.py:1546
msgid "Record data"
msgstr ""
-#: ipalib/plugins/dns.py:1010
+#: ipalib/plugins/dns.py:1035
msgid "Subtype"
msgstr ""
-#: ipalib/plugins/dns.py:1015 ipalib/plugins/dns.py:1053
-#: ipalib/plugins/dns.py:1292 ipalib/plugins/dns.py:1356
-#: ipalib/plugins/dns.py:3691
+#: ipalib/plugins/dns.py:1040 ipalib/plugins/dns.py:1077
+#: ipalib/plugins/dns.py:1312 ipalib/plugins/dns.py:1370
+#: ipalib/plugins/dns.py:4136
msgid "Hostname"
msgstr ""
-#: ipalib/plugins/dns.py:1029
+#: ipalib/plugins/dns.py:1053
msgid "Certificate Type"
msgstr ""
-#: ipalib/plugins/dns.py:1034 ipalib/plugins/dns.py:1082
+#: ipalib/plugins/dns.py:1058 ipalib/plugins/dns.py:1104
msgid "Key Tag"
msgstr ""
-#: ipalib/plugins/dns.py:1039 ipalib/plugins/dns.py:1087
-#: ipalib/plugins/dns.py:1419 ipalib/plugins/otptoken.py:198
+#: ipalib/plugins/dns.py:1063 ipalib/plugins/dns.py:1109
+#: ipalib/plugins/dns.py:1431 ipalib/plugins/otptoken.py:222
msgid "Algorithm"
msgstr ""
-#: ipalib/plugins/dns.py:1044
+#: ipalib/plugins/dns.py:1068
msgid "Certificate/CRL"
msgstr ""
-#: ipalib/plugins/dns.py:1054
+#: ipalib/plugins/dns.py:1078
msgid "A hostname which this alias hostname points to"
msgstr ""
-#: ipalib/plugins/dns.py:1068 ipalib/plugins/dns.py:1386
-#: ipalib/plugins/internal.py:523
+#: ipalib/plugins/dns.py:1091 ipalib/plugins/dns.py:1399
+#: ipalib/plugins/internal.py:594
msgid "Target"
msgstr ""
-#: ipalib/plugins/dns.py:1092
+#: ipalib/plugins/dns.py:1114
msgid "Digest Type"
msgstr ""
-#: ipalib/plugins/dns.py:1097
+#: ipalib/plugins/dns.py:1119
msgid "Digest"
msgstr ""
-#: ipalib/plugins/dns.py:1130 ipalib/plugins/dns.py:1275
-#: ipalib/plugins/dns.py:1330
+#: ipalib/plugins/dns.py:1150 ipalib/plugins/dns.py:1295
+#: ipalib/plugins/dns.py:1344
msgid "Preference"
msgstr ""
-#: ipalib/plugins/dns.py:1131 ipalib/plugins/dns.py:1276
+#: ipalib/plugins/dns.py:1151 ipalib/plugins/dns.py:1296
msgid "Preference given to this exchanger. Lower values are more preferred"
msgstr ""
-#: ipalib/plugins/dns.py:1136 ipalib/plugins/dns.py:1281
+#: ipalib/plugins/dns.py:1156 ipalib/plugins/dns.py:1301
msgid "Exchanger"
msgstr ""
-#: ipalib/plugins/dns.py:1137
+#: ipalib/plugins/dns.py:1157
msgid "A host willing to act as a key exchanger"
msgstr ""
-#: ipalib/plugins/dns.py:1146
+#: ipalib/plugins/dns.py:1166
msgid "Degrees Latitude"
msgstr ""
-#: ipalib/plugins/dns.py:1151
+#: ipalib/plugins/dns.py:1171
msgid "Minutes Latitude"
msgstr ""
-#: ipalib/plugins/dns.py:1156
+#: ipalib/plugins/dns.py:1176
msgid "Seconds Latitude"
msgstr ""
-#: ipalib/plugins/dns.py:1162
+#: ipalib/plugins/dns.py:1182
msgid "Direction Latitude"
msgstr ""
-#: ipalib/plugins/dns.py:1166
+#: ipalib/plugins/dns.py:1186
msgid "Degrees Longitude"
msgstr ""
-#: ipalib/plugins/dns.py:1171
+#: ipalib/plugins/dns.py:1191
msgid "Minutes Longitude"
msgstr ""
-#: ipalib/plugins/dns.py:1176
+#: ipalib/plugins/dns.py:1196
msgid "Seconds Longitude"
msgstr ""
-#: ipalib/plugins/dns.py:1182
+#: ipalib/plugins/dns.py:1202
msgid "Direction Longitude"
msgstr ""
-#: ipalib/plugins/dns.py:1186
+#: ipalib/plugins/dns.py:1206
msgid "Altitude"
msgstr ""
-#: ipalib/plugins/dns.py:1192
+#: ipalib/plugins/dns.py:1212
msgid "Size"
msgstr ""
-#: ipalib/plugins/dns.py:1198
+#: ipalib/plugins/dns.py:1218
msgid "Horizontal Precision"
msgstr ""
-#: ipalib/plugins/dns.py:1204
+#: ipalib/plugins/dns.py:1224
msgid "Vertical Precision"
msgstr ""
-#: ipalib/plugins/dns.py:1211
+#: ipalib/plugins/dns.py:1231
msgid ""
"format must be specified as\n"
" \"d1 [m1 [s1]] {\"N\"|\"S\"} d2 [m2 [s2]] {\"E\"|\"W\"} alt[\"m\"] "
@@ -3564,571 +4324,566 @@ msgid ""
" See RFC 1876 for details"
msgstr ""
-#: ipalib/plugins/dns.py:1265
+#: ipalib/plugins/dns.py:1285
#, python-format
msgid "'%(required)s' must not be empty when '%(name)s' is set"
msgstr ""
-#: ipalib/plugins/dns.py:1282
+#: ipalib/plugins/dns.py:1302
msgid "A host willing to act as a mail exchanger"
msgstr ""
-#: ipalib/plugins/dns.py:1317
+#: ipalib/plugins/dns.py:1331
msgid "flags must be one of \"S\", \"A\", \"U\", or \"P\""
msgstr ""
-#: ipalib/plugins/dns.py:1325
+#: ipalib/plugins/dns.py:1339
msgid "Order"
msgstr ""
-#: ipalib/plugins/dns.py:1336
+#: ipalib/plugins/dns.py:1350
msgid "Flags"
msgstr ""
-#: ipalib/plugins/dns.py:1340 ipalib/plugins/hbactest.py:269
-#: ipalib/plugins/internal.py:575 ipalib/plugins/service.py:366
+#: ipalib/plugins/dns.py:1354 ipalib/plugins/hbactest.py:269
+#: ipalib/plugins/internal.py:646 ipalib/plugins/service.py:441
msgid "Service"
msgstr ""
-#: ipalib/plugins/dns.py:1343
+#: ipalib/plugins/dns.py:1357
msgid "Regular Expression"
msgstr ""
-#: ipalib/plugins/dns.py:1346
+#: ipalib/plugins/dns.py:1360
msgid "Replacement"
msgstr ""
-#: ipalib/plugins/dns.py:1357
+#: ipalib/plugins/dns.py:1371
msgid "The hostname this reverse record points to"
msgstr ""
-#: ipalib/plugins/dns.py:1371 ipalib/plugins/pwpolicy.py:346
+#: ipalib/plugins/dns.py:1384 ipalib/plugins/pwpolicy.py:351
msgid "Priority"
msgstr ""
-#: ipalib/plugins/dns.py:1376
+#: ipalib/plugins/dns.py:1389
msgid "Weight"
msgstr ""
-#: ipalib/plugins/dns.py:1381
+#: ipalib/plugins/dns.py:1394
msgid "Port"
msgstr ""
-#: ipalib/plugins/dns.py:1387
+#: ipalib/plugins/dns.py:1400
msgid ""
"The domain name of the target host or '.' if the service is decidedly not "
"available at this domain"
msgstr ""
-#: ipalib/plugins/dns.py:1396
+#: ipalib/plugins/dns.py:1409
msgid "the value does not follow \"YYYYMMDDHHMMSS\" time format"
msgstr ""
-#: ipalib/plugins/dns.py:1424
+#: ipalib/plugins/dns.py:1436
msgid "Fingerprint Type"
msgstr ""
-#: ipalib/plugins/dns.py:1429
+#: ipalib/plugins/dns.py:1441
msgid "Fingerprint"
msgstr ""
-#: ipalib/plugins/dns.py:1443
+#: ipalib/plugins/dns.py:1462
msgid "Certificate Usage"
msgstr ""
-#: ipalib/plugins/dns.py:1448
+#: ipalib/plugins/dns.py:1467
msgid "Selector"
msgstr ""
-#: ipalib/plugins/dns.py:1453
+#: ipalib/plugins/dns.py:1472
msgid "Matching Type"
msgstr ""
-#: ipalib/plugins/dns.py:1458
+#: ipalib/plugins/dns.py:1477
msgid "Certificate Association Data"
msgstr ""
-#: ipalib/plugins/dns.py:1476
+#: ipalib/plugins/dns.py:1493
msgid "Text Data"
msgstr ""
-#: ipalib/plugins/dns.py:1524
+#: ipalib/plugins/dns.py:1540
msgid "Records"
msgstr ""
-#: ipalib/plugins/dns.py:1527
+#: ipalib/plugins/dns.py:1543
msgid "Record type"
msgstr ""
-#: ipalib/plugins/dns.py:1562
+#: ipalib/plugins/dns.py:1578
#, python-format
msgid "Nameserver '%(host)s' does not have a corresponding A/AAAA record"
msgstr ""
-#: ipalib/plugins/dns.py:1581
+#: ipalib/plugins/dns.py:1597
msgid "Managedby permission"
msgstr ""
-#: ipalib/plugins/dns.py:1736
+#: ipalib/plugins/dns.py:1986
msgid "Zone name"
msgstr ""
-#: ipalib/plugins/dns.py:1737
+#: ipalib/plugins/dns.py:1987
msgid "Zone name (FQDN)"
msgstr ""
-#: ipalib/plugins/dns.py:1743
+#: ipalib/plugins/dns.py:1993
msgid "Reverse zone IP network"
msgstr ""
-#: ipalib/plugins/dns.py:1744
+#: ipalib/plugins/dns.py:1994
msgid "IP network to create reverse zone name from"
msgstr ""
-#: ipalib/plugins/dns.py:1749
+#: ipalib/plugins/dns.py:1999
msgid "Active zone"
msgstr ""
-#: ipalib/plugins/dns.py:1750
+#: ipalib/plugins/dns.py:2000
msgid "Is zone active?"
msgstr ""
-#: ipalib/plugins/dns.py:1757
+#: ipalib/plugins/dns.py:2007
msgid "Zone forwarders"
msgstr ""
-#: ipalib/plugins/dns.py:1758
+#: ipalib/plugins/dns.py:2008
msgid ""
"Per-zone forwarders. A custom port can be specified for each forwarder using "
"a standard format \"IP_ADDRESS port PORT\""
msgstr ""
-#: ipalib/plugins/dns.py:1764 ipalib/plugins/dns.py:3760
+#: ipalib/plugins/dns.py:2014 ipalib/plugins/dns.py:4205
msgid "Forward policy"
msgstr ""
-#: ipalib/plugins/dns.py:1765
+#: ipalib/plugins/dns.py:2015
msgid ""
"Per-zone conditional forwarding policy. Set to \"none\" to disable "
"forwarding to global forwarder for this zone. In that case, conditional zone "
"forwarders are disregarded."
msgstr ""
-#: ipalib/plugins/dns.py:1837
+#: ipalib/plugins/dns.py:2105
msgid "DNS is not configured"
msgstr ""
-#: ipalib/plugins/dns.py:1848
+#: ipalib/plugins/dns.py:2116
msgid "Only one zone type is allowed per zone name"
msgstr ""
-#: ipalib/plugins/dns.py:1878 ipalib/plugins/dns.py:2488
+#: ipalib/plugins/dns.py:2151 ipalib/plugins/dns.py:2835
msgid "Search for DNS zones (SOA records)."
msgstr ""
-#: ipalib/plugins/dns.py:1965
+#: ipalib/plugins/dns.py:2248
#, python-format
msgid "Added system permission \"%(value)s\""
msgstr ""
-#: ipalib/plugins/dns.py:1992
+#: ipalib/plugins/dns.py:2276
#, python-format
msgid "permission \"%(value)s\" already exists"
msgstr ""
-#: ipalib/plugins/dns.py:2020
+#: ipalib/plugins/dns.py:2304
#, python-format
msgid "Removed system permission \"%(value)s\""
msgstr ""
-#: ipalib/plugins/dns.py:2059
+#: ipalib/plugins/dns.py:2340
msgid "DNS zone"
msgstr ""
-#: ipalib/plugins/dns.py:2060
+#: ipalib/plugins/dns.py:2341
msgid "DNS zones"
msgstr ""
-#: ipalib/plugins/dns.py:2067
+#: ipalib/plugins/dns.py:2348
msgid "DNS Zones"
msgstr ""
-#: ipalib/plugins/dns.py:2068
+#: ipalib/plugins/dns.py:2349
msgid "DNS Zone"
msgstr ""
-#: ipalib/plugins/dns.py:2073
+#: ipalib/plugins/dns.py:2354
msgid "Authoritative nameserver"
msgstr ""
-#: ipalib/plugins/dns.py:2074
+#: ipalib/plugins/dns.py:2355
msgid "Authoritative nameserver domain name"
msgstr ""
-#: ipalib/plugins/dns.py:2080 ipalib/plugins/dns.py:2081
+#: ipalib/plugins/dns.py:2361 ipalib/plugins/dns.py:2362
msgid "Administrator e-mail address"
msgstr ""
-#: ipalib/plugins/dns.py:2088
+#: ipalib/plugins/dns.py:2369
msgid "SOA serial"
msgstr ""
-#: ipalib/plugins/dns.py:2089
+#: ipalib/plugins/dns.py:2370
msgid "SOA record serial number"
msgstr ""
-#: ipalib/plugins/dns.py:2097
+#: ipalib/plugins/dns.py:2378
msgid "SOA refresh"
msgstr ""
-#: ipalib/plugins/dns.py:2098
+#: ipalib/plugins/dns.py:2379
msgid "SOA record refresh time"
msgstr ""
-#: ipalib/plugins/dns.py:2106
+#: ipalib/plugins/dns.py:2387
msgid "SOA retry"
msgstr ""
-#: ipalib/plugins/dns.py:2107
+#: ipalib/plugins/dns.py:2388
msgid "SOA record retry time"
msgstr ""
-#: ipalib/plugins/dns.py:2115
+#: ipalib/plugins/dns.py:2396
msgid "SOA expire"
msgstr ""
-#: ipalib/plugins/dns.py:2116
+#: ipalib/plugins/dns.py:2397
msgid "SOA record expire time"
msgstr ""
-#: ipalib/plugins/dns.py:2124
+#: ipalib/plugins/dns.py:2405
msgid "SOA minimum"
msgstr ""
-#: ipalib/plugins/dns.py:2125
+#: ipalib/plugins/dns.py:2406
msgid "How long should negative responses be cached"
msgstr ""
-#: ipalib/plugins/dns.py:2133 ipalib/plugins/dns.py:2588
-#: ipalib/plugins/dns.py:2589
+#: ipalib/plugins/dns.py:2414 ipalib/plugins/dns.py:2949
+#: ipalib/plugins/dns.py:2950
msgid "Time to live"
msgstr ""
-#: ipalib/plugins/dns.py:2134
+#: ipalib/plugins/dns.py:2415
msgid "Time to live for records at zone apex"
msgstr ""
-#: ipalib/plugins/dns.py:2140
-msgid "SOA class"
-msgstr ""
-
-#: ipalib/plugins/dns.py:2141
-msgid "SOA record class"
-msgstr ""
-
-#: ipalib/plugins/dns.py:2146 ipalib/plugins/dns.py:2147
+#: ipalib/plugins/dns.py:2427 ipalib/plugins/dns.py:2428
msgid "BIND update policy"
msgstr ""
-#: ipalib/plugins/dns.py:2153
+#: ipalib/plugins/dns.py:2434
msgid "Dynamic update"
msgstr ""
-#: ipalib/plugins/dns.py:2154
+#: ipalib/plugins/dns.py:2435
msgid "Allow dynamic updates."
msgstr ""
-#: ipalib/plugins/dns.py:2163
+#: ipalib/plugins/dns.py:2444
msgid "Allow query"
msgstr ""
-#: ipalib/plugins/dns.py:2164
+#: ipalib/plugins/dns.py:2445
msgid ""
"Semicolon separated list of IP addresses or networks which are allowed to "
"issue queries"
msgstr ""
-#: ipalib/plugins/dns.py:2172
+#: ipalib/plugins/dns.py:2453
msgid "Allow transfer"
msgstr ""
-#: ipalib/plugins/dns.py:2173
+#: ipalib/plugins/dns.py:2454
msgid ""
"Semicolon separated list of IP addresses or networks which are allowed to "
"transfer the zone"
msgstr ""
-#: ipalib/plugins/dns.py:2179 ipalib/plugins/dns.py:3767
+#: ipalib/plugins/dns.py:2460 ipalib/plugins/dns.py:4212
msgid "Allow PTR sync"
msgstr ""
-#: ipalib/plugins/dns.py:2180
+#: ipalib/plugins/dns.py:2461
msgid ""
"Allow synchronization of forward (A, AAAA) and reverse (PTR) records in the "
"zone"
msgstr ""
-#: ipalib/plugins/dns.py:2185
+#: ipalib/plugins/dns.py:2466
msgid "Allow in-line DNSSEC signing"
msgstr ""
-#: ipalib/plugins/dns.py:2186
+#: ipalib/plugins/dns.py:2467
msgid "Allow inline DNSSEC signing of records in the zone"
msgstr ""
-#: ipalib/plugins/dns.py:2191
+#: ipalib/plugins/dns.py:2472
msgid "NSEC3PARAM record"
msgstr ""
-#: ipalib/plugins/dns.py:2192
+#: ipalib/plugins/dns.py:2473
msgid ""
"NSEC3PARAM record for zone in format: hash_algorithm flags iterations salt"
msgstr ""
-#: ipalib/plugins/dns.py:2292
-msgid ""
-"Manual configuration needed, please visit 'http://www.freeipa.org/page/"
-"Releases/4.0.0#Experimental_DNSSEC_Support'"
+#: ipalib/plugins/dns.py:2626
+msgid "Visit 'http://www.freeipa.org/page/Releases/4.1.0#DNSSEC_Support'."
msgstr ""
-#: ipalib/plugins/dns.py:2299
+#: ipalib/plugins/dns.py:2631
msgid ""
"If you encounter any problems please report them and restart 'named' service "
"on affected IPA server."
msgstr ""
-#: ipalib/plugins/dns.py:2307
-msgid "Create new DNS zone (SOA record)."
+#: ipalib/plugins/dns.py:2641
+msgid "setting Authoritative nameserver"
msgstr ""
-#: ipalib/plugins/dns.py:2311 ipalib/plugins/dns.py:2460
-#: ipalib/plugins/dns.py:3080 ipalib/plugins/host.py:517
-#: ipalib/plugins/permission.py:996 ipalib/plugins/realmdomains.py:124
-#: ipalib/plugins/service.py:419
-msgid "Force"
+#: ipalib/plugins/dns.py:2642
+msgid "It is used only for setting the SOA MNAME attribute."
msgstr ""
-#: ipalib/plugins/dns.py:2312
-msgid "Force DNS zone creation even if nameserver is not resolvable."
+#: ipalib/plugins/dns.py:2644
+msgid "NS record(s) can be edited in zone apex - '@'. "
msgstr ""
-#: ipalib/plugins/dns.py:2315
-msgid "Add forward record for nameserver located in the created zone"
+#: ipalib/plugins/dns.py:2666
+msgid "Create new DNS zone (SOA record)."
msgstr ""
-#: ipalib/plugins/dns.py:2316 ipalib/plugins/dns.py:2345
-msgid "Nameserver IP address"
+#: ipalib/plugins/dns.py:2670 ipalib/plugins/dns.py:2797
+#: ipalib/plugins/dns.py:3504 ipalib/plugins/host.py:595
+#: ipalib/plugins/permission.py:1041 ipalib/plugins/realmdomains.py:124
+#: ipalib/plugins/service.py:497
+msgid "Force"
msgstr ""
-#: ipalib/plugins/dns.py:2360
-msgid "Nameserver address is not a domain name"
+#: ipalib/plugins/dns.py:2671
+msgid "Force DNS zone creation even if nameserver is not resolvable."
msgstr ""
-#: ipalib/plugins/dns.py:2372
+#: ipalib/plugins/dns.py:2706
msgid "Nameserver for reverse zone cannot be a relative DNS name"
msgstr ""
-#: ipalib/plugins/dns.py:2376
-msgid "Nameserver DNS record is created for for forward zones only"
-msgstr ""
-
-#: ipalib/plugins/dns.py:2381
-msgid "Nameserver DNS record is created only for nameservers in current zone"
-msgstr ""
-
-#: ipalib/plugins/dns.py:2430
+#: ipalib/plugins/dns.py:2760
msgid "Delete DNS zone (SOA record)."
msgstr ""
-#: ipalib/plugins/dns.py:2432
+#: ipalib/plugins/dns.py:2762
#, python-format
msgid "Deleted DNS zone \"%(value)s\""
msgstr ""
-#: ipalib/plugins/dns.py:2456
+#: ipalib/plugins/dns.py:2793
msgid "Modify DNS zone (SOA record)."
msgstr ""
-#: ipalib/plugins/dns.py:2461
+#: ipalib/plugins/dns.py:2798
msgid "Force nameserver change even if nameserver not in DNS"
msgstr ""
-#: ipalib/plugins/dns.py:2492
+#: ipalib/plugins/dns.py:2815
+msgid "is required"
+msgstr ""
+
+#: ipalib/plugins/dns.py:2839
msgid "Forward zones only"
msgstr ""
-#: ipalib/plugins/dns.py:2494
+#: ipalib/plugins/dns.py:2841
msgid "Search for forward zones only"
msgstr ""
-#: ipalib/plugins/dns.py:2526
+#: ipalib/plugins/dns.py:2876
msgid "Display information about a DNS zone (SOA record)."
msgstr ""
-#: ipalib/plugins/dns.py:2542
+#: ipalib/plugins/dns.py:2893
msgid "Disable DNS Zone."
msgstr ""
-#: ipalib/plugins/dns.py:2543
+#: ipalib/plugins/dns.py:2894
#, python-format
msgid "Disabled DNS zone \"%(value)s\""
msgstr ""
-#: ipalib/plugins/dns.py:2548
+#: ipalib/plugins/dns.py:2904
msgid "Enable DNS Zone."
msgstr ""
-#: ipalib/plugins/dns.py:2549
+#: ipalib/plugins/dns.py:2905
#, python-format
msgid "Enabled DNS zone \"%(value)s\""
msgstr ""
-#: ipalib/plugins/dns.py:2554
+#: ipalib/plugins/dns.py:2915
msgid "Add a permission for per-zone access delegation."
msgstr ""
-#: ipalib/plugins/dns.py:2559
+#: ipalib/plugins/dns.py:2920
msgid "Remove a permission for per-zone access delegation."
msgstr ""
-#: ipalib/plugins/dns.py:2569
+#: ipalib/plugins/dns.py:2930
msgid "DNS resource record"
msgstr ""
-#: ipalib/plugins/dns.py:2570
+#: ipalib/plugins/dns.py:2931
msgid "DNS resource records"
msgstr ""
-#: ipalib/plugins/dns.py:2576
+#: ipalib/plugins/dns.py:2937
msgid "DNS Resource Records"
msgstr ""
-#: ipalib/plugins/dns.py:2577
+#: ipalib/plugins/dns.py:2938
msgid "DNS Resource Record"
msgstr ""
-#: ipalib/plugins/dns.py:2582 ipalib/plugins/dns.py:2583
+#: ipalib/plugins/dns.py:2943 ipalib/plugins/dns.py:2944
msgid "Record name"
msgstr ""
-#: ipalib/plugins/dns.py:2593 ipalib/plugins/host.py:448
-#: ipalib/plugins/user.py:585
-msgid "Class"
-msgstr ""
-
-#: ipalib/plugins/dns.py:2594
-msgid "DNS class"
-msgstr ""
-
-#: ipalib/plugins/dns.py:2600
+#: ipalib/plugins/dns.py:2961
msgid "Structured"
msgstr ""
-#: ipalib/plugins/dns.py:2601
+#: ipalib/plugins/dns.py:2962
msgid "Parse all raw DNS records and return them in a structured way"
msgstr ""
-#: ipalib/plugins/dns.py:2619
+#: ipalib/plugins/dns.py:2971
+msgid "DS record must not be in zone apex (RFC 4035 section 2.4)"
+msgstr ""
+
+#: ipalib/plugins/dns.py:2988
msgid ""
"out-of-zone data: record name must be a subdomain of the zone or a relative "
"name"
msgstr ""
-#: ipalib/plugins/dns.py:2646
+#: ipalib/plugins/dns.py:2999
+#, python-format
+msgid ""
+"owner of %(types)s records should not be a wildcard domain name (RFC 4592 "
+"section 4)"
+msgstr ""
+
+#: ipalib/plugins/dns.py:3028
#, python-format
msgid ""
"Reverse zone for PTR record should be a sub-zone of one the following fully "
"qualified domains: %s"
msgstr ""
-#: ipalib/plugins/dns.py:2661
+#: ipalib/plugins/dns.py:3043
#, python-format
msgid ""
"Reverse zone %(name)s requires exactly %(count)d IP address components, "
"%(user_count)d given"
msgstr ""
-#: ipalib/plugins/dns.py:2702
+#: ipalib/plugins/dns.py:3084
msgid "only master zones can contain records"
msgstr ""
-#: ipalib/plugins/dns.py:2871
+#: ipalib/plugins/dns.py:3254
msgid "only one CNAME record is allowed per name (RFC 2136, section 1.1.5)"
msgstr ""
-#: ipalib/plugins/dns.py:2877
+#: ipalib/plugins/dns.py:3260
msgid ""
"CNAME record is not allowed to coexist with any other record (RFC 1034, "
"section 3.6.2)"
msgstr ""
-#: ipalib/plugins/dns.py:2889
+#: ipalib/plugins/dns.py:3268
msgid "only one DNAME record is allowed per name (RFC 6672, section 2.4)"
msgstr ""
-#: ipalib/plugins/dns.py:2894
+#: ipalib/plugins/dns.py:3284
+#, python-format
msgid ""
-"DNAME record is not allowed to coexist with an NS record except when located "
-"in a zone root record (RFC 6672, section 2.3)"
+"NS record is not allowed to coexist with an %(type)s record except when "
+"located in a zone root record (RFC 2181, section 6.1)"
msgstr ""
-#: ipalib/plugins/dns.py:3074
+#: ipalib/plugins/dns.py:3300
+msgid ""
+"DS record requires to coexist with an NS record (RFC 4592 section 4.6, RFC "
+"4035 section 2.4)"
+msgstr ""
+
+#: ipalib/plugins/dns.py:3498
msgid "Add new DNS resource record."
msgstr ""
-#: ipalib/plugins/dns.py:3082
+#: ipalib/plugins/dns.py:3506
msgid "force NS record creation even if its hostname is not in DNS"
msgstr ""
-#: ipalib/plugins/dns.py:3129
+#: ipalib/plugins/dns.py:3553
msgid "Please choose a type of DNS resource record to be added"
msgstr ""
-#: ipalib/plugins/dns.py:3130
+#: ipalib/plugins/dns.py:3554
#, python-format
msgid "The most common types for this type of zone are: %s\n"
msgstr ""
-#: ipalib/plugins/dns.py:3135
+#: ipalib/plugins/dns.py:3559
msgid "DNS resource record type"
msgstr ""
-#: ipalib/plugins/dns.py:3151
+#: ipalib/plugins/dns.py:3575
#, python-format
msgid "Invalid or unsupported type. Allowed values are: %s"
msgstr ""
-#: ipalib/plugins/dns.py:3179
+#: ipalib/plugins/dns.py:3603
#, python-format
msgid "Raw value of a DNS record was already set by \"%(name)s\" option"
msgstr ""
-#: ipalib/plugins/dns.py:3281
+#: ipalib/plugins/dns.py:3707
msgid "Modify a DNS resource record."
msgstr ""
-#: ipalib/plugins/dns.py:3298
+#: ipalib/plugins/dns.py:3724
msgid "DNS zone root record cannot be renamed"
msgstr ""
-#: ipalib/plugins/dns.py:3316
+#: ipalib/plugins/dns.py:3742
msgid "DNS records can be only updated one at a time"
msgstr ""
-#: ipalib/plugins/dns.py:3407
+#: ipalib/plugins/dns.py:3845
msgid "No option to modify specific record provided."
msgstr ""
-#: ipalib/plugins/dns.py:3410 ipalib/plugins/dns.py:3596
+#: ipalib/plugins/dns.py:3848 ipalib/plugins/dns.py:4041
msgid "Current DNS record contents:\n"
msgstr ""
-#: ipalib/plugins/dns.py:3432
+#: ipalib/plugins/dns.py:3870
#, python-format
msgid "Modify %(name)s '%(value)s'?"
msgstr ""
-#: ipalib/plugins/dns.py:3440
+#: ipalib/plugins/dns.py:3878
#, python-format
msgid ""
"%(count)d %(type)s record skipped. Only one value per DNS record type can be "
@@ -4139,180 +4894,222 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/dns.py:3452
+#: ipalib/plugins/dns.py:3890
#, python-format
msgid "Deleted record \"%(value)s\""
msgstr ""
-#: ipalib/plugins/dns.py:3459
+#: ipalib/plugins/dns.py:3897
msgid "Delete DNS resource record."
msgstr ""
-#: ipalib/plugins/dns.py:3463
+#: ipalib/plugins/dns.py:3901
msgid ""
"Neither --del-all nor options to delete a specific record provided.\n"
"Command help may be consulted for all supported record types."
msgstr ""
-#: ipalib/plugins/dns.py:3469
+#: ipalib/plugins/dns.py:3907
msgid "Delete all associated records"
msgstr ""
-#: ipalib/plugins/dns.py:3538
+#: ipalib/plugins/dns.py:3979
#, python-format
msgid "Zone record '%s' cannot be deleted"
msgstr ""
-#: ipalib/plugins/dns.py:3588
+#: ipalib/plugins/dns.py:4033
msgid "No option to delete specific record provided."
msgstr ""
-#: ipalib/plugins/dns.py:3589
+#: ipalib/plugins/dns.py:4034
msgid "Delete all?"
msgstr ""
-#: ipalib/plugins/dns.py:3617
+#: ipalib/plugins/dns.py:4062
#, python-format
msgid "Delete %(name)s '%(value)s'?"
msgstr ""
-#: ipalib/plugins/dns.py:3628
+#: ipalib/plugins/dns.py:4073
msgid "Display DNS resource."
msgstr ""
-#: ipalib/plugins/dns.py:3645
+#: ipalib/plugins/dns.py:4090
msgid "Search for DNS resources."
msgstr ""
-#: ipalib/plugins/dns.py:3684
+#: ipalib/plugins/dns.py:4129
msgid "Resolve a host name in DNS."
msgstr ""
-#: ipalib/plugins/dns.py:3687
+#: ipalib/plugins/dns.py:4132
#, python-format
msgid "Found '%(value)s'"
msgstr ""
-#: ipalib/plugins/dns.py:3704
+#: ipalib/plugins/dns.py:4149
#, python-format
msgid "Host '%(host)s' not found"
msgstr ""
-#: ipalib/plugins/dns.py:3741
+#: ipalib/plugins/dns.py:4186
msgid "DNS configuration options"
msgstr ""
-#: ipalib/plugins/dns.py:3746 ipalib/plugins/dns.py:3747
+#: ipalib/plugins/dns.py:4191 ipalib/plugins/dns.py:4192
msgid "DNS Global Configuration"
msgstr ""
-#: ipalib/plugins/dns.py:3753
+#: ipalib/plugins/dns.py:4198
msgid "Global forwarders"
msgstr ""
-#: ipalib/plugins/dns.py:3754
+#: ipalib/plugins/dns.py:4199
msgid ""
"Global forwarders. A custom port can be specified for each forwarder using a "
"standard format \"IP_ADDRESS port PORT\""
msgstr ""
-#: ipalib/plugins/dns.py:3761
+#: ipalib/plugins/dns.py:4206
msgid ""
"Global forwarding policy. Set to \"none\" to disable any configured global "
"forwarders."
msgstr ""
-#: ipalib/plugins/dns.py:3768
+#: ipalib/plugins/dns.py:4213
msgid "Allow synchronization of forward (A, AAAA) and reverse (PTR) records"
msgstr ""
-#: ipalib/plugins/dns.py:3772
+#: ipalib/plugins/dns.py:4217
msgid "Zone refresh interval"
msgstr ""
-#: ipalib/plugins/dns.py:3816
+#: ipalib/plugins/dns.py:4261
msgid "Global DNS configuration is empty"
msgstr ""
-#: ipalib/plugins/dns.py:3822
+#: ipalib/plugins/dns.py:4267
msgid "Modify global DNS configuration."
msgstr ""
-#: ipalib/plugins/dns.py:3833
+#: ipalib/plugins/dns.py:4275 ipalib/plugins/dns.py:4436
+#: ipalib/plugins/dns.py:4482
+msgid "Server will check DNS forwarder(s)."
+msgstr ""
+
+#: ipalib/plugins/dns.py:4277 ipalib/plugins/dns.py:4438
+#: ipalib/plugins/dns.py:4484
+msgid "This may take some time, please wait ..."
+msgstr ""
+
+#: ipalib/plugins/dns.py:4318
msgid "Show the current global DNS configuration."
msgstr ""
-#: ipalib/plugins/dns.py:3846
+#: ipalib/plugins/dns.py:4331
msgid "DNS forward zone"
msgstr ""
-#: ipalib/plugins/dns.py:3847
+#: ipalib/plugins/dns.py:4332
msgid "DNS forward zones"
msgstr ""
-#: ipalib/plugins/dns.py:3849
+#: ipalib/plugins/dns.py:4334
msgid "DNS Forward Zones"
msgstr ""
-#: ipalib/plugins/dns.py:3850
+#: ipalib/plugins/dns.py:4335
msgid "DNS Forward Zone"
msgstr ""
-#: ipalib/plugins/dns.py:3859
+#: ipalib/plugins/dns.py:4429
msgid "Create new DNS forward zone."
msgstr ""
-#: ipalib/plugins/dns.py:3873 ipalib/plugins/dns.py:3913
+#: ipalib/plugins/dns.py:4452 ipalib/plugins/dns.py:4510
msgid "Please specify forwarders."
msgstr ""
-#: ipalib/plugins/dns.py:3880
+#: ipalib/plugins/dns.py:4468
msgid "Delete DNS forward zone."
msgstr ""
-#: ipalib/plugins/dns.py:3882
+#: ipalib/plugins/dns.py:4470
#, python-format
msgid "Deleted DNS forward zone \"%(value)s\""
msgstr ""
-#: ipalib/plugins/dns.py:3887
+#: ipalib/plugins/dns.py:4475
msgid "Modify DNS forward zone."
msgstr ""
-#: ipalib/plugins/dns.py:3920
+#: ipalib/plugins/dns.py:4523
msgid "Search for DNS forward zones."
msgstr ""
-#: ipalib/plugins/dns.py:3925
+#: ipalib/plugins/dns.py:4528
msgid "Display information about a DNS forward zone."
msgstr ""
-#: ipalib/plugins/dns.py:3932
+#: ipalib/plugins/dns.py:4535
msgid "Disable DNS Forward Zone."
msgstr ""
-#: ipalib/plugins/dns.py:3933
+#: ipalib/plugins/dns.py:4536
#, python-format
msgid "Disabled DNS forward zone \"%(value)s\""
msgstr ""
-#: ipalib/plugins/dns.py:3938
+#: ipalib/plugins/dns.py:4541
msgid "Enable DNS Forward Zone."
msgstr ""
-#: ipalib/plugins/dns.py:3939
+#: ipalib/plugins/dns.py:4542
#, python-format
msgid "Enabled DNS forward zone \"%(value)s\""
msgstr ""
-#: ipalib/plugins/dns.py:3944
+#: ipalib/plugins/dns.py:4552
msgid "Add a permission for per-forward zone access delegation."
msgstr ""
-#: ipalib/plugins/dns.py:3949
+#: ipalib/plugins/dns.py:4557
msgid "Remove a permission for per-forward zone access delegation."
msgstr ""
+#: ipalib/plugins/domainlevel.py:18
+msgid ""
+"\n"
+"Raise the IPA Domain Level.\n"
+msgstr ""
+
+#: ipalib/plugins/domainlevel.py:27
+msgid "Current domain level:"
+msgstr ""
+
+#: ipalib/plugins/domainlevel.py:76
+msgid "Query current Domain Level."
+msgstr ""
+
+#: ipalib/plugins/domainlevel.py:92
+msgid "Change current Domain Level."
+msgstr ""
+
+#: ipalib/plugins/domainlevel.py:99 ipalib/plugins/internal.py:456
+#: ipalib/plugins/internal.py:457
+msgid "Domain Level"
+msgstr ""
+
+#: ipalib/plugins/domainlevel.py:122
+msgid "Domain Level cannot be lowered."
+msgstr ""
+
+#: ipalib/plugins/domainlevel.py:130
+#, python-brace-format
+msgid "Domain Level cannot be raised to {0}, server {1} does not support it."
+msgstr ""
+
#: ipalib/plugins/group.py:34
msgid ""
"\n"
@@ -4405,8 +5202,8 @@ msgid ""
" ipa group-show ad_admins_external\n"
msgstr ""
-#: ipalib/plugins/group.py:125 ipalib/plugins/group.py:295
-#: ipalib/plugins/group.py:532 ipalib/plugins/user.py:204
+#: ipalib/plugins/group.py:125 ipalib/plugins/group.py:315
+#: ipalib/plugins/group.py:552 ipalib/plugins/user.py:115
msgid "group"
msgstr ""
@@ -4414,160 +5211,154 @@ msgstr ""
msgid "groups"
msgstr ""
-#: ipalib/plugins/group.py:207 ipalib/plugins/hbacrule.py:244
-#: ipalib/plugins/internal.py:512 ipalib/plugins/selinuxusermap.py:238
-#: ipalib/plugins/sudorule.py:271
-msgid "User Groups"
-msgstr ""
-
-#: ipalib/plugins/group.py:208
+#: ipalib/plugins/group.py:228
msgid "User Group"
msgstr ""
-#: ipalib/plugins/group.py:216
+#: ipalib/plugins/group.py:236 ipalib/plugins/idviews.py:770
msgid "Group name"
msgstr ""
-#: ipalib/plugins/group.py:223 ipalib/plugins/sudocmdgroup.py:123
+#: ipalib/plugins/group.py:243 ipalib/plugins/sudocmdgroup.py:123
msgid "Group description"
msgstr ""
-#: ipalib/plugins/group.py:227 ipalib/plugins/user.py:519
-msgid "GID"
-msgstr ""
-
-#: ipalib/plugins/group.py:228
+#: ipalib/plugins/group.py:248
msgid "GID (use this option to set it manually)"
msgstr ""
-#: ipalib/plugins/group.py:236
+#: ipalib/plugins/group.py:256
msgid "External member"
msgstr ""
-#: ipalib/plugins/group.py:237
+#: ipalib/plugins/group.py:257
msgid "Members of a trusted domain in DOM\\name or name@domain form"
msgstr ""
-#: ipalib/plugins/group.py:245
+#: ipalib/plugins/group.py:265
msgid "Create a new group."
msgstr ""
-#: ipalib/plugins/group.py:247
+#: ipalib/plugins/group.py:267
#, python-format
msgid "Added group \"%(value)s\""
msgstr ""
-#: ipalib/plugins/group.py:252
+#: ipalib/plugins/group.py:272
msgid "Create as a non-POSIX group"
msgstr ""
-#: ipalib/plugins/group.py:257
+#: ipalib/plugins/group.py:277
msgid "Allow adding external non-IPA members from trusted domains"
msgstr ""
-#: ipalib/plugins/group.py:280
+#: ipalib/plugins/group.py:290
+msgid "gid cannot be set for external group"
+msgstr ""
+
+#: ipalib/plugins/group.py:300
msgid "Delete group."
msgstr ""
-#: ipalib/plugins/group.py:282
+#: ipalib/plugins/group.py:302
#, python-format
msgid "Deleted group \"%(value)s\""
msgstr ""
-#: ipalib/plugins/group.py:296
+#: ipalib/plugins/group.py:316
msgid "privileged group"
msgstr ""
-#: ipalib/plugins/group.py:313
+#: ipalib/plugins/group.py:333
msgid "Modify a group."
msgstr ""
-#: ipalib/plugins/group.py:315
+#: ipalib/plugins/group.py:335
#, python-format
msgid "Modified group \"%(value)s\""
msgstr ""
-#: ipalib/plugins/group.py:320
+#: ipalib/plugins/group.py:340
msgid "change to a POSIX group"
msgstr ""
-#: ipalib/plugins/group.py:324
+#: ipalib/plugins/group.py:344
msgid "change to support external non-IPA members from trusted domains"
msgstr ""
-#: ipalib/plugins/group.py:384
+#: ipalib/plugins/group.py:404
msgid "Search for groups."
msgstr ""
-#: ipalib/plugins/group.py:389
+#: ipalib/plugins/group.py:409
#, python-format
msgid "%(count)d group matched"
msgid_plural "%(count)d groups matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/group.py:395
+#: ipalib/plugins/group.py:415
msgid "search for private groups"
msgstr ""
-#: ipalib/plugins/group.py:399
+#: ipalib/plugins/group.py:419
msgid "search for POSIX groups"
msgstr ""
-#: ipalib/plugins/group.py:403
+#: ipalib/plugins/group.py:423
msgid ""
"search for groups with support of external non-IPA members from trusted "
"domains"
msgstr ""
-#: ipalib/plugins/group.py:407
+#: ipalib/plugins/group.py:427
msgid "search for non-POSIX groups"
msgstr ""
-#: ipalib/plugins/group.py:453
+#: ipalib/plugins/group.py:473
msgid "Display information about a named group."
msgstr ""
-#: ipalib/plugins/group.py:474
+#: ipalib/plugins/group.py:494
msgid "Add members to a group."
msgstr ""
-#: ipalib/plugins/group.py:483 ipalib/plugins/group.py:540
+#: ipalib/plugins/group.py:503 ipalib/plugins/group.py:560
#: ipalib/plugins/hbactest.py:386
msgid ""
"Cannot perform external member validation without Samba 4 support installed. "
"Make sure you have installed server-trust-ad sub-package of IPA on the server"
msgstr ""
-#: ipalib/plugins/group.py:488 ipalib/plugins/group.py:545
-#: ipalib/plugins/trust.py:561 ipalib/plugins/trust.py:1334
+#: ipalib/plugins/group.py:508 ipalib/plugins/group.py:565
+#: ipalib/plugins/trust.py:587 ipalib/plugins/trust.py:1362
msgid ""
"Cannot perform join operation without own domain configured. Make sure you "
"have run ipa-adtrust-install on the IPA server first"
msgstr ""
-#: ipalib/plugins/group.py:519
+#: ipalib/plugins/group.py:539
msgid "Remove members from a group."
msgstr ""
-#: ipalib/plugins/group.py:576
+#: ipalib/plugins/group.py:596
msgid "Detach a managed group from a user."
msgstr ""
-#: ipalib/plugins/group.py:579
+#: ipalib/plugins/group.py:599
#, python-format
msgid "Detached group \"%(value)s\" from user \"%(value)s\""
msgstr ""
-#: ipalib/plugins/group.py:600
+#: ipalib/plugins/group.py:620
msgid "not allowed to modify user entries"
msgstr ""
-#: ipalib/plugins/group.py:606
+#: ipalib/plugins/group.py:626
msgid "not allowed to modify group entries"
msgstr ""
-#: ipalib/plugins/group.py:625
+#: ipalib/plugins/group.py:645
msgid "Not a managed group"
msgstr ""
@@ -4659,50 +5450,20 @@ msgstr ""
msgid "Rule type"
msgstr ""
-#: ipalib/plugins/hbacrule.py:210 ipalib/plugins/netgroup.py:196
-#: ipalib/plugins/selinuxusermap.py:215 ipalib/plugins/sudorule.py:231
-msgid "User category"
-msgstr ""
-
-#: ipalib/plugins/hbacrule.py:211 ipalib/plugins/netgroup.py:197
+#: ipalib/plugins/hbacrule.py:211 ipalib/plugins/netgroup.py:207
#: ipalib/plugins/selinuxusermap.py:216 ipalib/plugins/sudorule.py:232
msgid "User category the rule applies to"
msgstr ""
-#: ipalib/plugins/hbacrule.py:216 ipalib/plugins/netgroup.py:202
-#: ipalib/plugins/selinuxusermap.py:221 ipalib/plugins/sudorule.py:237
-msgid "Host category"
-msgstr ""
-
-#: ipalib/plugins/hbacrule.py:217 ipalib/plugins/netgroup.py:203
+#: ipalib/plugins/hbacrule.py:217 ipalib/plugins/netgroup.py:213
#: ipalib/plugins/selinuxusermap.py:222 ipalib/plugins/sudorule.py:238
msgid "Host category the rule applies to"
msgstr ""
-#: ipalib/plugins/hbacrule.py:223
-msgid "Service category"
-msgstr ""
-
#: ipalib/plugins/hbacrule.py:224
msgid "Service category the rule applies to"
msgstr ""
-#: ipalib/plugins/hbacrule.py:236 ipalib/plugins/internal.py:695
-#: ipalib/plugins/selinuxusermap.py:230 ipalib/plugins/sudorule.py:226
-msgid "Enabled"
-msgstr ""
-
-#: ipalib/plugins/hbacrule.py:252 ipalib/plugins/hostgroup.py:129
-#: ipalib/plugins/internal.py:506 ipalib/plugins/selinuxusermap.py:246
-#: ipalib/plugins/sudorule.py:284
-msgid "Host Groups"
-msgstr ""
-
-#: ipalib/plugins/hbacrule.py:258 ipalib/plugins/internal.py:454
-#: ipalib/plugins/service.py:365
-msgid "Services"
-msgstr ""
-
#: ipalib/plugins/hbacrule.py:262
msgid "Service Groups"
msgstr ""
@@ -4734,19 +5495,6 @@ msgstr ""
msgid "Modified HBAC rule \"%(value)s\""
msgstr ""
-#: ipalib/plugins/hbacrule.py:316 ipalib/plugins/netgroup.py:269
-msgid "user category cannot be set to 'all' while there are allowed users"
-msgstr ""
-
-#: ipalib/plugins/hbacrule.py:318 ipalib/plugins/netgroup.py:271
-msgid "host category cannot be set to 'all' while there are allowed hosts"
-msgstr ""
-
-#: ipalib/plugins/hbacrule.py:320
-msgid ""
-"service category cannot be set to 'all' while there are allowed services"
-msgstr ""
-
#: ipalib/plugins/hbacrule.py:327
msgid "Search for HBAC rules."
msgstr ""
@@ -4788,11 +5536,6 @@ msgstr ""
msgid "Add users and groups to an HBAC rule."
msgstr ""
-#: ipalib/plugins/hbacrule.py:499 ipalib/plugins/selinuxusermap.py:509
-#: ipalib/plugins/sudorule.py:590
-msgid "users cannot be added when user category='all'"
-msgstr ""
-
#: ipalib/plugins/hbacrule.py:506
msgid "Remove users and groups from an HBAC rule."
msgstr ""
@@ -4801,11 +5544,6 @@ msgstr ""
msgid "Add target hosts and hostgroups to an HBAC rule."
msgstr ""
-#: ipalib/plugins/hbacrule.py:530 ipalib/plugins/selinuxusermap.py:542
-#: ipalib/plugins/sudorule.py:644
-msgid "hosts cannot be added when host category='all'"
-msgstr ""
-
#: ipalib/plugins/hbacrule.py:537
msgid "Remove target hosts and hostgroups from an HBAC rule."
msgstr ""
@@ -4814,10 +5552,6 @@ msgstr ""
msgid "Add services to an HBAC rule."
msgstr ""
-#: ipalib/plugins/hbacrule.py:585
-msgid "services cannot be added when service category='all'"
-msgstr ""
-
#: ipalib/plugins/hbacrule.py:592
msgid "Remove service and service groups from an HBAC rule."
msgstr ""
@@ -4867,7 +5601,7 @@ msgstr ""
msgid "HBAC Service"
msgstr ""
-#: ipalib/plugins/hbacsvc.py:101
+#: ipalib/plugins/hbacsvc.py:101 ipalib/plugins/vault.py:149
msgid "Service name"
msgstr ""
@@ -5280,7 +6014,7 @@ msgstr ""
msgid "Access granted: %s"
msgstr ""
-#: ipalib/plugins/host.py:49
+#: ipalib/plugins/host.py:50
msgid ""
"\n"
"Hosts/Machines\n"
@@ -5292,7 +6026,7 @@ msgid ""
"- every enrolled client generates a host entry\n"
msgstr ""
-#: ipalib/plugins/host.py:57
+#: ipalib/plugins/host.py:58
msgid ""
"\n"
"ENROLLMENT:\n"
@@ -5308,7 +6042,7 @@ msgid ""
"3. The host has been created with a one-time password.\n"
msgstr ""
-#: ipalib/plugins/host.py:69
+#: ipalib/plugins/host.py:70
msgid ""
"\n"
"RE-ENROLLMENT:\n"
@@ -5323,7 +6057,7 @@ msgid ""
"the OS that it runs, etc.\n"
msgstr ""
-#: ipalib/plugins/host.py:81
+#: ipalib/plugins/host.py:82
msgid ""
"\n"
" Add a new host:\n"
@@ -5331,279 +6065,336 @@ msgid ""
"com\n"
msgstr ""
-#: ipalib/plugins/host.py:84
+#: ipalib/plugins/host.py:85
msgid ""
"\n"
" Delete a host:\n"
" ipa host-del test.example.com\n"
msgstr ""
-#: ipalib/plugins/host.py:87
+#: ipalib/plugins/host.py:88
msgid ""
"\n"
" Add a new host with a one-time password:\n"
" ipa host-add --os='Fedora 12' --password=Secret123 test.example.com\n"
msgstr ""
-#: ipalib/plugins/host.py:90
+#: ipalib/plugins/host.py:91
msgid ""
"\n"
" Add a new host with a random one-time password:\n"
" ipa host-add --os='Fedora 12' --random test.example.com\n"
msgstr ""
-#: ipalib/plugins/host.py:93
+#: ipalib/plugins/host.py:94
msgid ""
"\n"
" Modify information about a host:\n"
" ipa host-mod --os='Fedora 12' test.example.com\n"
msgstr ""
-#: ipalib/plugins/host.py:96
+#: ipalib/plugins/host.py:97
msgid ""
"\n"
" Remove SSH public keys of a host and update DNS to reflect this change:\n"
" ipa host-mod --sshpubkey= --updatedns test.example.com\n"
msgstr ""
-#: ipalib/plugins/host.py:99
+#: ipalib/plugins/host.py:100
msgid ""
"\n"
" Disable the host Kerberos key, SSL certificate and all of its services:\n"
" ipa host-disable test.example.com\n"
msgstr ""
-#: ipalib/plugins/host.py:102
+#: ipalib/plugins/host.py:103
msgid ""
"\n"
" Add a host that can manage this host's keytab and certificate:\n"
" ipa host-add-managedby --hosts=test2 test\n"
msgstr ""
-#: ipalib/plugins/host.py:160 ipalib/plugins/service.py:99
+#: ipalib/plugins/host.py:106
+msgid ""
+"\n"
+" Allow user to create a keytab:\n"
+" ipa host-allow-create-keytab test2 --users=tuser1\n"
+msgstr ""
+
+#: ipalib/plugins/host.py:178 ipalib/plugins/service.py:102
msgid "Keytab"
msgstr ""
-#: ipalib/plugins/host.py:172 ipalib/plugins/internal.py:377
-#: ipalib/plugins/service.py:108
+#: ipalib/plugins/host.py:190 ipalib/plugins/internal.py:399
+#: ipalib/plugins/service.py:111
msgid "Serial Number"
msgstr ""
-#: ipalib/plugins/host.py:175 ipalib/plugins/internal.py:378
-#: ipalib/plugins/service.py:111
+#: ipalib/plugins/host.py:193 ipalib/plugins/internal.py:400
+#: ipalib/plugins/service.py:114
msgid "Serial Number (hex)"
msgstr ""
-#: ipalib/plugins/host.py:196
+#: ipalib/plugins/host.py:214
msgid "Failed managedby"
msgstr ""
-#: ipalib/plugins/host.py:199 ipalib/plugins/user.py:95
-msgid "SSH public key fingerprint"
+#: ipalib/plugins/host.py:220 ipalib/plugins/service.py:135
+msgid "Users allowed to retrieve keytab"
+msgstr ""
+
+#: ipalib/plugins/host.py:223 ipalib/plugins/service.py:138
+msgid "Groups allowed to retrieve keytab"
+msgstr ""
+
+#: ipalib/plugins/host.py:226 ipalib/plugins/service.py:141
+msgid "Hosts allowed to retrieve keytab"
+msgstr ""
+
+#: ipalib/plugins/host.py:229 ipalib/plugins/service.py:144
+msgid "Host Groups allowed to retrieve keytab"
+msgstr ""
+
+#: ipalib/plugins/host.py:232 ipalib/plugins/service.py:147
+msgid "Users allowed to create keytab"
+msgstr ""
+
+#: ipalib/plugins/host.py:235 ipalib/plugins/service.py:150
+msgid "Groups allowed to create keytab"
+msgstr ""
+
+#: ipalib/plugins/host.py:238 ipalib/plugins/service.py:153
+msgid "Hosts allowed to create keytab"
+msgstr ""
+
+#: ipalib/plugins/host.py:241 ipalib/plugins/service.py:156
+msgid "Host Groups allowed to create keytab"
msgstr ""
-#: ipalib/plugins/host.py:224
+#: ipalib/plugins/host.py:244 ipalib/plugins/service.py:159
+msgid "Failed allowed to retrieve keytab"
+msgstr ""
+
+#: ipalib/plugins/host.py:247 ipalib/plugins/service.py:162
+msgid "Failed allowed to create keytab"
+msgstr ""
+
+#: ipalib/plugins/host.py:275
#, python-format
msgid "invalid domain-name: %s"
msgstr ""
-#: ipalib/plugins/host.py:235 ipalib/plugins/sudorule.py:424
+#: ipalib/plugins/host.py:286 ipalib/plugins/sudorule.py:424
msgid "host"
msgstr ""
-#: ipalib/plugins/host.py:236 ipalib/plugins/sudorule.py:424
+#: ipalib/plugins/host.py:287 ipalib/plugins/idviews.py:335
+#: ipalib/plugins/idviews.py:378 ipalib/plugins/sudorule.py:424
msgid "hosts"
msgstr ""
-#: ipalib/plugins/host.py:374 ipalib/plugins/internal.py:505
-#: ipalib/plugins/internal.py:563
+#: ipalib/plugins/host.py:448 ipalib/plugins/internal.py:565
+#: ipalib/plugins/internal.py:634
msgid "Host"
msgstr ""
-#: ipalib/plugins/host.py:379
+#: ipalib/plugins/host.py:453
msgid "Host name"
msgstr ""
-#: ipalib/plugins/host.py:386
+#: ipalib/plugins/host.py:460
msgid "A description of this host"
msgstr ""
-#: ipalib/plugins/host.py:390
+#: ipalib/plugins/host.py:464
msgid "Locality"
msgstr ""
-#: ipalib/plugins/host.py:391
+#: ipalib/plugins/host.py:465
msgid "Host locality (e.g. \"Baltimore, MD\")"
msgstr ""
-#: ipalib/plugins/host.py:396
+#: ipalib/plugins/host.py:470
msgid "Host location (e.g. \"Lab 2\")"
msgstr ""
-#: ipalib/plugins/host.py:400
+#: ipalib/plugins/host.py:474
msgid "Platform"
msgstr ""
-#: ipalib/plugins/host.py:401
+#: ipalib/plugins/host.py:475
msgid "Host hardware platform (e.g. \"Lenovo T61\")"
msgstr ""
-#: ipalib/plugins/host.py:405
+#: ipalib/plugins/host.py:479
msgid "Operating system"
msgstr ""
-#: ipalib/plugins/host.py:406
+#: ipalib/plugins/host.py:480
msgid "Host operating system and version (e.g. \"Fedora 9\")"
msgstr ""
-#: ipalib/plugins/host.py:410
+#: ipalib/plugins/host.py:484
msgid "User password"
msgstr ""
-#: ipalib/plugins/host.py:411
+#: ipalib/plugins/host.py:485
msgid "Password used in bulk enrollment"
msgstr ""
-#: ipalib/plugins/host.py:414
+#: ipalib/plugins/host.py:488
msgid "Generate a random password to be used in bulk enrollment"
msgstr ""
-#: ipalib/plugins/host.py:419 ipalib/plugins/user.py:509
-msgid "Random password"
-msgstr ""
-
-#: ipalib/plugins/host.py:425 ipalib/plugins/service.py:379
-msgid "Base-64 encoded server certificate"
-msgstr ""
-
-#: ipalib/plugins/host.py:428 ipalib/plugins/host.py:751
+#: ipalib/plugins/host.py:502 ipalib/plugins/host.py:828
msgid "Principal name"
msgstr ""
-#: ipalib/plugins/host.py:436
+#: ipalib/plugins/host.py:511
msgid "MAC address"
msgstr ""
-#: ipalib/plugins/host.py:437
+#: ipalib/plugins/host.py:512
msgid "Hardware MAC address(es) on this host"
msgstr ""
-#: ipalib/plugins/host.py:441 ipalib/plugins/user.py:571
-msgid "SSH public key"
-msgstr ""
-
-#: ipalib/plugins/host.py:449
+#: ipalib/plugins/host.py:524
msgid ""
"Host category (semantics placed on this attribute are for local "
"interpretation)"
msgstr ""
-#: ipalib/plugins/host.py:510
+#: ipalib/plugins/host.py:528 ipalib/plugins/internal.py:547
+msgid "Assigned ID View"
+msgstr ""
+
+#: ipalib/plugins/host.py:588
msgid "Add a new host."
msgstr ""
-#: ipalib/plugins/host.py:513
+#: ipalib/plugins/host.py:591
#, python-format
msgid "Added host \"%(value)s\""
msgstr ""
-#: ipalib/plugins/host.py:518
+#: ipalib/plugins/host.py:596
msgid "force host name even if not in DNS"
msgstr ""
-#: ipalib/plugins/host.py:521
+#: ipalib/plugins/host.py:599
msgid "skip reverse DNS detection"
msgstr ""
-#: ipalib/plugins/host.py:524
+#: ipalib/plugins/host.py:602
msgid "Add the host to DNS with this IP address"
msgstr ""
-#: ipalib/plugins/host.py:609
+#: ipalib/plugins/host.py:687
#, python-format
msgid "The host was added but the DNS update failed with: %(exc)s"
msgstr ""
-#: ipalib/plugins/host.py:630
+#: ipalib/plugins/host.py:708
msgid "Delete a host."
msgstr ""
-#: ipalib/plugins/host.py:632
+#: ipalib/plugins/host.py:710
#, python-format
msgid "Deleted host \"%(value)s\""
msgstr ""
-#: ipalib/plugins/host.py:637
+#: ipalib/plugins/host.py:715
msgid "Remove entries from DNS"
msgstr ""
-#: ipalib/plugins/host.py:742
+#: ipalib/plugins/host.py:819
msgid "Modify information about a host."
msgstr ""
-#: ipalib/plugins/host.py:745
+#: ipalib/plugins/host.py:822
#, python-format
msgid "Modified host \"%(value)s\""
msgstr ""
-#: ipalib/plugins/host.py:752
+#: ipalib/plugins/host.py:829
msgid "Kerberos principal name for this host"
msgstr ""
-#: ipalib/plugins/host.py:756
+#: ipalib/plugins/host.py:833
msgid "Update DNS entries"
msgstr ""
-#: ipalib/plugins/host.py:769
+#: ipalib/plugins/host.py:848
msgid "Password cannot be set on enrolled host."
msgstr ""
-#: ipalib/plugins/host.py:773
+#: ipalib/plugins/host.py:852
msgid "cn is immutable"
msgstr ""
-#: ipalib/plugins/host.py:890
+#: ipalib/plugins/host.py:978
msgid "Search for hosts."
msgstr ""
-#: ipalib/plugins/host.py:894
+#: ipalib/plugins/host.py:982
#, python-format
msgid "%(count)d host matched"
msgid_plural "%(count)d hosts matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/host.py:975
+#: ipalib/plugins/host.py:1065
msgid "Display information about a host."
msgstr ""
-#: ipalib/plugins/host.py:980 ipalib/plugins/service.py:608
+#: ipalib/plugins/host.py:1070 ipalib/plugins/service.py:709
msgid "file to store certificate in"
msgstr ""
-#: ipalib/plugins/host.py:1012 ipalib/plugins/service.py:628
+#: ipalib/plugins/host.py:1108 ipalib/plugins/service.py:734
#, python-format
-msgid "Certificate stored in file '%(file)s'"
+msgid "Certificate(s) stored in file '%(file)s'"
msgstr ""
-#: ipalib/plugins/host.py:1023
+#: ipalib/plugins/host.py:1120
msgid "Disable the Kerberos key, SSL certificate and all services of a host."
msgstr ""
-#: ipalib/plugins/host.py:1026
+#: ipalib/plugins/host.py:1123
#, python-format
msgid "Disabled host \"%(value)s\""
msgstr ""
-#: ipalib/plugins/host.py:1120
+#: ipalib/plugins/host.py:1217
msgid "Add hosts that can manage this host."
msgstr ""
-#: ipalib/plugins/host.py:1135 ipalib/plugins/otptoken.py:390
+#: ipalib/plugins/host.py:1231 ipalib/plugins/otptoken.py:470
msgid "Remove hosts that can manage this host."
msgstr ""
-#: ipalib/plugins/hostgroup.py:27
+#: ipalib/plugins/host.py:1244
+msgid ""
+"Allow users, groups, hosts or host groups to retrieve a keytab of this host."
+msgstr ""
+
+#: ipalib/plugins/host.py:1263
+msgid ""
+"Disallow users, groups, hosts or host groups to retrieve a keytab of this "
+"host."
+msgstr ""
+
+#: ipalib/plugins/host.py:1281
+msgid ""
+"Allow users, groups, hosts or host groups to create a keytab of this host."
+msgstr ""
+
+#: ipalib/plugins/host.py:1300
+msgid ""
+"Disallow users, groups, hosts or host groups to create a keytab of this host."
+msgstr ""
+
+#: ipalib/plugins/hostgroup.py:30
msgid ""
"\n"
"Groups of hosts.\n"
@@ -5635,84 +6426,84 @@ msgid ""
" ipa hostgroup-del baltimore\n"
msgstr ""
-#: ipalib/plugins/hostgroup.py:65
+#: ipalib/plugins/hostgroup.py:77
msgid "host group"
msgstr ""
-#: ipalib/plugins/hostgroup.py:66
+#: ipalib/plugins/hostgroup.py:78
msgid "host groups"
msgstr ""
-#: ipalib/plugins/hostgroup.py:130
+#: ipalib/plugins/hostgroup.py:142
msgid "Host Group"
msgstr ""
-#: ipalib/plugins/hostgroup.py:137
+#: ipalib/plugins/hostgroup.py:149
msgid "Host-group"
msgstr ""
-#: ipalib/plugins/hostgroup.py:138
+#: ipalib/plugins/hostgroup.py:150
msgid "Name of host-group"
msgstr ""
-#: ipalib/plugins/hostgroup.py:145
+#: ipalib/plugins/hostgroup.py:157
msgid "A description of this host-group"
msgstr ""
-#: ipalib/plugins/hostgroup.py:172
+#: ipalib/plugins/hostgroup.py:183
msgid "Add a new hostgroup."
msgstr ""
-#: ipalib/plugins/hostgroup.py:174
+#: ipalib/plugins/hostgroup.py:185
#, python-format
msgid "Added hostgroup \"%(value)s\""
msgstr ""
-#: ipalib/plugins/hostgroup.py:190
+#: ipalib/plugins/hostgroup.py:201
#, python-format
msgid ""
"netgroup with name \"%s\" already exists. Hostgroups and netgroups share a "
"common namespace"
msgstr ""
-#: ipalib/plugins/hostgroup.py:213
+#: ipalib/plugins/hostgroup.py:222
msgid "Delete a hostgroup."
msgstr ""
-#: ipalib/plugins/hostgroup.py:215
+#: ipalib/plugins/hostgroup.py:224
#, python-format
msgid "Deleted hostgroup \"%(value)s\""
msgstr ""
-#: ipalib/plugins/hostgroup.py:221
+#: ipalib/plugins/hostgroup.py:229
msgid "Modify a hostgroup."
msgstr ""
-#: ipalib/plugins/hostgroup.py:223
+#: ipalib/plugins/hostgroup.py:231
#, python-format
msgid "Modified hostgroup \"%(value)s\""
msgstr ""
-#: ipalib/plugins/hostgroup.py:234
+#: ipalib/plugins/hostgroup.py:241
msgid "Search for hostgroups."
msgstr ""
-#: ipalib/plugins/hostgroup.py:238
+#: ipalib/plugins/hostgroup.py:245
#, python-format
msgid "%(count)d hostgroup matched"
msgid_plural "%(count)d hostgroups matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/hostgroup.py:252
+#: ipalib/plugins/hostgroup.py:258
msgid "Display information about a hostgroup."
msgstr ""
-#: ipalib/plugins/hostgroup.py:263
+#: ipalib/plugins/hostgroup.py:268
msgid "Add members to a hostgroup."
msgstr ""
-#: ipalib/plugins/hostgroup.py:274
+#: ipalib/plugins/hostgroup.py:278
msgid "Remove members from a hostgroup."
msgstr ""
@@ -5872,87 +6663,79 @@ msgstr ""
msgid "ID Range"
msgstr ""
-#: ipalib/plugins/idrange.py:189
-msgid "local domain range"
-msgstr ""
-
#: ipalib/plugins/idrange.py:190
-msgid "Active Directory winsync range"
+msgid "local domain range"
msgstr ""
-#: ipalib/plugins/idrange.py:191 ipalib/plugins/trust.py:425
+#: ipalib/plugins/idrange.py:192 ipalib/plugins/trust.py:425
msgid "Active Directory domain range"
msgstr ""
-#: ipalib/plugins/idrange.py:192 ipalib/plugins/trust.py:426
+#: ipalib/plugins/idrange.py:193 ipalib/plugins/trust.py:426
msgid "Active Directory trust range with POSIX attributes"
msgstr ""
-#: ipalib/plugins/idrange.py:194
-msgid "IPA trust range"
-msgstr ""
-
-#: ipalib/plugins/idrange.py:200
+#: ipalib/plugins/idrange.py:201
msgid "Range name"
msgstr ""
-#: ipalib/plugins/idrange.py:205
+#: ipalib/plugins/idrange.py:206
msgid "First Posix ID of the range"
msgstr ""
-#: ipalib/plugins/idrange.py:209
+#: ipalib/plugins/idrange.py:210
msgid "Number of IDs in the range"
msgstr ""
-#: ipalib/plugins/idrange.py:213
+#: ipalib/plugins/idrange.py:214
msgid "First RID of the corresponding RID range"
msgstr ""
-#: ipalib/plugins/idrange.py:217
+#: ipalib/plugins/idrange.py:218
msgid "First RID of the secondary RID range"
msgstr ""
-#: ipalib/plugins/idrange.py:222
+#: ipalib/plugins/idrange.py:223
msgid "Domain SID of the trusted domain"
msgstr ""
-#: ipalib/plugins/idrange.py:227
+#: ipalib/plugins/idrange.py:228
msgid "Name of the trusted domain"
msgstr ""
-#: ipalib/plugins/idrange.py:230 ipalib/plugins/internal.py:538
+#: ipalib/plugins/idrange.py:231 ipalib/plugins/internal.py:609
#: ipalib/plugins/trust.py:459
msgid "Range type"
msgstr ""
-#: ipalib/plugins/idrange.py:232
+#: ipalib/plugins/idrange.py:233
#, python-brace-format
msgid "ID range type, one of {vals}"
msgstr ""
-#: ipalib/plugins/idrange.py:300
+#: ipalib/plugins/idrange.py:308
msgid ""
"range modification leaving objects with ID out of the defined range is not "
"allowed"
msgstr ""
-#: ipalib/plugins/idrange.py:305
+#: ipalib/plugins/idrange.py:313
msgid ""
"Cannot perform SID validation without Samba 4 support installed. Make sure "
"you have installed server-trust-ad sub-package of IPA on the server"
msgstr ""
-#: ipalib/plugins/idrange.py:312
+#: ipalib/plugins/idrange.py:320
msgid ""
"Cross-realm trusts are not configured. Make sure you have run ipa-adtrust-"
"install on the IPA server first"
msgstr ""
-#: ipalib/plugins/idrange.py:324
+#: ipalib/plugins/idrange.py:332
msgid "SID is not recognized as a valid SID for a trusted domain"
msgstr ""
-#: ipalib/plugins/idrange.py:361
+#: ipalib/plugins/idrange.py:369
msgid ""
"\n"
" Add new ID range.\n"
@@ -5992,96 +6775,464 @@ msgid ""
" "
msgstr ""
-#: ipalib/plugins/idrange.py:393
+#: ipalib/plugins/idrange.py:401
#, python-format
msgid "Added ID range \"%(value)s\""
msgstr ""
-#: ipalib/plugins/idrange.py:466 ipalib/plugins/idrange.py:680
+#: ipalib/plugins/idrange.py:475 ipalib/plugins/idrange.py:702
msgid "Options dom-sid and dom-name cannot be used together"
msgstr ""
-#: ipalib/plugins/idrange.py:476 ipalib/plugins/idrange.py:692
+#: ipalib/plugins/idrange.py:485 ipalib/plugins/idrange.py:714
msgid ""
"SID for the specified trusted domain name could not be found. Please specify "
"the SID directly using dom-sid option."
msgstr ""
-#: ipalib/plugins/idrange.py:491
-msgid ""
-"IPA Range type must be one of ipa-ad-trust or ipa-ad-trust-posix when SID of "
-"the trusted domain is specified."
+#: ipalib/plugins/idrange.py:501
+msgid "Options dom-sid/dom-name and rid-base must be used together"
msgstr ""
-#: ipalib/plugins/idrange.py:497
-msgid "Options dom-sid/dom-name and secondary-rid-base cannot be used together"
+#: ipalib/plugins/idrange.py:508 ipalib/plugins/idrange.py:737
+msgid ""
+"Option rid-base must not be used when IPA range type is ipa-ad-trust-posix"
msgstr ""
-#: ipalib/plugins/idrange.py:502
-msgid "Options dom-sid/dom-name and rid-base must be used together"
+#: ipalib/plugins/idrange.py:515
+msgid ""
+"IPA Range type must be one of ipa-ad-trust or ipa-ad-trust-posix when SID of "
+"the trusted domain is specified"
msgstr ""
#: ipalib/plugins/idrange.py:521
+msgid "Options dom-sid/dom-name and secondary-rid-base cannot be used together"
+msgstr ""
+
+#: ipalib/plugins/idrange.py:540
msgid ""
"IPA Range type must not be one of ipa-ad-trust or ipa-ad-trust-posix when "
"SID of the trusted domain is not specified."
msgstr ""
-#: ipalib/plugins/idrange.py:528 ipalib/plugins/idrange.py:722
+#: ipalib/plugins/idrange.py:547 ipalib/plugins/idrange.py:756
msgid "Options secondary-rid-base and rid-base must be used together"
msgstr ""
-#: ipalib/plugins/idrange.py:538 ipalib/plugins/idrange.py:745
+#: ipalib/plugins/idrange.py:557 ipalib/plugins/idrange.py:779
msgid "Primary RID range and secondary RID range cannot overlap"
msgstr ""
-#: ipalib/plugins/idrange.py:550
+#: ipalib/plugins/idrange.py:569
msgid ""
"You must specify both rid-base and secondary-rid-base options, because ipa-"
"adtrust-install has already been run."
msgstr ""
-#: ipalib/plugins/idrange.py:566
+#: ipalib/plugins/idrange.py:586
msgid "Delete an ID range."
msgstr ""
-#: ipalib/plugins/idrange.py:568
+#: ipalib/plugins/idrange.py:588
#, python-format
msgid "Deleted ID range \"%(value)s\""
msgstr ""
-#: ipalib/plugins/idrange.py:614
+#: ipalib/plugins/idrange.py:634
msgid "Search for ranges."
msgstr ""
-#: ipalib/plugins/idrange.py:617
+#: ipalib/plugins/idrange.py:637
#, python-format
msgid "%(count)d range matched"
msgid_plural "%(count)d ranges matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/idrange.py:636
+#: ipalib/plugins/idrange.py:657
msgid "Display information about a range."
msgstr ""
-#: ipalib/plugins/idrange.py:651
+#: ipalib/plugins/idrange.py:673
msgid "Modify ID range."
msgstr ""
-#: ipalib/plugins/idrange.py:653
+#: ipalib/plugins/idrange.py:675
#, python-format
msgid "Modified ID range \"%(value)s\""
msgstr ""
-#: ipalib/plugins/idrange.py:699
+#: ipalib/plugins/idrange.py:721
msgid "Options dom-sid and secondary-rid-base cannot be used together"
msgstr ""
-#: ipalib/plugins/idrange.py:704
+#: ipalib/plugins/idrange.py:728
msgid "Options dom-sid and rid-base must be used together"
msgstr ""
+#: ipalib/plugins/idviews.py:40
+msgid ""
+"\n"
+"ID Views\n"
+"Manage ID Views\n"
+"IPA allows to override certain properties of users and groups per each "
+"host.\n"
+"This functionality is primarily used to allow migration from older systems "
+"or\n"
+"other Identity Management solutions.\n"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:51 ipalib/plugins/idviews.py:65
+#: ipalib/plugins/idviews.py:72 ipalib/plugins/idviews.py:248
+#: ipalib/plugins/idviews.py:593
+msgid "ID View"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:53
+msgid "system ID View"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:66 ipalib/plugins/idviews.py:71
+msgid "ID Views"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:77
+msgid "ID View Name"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:100
+msgid "Add a new ID View."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:101
+#, python-format
+msgid "Added ID View \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/idviews.py:106
+msgid "Delete an ID View."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:107
+#, python-format
+msgid "Deleted ID View \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/idviews.py:119
+msgid "Modify an ID View."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:120
+#, python-format
+msgid "Modified an ID View \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/idviews.py:132
+msgid "Search for an ID View."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:133
+#, python-format
+msgid "%(count)d ID View matched"
+msgid_plural "%(count)d ID Views matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/idviews.py:139
+msgid "Display information about an ID View."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:144
+msgid "Enumerate all the hosts the view applies to."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:150
+msgid "User object overrides"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:153
+msgid "Group object overrides"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:156
+msgid "Hosts the view applies to"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:249
+msgid "Default Trust View cannot be applied on hosts"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:272 ipalib/plugins/idviews.py:295
+msgid "not found"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:293
+msgid "ID View already applied"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:313
+msgid "value"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:322
+msgid ""
+"Applies ID View to specified hosts or current members of specified "
+"hostgroups. If any other ID View is applied to the host, it is overriden."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:326
+#, python-format
+msgid "ID View applied to %i host."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:327
+#, python-format
+msgid "ID View applied to %i hosts."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:334
+msgid "Hosts to apply the ID View to"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:339
+msgid ""
+"Hostgroups to whose hosts apply the ID View to. Please note that view is not "
+"applied automatically to any hosts added to the hostgroup after running the "
+"idview-apply command."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:342 ipalib/plugins/idviews.py:385
+msgid "hostgroups"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:350
+msgid "Hosts that this ID View was applied to."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:354
+msgid "Hosts or hostgroups that this ID View could not be applied to."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:359
+msgid "Number of hosts the ID View was applied to:"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:366
+msgid ""
+"Clears ID View from specified hosts or current members of specified "
+"hostgroups."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:369
+#, python-format
+msgid "ID View cleared from %i host."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:370
+#, python-format
+msgid "ID View cleared from %i hosts."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:377
+msgid "Hosts to clear (any) ID View from."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:382
+msgid ""
+"Hostgroups whose hosts should have ID Views cleared. Note that view is not "
+"cleared automatically from any host added to the hostgroup after running "
+"idview-unapply command."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:393
+msgid "Hosts that ID View was cleared from."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:397
+msgid "Hosts or hostgroups that ID View could not be cleared from."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:402
+msgid "Number of hosts that had a ID View was unset:"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:445
+msgid "IPA object"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:446
+msgid ""
+"system IPA objects (e.g system groups, user private groups) cannot be "
+"overriden"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:527
+#, python-format
+msgid "Anchor '%(anchor)s' could not be resolved."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:549
+msgid "Anchor to override"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:594
+msgid "Default Trust View cannot contain IPA users"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:598
+msgid "Add a new ID override."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:599
+#, python-format
+msgid "Added ID override \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/idviews.py:612
+msgid "Delete an ID override."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:613
+#, python-format
+msgid "Deleted ID override \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/idviews.py:617
+msgid "Modify an ID override."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:618
+#, python-format
+msgid "Modified an ID override \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/idviews.py:623
+msgid "ID override"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:624
+msgid "ID overrides cannot be renamed"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:636
+msgid "Search for an ID override."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:637
+#, python-format
+msgid "%(count)d ID override matched"
+msgid_plural "%(count)d ID overrides matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/idviews.py:647
+msgid "Display information about an ID override."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:657 ipalib/plugins/idviews.py:661
+msgid "User ID override"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:658 ipalib/plugins/idviews.py:660
+msgid "User ID overrides"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:696
+msgid "User ID Number"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:740 ipalib/plugins/idviews.py:744
+msgid "Group ID override"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:741 ipalib/plugins/idviews.py:743
+msgid "Group ID overrides"
+msgstr ""
+
+#: ipalib/plugins/idviews.py:786
+msgid "Add a new User ID override."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:787
+#, python-format
+msgid "Added User ID override \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/idviews.py:809
+msgid "Delete an User ID override."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:810
+#, python-format
+msgid "Deleted User ID override \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/idviews.py:815
+msgid "Modify an User ID override."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:816
+#, python-format
+msgid "Modified an User ID override \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/idviews.py:844
+msgid "Search for an User ID override."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:845
+#, python-format
+msgid "%(count)d User ID override matched"
+msgid_plural "%(count)d User ID overrides matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/idviews.py:858
+msgid "Display information about an User ID override."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:869
+msgid "Add a new Group ID override."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:870
+#, python-format
+msgid "Added Group ID override \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/idviews.py:875
+msgid "Delete an Group ID override."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:876
+#, python-format
+msgid "Deleted Group ID override \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/idviews.py:881
+msgid "Modify an Group ID override."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:882
+#, python-format
+msgid "Modified an Group ID override \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/idviews.py:887
+msgid "Search for an Group ID override."
+msgstr ""
+
+#: ipalib/plugins/idviews.py:888
+#, python-format
+msgid "%(count)d Group ID override matched"
+msgid_plural "%(count)d Group ID overrides matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/idviews.py:894
+msgid "Display information about an Group ID override."
+msgstr ""
+
#: ipalib/plugins/internal.py:48 ipalib/plugins/internal.py:57
msgid "Name of object to export"
msgstr ""
@@ -6110,7 +7261,7 @@ msgstr ""
msgid "Your session has expired. Please re-login."
msgstr ""
-#: ipalib/plugins/internal.py:155
+#: ipalib/plugins/internal.py:155 ipalib/plugins/internal.py:209
msgid "Apply"
msgstr ""
@@ -6251,558 +7402,625 @@ msgstr ""
msgid "Show Results"
msgstr ""
-#: ipalib/plugins/internal.py:194 ipalib/plugins/internal.py:242
-msgid "About"
+#: ipalib/plugins/internal.py:194
+msgid "Implicit method (password) will be used if no method is chosen."
msgstr ""
#: ipalib/plugins/internal.py:195
+msgid "Two factor authentication (password + OTP)"
+msgstr ""
+
+#: ipalib/plugins/internal.py:197
+msgid "Radius"
+msgstr ""
+
+#: ipalib/plugins/internal.py:198
+msgid "Disable per-user override"
+msgstr ""
+
+#: ipalib/plugins/internal.py:199
+msgid ""
+"Per-user setting, overwrites the global setting if any option is checked."
+msgstr ""
+
+#: ipalib/plugins/internal.py:202 ipalib/plugins/internal.py:255
+msgid "About"
+msgstr ""
+
+#: ipalib/plugins/internal.py:203
+msgid "Activate"
+msgstr ""
+
+#: ipalib/plugins/internal.py:204
msgid "Add"
msgstr ""
-#: ipalib/plugins/internal.py:196
+#: ipalib/plugins/internal.py:205
msgid "Add and Add Another"
msgstr ""
-#: ipalib/plugins/internal.py:197
+#: ipalib/plugins/internal.py:206
msgid "Add and Close"
msgstr ""
-#: ipalib/plugins/internal.py:198
+#: ipalib/plugins/internal.py:207
msgid "Add and Edit"
msgstr ""
-#: ipalib/plugins/internal.py:199
+#: ipalib/plugins/internal.py:208
msgid "Add Many"
msgstr ""
-#: ipalib/plugins/internal.py:200
+#: ipalib/plugins/internal.py:210
msgid "Back"
msgstr ""
-#: ipalib/plugins/internal.py:201
+#: ipalib/plugins/internal.py:211
msgid "Cancel"
msgstr ""
-#: ipalib/plugins/internal.py:202
+#: ipalib/plugins/internal.py:212
msgid "Close"
msgstr ""
-#: ipalib/plugins/internal.py:203 ipalib/plugins/internal.py:692
+#: ipalib/plugins/internal.py:213 ipalib/plugins/internal.py:782
msgid "Disable"
msgstr ""
-#: ipalib/plugins/internal.py:204
+#: ipalib/plugins/internal.py:214
msgid "Edit"
msgstr ""
-#: ipalib/plugins/internal.py:205 ipalib/plugins/internal.py:694
+#: ipalib/plugins/internal.py:215 ipalib/plugins/internal.py:784
msgid "Enable"
msgstr ""
-#: ipalib/plugins/internal.py:207
+#: ipalib/plugins/internal.py:217
msgid "Find"
msgstr ""
-#: ipalib/plugins/internal.py:208
+#: ipalib/plugins/internal.py:218
msgid "Get"
msgstr ""
-#: ipalib/plugins/internal.py:209
+#: ipalib/plugins/internal.py:219
msgid "Issue"
msgstr ""
-#: ipalib/plugins/internal.py:210
+#: ipalib/plugins/internal.py:220
msgid "OK"
msgstr ""
-#: ipalib/plugins/internal.py:211
+#: ipalib/plugins/internal.py:221
msgid "Refresh"
msgstr ""
-#: ipalib/plugins/internal.py:212
+#: ipalib/plugins/internal.py:222
msgid "Delete"
msgstr ""
-#: ipalib/plugins/internal.py:213
+#: ipalib/plugins/internal.py:223
msgid "Reset"
msgstr ""
-#: ipalib/plugins/internal.py:214
+#: ipalib/plugins/internal.py:224
msgid "Reset Password and Login"
msgstr ""
-#: ipalib/plugins/internal.py:215
+#: ipalib/plugins/internal.py:225
msgid "Restore"
msgstr ""
-#: ipalib/plugins/internal.py:216
+#: ipalib/plugins/internal.py:226
msgid "Retry"
msgstr ""
-#: ipalib/plugins/internal.py:217
+#: ipalib/plugins/internal.py:227
+msgid "Revert"
+msgstr ""
+
+#: ipalib/plugins/internal.py:228
msgid "Revoke"
msgstr ""
-#: ipalib/plugins/internal.py:218
+#: ipalib/plugins/internal.py:229
+msgid "Save"
+msgstr ""
+
+#: ipalib/plugins/internal.py:230
msgid "Set"
msgstr ""
-#: ipalib/plugins/internal.py:219
+#: ipalib/plugins/internal.py:232
msgid "Update"
msgstr ""
-#: ipalib/plugins/internal.py:220
+#: ipalib/plugins/internal.py:233
msgid "View"
msgstr ""
-#: ipalib/plugins/internal.py:223
+#: ipalib/plugins/internal.py:236
msgid "Collapse All"
msgstr ""
-#: ipalib/plugins/internal.py:224
+#: ipalib/plugins/internal.py:237
msgid "Expand All"
msgstr ""
-#: ipalib/plugins/internal.py:225
+#: ipalib/plugins/internal.py:238
msgid "General"
msgstr ""
-#: ipalib/plugins/internal.py:226
+#: ipalib/plugins/internal.py:239
msgid "Identity Settings"
msgstr ""
-#: ipalib/plugins/internal.py:227
+#: ipalib/plugins/internal.py:240
#, python-brace-format
msgid "${entity} ${primary_key} Settings"
msgstr ""
-#: ipalib/plugins/internal.py:228
+#: ipalib/plugins/internal.py:241
msgid "Back to Top"
msgstr ""
-#: ipalib/plugins/internal.py:229
+#: ipalib/plugins/internal.py:242
#, python-brace-format
msgid "${entity} ${primary_key} updated"
msgstr ""
-#: ipalib/plugins/internal.py:232
+#: ipalib/plugins/internal.py:245
#, python-brace-format
msgid "${entity} successfully added"
msgstr ""
-#: ipalib/plugins/internal.py:233
+#: ipalib/plugins/internal.py:246
#, python-brace-format
msgid "Add ${entity}"
msgstr ""
-#: ipalib/plugins/internal.py:234
+#: ipalib/plugins/internal.py:247
msgid "Available"
msgstr ""
-#: ipalib/plugins/internal.py:235
+#: ipalib/plugins/internal.py:248
msgid "Some operations failed."
msgstr ""
-#: ipalib/plugins/internal.py:236
+#: ipalib/plugins/internal.py:249
msgid "Operations Error"
msgstr ""
-#: ipalib/plugins/internal.py:237
+#: ipalib/plugins/internal.py:250
msgid "Confirmation"
msgstr ""
-#: ipalib/plugins/internal.py:238
+#: ipalib/plugins/internal.py:251
msgid "This page has unsaved changes. Please save or revert."
msgstr ""
-#: ipalib/plugins/internal.py:239
+#: ipalib/plugins/internal.py:252
msgid "Unsaved Changes"
msgstr ""
-#: ipalib/plugins/internal.py:240
+#: ipalib/plugins/internal.py:253
#, python-brace-format
msgid "Edit ${entity}"
msgstr ""
-#: ipalib/plugins/internal.py:241
+#: ipalib/plugins/internal.py:254
msgid "Hide details"
msgstr ""
-#: ipalib/plugins/internal.py:243
+#: ipalib/plugins/internal.py:256
#, python-brace-format
msgid "${product}, version: ${version}"
msgstr ""
-#: ipalib/plugins/internal.py:244
+#: ipalib/plugins/internal.py:257
msgid "Prospective"
msgstr ""
-#: ipalib/plugins/internal.py:245
+#: ipalib/plugins/internal.py:258
msgid "Redirection"
msgstr ""
-#: ipalib/plugins/internal.py:246
+#: ipalib/plugins/internal.py:259
msgid "Select entries to be removed."
msgstr ""
-#: ipalib/plugins/internal.py:247
+#: ipalib/plugins/internal.py:260
#, python-brace-format
msgid "Remove ${entity}"
msgstr ""
-#: ipalib/plugins/internal.py:248
+#: ipalib/plugins/internal.py:261
msgid "Show details"
msgstr ""
-#: ipalib/plugins/internal.py:249
+#: ipalib/plugins/internal.py:262
+msgid "Success"
+msgstr ""
+
+#: ipalib/plugins/internal.py:263
msgid "Validation error"
msgstr ""
-#: ipalib/plugins/internal.py:250
+#: ipalib/plugins/internal.py:264
msgid "Input form contains invalid or missing values."
msgstr ""
-#: ipalib/plugins/internal.py:253
+#: ipalib/plugins/internal.py:267
msgid "Please try the following options:"
msgstr ""
-#: ipalib/plugins/internal.py:254
+#: ipalib/plugins/internal.py:268
msgid "If the problem persists please contact the system administrator."
msgstr ""
-#: ipalib/plugins/internal.py:255
+#: ipalib/plugins/internal.py:269
msgid "Refresh the page."
msgstr ""
-#: ipalib/plugins/internal.py:256
+#: ipalib/plugins/internal.py:270
msgid "Reload the browser."
msgstr ""
-#: ipalib/plugins/internal.py:257
+#: ipalib/plugins/internal.py:271
msgid "Return to the main page and retry the operation"
msgstr ""
-#: ipalib/plugins/internal.py:258
+#: ipalib/plugins/internal.py:272
#, python-brace-format
msgid "An error has occurred (${error})"
msgstr ""
-#: ipalib/plugins/internal.py:262
+#: ipalib/plugins/internal.py:276
msgid "HTTP Error"
msgstr ""
-#: ipalib/plugins/internal.py:263
+#: ipalib/plugins/internal.py:277
msgid "Internal Error"
msgstr ""
-#: ipalib/plugins/internal.py:264
+#: ipalib/plugins/internal.py:278
msgid "IPA Error"
msgstr ""
-#: ipalib/plugins/internal.py:265
+#: ipalib/plugins/internal.py:279
msgid "No response"
msgstr ""
-#: ipalib/plugins/internal.py:266
+#: ipalib/plugins/internal.py:280
msgid "Unknown Error"
msgstr ""
-#: ipalib/plugins/internal.py:267
+#: ipalib/plugins/internal.py:281
msgid "URL"
msgstr ""
-#: ipalib/plugins/internal.py:270
+#: ipalib/plugins/internal.py:284
#, python-brace-format
msgid "${primary_key} is managed by:"
msgstr ""
-#: ipalib/plugins/internal.py:271
+#: ipalib/plugins/internal.py:285
#, python-brace-format
msgid "${primary_key} members:"
msgstr ""
-#: ipalib/plugins/internal.py:272
+#: ipalib/plugins/internal.py:286
#, python-brace-format
msgid "${primary_key} is a member of:"
msgstr ""
-#: ipalib/plugins/internal.py:275
+#: ipalib/plugins/internal.py:289
msgid "Settings"
msgstr ""
-#: ipalib/plugins/internal.py:276 ipalib/plugins/internal.py:685
+#: ipalib/plugins/internal.py:290 ipalib/plugins/internal.py:775
msgid "Search"
msgstr ""
-#: ipalib/plugins/internal.py:278
+#: ipalib/plugins/internal.py:292
msgid "False"
msgstr ""
-#: ipalib/plugins/internal.py:280
+#: ipalib/plugins/internal.py:294
+#, python-brace-format
+msgid "Allow ${other_entity} to create keytab of ${primary_key}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:295
+#, python-brace-format
+msgid "Allow ${other_entity} to retrieve keytab of ${primary_key}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:296
+msgid "Allowed to create keytab"
+msgstr ""
+
+#: ipalib/plugins/internal.py:297
+msgid "Allowed to retrieve keytab"
+msgstr ""
+
+#: ipalib/plugins/internal.py:298
+#, python-brace-format
+msgid "Disallow ${other_entity} to create keytab of ${primary_key}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:299
+#, python-brace-format
+msgid "Disallow ${other_entity} to retrieve keytab of ${primary_key}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:302
msgid "Inherited from server configuration"
msgstr ""
-#: ipalib/plugins/internal.py:281
+#: ipalib/plugins/internal.py:303
msgid "MS-PAC"
msgstr ""
-#: ipalib/plugins/internal.py:282
+#: ipalib/plugins/internal.py:304
msgid "Override inherited settings"
msgstr ""
-#: ipalib/plugins/internal.py:283
+#: ipalib/plugins/internal.py:305
msgid "PAD"
msgstr ""
-#: ipalib/plugins/internal.py:286
+#: ipalib/plugins/internal.py:308
msgid ""
-"To login with username and password, enter them in the fields below then "
-"click Login."
+"<i class=\"fa fa-info-circle\"></i> To login with <strong>username and "
+"password</strong>, enter them in the corresponding fields, then click Login."
msgstr ""
-#: ipalib/plugins/internal.py:287
+#: ipalib/plugins/internal.py:309
msgid "Logged In As"
msgstr ""
-#: ipalib/plugins/internal.py:288
+#: ipalib/plugins/internal.py:310
#, python-brace-format
msgid ""
-"To login with Kerberos, please make sure you have valid tickets (obtainable "
-"via kinit) and <a href='http://${host}/ipa/config/unauthorized."
-"html'>configured</a> the browser correctly, then click Login."
+"<i class=\"fa fa-info-circle\"></i> To login with <strong>Kerberos</strong>, "
+"please make sure you have valid tickets (obtainable via kinit) and <a "
+"href='http://${host}/ipa/config/unauthorized.html'>configured</a> the "
+"browser correctly, then click Login."
msgstr ""
-#: ipalib/plugins/internal.py:289
+#: ipalib/plugins/internal.py:311
msgid "Login"
msgstr ""
-#: ipalib/plugins/internal.py:290
+#: ipalib/plugins/internal.py:312
msgid "Logout"
msgstr ""
-#: ipalib/plugins/internal.py:291
+#: ipalib/plugins/internal.py:313
msgid "Logout error"
msgstr ""
-#: ipalib/plugins/internal.py:293
+#: ipalib/plugins/internal.py:315
msgid "Sync OTP Token"
msgstr ""
-#: ipalib/plugins/internal.py:294
+#: ipalib/plugins/internal.py:316 ipalib/plugins/vault.py:157
msgid "Username"
msgstr ""
-#: ipalib/plugins/internal.py:297
+#: ipalib/plugins/internal.py:319
msgid "number of passwords"
msgstr ""
-#: ipalib/plugins/internal.py:298
+#: ipalib/plugins/internal.py:320
msgid "seconds"
msgstr ""
-#: ipalib/plugins/internal.py:302 ipalib/plugins/internal.py:307
+#: ipalib/plugins/internal.py:324 ipalib/plugins/internal.py:329
+#: ipalib/plugins/internal.py:590
msgid "Attribute"
msgstr ""
-#: ipalib/plugins/internal.py:305
+#: ipalib/plugins/internal.py:327
#, python-brace-format
msgid "Add Condition into ${pkey}"
msgstr ""
-#: ipalib/plugins/internal.py:306
+#: ipalib/plugins/internal.py:328
msgid "Add Rule"
msgstr ""
-#: ipalib/plugins/internal.py:308
+#: ipalib/plugins/internal.py:330
msgid "Default host group"
msgstr ""
-#: ipalib/plugins/internal.py:309
+#: ipalib/plugins/internal.py:331
msgid "Default user group"
msgstr ""
-#: ipalib/plugins/internal.py:310
+#: ipalib/plugins/internal.py:332
msgid "Exclusive"
msgstr ""
-#: ipalib/plugins/internal.py:311
+#: ipalib/plugins/internal.py:333
msgid "Expression"
msgstr ""
-#: ipalib/plugins/internal.py:312
+#: ipalib/plugins/internal.py:334
msgid "Host group rule"
msgstr ""
-#: ipalib/plugins/internal.py:313
+#: ipalib/plugins/internal.py:335
msgid "Host group rules"
msgstr ""
-#: ipalib/plugins/internal.py:314
+#: ipalib/plugins/internal.py:336
msgid "Inclusive"
msgstr ""
-#: ipalib/plugins/internal.py:315
+#: ipalib/plugins/internal.py:337
msgid "User group rule"
msgstr ""
-#: ipalib/plugins/internal.py:316
+#: ipalib/plugins/internal.py:338
msgid "User group rules"
msgstr ""
-#: ipalib/plugins/internal.py:321
+#: ipalib/plugins/internal.py:343
msgid "Automount Location Settings"
msgstr ""
-#: ipalib/plugins/internal.py:324
+#: ipalib/plugins/internal.py:346
msgid "Map Type"
msgstr ""
-#: ipalib/plugins/internal.py:325
+#: ipalib/plugins/internal.py:347
msgid "Direct"
msgstr ""
-#: ipalib/plugins/internal.py:326
+#: ipalib/plugins/internal.py:348
msgid "Indirect"
msgstr ""
-#: ipalib/plugins/internal.py:329
+#: ipalib/plugins/internal.py:351
msgid "AA Compromise"
msgstr ""
-#: ipalib/plugins/internal.py:330
+#: ipalib/plugins/internal.py:352
msgid "Affiliation Changed"
msgstr ""
-#: ipalib/plugins/internal.py:331
+#: ipalib/plugins/internal.py:353
msgid "CA Compromise"
msgstr ""
-#: ipalib/plugins/internal.py:333 ipalib/plugins/internal.py:704
+#: ipalib/plugins/internal.py:355 ipalib/plugins/internal.py:794
msgid "Certificates"
msgstr ""
-#: ipalib/plugins/internal.py:334
+#: ipalib/plugins/internal.py:356
msgid "Certificate Hold"
msgstr ""
-#: ipalib/plugins/internal.py:335
+#: ipalib/plugins/internal.py:357
msgid "Cessation of Operation"
msgstr ""
-#: ipalib/plugins/internal.py:336
+#: ipalib/plugins/internal.py:358
msgid "Common Name"
msgstr ""
-#: ipalib/plugins/internal.py:337
+#: ipalib/plugins/internal.py:359
msgid "Expires On"
msgstr ""
-#: ipalib/plugins/internal.py:338
+#: ipalib/plugins/internal.py:360
msgid "Issued on from"
msgstr ""
-#: ipalib/plugins/internal.py:339
+#: ipalib/plugins/internal.py:361
msgid "Issued on to"
msgstr ""
-#: ipalib/plugins/internal.py:340
+#: ipalib/plugins/internal.py:362
msgid "Maximum serial number"
msgstr ""
-#: ipalib/plugins/internal.py:341
+#: ipalib/plugins/internal.py:363
msgid "Minimum serial number"
msgstr ""
-#: ipalib/plugins/internal.py:343
+#: ipalib/plugins/internal.py:365
msgid "Revoked on from"
msgstr ""
-#: ipalib/plugins/internal.py:344
+#: ipalib/plugins/internal.py:366
msgid "Revoked on to"
msgstr ""
-#: ipalib/plugins/internal.py:346
+#: ipalib/plugins/internal.py:368
msgid "Valid not after from"
msgstr ""
-#: ipalib/plugins/internal.py:347
+#: ipalib/plugins/internal.py:369
msgid "Valid not after to"
msgstr ""
-#: ipalib/plugins/internal.py:348
+#: ipalib/plugins/internal.py:370
msgid "Valid not before from"
msgstr ""
-#: ipalib/plugins/internal.py:349
+#: ipalib/plugins/internal.py:371
msgid "Valid not before to"
msgstr ""
-#: ipalib/plugins/internal.py:350
+#: ipalib/plugins/internal.py:372
msgid "Fingerprints"
msgstr ""
-#: ipalib/plugins/internal.py:351
+#: ipalib/plugins/internal.py:373
msgid "Get Certificate"
msgstr ""
-#: ipalib/plugins/internal.py:352
+#: ipalib/plugins/internal.py:374
#, python-brace-format
msgid "Issue New Certificate for ${entity} ${primary_key}"
msgstr ""
-#: ipalib/plugins/internal.py:353
+#: ipalib/plugins/internal.py:375
msgid "Issued By"
msgstr ""
-#: ipalib/plugins/internal.py:354
+#: ipalib/plugins/internal.py:376
msgid "Issued On"
msgstr ""
-#: ipalib/plugins/internal.py:355
+#: ipalib/plugins/internal.py:377
msgid "Issued To"
msgstr ""
-#: ipalib/plugins/internal.py:356
+#: ipalib/plugins/internal.py:378
msgid "Key Compromise"
msgstr ""
-#: ipalib/plugins/internal.py:357
+#: ipalib/plugins/internal.py:379
msgid "MD5 Fingerprint"
msgstr ""
-#: ipalib/plugins/internal.py:358
+#: ipalib/plugins/internal.py:380
msgid "No Valid Certificate"
msgstr ""
-#: ipalib/plugins/internal.py:359
+#: ipalib/plugins/internal.py:381
msgid "New Certificate"
msgstr ""
-#: ipalib/plugins/internal.py:360
+#: ipalib/plugins/internal.py:382
msgid "Note"
msgstr ""
-#: ipalib/plugins/internal.py:361
+#: ipalib/plugins/internal.py:383
msgid "Organization"
msgstr ""
-#: ipalib/plugins/internal.py:362
+#: ipalib/plugins/internal.py:384
msgid "Organizational Unit"
msgstr ""
-#: ipalib/plugins/internal.py:363
+#: ipalib/plugins/internal.py:385
msgid "Privilege Withdrawn"
msgstr ""
-#: ipalib/plugins/internal.py:364
+#: ipalib/plugins/internal.py:386
msgid "Reason for Revocation"
msgstr ""
-#: ipalib/plugins/internal.py:365
+#: ipalib/plugins/internal.py:387
msgid "Remove from CRL"
msgstr ""
-#: ipalib/plugins/internal.py:366
+#: ipalib/plugins/internal.py:388
#, python-brace-format
msgid ""
"<ol> <li>Create a certificate database or use an existing one. To create a "
@@ -6814,1027 +8032,1257 @@ msgid ""
"NEW CERTIFICATE REQUEST-----</em>) into the text area below: </li> </ol>"
msgstr ""
-#: ipalib/plugins/internal.py:367
+#: ipalib/plugins/internal.py:389
msgid "Certificate requested"
msgstr ""
-#: ipalib/plugins/internal.py:368
+#: ipalib/plugins/internal.py:390
#, python-brace-format
msgid "Restore Certificate for ${entity} ${primary_key}"
msgstr ""
-#: ipalib/plugins/internal.py:369
+#: ipalib/plugins/internal.py:391
msgid "Restore Certificate"
msgstr ""
-#: ipalib/plugins/internal.py:370
+#: ipalib/plugins/internal.py:392
msgid ""
"To confirm your intention to restore this certificate, click the \"Restore\" "
"button."
msgstr ""
-#: ipalib/plugins/internal.py:371
+#: ipalib/plugins/internal.py:393
msgid "Certificate restored"
msgstr ""
-#: ipalib/plugins/internal.py:373
+#: ipalib/plugins/internal.py:395
#, python-brace-format
msgid "Revoke Certificate for ${entity} ${primary_key}"
msgstr ""
-#: ipalib/plugins/internal.py:374
+#: ipalib/plugins/internal.py:396
msgid "Revoke Certificate"
msgstr ""
-#: ipalib/plugins/internal.py:375
+#: ipalib/plugins/internal.py:397
msgid ""
"To confirm your intention to revoke this certificate, select a reason from "
"the pull-down list, and click the \"Revoke\" button."
msgstr ""
-#: ipalib/plugins/internal.py:376
+#: ipalib/plugins/internal.py:398
msgid "Certificate Revoked"
msgstr ""
-#: ipalib/plugins/internal.py:379
+#: ipalib/plugins/internal.py:401
msgid "SHA1 Fingerprint"
msgstr ""
-#: ipalib/plugins/internal.py:381
+#: ipalib/plugins/internal.py:403
msgid "Superseded"
msgstr ""
-#: ipalib/plugins/internal.py:382
+#: ipalib/plugins/internal.py:404
msgid "Unspecified"
msgstr ""
-#: ipalib/plugins/internal.py:383
+#: ipalib/plugins/internal.py:405
msgid "Valid Certificate Present"
msgstr ""
-#: ipalib/plugins/internal.py:384
+#: ipalib/plugins/internal.py:406
msgid "Validity"
msgstr ""
-#: ipalib/plugins/internal.py:385
+#: ipalib/plugins/internal.py:407
#, python-brace-format
msgid "Certificate for ${entity} ${primary_key}"
msgstr ""
-#: ipalib/plugins/internal.py:386
+#: ipalib/plugins/internal.py:408
msgid "View Certificate"
msgstr ""
-#: ipalib/plugins/internal.py:389
+#: ipalib/plugins/internal.py:411
msgid "Group Options"
msgstr ""
-#: ipalib/plugins/internal.py:390
+#: ipalib/plugins/internal.py:412
msgid "Search Options"
msgstr ""
-#: ipalib/plugins/internal.py:391
+#: ipalib/plugins/internal.py:413
msgid "SELinux Options"
msgstr ""
-#: ipalib/plugins/internal.py:392
+#: ipalib/plugins/internal.py:414
msgid "Service Options"
msgstr ""
-#: ipalib/plugins/internal.py:393
+#: ipalib/plugins/internal.py:415
msgid "User Options"
msgstr ""
-#: ipalib/plugins/internal.py:398
+#: ipalib/plugins/internal.py:420
msgid "Forward first"
msgstr ""
-#: ipalib/plugins/internal.py:399
+#: ipalib/plugins/internal.py:421
msgid "Forwarding disabled"
msgstr ""
-#: ipalib/plugins/internal.py:400
+#: ipalib/plugins/internal.py:422
msgid "Forward only"
msgstr ""
-#: ipalib/plugins/internal.py:401 ipalib/plugins/internal.py:612
-#: ipalib/plugins/internal.py:636
+#: ipalib/plugins/internal.py:423 ipalib/plugins/internal.py:692
+#: ipalib/plugins/internal.py:720
msgid "Options"
msgstr ""
-#: ipalib/plugins/internal.py:404
+#: ipalib/plugins/internal.py:426 ipalib/plugins/vault.py:687
msgid "Data"
msgstr ""
-#: ipalib/plugins/internal.py:405
+#: ipalib/plugins/internal.py:427
msgid "DNS record was deleted because it contained no data."
msgstr ""
-#: ipalib/plugins/internal.py:406
+#: ipalib/plugins/internal.py:428
msgid "Other Record Types"
msgstr ""
-#: ipalib/plugins/internal.py:407
+#: ipalib/plugins/internal.py:429
msgid "Address not valid, can't redirect"
msgstr ""
-#: ipalib/plugins/internal.py:408
+#: ipalib/plugins/internal.py:430
msgid "Create dns record"
msgstr ""
-#: ipalib/plugins/internal.py:409
+#: ipalib/plugins/internal.py:431
msgid "Creating record."
msgstr ""
-#: ipalib/plugins/internal.py:410
+#: ipalib/plugins/internal.py:432
msgid "Record creation failed."
msgstr ""
-#: ipalib/plugins/internal.py:411
+#: ipalib/plugins/internal.py:433
msgid "Checking if record exists."
msgstr ""
-#: ipalib/plugins/internal.py:412
+#: ipalib/plugins/internal.py:434
msgid "Record not found."
msgstr ""
-#: ipalib/plugins/internal.py:413
+#: ipalib/plugins/internal.py:435
msgid "Redirection to PTR record"
msgstr ""
-#: ipalib/plugins/internal.py:414
+#: ipalib/plugins/internal.py:436
#, python-brace-format
msgid "Zone found: ${zone}"
msgstr ""
-#: ipalib/plugins/internal.py:415
+#: ipalib/plugins/internal.py:437
msgid "Target reverse zone not found."
msgstr ""
-#: ipalib/plugins/internal.py:416
+#: ipalib/plugins/internal.py:438
msgid "Fetching DNS zones."
msgstr ""
-#: ipalib/plugins/internal.py:417
+#: ipalib/plugins/internal.py:439
msgid "An error occurred while fetching dns zones."
msgstr ""
-#: ipalib/plugins/internal.py:418
+#: ipalib/plugins/internal.py:440
msgid "You will be redirected to DNS Zone."
msgstr ""
-#: ipalib/plugins/internal.py:419
+#: ipalib/plugins/internal.py:441
msgid "Standard Record Types"
msgstr ""
-#: ipalib/plugins/internal.py:420
+#: ipalib/plugins/internal.py:442
msgid "Records for DNS Zone"
msgstr ""
-#: ipalib/plugins/internal.py:421
+#: ipalib/plugins/internal.py:443
msgid "Record Type"
msgstr ""
-#: ipalib/plugins/internal.py:424
+#: ipalib/plugins/internal.py:446
msgid "DNS Zone Settings"
msgstr ""
-#: ipalib/plugins/internal.py:425
+#: ipalib/plugins/internal.py:447
msgid "Add Permission"
msgstr ""
-#: ipalib/plugins/internal.py:426
+#: ipalib/plugins/internal.py:448
#, python-brace-format
msgid "Are you sure you want to add permission for DNS Zone ${object}?"
msgstr ""
-#: ipalib/plugins/internal.py:427
+#: ipalib/plugins/internal.py:449
msgid "Remove Permission"
msgstr ""
-#: ipalib/plugins/internal.py:428
+#: ipalib/plugins/internal.py:450
#, python-brace-format
msgid "Are you sure you want to remove permission for DNS Zone ${object}?"
msgstr ""
-#: ipalib/plugins/internal.py:431
+#: ipalib/plugins/internal.py:451
+msgid "Skip DNS check"
+msgstr ""
+
+#: ipalib/plugins/internal.py:452
+msgid "Do you want to check if new authoritative nameserver address is in DNS"
+msgstr ""
+
+#: ipalib/plugins/internal.py:453
+msgid "Authoritative nameserver change"
+msgstr ""
+
+#: ipalib/plugins/internal.py:458
+msgid "Level"
+msgstr ""
+
+#: ipalib/plugins/internal.py:459
+msgid "Set Domain Level"
+msgstr ""
+
+#: ipalib/plugins/internal.py:462
msgid "Group Settings"
msgstr ""
-#: ipalib/plugins/internal.py:432 ipalib/plugins/internal.py:504
-#: ipalib/plugins/internal.py:607
+#: ipalib/plugins/internal.py:463 ipalib/plugins/internal.py:564
+#: ipalib/plugins/internal.py:687
msgid "External"
msgstr ""
-#: ipalib/plugins/internal.py:433
+#: ipalib/plugins/internal.py:464
msgid "Change to external group"
msgstr ""
-#: ipalib/plugins/internal.py:434
+#: ipalib/plugins/internal.py:465
msgid "Change to POSIX group"
msgstr ""
-#: ipalib/plugins/internal.py:435
+#: ipalib/plugins/internal.py:466
msgid "Normal"
msgstr ""
-#: ipalib/plugins/internal.py:436
+#: ipalib/plugins/internal.py:467
msgid "POSIX"
msgstr ""
-#: ipalib/plugins/internal.py:437
+#: ipalib/plugins/internal.py:468
msgid "Group Type"
msgstr ""
-#: ipalib/plugins/internal.py:440 ipalib/plugins/internal.py:502
-#: ipalib/plugins/internal.py:561 ipalib/plugins/internal.py:603
+#: ipalib/plugins/internal.py:471 ipalib/plugins/internal.py:562
+#: ipalib/plugins/internal.py:632 ipalib/plugins/internal.py:683
msgid "Any Host"
msgstr ""
-#: ipalib/plugins/internal.py:441
+#: ipalib/plugins/internal.py:472
msgid "Any Service"
msgstr ""
-#: ipalib/plugins/internal.py:442 ipalib/plugins/internal.py:503
-#: ipalib/plugins/internal.py:562 ipalib/plugins/internal.py:604
+#: ipalib/plugins/internal.py:473 ipalib/plugins/internal.py:563
+#: ipalib/plugins/internal.py:633 ipalib/plugins/internal.py:684
msgid "Anyone"
msgstr ""
-#: ipalib/plugins/internal.py:443
+#: ipalib/plugins/internal.py:474
msgid "Accessing"
msgstr ""
-#: ipalib/plugins/internal.py:444 ipalib/plugins/internal.py:609
+#: ipalib/plugins/internal.py:475 ipalib/plugins/internal.py:689
msgid "Rule status"
msgstr ""
-#: ipalib/plugins/internal.py:445
+#: ipalib/plugins/internal.py:476
msgid "Via Service"
msgstr ""
-#: ipalib/plugins/internal.py:446 ipalib/plugins/internal.py:509
-#: ipalib/plugins/internal.py:564 ipalib/plugins/internal.py:616
+#: ipalib/plugins/internal.py:477 ipalib/plugins/internal.py:569
+#: ipalib/plugins/internal.py:635 ipalib/plugins/internal.py:696
msgid "Specified Hosts and Groups"
msgstr ""
-#: ipalib/plugins/internal.py:447
+#: ipalib/plugins/internal.py:478
msgid "Specified Services and Groups"
msgstr ""
-#: ipalib/plugins/internal.py:448 ipalib/plugins/internal.py:510
-#: ipalib/plugins/internal.py:565 ipalib/plugins/internal.py:617
+#: ipalib/plugins/internal.py:479 ipalib/plugins/internal.py:570
+#: ipalib/plugins/internal.py:636 ipalib/plugins/internal.py:697
msgid "Specified Users and Groups"
msgstr ""
-#: ipalib/plugins/internal.py:449 ipalib/plugins/internal.py:618
+#: ipalib/plugins/internal.py:480 ipalib/plugins/internal.py:698
msgid "Who"
msgstr ""
-#: ipalib/plugins/internal.py:457
+#: ipalib/plugins/internal.py:488
msgid "Access Denied"
msgstr ""
-#: ipalib/plugins/internal.py:458
+#: ipalib/plugins/internal.py:489
msgid "Access Granted"
msgstr ""
-#: ipalib/plugins/internal.py:459
+#: ipalib/plugins/internal.py:490
msgid "Include Disabled"
msgstr ""
-#: ipalib/plugins/internal.py:460
+#: ipalib/plugins/internal.py:491
msgid "Include Enabled"
msgstr ""
-#: ipalib/plugins/internal.py:461
+#: ipalib/plugins/internal.py:492
msgid "HBAC Test"
msgstr ""
-#: ipalib/plugins/internal.py:462
+#: ipalib/plugins/internal.py:493
msgid "Matched"
msgstr ""
-#: ipalib/plugins/internal.py:463
+#: ipalib/plugins/internal.py:494
msgid "Missing values: "
msgstr ""
-#: ipalib/plugins/internal.py:464
+#: ipalib/plugins/internal.py:495
msgid "New Test"
msgstr ""
-#: ipalib/plugins/internal.py:465
+#: ipalib/plugins/internal.py:496
msgid "Rules"
msgstr ""
-#: ipalib/plugins/internal.py:466
+#: ipalib/plugins/internal.py:497
msgid "Run Test"
msgstr ""
-#: ipalib/plugins/internal.py:467
+#: ipalib/plugins/internal.py:498
#, python-brace-format
msgid "Specify external ${entity}"
msgstr ""
-#: ipalib/plugins/internal.py:468
+#: ipalib/plugins/internal.py:499
msgid "Unmatched"
msgstr ""
-#: ipalib/plugins/internal.py:471
+#: ipalib/plugins/internal.py:502
msgid "Host Certificate"
msgstr ""
-#: ipalib/plugins/internal.py:472 ipalib/plugins/internal.py:572
+#: ipalib/plugins/internal.py:503 ipalib/plugins/internal.py:643
msgid "Host Name"
msgstr ""
-#: ipalib/plugins/internal.py:473 ipalib/plugins/internal.py:570
+#: ipalib/plugins/internal.py:504 ipalib/plugins/internal.py:641
msgid "Delete Key, Unprovision"
msgstr ""
-#: ipalib/plugins/internal.py:474
+#: ipalib/plugins/internal.py:505
msgid "Host Settings"
msgstr ""
-#: ipalib/plugins/internal.py:475
+#: ipalib/plugins/internal.py:506
msgid "Enrolled"
msgstr ""
-#: ipalib/plugins/internal.py:476
+#: ipalib/plugins/internal.py:507
msgid "Enrollment"
msgstr ""
-#: ipalib/plugins/internal.py:477
+#: ipalib/plugins/internal.py:508
msgid "Fully Qualified Host Name"
msgstr ""
-#: ipalib/plugins/internal.py:478
+#: ipalib/plugins/internal.py:509
msgid "Kerberos Key"
msgstr ""
-#: ipalib/plugins/internal.py:479 ipalib/plugins/internal.py:573
+#: ipalib/plugins/internal.py:510 ipalib/plugins/internal.py:644
msgid "Kerberos Key Not Present"
msgstr ""
-#: ipalib/plugins/internal.py:480
+#: ipalib/plugins/internal.py:511
msgid "Kerberos Key Present, Host Provisioned"
msgstr ""
-#: ipalib/plugins/internal.py:481 ipalib/plugins/internal.py:662
+#: ipalib/plugins/internal.py:512 ipalib/plugins/internal.py:752
msgid "One-Time-Password"
msgstr ""
-#: ipalib/plugins/internal.py:482
+#: ipalib/plugins/internal.py:513
msgid "One-Time-Password Not Present"
msgstr ""
-#: ipalib/plugins/internal.py:483
+#: ipalib/plugins/internal.py:514
msgid "One-Time-Password Present"
msgstr ""
-#: ipalib/plugins/internal.py:484
+#: ipalib/plugins/internal.py:515
msgid "Reset OTP"
msgstr ""
-#: ipalib/plugins/internal.py:485
+#: ipalib/plugins/internal.py:516
msgid "Reset One-Time-Password"
msgstr ""
-#: ipalib/plugins/internal.py:486
+#: ipalib/plugins/internal.py:517
msgid "Set OTP"
msgstr ""
-#: ipalib/plugins/internal.py:487
+#: ipalib/plugins/internal.py:518
msgid "OTP set"
msgstr ""
-#: ipalib/plugins/internal.py:488
+#: ipalib/plugins/internal.py:519
msgid "Set One-Time-Password"
msgstr ""
-#: ipalib/plugins/internal.py:490 ipalib/plugins/internal.py:577
+#: ipalib/plugins/internal.py:521 ipalib/plugins/internal.py:648
msgid "Unprovision"
msgstr ""
-#: ipalib/plugins/internal.py:491
+#: ipalib/plugins/internal.py:522
msgid "Are you sure you want to unprovision this host?"
msgstr ""
-#: ipalib/plugins/internal.py:492 ipalib/plugins/internal.py:579
+#: ipalib/plugins/internal.py:523 ipalib/plugins/internal.py:650
#, python-brace-format
msgid "Unprovisioning ${entity}"
msgstr ""
-#: ipalib/plugins/internal.py:493
+#: ipalib/plugins/internal.py:524
msgid "Host unprovisioned"
msgstr ""
-#: ipalib/plugins/internal.py:496
+#: ipalib/plugins/internal.py:527
msgid "Host Group Settings"
msgstr ""
-#: ipalib/plugins/internal.py:499 ipalib/plugins/krbtpolicy.py:118
+#: ipalib/plugins/internal.py:530
+msgid "User to override"
+msgstr ""
+
+#: ipalib/plugins/internal.py:531
+msgid ""
+"Enter trusted or IPA user login. Note: search doesn't list users from "
+"trusted domains."
+msgstr ""
+
+#: ipalib/plugins/internal.py:532
+msgid "Enter trusted user login."
+msgstr ""
+
+#: ipalib/plugins/internal.py:535
+msgid "Group to override"
+msgstr ""
+
+#: ipalib/plugins/internal.py:536
+msgid ""
+"Enter trusted or IPA group name. Note: search doesn't list groups from "
+"trusted domains."
+msgstr ""
+
+#: ipalib/plugins/internal.py:537
+msgid "Enter trusted group name."
+msgstr ""
+
+#: ipalib/plugins/internal.py:540
+#, python-brace-format
+msgid "${primary_key} applies to:"
+msgstr ""
+
+#: ipalib/plugins/internal.py:541 ipalib/plugins/internal.py:542
+msgid "Applied to hosts"
+msgstr ""
+
+#: ipalib/plugins/internal.py:543
+msgid "Apply to host groups"
+msgstr ""
+
+#: ipalib/plugins/internal.py:544
+#, python-brace-format
+msgid "Apply ID View ${primary_key} on hosts of ${entity}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:545
+msgid "Apply to hosts"
+msgstr ""
+
+#: ipalib/plugins/internal.py:546
+#, python-brace-format
+msgid "Apply ID view ${primary_key} on ${entity}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:548
+#, python-brace-format
+msgid "${primary_key} overrides:"
+msgstr ""
+
+#: ipalib/plugins/internal.py:549
+msgid "Un-apply from host groups"
+msgstr ""
+
+#: ipalib/plugins/internal.py:550
+msgid "Un-apply ID Views from hosts of hostgroups"
+msgstr ""
+
+#: ipalib/plugins/internal.py:551
+#, python-brace-format
+msgid "Un-apply ID View ${primary_key} from hosts of ${entity}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:552
+msgid "Un-apply"
+msgstr ""
+
+#: ipalib/plugins/internal.py:553
+msgid "Un-apply from hosts"
+msgstr ""
+
+#: ipalib/plugins/internal.py:554
+msgid "Un-apply ID Views from hosts"
+msgstr ""
+
+#: ipalib/plugins/internal.py:555
+msgid "Are you sure you want to un-apply ID view from selected entries?"
+msgstr ""
+
+#: ipalib/plugins/internal.py:556
+#, python-brace-format
+msgid "Un-apply ID View ${primary_key} from hosts"
+msgstr ""
+
+#: ipalib/plugins/internal.py:559 ipalib/plugins/krbtpolicy.py:118
#: ipalib/plugins/krbtpolicy.py:119
msgid "Kerberos Ticket Policy"
msgstr ""
-#: ipalib/plugins/internal.py:508
+#: ipalib/plugins/internal.py:568
msgid "Netgroup Settings"
msgstr ""
-#: ipalib/plugins/internal.py:511 ipalib/plugins/internal.py:566
-#: ipalib/plugins/pwpolicy.py:519 ipalib/plugins/user.py:430
-msgid "User"
+#: ipalib/plugins/internal.py:576
+msgid "Add OTP Token"
msgstr ""
-#: ipalib/plugins/internal.py:521
+#: ipalib/plugins/internal.py:577
+#, python-brace-format
+msgid ""
+"You can use <a href=\"${link}\" target=\"_blank\">FreeOTP<a/> as a software "
+"OTP token application."
+msgstr ""
+
+#: ipalib/plugins/internal.py:578
+msgid "Configure your token"
+msgstr ""
+
+#: ipalib/plugins/internal.py:579
+msgid ""
+"Configure your token by scanning the QR code below. Click on the QR code if "
+"you see this on the device you want to configure."
+msgstr ""
+
+#: ipalib/plugins/internal.py:580
+msgid "OTP Token Settings"
+msgstr ""
+
+#: ipalib/plugins/internal.py:581
+msgid "Disable token"
+msgstr ""
+
+#: ipalib/plugins/internal.py:582
+msgid "Enable token"
+msgstr ""
+
+#: ipalib/plugins/internal.py:583
+msgid "Show QR code"
+msgstr ""
+
+#: ipalib/plugins/internal.py:584
+msgid "Show configuration uri"
+msgstr ""
+
+#: ipalib/plugins/internal.py:585
+msgid "Counter-based (HOTP)"
+msgstr ""
+
+#: ipalib/plugins/internal.py:586
+msgid "Time-based (TOTP)"
+msgstr ""
+
+#: ipalib/plugins/internal.py:589
+msgid "Add custom attribute"
+msgstr ""
+
+#: ipalib/plugins/internal.py:592
msgid "Permission settings"
msgstr ""
-#: ipalib/plugins/internal.py:522
+#: ipalib/plugins/internal.py:593
msgid "Attribute breakdown"
msgstr ""
-#: ipalib/plugins/internal.py:526
+#: ipalib/plugins/internal.py:597
msgid "Privilege Settings"
msgstr ""
-#: ipalib/plugins/internal.py:529 ipalib/plugins/pwpolicy.py:303
+#: ipalib/plugins/internal.py:600 ipalib/plugins/pwpolicy.py:308
msgid "Password Policy"
msgstr ""
-#: ipalib/plugins/internal.py:532
+#: ipalib/plugins/internal.py:603
msgid "Range Settings"
msgstr ""
-#: ipalib/plugins/internal.py:533
+#: ipalib/plugins/internal.py:604
msgid "Base ID"
msgstr ""
-#: ipalib/plugins/internal.py:534
+#: ipalib/plugins/internal.py:605
msgid "Primary RID base"
msgstr ""
-#: ipalib/plugins/internal.py:535
+#: ipalib/plugins/internal.py:606
msgid "Range size"
msgstr ""
-#: ipalib/plugins/internal.py:536
+#: ipalib/plugins/internal.py:607
msgid "Domain SID"
msgstr ""
-#: ipalib/plugins/internal.py:537
+#: ipalib/plugins/internal.py:608
msgid "Secondary RID base"
msgstr ""
-#: ipalib/plugins/internal.py:539 ipalib/plugins/trust.py:145
+#: ipalib/plugins/internal.py:610 ipalib/plugins/trust.py:145
msgid "Active Directory domain"
msgstr ""
-#: ipalib/plugins/internal.py:540
+#: ipalib/plugins/internal.py:611
msgid "Active Directory domain with POSIX attributes"
msgstr ""
-#: ipalib/plugins/internal.py:541
+#: ipalib/plugins/internal.py:612
msgid "Detect"
msgstr ""
-#: ipalib/plugins/internal.py:542
+#: ipalib/plugins/internal.py:613
msgid "Local domain"
msgstr ""
-#: ipalib/plugins/internal.py:543
+#: ipalib/plugins/internal.py:614
msgid "IPA trust"
msgstr ""
-#: ipalib/plugins/internal.py:544
+#: ipalib/plugins/internal.py:615
msgid "Active Directory winsync"
msgstr ""
-#: ipalib/plugins/internal.py:547
+#: ipalib/plugins/internal.py:618
msgid "RADIUS Proxy Server Settings"
msgstr ""
-#: ipalib/plugins/internal.py:550 ipalib/plugins/realmdomains.py:92
+#: ipalib/plugins/internal.py:621 ipalib/plugins/realmdomains.py:92
#: ipalib/plugins/realmdomains.py:93
msgid "Realm Domains"
msgstr ""
-#: ipalib/plugins/internal.py:551
+#: ipalib/plugins/internal.py:622
msgid "Check DNS"
msgstr ""
-#: ipalib/plugins/internal.py:552
+#: ipalib/plugins/internal.py:623
msgid "Do you also want to perform DNS check?"
msgstr ""
-#: ipalib/plugins/internal.py:553
+#: ipalib/plugins/internal.py:624
msgid "Force Update"
msgstr ""
-#: ipalib/plugins/internal.py:556
+#: ipalib/plugins/internal.py:627
msgid "Role Settings"
msgstr ""
-#: ipalib/plugins/internal.py:569
+#: ipalib/plugins/internal.py:640
msgid "Service Certificate"
msgstr ""
-#: ipalib/plugins/internal.py:571
+#: ipalib/plugins/internal.py:642
msgid "Service Settings"
msgstr ""
-#: ipalib/plugins/internal.py:574
+#: ipalib/plugins/internal.py:645
msgid "Provisioning"
msgstr ""
-#: ipalib/plugins/internal.py:578
+#: ipalib/plugins/internal.py:649
msgid "Are you sure you want to unprovision this service?"
msgstr ""
-#: ipalib/plugins/internal.py:580
+#: ipalib/plugins/internal.py:651
msgid "Service unprovisioned"
msgstr ""
-#: ipalib/plugins/internal.py:581
+#: ipalib/plugins/internal.py:652
msgid "Kerberos Key Present, Service Provisioned"
msgstr ""
-#: ipalib/plugins/internal.py:584
+#: ipalib/plugins/internal.py:655
msgid "SSH public keys"
msgstr ""
-#: ipalib/plugins/internal.py:585
+#: ipalib/plugins/internal.py:656
msgid "SSH public key:"
msgstr ""
-#: ipalib/plugins/internal.py:586
+#: ipalib/plugins/internal.py:657
msgid "Set SSH key"
msgstr ""
-#: ipalib/plugins/internal.py:587
+#: ipalib/plugins/internal.py:658
msgid "Show/Set key"
msgstr ""
-#: ipalib/plugins/internal.py:588
+#: ipalib/plugins/internal.py:659
msgid "Modified: key not set"
msgstr ""
-#: ipalib/plugins/internal.py:589
+#: ipalib/plugins/internal.py:660
msgid "Modified"
msgstr ""
-#: ipalib/plugins/internal.py:590
+#: ipalib/plugins/internal.py:661
msgid "New: key not set"
msgstr ""
-#: ipalib/plugins/internal.py:591
+#: ipalib/plugins/internal.py:662
msgid "New: key set"
msgstr ""
-#: ipalib/plugins/internal.py:594
+#: ipalib/plugins/internal.py:665
+msgid "Are you sure you want to activate selected users?"
+msgstr ""
+
+#: ipalib/plugins/internal.py:666
+#, python-brace-format
+msgid "${count} user(s) activated"
+msgstr ""
+
+#: ipalib/plugins/internal.py:667
+msgid "Stage users"
+msgstr ""
+
+#: ipalib/plugins/internal.py:668
+msgid "Preserved users"
+msgstr ""
+
+#: ipalib/plugins/internal.py:669
+msgid "Are you sure you want to restore selected users?"
+msgstr ""
+
+#: ipalib/plugins/internal.py:670
+#, python-brace-format
+msgid "${count} user(s) restored"
+msgstr ""
+
+#: ipalib/plugins/internal.py:671
+msgid "User categories"
+msgstr ""
+
+#: ipalib/plugins/internal.py:674
msgid "Groups"
msgstr ""
-#: ipalib/plugins/internal.py:597 ipalib/plugins/sudocmdgroup.py:126
+#: ipalib/plugins/internal.py:677 ipalib/plugins/sudocmdgroup.py:126
msgid "Commands"
msgstr ""
-#: ipalib/plugins/internal.py:600
+#: ipalib/plugins/internal.py:680
msgid "Allow"
msgstr ""
-#: ipalib/plugins/internal.py:601
+#: ipalib/plugins/internal.py:681
msgid "Any Command"
msgstr ""
-#: ipalib/plugins/internal.py:602
+#: ipalib/plugins/internal.py:682
msgid "Any Group"
msgstr ""
-#: ipalib/plugins/internal.py:605
+#: ipalib/plugins/internal.py:685
msgid "Run Commands"
msgstr ""
-#: ipalib/plugins/internal.py:606
+#: ipalib/plugins/internal.py:686
msgid "Deny"
msgstr ""
-#: ipalib/plugins/internal.py:608
+#: ipalib/plugins/internal.py:688
msgid "Access this host"
msgstr ""
-#: ipalib/plugins/internal.py:610
+#: ipalib/plugins/internal.py:690
msgid "Option added"
msgstr ""
-#: ipalib/plugins/internal.py:611
+#: ipalib/plugins/internal.py:691
#, python-brace-format
msgid "${count} option(s) removed"
msgstr ""
-#: ipalib/plugins/internal.py:613
+#: ipalib/plugins/internal.py:693
msgid "As Whom"
msgstr ""
-#: ipalib/plugins/internal.py:614
+#: ipalib/plugins/internal.py:694
msgid "Specified Commands and Groups"
msgstr ""
-#: ipalib/plugins/internal.py:615
+#: ipalib/plugins/internal.py:695
msgid "Specified Groups"
msgstr ""
-#: ipalib/plugins/internal.py:621
+#: ipalib/plugins/internal.py:701
+msgid "Segment details"
+msgstr ""
+
+#: ipalib/plugins/internal.py:702
+msgid "Replication configuration"
+msgstr ""
+
+#: ipalib/plugins/internal.py:705
msgid "Account"
msgstr ""
-#: ipalib/plugins/internal.py:622
+#: ipalib/plugins/internal.py:706
msgid "Administrative account"
msgstr ""
-#: ipalib/plugins/internal.py:623
+#: ipalib/plugins/internal.py:707
msgid "SID blacklists"
msgstr ""
-#: ipalib/plugins/internal.py:624
+#: ipalib/plugins/internal.py:708
msgid "Trust Settings"
msgstr ""
-#: ipalib/plugins/internal.py:625 ipalib/plugins/realmdomains.py:100
-#: ipalib/plugins/trust.py:850
+#: ipalib/plugins/internal.py:709 ipalib/plugins/realmdomains.py:100
+#: ipalib/plugins/trust.py:878
msgid "Domain"
msgstr ""
-#: ipalib/plugins/internal.py:626
+#: ipalib/plugins/internal.py:710
msgid "Establish using"
msgstr ""
-#: ipalib/plugins/internal.py:627
+#: ipalib/plugins/internal.py:711
msgid "Fetch domains"
msgstr ""
-#: ipalib/plugins/internal.py:628 ipalib/plugins/trust.py:357
-#: ipalib/plugins/trust.py:1167
+#: ipalib/plugins/internal.py:712 ipalib/plugins/trust.py:357
+#: ipalib/plugins/trust.py:1195
msgid "Domain NetBIOS name"
msgstr ""
-#: ipalib/plugins/internal.py:629 ipalib/plugins/trust.py:361
-#: ipalib/plugins/trust.py:1171
+#: ipalib/plugins/internal.py:713 ipalib/plugins/trust.py:361
+#: ipalib/plugins/trust.py:1199
msgid "Domain Security Identifier"
msgstr ""
-#: ipalib/plugins/internal.py:630
+#: ipalib/plugins/internal.py:714
msgid "Pre-shared password"
msgstr ""
-#: ipalib/plugins/internal.py:631 ipalib/plugins/trust.py:137
+#: ipalib/plugins/internal.py:715 ipalib/plugins/trust.py:137
msgid "Trust direction"
msgstr ""
-#: ipalib/plugins/internal.py:632 ipalib/plugins/trust.py:141
+#: ipalib/plugins/internal.py:716 ipalib/plugins/trust.py:141
msgid "Trust status"
msgstr ""
-#: ipalib/plugins/internal.py:633 ipalib/plugins/trust.py:139
+#: ipalib/plugins/internal.py:717 ipalib/plugins/trust.py:139
msgid "Trust type"
msgstr ""
-#: ipalib/plugins/internal.py:639
+#: ipalib/plugins/internal.py:723
msgid "Account Settings"
msgstr ""
-#: ipalib/plugins/internal.py:640
+#: ipalib/plugins/internal.py:724
msgid "Account Status"
msgstr ""
-#: ipalib/plugins/internal.py:641
+#: ipalib/plugins/internal.py:725
+msgid "Active users"
+msgstr ""
+
+#: ipalib/plugins/internal.py:726
msgid "Contact Settings"
msgstr ""
-#: ipalib/plugins/internal.py:642
+#: ipalib/plugins/internal.py:727
+msgid "Delete mode"
+msgstr ""
+
+#: ipalib/plugins/internal.py:728
msgid "Employee Information"
msgstr ""
-#: ipalib/plugins/internal.py:643
+#: ipalib/plugins/internal.py:729
msgid "Error changing account status"
msgstr ""
-#: ipalib/plugins/internal.py:644
+#: ipalib/plugins/internal.py:730
msgid "Password expiration"
msgstr ""
-#: ipalib/plugins/internal.py:645
+#: ipalib/plugins/internal.py:731
msgid "Mailing Address"
msgstr ""
-#: ipalib/plugins/internal.py:646
+#: ipalib/plugins/internal.py:732
msgid "Misc. Information"
msgstr ""
-#: ipalib/plugins/internal.py:647
+#: ipalib/plugins/internal.py:733
+msgid "delete"
+msgstr ""
+
+#: ipalib/plugins/internal.py:734
+msgid "preserve"
+msgstr ""
+
+#: ipalib/plugins/internal.py:735
+msgid "No private group"
+msgstr ""
+
+#: ipalib/plugins/internal.py:736
#, python-brace-format
msgid ""
"Are you sure you want to ${action} the user?<br/>The change will take effect "
"immediately."
msgstr ""
-#: ipalib/plugins/internal.py:648
+#: ipalib/plugins/internal.py:737
#, python-brace-format
msgid "Click to ${action}"
msgstr ""
-#: ipalib/plugins/internal.py:649
+#: ipalib/plugins/internal.py:738
msgid "Unlock"
msgstr ""
-#: ipalib/plugins/internal.py:650
+#: ipalib/plugins/internal.py:739
#, python-brace-format
msgid "Are you sure you want to unlock user ${object}?"
msgstr ""
-#: ipalib/plugins/internal.py:654 ipalib/plugins/passwd.py:84
+#: ipalib/plugins/internal.py:743 ipalib/plugins/passwd.py:84
msgid "Current Password"
msgstr ""
-#: ipalib/plugins/internal.py:655
+#: ipalib/plugins/internal.py:744
msgid "Current password is required"
msgstr ""
-#: ipalib/plugins/internal.py:656
+#: ipalib/plugins/internal.py:745
#, python-brace-format
msgid "Your password expires in ${days} days."
msgstr ""
-#: ipalib/plugins/internal.py:657
+#: ipalib/plugins/internal.py:746
msgid "First OTP"
msgstr ""
-#: ipalib/plugins/internal.py:658
+#: ipalib/plugins/internal.py:747
msgid "The password or username you entered is incorrect."
msgstr ""
-#: ipalib/plugins/internal.py:659 ipalib/plugins/passwd.py:81
+#: ipalib/plugins/internal.py:748 ipalib/plugins/passwd.py:81
msgid "New Password"
msgstr ""
-#: ipalib/plugins/internal.py:660
+#: ipalib/plugins/internal.py:749
msgid "New password is required"
msgstr ""
-#: ipalib/plugins/internal.py:661 ipalib/plugins/passwd.py:94
+#: ipalib/plugins/internal.py:750 ipalib/plugins/passwd.py:94
msgid "OTP"
msgstr ""
-#: ipalib/plugins/internal.py:663
+#: ipalib/plugins/internal.py:751
+msgid ""
+"<i class=\"fa fa-info-circle\"></i> <strong>One-Time-Password(OTP):</strong> "
+"Generate new OTP code for each OTP field."
+msgstr ""
+
+#: ipalib/plugins/internal.py:753
msgid "Token synchronization failed"
msgstr ""
-#: ipalib/plugins/internal.py:664
+#: ipalib/plugins/internal.py:754
msgid "The username, password or token codes are not correct"
msgstr ""
-#: ipalib/plugins/internal.py:665
+#: ipalib/plugins/internal.py:755
msgid "Token was synchronized"
msgstr ""
-#: ipalib/plugins/internal.py:667
+#: ipalib/plugins/internal.py:757
msgid "Password or Password+One-Time-Password"
msgstr ""
-#: ipalib/plugins/internal.py:668
+#: ipalib/plugins/internal.py:758
msgid "Password change complete"
msgstr ""
-#: ipalib/plugins/internal.py:669
+#: ipalib/plugins/internal.py:759
msgid "Passwords must match"
msgstr ""
-#: ipalib/plugins/internal.py:670
+#: ipalib/plugins/internal.py:760
msgid "Password reset was not successful."
msgstr ""
-#: ipalib/plugins/internal.py:671
+#: ipalib/plugins/internal.py:761
msgid "Reset Password"
msgstr ""
-#: ipalib/plugins/internal.py:672
+#: ipalib/plugins/internal.py:762
msgid "Reset your password."
msgstr ""
-#: ipalib/plugins/internal.py:673
+#: ipalib/plugins/internal.py:763
msgid "Second OTP"
msgstr ""
-#: ipalib/plugins/internal.py:674 ipalib/plugins/otptoken.py:448
+#: ipalib/plugins/internal.py:764 ipalib/plugins/otptoken.py:528
msgid "Token ID"
msgstr ""
-#: ipalib/plugins/internal.py:675
+#: ipalib/plugins/internal.py:765
msgid "Verify Password"
msgstr ""
-#: ipalib/plugins/internal.py:678
+#: ipalib/plugins/internal.py:768
msgid "Are you sure you want to delete selected entries?"
msgstr ""
-#: ipalib/plugins/internal.py:679
+#: ipalib/plugins/internal.py:769
#, python-brace-format
msgid "${count} item(s) deleted"
msgstr ""
-#: ipalib/plugins/internal.py:680
+#: ipalib/plugins/internal.py:770
msgid "Are you sure you want to disable selected entries?"
msgstr ""
-#: ipalib/plugins/internal.py:681
+#: ipalib/plugins/internal.py:771
#, python-brace-format
msgid "${count} item(s) disabled"
msgstr ""
-#: ipalib/plugins/internal.py:682
+#: ipalib/plugins/internal.py:772
msgid "Are you sure you want to enable selected entries?"
msgstr ""
-#: ipalib/plugins/internal.py:683
+#: ipalib/plugins/internal.py:773
#, python-brace-format
msgid "${count} item(s) enabled"
msgstr ""
-#: ipalib/plugins/internal.py:684
+#: ipalib/plugins/internal.py:774
msgid "Some entries were not deleted"
msgstr ""
-#: ipalib/plugins/internal.py:686
+#: ipalib/plugins/internal.py:776
msgid "Quick Links"
msgstr ""
-#: ipalib/plugins/internal.py:687
+#: ipalib/plugins/internal.py:777
msgid "Select All"
msgstr ""
-#: ipalib/plugins/internal.py:688
+#: ipalib/plugins/internal.py:778
#, python-brace-format
msgid ""
"Query returned more results than the configured size limit. Displaying the "
"first ${counter} results."
msgstr ""
-#: ipalib/plugins/internal.py:689
+#: ipalib/plugins/internal.py:779
msgid "Unselect All"
msgstr ""
-#: ipalib/plugins/internal.py:693
+#: ipalib/plugins/internal.py:783 ipalib/plugins/otptoken.py:184
msgid "Disabled"
msgstr ""
-#: ipalib/plugins/internal.py:697
+#: ipalib/plugins/internal.py:787
msgid "Working"
msgstr ""
-#: ipalib/plugins/internal.py:700
+#: ipalib/plugins/internal.py:790
msgid "Audit"
msgstr ""
-#: ipalib/plugins/internal.py:701
+#: ipalib/plugins/internal.py:791
msgid "Authentication"
msgstr ""
-#: ipalib/plugins/internal.py:703
+#: ipalib/plugins/internal.py:793
msgid "Automount"
msgstr ""
-#: ipalib/plugins/internal.py:705
+#: ipalib/plugins/internal.py:795
msgid "DNS"
msgstr ""
-#: ipalib/plugins/internal.py:706
+#: ipalib/plugins/internal.py:796
msgid "Host Based Access Control"
msgstr ""
-#: ipalib/plugins/internal.py:707
+#: ipalib/plugins/internal.py:797
msgid "Identity"
msgstr ""
-#: ipalib/plugins/internal.py:708
+#: ipalib/plugins/internal.py:798 ipalib/plugins/server.py:46
msgid "IPA Server"
msgstr ""
-#: ipalib/plugins/internal.py:709
+#: ipalib/plugins/internal.py:799
msgid "Network Services"
msgstr ""
-#: ipalib/plugins/internal.py:710
+#: ipalib/plugins/internal.py:800
msgid "Policy"
msgstr ""
-#: ipalib/plugins/internal.py:711
+#: ipalib/plugins/internal.py:801
msgid "Role Based Access Control"
msgstr ""
-#: ipalib/plugins/internal.py:712
+#: ipalib/plugins/internal.py:802
msgid "Sudo"
msgstr ""
-#: ipalib/plugins/internal.py:713 ipalib/plugins/trust.py:346
+#: ipalib/plugins/internal.py:803
+msgid "Topology"
+msgstr ""
+
+#: ipalib/plugins/internal.py:804 ipalib/plugins/trust.py:346
msgid "Trusts"
msgstr ""
-#: ipalib/plugins/internal.py:715
+#: ipalib/plugins/internal.py:806
msgid "True"
msgstr ""
-#: ipalib/plugins/internal.py:717
+#: ipalib/plugins/internal.py:808
msgid "First"
msgstr ""
-#: ipalib/plugins/internal.py:718
+#: ipalib/plugins/internal.py:809
msgid "Last"
msgstr ""
-#: ipalib/plugins/internal.py:719
+#: ipalib/plugins/internal.py:810
msgid "Next"
msgstr ""
-#: ipalib/plugins/internal.py:720
+#: ipalib/plugins/internal.py:811
msgid "Page"
msgstr ""
-#: ipalib/plugins/internal.py:721
+#: ipalib/plugins/internal.py:812
msgid "Prev"
msgstr ""
-#: ipalib/plugins/internal.py:722
-msgid "undo"
+#: ipalib/plugins/internal.py:813
+msgid "Undo"
msgstr ""
-#: ipalib/plugins/internal.py:723
-msgid "undo all"
+#: ipalib/plugins/internal.py:814
+msgid "Undo All"
msgstr ""
-#: ipalib/plugins/internal.py:725
+#: ipalib/plugins/internal.py:816
msgid "Text does not match field pattern"
msgstr ""
-#: ipalib/plugins/internal.py:726
+#: ipalib/plugins/internal.py:817
msgid "Must be an UTC date/time value (e.g., \"2014-01-20 17:58:01Z\")"
msgstr ""
-#: ipalib/plugins/internal.py:727
+#: ipalib/plugins/internal.py:818
msgid "Must be a decimal number"
msgstr ""
-#: ipalib/plugins/internal.py:728
+#: ipalib/plugins/internal.py:819
msgid "Format error"
msgstr ""
-#: ipalib/plugins/internal.py:729
+#: ipalib/plugins/internal.py:820
msgid "Must be an integer"
msgstr ""
-#: ipalib/plugins/internal.py:730
+#: ipalib/plugins/internal.py:821
msgid "Not a valid IP address"
msgstr ""
-#: ipalib/plugins/internal.py:731
+#: ipalib/plugins/internal.py:822
msgid "Not a valid IPv4 address"
msgstr ""
-#: ipalib/plugins/internal.py:732
+#: ipalib/plugins/internal.py:823
msgid "Not a valid IPv6 address"
msgstr ""
-#: ipalib/plugins/internal.py:733
+#: ipalib/plugins/internal.py:824
#, python-brace-format
msgid "Maximum value is ${value}"
msgstr ""
-#: ipalib/plugins/internal.py:734
+#: ipalib/plugins/internal.py:825
#, python-brace-format
msgid "Minimum value is ${value}"
msgstr ""
-#: ipalib/plugins/internal.py:735
+#: ipalib/plugins/internal.py:826
msgid "Not a valid network address"
msgstr ""
-#: ipalib/plugins/internal.py:736
+#: ipalib/plugins/internal.py:827
msgid "Parse error"
msgstr ""
-#: ipalib/plugins/internal.py:737
+#: ipalib/plugins/internal.py:828
#, python-brace-format
msgid "'${port}' is not a valid port"
msgstr ""
-#: ipalib/plugins/internal.py:738
+#: ipalib/plugins/internal.py:829
msgid "Required field"
msgstr ""
-#: ipalib/plugins/internal.py:739
+#: ipalib/plugins/internal.py:830
msgid "Unsupported value"
msgstr ""
-#: ipalib/plugins/internal.py:744
+#: ipalib/plugins/internal.py:835
msgid "Dict of I18N messages"
msgstr ""
@@ -7923,7 +9371,7 @@ msgstr ""
msgid "Reset Kerberos ticket policy to the default values."
msgstr ""
-#: ipalib/plugins/migration.py:38
+#: ipalib/plugins/migration.py:40
msgid ""
"\n"
"Migration to IPA\n"
@@ -8021,218 +9469,236 @@ msgid ""
"updated.\n"
msgstr ""
-#: ipalib/plugins/migration.py:135
+#: ipalib/plugins/migration.py:137
#, python-format
msgid ""
"Kerberos principal %s already exists. Use 'ipa user-mod' to set it manually."
msgstr ""
-#: ipalib/plugins/migration.py:136
+#: ipalib/plugins/migration.py:138
#, python-format
msgid ""
"Unable to determine if Kerberos principal %s already exists. Use 'ipa user-"
"mod' to set it manually."
msgstr ""
-#: ipalib/plugins/migration.py:137
+#: ipalib/plugins/migration.py:139
msgid ""
"Failed to add user to the default group. Use 'ipa group-add-member' to add "
"manually."
msgstr ""
-#: ipalib/plugins/migration.py:138
+#: ipalib/plugins/migration.py:140
msgid "Migration of LDAP search reference is not supported."
msgstr ""
-#: ipalib/plugins/migration.py:139
+#: ipalib/plugins/migration.py:141
msgid "Malformed DN"
msgstr ""
-#: ipalib/plugins/migration.py:156
+#: ipalib/plugins/migration.py:161
#, python-format
msgid "%(user)s is not a POSIX user"
msgstr ""
-#: ipalib/plugins/migration.py:429
+#: ipalib/plugins/migration.py:427
msgid ""
". Check GID of the existing group. Use --group-overwrite-gid option to "
"overwrite the GID"
msgstr ""
-#: ipalib/plugins/migration.py:444
+#: ipalib/plugins/migration.py:442
msgid "Invalid LDAP URI."
msgstr ""
-#: ipalib/plugins/migration.py:450
+#: ipalib/plugins/migration.py:448
msgid "Migrate users and groups from DS to IPA."
msgstr ""
-#: ipalib/plugins/migration.py:497
+#: ipalib/plugins/migration.py:495
msgid "LDAP URI"
msgstr ""
-#: ipalib/plugins/migration.py:498
+#: ipalib/plugins/migration.py:496
msgid "LDAP URI of DS server to migrate from"
msgstr ""
-#: ipalib/plugins/migration.py:504
+#: ipalib/plugins/migration.py:502
msgid "bind password"
msgstr ""
-#: ipalib/plugins/migration.py:511
+#: ipalib/plugins/migration.py:509
msgid "Bind DN"
msgstr ""
-#: ipalib/plugins/migration.py:517
+#: ipalib/plugins/migration.py:515
msgid "User container"
msgstr ""
-#: ipalib/plugins/migration.py:518
+#: ipalib/plugins/migration.py:516
msgid "DN of container for users in DS relative to base DN"
msgstr ""
-#: ipalib/plugins/migration.py:524
+#: ipalib/plugins/migration.py:522
msgid "Group container"
msgstr ""
-#: ipalib/plugins/migration.py:525
+#: ipalib/plugins/migration.py:523
msgid "DN of container for groups in DS relative to base DN"
msgstr ""
-#: ipalib/plugins/migration.py:531
+#: ipalib/plugins/migration.py:529
msgid "User object class"
msgstr ""
-#: ipalib/plugins/migration.py:532
+#: ipalib/plugins/migration.py:530
msgid "Objectclasses used to search for user entries in DS"
msgstr ""
-#: ipalib/plugins/migration.py:539
+#: ipalib/plugins/migration.py:537
msgid "Group object class"
msgstr ""
-#: ipalib/plugins/migration.py:540
+#: ipalib/plugins/migration.py:538
msgid "Objectclasses used to search for group entries in DS"
msgstr ""
-#: ipalib/plugins/migration.py:547
+#: ipalib/plugins/migration.py:545
msgid "Ignore user object class"
msgstr ""
-#: ipalib/plugins/migration.py:548
+#: ipalib/plugins/migration.py:546
msgid "Objectclasses to be ignored for user entries in DS"
msgstr ""
-#: ipalib/plugins/migration.py:555
+#: ipalib/plugins/migration.py:553
msgid "Ignore user attribute"
msgstr ""
-#: ipalib/plugins/migration.py:556
+#: ipalib/plugins/migration.py:554
msgid "Attributes to be ignored for user entries in DS"
msgstr ""
-#: ipalib/plugins/migration.py:563
+#: ipalib/plugins/migration.py:561
msgid "Ignore group object class"
msgstr ""
-#: ipalib/plugins/migration.py:564
+#: ipalib/plugins/migration.py:562
msgid "Objectclasses to be ignored for group entries in DS"
msgstr ""
-#: ipalib/plugins/migration.py:571
+#: ipalib/plugins/migration.py:569
msgid "Ignore group attribute"
msgstr ""
-#: ipalib/plugins/migration.py:572
+#: ipalib/plugins/migration.py:570
msgid "Attributes to be ignored for group entries in DS"
msgstr ""
-#: ipalib/plugins/migration.py:579
+#: ipalib/plugins/migration.py:577
msgid "Overwrite GID"
msgstr ""
-#: ipalib/plugins/migration.py:580
+#: ipalib/plugins/migration.py:578
msgid ""
"When migrating a group already existing in IPA domain overwrite the group "
"GID and report as success"
msgstr ""
-#: ipalib/plugins/migration.py:585
+#: ipalib/plugins/migration.py:583
msgid "LDAP schema"
msgstr ""
-#: ipalib/plugins/migration.py:586
+#: ipalib/plugins/migration.py:584
msgid ""
"The schema used on the LDAP server. Supported values are RFC2307 and "
"RFC2307bis. The default is RFC2307bis"
msgstr ""
-#: ipalib/plugins/migration.py:592
+#: ipalib/plugins/migration.py:590
msgid "Continue"
msgstr ""
-#: ipalib/plugins/migration.py:593
+#: ipalib/plugins/migration.py:591
msgid ""
"Continuous operation mode. Errors are reported but the process continues"
msgstr ""
-#: ipalib/plugins/migration.py:598
+#: ipalib/plugins/migration.py:596
msgid "Base DN"
msgstr ""
-#: ipalib/plugins/migration.py:599
+#: ipalib/plugins/migration.py:597
msgid "Base DN on remote LDAP server"
msgstr ""
-#: ipalib/plugins/migration.py:603
+#: ipalib/plugins/migration.py:601
msgid "Ignore compat plugin"
msgstr ""
-#: ipalib/plugins/migration.py:604
+#: ipalib/plugins/migration.py:602
msgid "Allows migration despite the usage of compat plugin"
msgstr ""
-#: ipalib/plugins/migration.py:609
+#: ipalib/plugins/migration.py:607
msgid "CA certificate"
msgstr ""
-#: ipalib/plugins/migration.py:610
+#: ipalib/plugins/migration.py:608
msgid "Load CA certificate of LDAP server from FILE"
msgstr ""
-#: ipalib/plugins/migration.py:618
-msgid "Lists of objects migrated; categorized by type."
+#: ipalib/plugins/migration.py:613
+msgid "Add to default group"
+msgstr ""
+
+#: ipalib/plugins/migration.py:614
+msgid "Add migrated users without a group to a default group (default: true)"
+msgstr ""
+
+#: ipalib/plugins/migration.py:621
+msgid "Search scope"
msgstr ""
#: ipalib/plugins/migration.py:622
+msgid ""
+"LDAP search scope for users and groups: base, onelevel, or subtree. Defaults "
+"to onelevel"
+msgstr ""
+
+#: ipalib/plugins/migration.py:633
+msgid "Lists of objects migrated; categorized by type."
+msgstr ""
+
+#: ipalib/plugins/migration.py:637
msgid "Lists of objects that could not be migrated; categorized by type."
msgstr ""
-#: ipalib/plugins/migration.py:626
+#: ipalib/plugins/migration.py:641
msgid "False if migration mode was disabled."
msgstr ""
-#: ipalib/plugins/migration.py:630
+#: ipalib/plugins/migration.py:645
msgid "False if migration fails because the compatibility plug-in is enabled."
msgstr ""
-#: ipalib/plugins/migration.py:634
+#: ipalib/plugins/migration.py:649
#, python-format
msgid "%s to exclude from migration"
msgstr ""
-#: ipalib/plugins/migration.py:636
+#: ipalib/plugins/migration.py:651
msgid ""
"search results for objects to be migrated\n"
"have been truncated by the server;\n"
"migration process might be incomplete\n"
msgstr ""
-#: ipalib/plugins/migration.py:641
+#: ipalib/plugins/migration.py:656
msgid "Migration mode is disabled. Use 'ipa config-mod' to enable it."
msgstr ""
-#: ipalib/plugins/migration.py:644
+#: ipalib/plugins/migration.py:659
msgid ""
"Passwords have been migrated in pre-hashed format.\n"
"IPA is unable to generate Kerberos keys unless provided\n"
@@ -8241,14 +9707,14 @@ msgid ""
"can use their Kerberos accounts."
msgstr ""
-#: ipalib/plugins/migration.py:730
+#: ipalib/plugins/migration.py:748
#, python-format
msgid ""
"%(container)s LDAP search did not return any result (search base: "
"%(search_base)s, objectclass: %(objectclass)s)"
msgstr ""
-#: ipalib/plugins/migration.py:762 ipalib/plugins/user.py:759
+#: ipalib/plugins/migration.py:780 ipalib/plugins/user.py:471
msgid "Default group for new users not found"
msgstr ""
@@ -8333,91 +9799,172 @@ msgstr ""
msgid "netgroups"
msgstr ""
-#: ipalib/plugins/netgroup.py:165
+#: ipalib/plugins/netgroup.py:175
msgid "Netgroups"
msgstr ""
-#: ipalib/plugins/netgroup.py:166
+#: ipalib/plugins/netgroup.py:176
msgid "Netgroup"
msgstr ""
-#: ipalib/plugins/netgroup.py:173
+#: ipalib/plugins/netgroup.py:183
msgid "Netgroup name"
msgstr ""
-#: ipalib/plugins/netgroup.py:180
+#: ipalib/plugins/netgroup.py:190
msgid "Netgroup description"
msgstr ""
-#: ipalib/plugins/netgroup.py:186
+#: ipalib/plugins/netgroup.py:196
msgid "NIS domain name"
msgstr ""
-#: ipalib/plugins/netgroup.py:191
+#: ipalib/plugins/netgroup.py:201
msgid "IPA unique ID"
msgstr ""
-#: ipalib/plugins/netgroup.py:212
+#: ipalib/plugins/netgroup.py:222
msgid "Add a new netgroup."
msgstr ""
-#: ipalib/plugins/netgroup.py:215
+#: ipalib/plugins/netgroup.py:225
#, python-format
msgid "Added netgroup \"%(value)s\""
msgstr ""
-#: ipalib/plugins/netgroup.py:217
+#: ipalib/plugins/netgroup.py:227
#, python-format
msgid ""
"hostgroup with name \"%s\" already exists. Hostgroups and netgroups share a "
"common namespace"
msgstr ""
-#: ipalib/plugins/netgroup.py:248
+#: ipalib/plugins/netgroup.py:258
msgid "Delete a netgroup."
msgstr ""
-#: ipalib/plugins/netgroup.py:250
+#: ipalib/plugins/netgroup.py:260
#, python-format
msgid "Deleted netgroup \"%(value)s\""
msgstr ""
-#: ipalib/plugins/netgroup.py:256
+#: ipalib/plugins/netgroup.py:266
msgid "Modify a netgroup."
msgstr ""
-#: ipalib/plugins/netgroup.py:259
+#: ipalib/plugins/netgroup.py:269
#, python-format
msgid "Modified netgroup \"%(value)s\""
msgstr ""
-#: ipalib/plugins/netgroup.py:277
+#: ipalib/plugins/netgroup.py:287
msgid "Search for a netgroup."
msgstr ""
-#: ipalib/plugins/netgroup.py:282
+#: ipalib/plugins/netgroup.py:292
#, python-format
msgid "%(count)d netgroup matched"
msgid_plural "%(count)d netgroups matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/netgroup.py:292
+#: ipalib/plugins/netgroup.py:302
msgid "search for managed groups"
msgstr ""
-#: ipalib/plugins/netgroup.py:314
+#: ipalib/plugins/netgroup.py:324
msgid "Display information about a netgroup."
msgstr ""
-#: ipalib/plugins/netgroup.py:321
+#: ipalib/plugins/netgroup.py:331
msgid "Add members to a netgroup."
msgstr ""
-#: ipalib/plugins/netgroup.py:343
+#: ipalib/plugins/netgroup.py:353
msgid "Remove members from a netgroup."
msgstr ""
+#: ipalib/plugins/otpconfig.py:24
+msgid ""
+"\n"
+"OTP configuration\n"
+"\n"
+"Manage the default values that IPA uses for OTP tokens.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Show basic OTP configuration:\n"
+" ipa otpconfig-show\n"
+"\n"
+" Show all OTP configuration options:\n"
+" ipa otpconfig-show --all\n"
+"\n"
+" Change maximum TOTP authentication window to 10 minutes:\n"
+" ipa otpconfig-mod --totp-auth-window=600\n"
+"\n"
+" Change maximum TOTP synchronization window to 12 hours:\n"
+" ipa otpconfig-mod --totp-sync-window=43200\n"
+"\n"
+" Change maximum HOTP authentication window to 5:\n"
+" ipa hotpconfig-mod --hotp-auth-window=5\n"
+"\n"
+" Change maximum HOTP synchronization window to 50:\n"
+" ipa hotpconfig-mod --hotp-sync-window=50\n"
+msgstr ""
+
+#: ipalib/plugins/otpconfig.py:52 ipalib/plugins/otptoken.py:64
+#: ipalib/plugins/otptoken_yubikey.py:47
+msgid "One time password commands"
+msgstr ""
+
+#: ipalib/plugins/otpconfig.py:57
+msgid "OTP configuration options"
+msgstr ""
+
+#: ipalib/plugins/otpconfig.py:80 ipalib/plugins/otpconfig.py:81
+msgid "OTP Configuration"
+msgstr ""
+
+#: ipalib/plugins/otpconfig.py:86
+msgid "TOTP authentication Window"
+msgstr ""
+
+#: ipalib/plugins/otpconfig.py:87
+msgid "TOTP authentication time variance (seconds)"
+msgstr ""
+
+#: ipalib/plugins/otpconfig.py:92
+msgid "TOTP Synchronization Window"
+msgstr ""
+
+#: ipalib/plugins/otpconfig.py:93
+msgid "TOTP synchronization time variance (seconds)"
+msgstr ""
+
+#: ipalib/plugins/otpconfig.py:98
+msgid "HOTP Authentication Window"
+msgstr ""
+
+#: ipalib/plugins/otpconfig.py:99
+msgid "HOTP authentication skip-ahead"
+msgstr ""
+
+#: ipalib/plugins/otpconfig.py:104
+msgid "HOTP Synchronization Window"
+msgstr ""
+
+#: ipalib/plugins/otpconfig.py:105
+msgid "HOTP synchronization skip-ahead"
+msgstr ""
+
+#: ipalib/plugins/otpconfig.py:116
+msgid "Modify OTP configuration options."
+msgstr ""
+
+#: ipalib/plugins/otpconfig.py:121
+msgid "Show the current OTP configuration."
+msgstr ""
+
#: ipalib/plugins/otptoken.py:39
msgid ""
"\n"
@@ -8466,183 +10013,239 @@ msgid ""
" ipa otptoken-del a93db710-a31a-4639-8647-f15b2c70b78a\n"
msgstr ""
-#: ipalib/plugins/otptoken.py:113
+#: ipalib/plugins/otptoken.py:132
msgid "OTP token"
msgstr ""
-#: ipalib/plugins/otptoken.py:114
+#: ipalib/plugins/otptoken.py:133
msgid "OTP tokens"
msgstr ""
-#: ipalib/plugins/otptoken.py:130
+#: ipalib/plugins/otptoken.py:149
msgid "OTP Tokens"
msgstr ""
-#: ipalib/plugins/otptoken.py:131
+#: ipalib/plugins/otptoken.py:150
msgid "OTP Token"
msgstr ""
-#: ipalib/plugins/otptoken.py:136 ipalib/plugins/otptoken_yubikey.py:53
+#: ipalib/plugins/otptoken.py:155 ipalib/plugins/otptoken_yubikey.py:57
msgid "Unique ID"
msgstr ""
-#: ipalib/plugins/otptoken.py:153
+#: ipalib/plugins/otptoken.py:161
+msgid "Type of the token"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:170
+msgid "Token description (informational only)"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:174
msgid "Owner"
msgstr ""
-#: ipalib/plugins/otptoken.py:156 ipalib/plugins/user.py:560
-msgid "Manager"
+#: ipalib/plugins/otptoken.py:175
+msgid "Assigned user of the token (default: self)"
msgstr ""
-#: ipalib/plugins/otptoken.py:161
-msgid "Disabled state"
+#: ipalib/plugins/otptoken.py:179
+msgid "Assigned manager of the token (default: self)"
msgstr ""
-#: ipalib/plugins/otptoken.py:165
+#: ipalib/plugins/otptoken.py:185
+msgid "Mark the token as disabled (default: false)"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:189
msgid "Validity start"
msgstr ""
-#: ipalib/plugins/otptoken.py:169
+#: ipalib/plugins/otptoken.py:190
+msgid "First date/time the token can be used"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:194
msgid "Validity end"
msgstr ""
-#: ipalib/plugins/otptoken.py:173
+#: ipalib/plugins/otptoken.py:195
+msgid "Last date/time the token can be used"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:199
msgid "Vendor"
msgstr ""
-#: ipalib/plugins/otptoken.py:179
+#: ipalib/plugins/otptoken.py:200
+msgid "Token vendor name (informational only)"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:204
msgid "Model"
msgstr ""
-#: ipalib/plugins/otptoken.py:185
+#: ipalib/plugins/otptoken.py:205
+msgid "Token model (informational only)"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:209
msgid "Serial"
msgstr ""
-#: ipalib/plugins/otptoken.py:206
+#: ipalib/plugins/otptoken.py:210
+msgid "Token serial (informational only)"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:215
+msgid "Token secret (Base32; default: random)"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:223
+msgid "Token hash algorithm"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:231
msgid "Digits"
msgstr ""
-#: ipalib/plugins/otptoken.py:214
+#: ipalib/plugins/otptoken.py:232
+msgid "Number of digits each token code will have"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:240
msgid "Clock offset"
msgstr ""
-#: ipalib/plugins/otptoken.py:221
+#: ipalib/plugins/otptoken.py:241
+msgid "TOTP token / FreeIPA server time difference"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:248
msgid "Clock interval"
msgstr ""
-#: ipalib/plugins/otptoken.py:229
+#: ipalib/plugins/otptoken.py:249
+msgid "Length of TOTP token code validity"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:257
msgid "Counter"
msgstr ""
-#: ipalib/plugins/otptoken.py:240
+#: ipalib/plugins/otptoken.py:258
+msgid "Initial counter for the HOTP token"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:269
msgid "Add a new OTP token."
msgstr ""
-#: ipalib/plugins/otptoken.py:241
+#: ipalib/plugins/otptoken.py:270
#, python-format
msgid "Added OTP token \"%(value)s\""
msgstr ""
-#: ipalib/plugins/otptoken.py:244
-msgid "Display QR code (requires wide terminal)"
+#: ipalib/plugins/otptoken.py:273
+msgid "(deprecated)"
msgstr ""
-#: ipalib/plugins/otptoken.py:248
+#: ipalib/plugins/otptoken.py:274
+msgid "Do not display QR code"
+msgstr ""
+
+#: ipalib/plugins/otptoken.py:278
msgid "URI"
msgstr ""
-#: ipalib/plugins/otptoken.py:329
+#: ipalib/plugins/otptoken.py:367
msgid "Delete an OTP token."
msgstr ""
-#: ipalib/plugins/otptoken.py:330
+#: ipalib/plugins/otptoken.py:368
#, python-format
msgid "Deleted OTP token \"%(value)s\""
msgstr ""
-#: ipalib/plugins/otptoken.py:335
+#: ipalib/plugins/otptoken.py:373
msgid "Modify a OTP token."
msgstr ""
-#: ipalib/plugins/otptoken.py:336
+#: ipalib/plugins/otptoken.py:374
#, python-format
msgid "Modified OTP token \"%(value)s\""
msgstr ""
-#: ipalib/plugins/otptoken.py:349
+#: ipalib/plugins/otptoken.py:422
msgid "Search for OTP token."
msgstr ""
-#: ipalib/plugins/otptoken.py:350
+#: ipalib/plugins/otptoken.py:423
#, python-format
msgid "%(count)d OTP token matched"
msgid_plural "%(count)d OTP tokens matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/otptoken.py:376
+#: ipalib/plugins/otptoken.py:451
msgid "Display information about an OTP token."
msgstr ""
-#: ipalib/plugins/otptoken.py:384
+#: ipalib/plugins/otptoken.py:464
msgid "Add users that can manage this token."
msgstr ""
-#: ipalib/plugins/otptoken.py:436
+#: ipalib/plugins/otptoken.py:516
msgid "Synchronize an OTP token."
msgstr ""
-#: ipalib/plugins/otptoken.py:441
+#: ipalib/plugins/otptoken.py:521
msgid "User ID"
msgstr ""
-#: ipalib/plugins/otptoken.py:443
+#: ipalib/plugins/otptoken.py:523
msgid "First Code"
msgstr ""
-#: ipalib/plugins/otptoken.py:444
+#: ipalib/plugins/otptoken.py:524
msgid "Second Code"
msgstr ""
-#: ipalib/plugins/otptoken_yubikey.py:30
+#: ipalib/plugins/otptoken_yubikey.py:31
msgid ""
"\n"
"YubiKey Tokens\n"
msgstr ""
-#: ipalib/plugins/otptoken_yubikey.py:32
+#: ipalib/plugins/otptoken_yubikey.py:33
msgid ""
"\n"
"Manage YubiKey tokens.\n"
msgstr ""
-#: ipalib/plugins/otptoken_yubikey.py:34
+#: ipalib/plugins/otptoken_yubikey.py:35
msgid ""
"\n"
"This code is an extension to the otptoken plugin and provides support for\n"
"reading/writing YubiKey tokens directly.\n"
msgstr ""
-#: ipalib/plugins/otptoken_yubikey.py:39
+#: ipalib/plugins/otptoken_yubikey.py:40
msgid ""
"\n"
" Add a new token:\n"
" ipa otptoken-add-yubikey --owner=jdoe --desc=\"My YubiKey\"\n"
msgstr ""
-#: ipalib/plugins/otptoken_yubikey.py:48
+#: ipalib/plugins/otptoken_yubikey.py:52
msgid "Add a new YubiKey OTP token."
msgstr ""
-#: ipalib/plugins/otptoken_yubikey.py:61
+#: ipalib/plugins/otptoken_yubikey.py:65
msgid "YubiKey slot"
msgstr ""
-#: ipalib/plugins/otptoken_yubikey.py:85
-msgid "No YubiKey found"
-msgstr ""
-
-#: ipalib/plugins/otptoken_yubikey.py:95
+#: ipalib/plugins/otptoken_yubikey.py:101
msgid "No free YubiKey slot!"
msgstr ""
@@ -8815,7 +10418,7 @@ msgstr ""
msgid "\"%s\" is not an object type"
msgstr ""
-#: ipalib/plugins/permission.py:147 ipalib/plugins/permission.py:837
+#: ipalib/plugins/permission.py:147 ipalib/plugins/permission.py:875
#, python-format
msgid "\"%s\" is not a valid permission type"
msgstr ""
@@ -8840,230 +10443,261 @@ msgstr ""
msgid "Rights to grant (read, search, compare, write, add, delete, all)"
msgstr ""
-#: ipalib/plugins/permission.py:241
+#: ipalib/plugins/permission.py:242
msgid "Effective attributes"
msgstr ""
-#: ipalib/plugins/permission.py:242
+#: ipalib/plugins/permission.py:243
msgid "All attributes to which the permission applies"
msgstr ""
-#: ipalib/plugins/permission.py:247
+#: ipalib/plugins/permission.py:248
msgid "Included attributes"
msgstr ""
-#: ipalib/plugins/permission.py:248
+#: ipalib/plugins/permission.py:249
msgid "User-specified attributes to which the permission applies"
msgstr ""
-#: ipalib/plugins/permission.py:253
+#: ipalib/plugins/permission.py:254
msgid "Excluded attributes"
msgstr ""
-#: ipalib/plugins/permission.py:254
+#: ipalib/plugins/permission.py:255
msgid ""
"User-specified attributes to which the permission explicitly does not apply"
msgstr ""
-#: ipalib/plugins/permission.py:260
+#: ipalib/plugins/permission.py:261
msgid "Default attributes"
msgstr ""
-#: ipalib/plugins/permission.py:261
+#: ipalib/plugins/permission.py:262
msgid "Attributes to which the permission applies by default"
msgstr ""
-#: ipalib/plugins/permission.py:267 ipalib/plugins/permission.py:268
+#: ipalib/plugins/permission.py:268 ipalib/plugins/permission.py:269
msgid "Bind rule type"
msgstr ""
-#: ipalib/plugins/permission.py:278
+#: ipalib/plugins/permission.py:279
msgid "Subtree to apply permissions to"
msgstr ""
-#: ipalib/plugins/permission.py:284 ipalib/plugins/permission.py:285
+#: ipalib/plugins/permission.py:285 ipalib/plugins/permission.py:286
msgid "Extra target filter"
msgstr ""
-#: ipalib/plugins/permission.py:291
+#: ipalib/plugins/permission.py:292
msgid "Raw target filter"
msgstr ""
-#: ipalib/plugins/permission.py:292
+#: ipalib/plugins/permission.py:293
msgid "All target filters, including those implied by type and memberof"
msgstr ""
-#: ipalib/plugins/permission.py:299
-msgid "ACI target DN"
+#: ipalib/plugins/permission.py:300
+msgid "Target DN"
msgstr ""
-#: ipalib/plugins/permission.py:304
+#: ipalib/plugins/permission.py:301
+msgid ""
+"Optional DN to apply the permission to (must be in the subtree, but may not "
+"yet exist)"
+msgstr ""
+
+#: ipalib/plugins/permission.py:308
+msgid "Target DN subtree"
+msgstr ""
+
+#: ipalib/plugins/permission.py:309
+msgid ""
+"Optional DN subtree where an entry can be moved to (must be in the subtree, "
+"but may not yet exist)"
+msgstr ""
+
+#: ipalib/plugins/permission.py:316
+msgid "Origin DN subtree"
+msgstr ""
+
+#: ipalib/plugins/permission.py:317
+msgid ""
+"Optional DN subtree from where an entry can be moved (must be in the "
+"subtree, but may not yet exist)"
+msgstr ""
+
+#: ipalib/plugins/permission.py:322
msgid "Member of group"
msgstr ""
-#: ipalib/plugins/permission.py:305
+#: ipalib/plugins/permission.py:323
msgid "Target members of a group (sets memberOf targetfilter)"
msgstr ""
-#: ipalib/plugins/permission.py:310
+#: ipalib/plugins/permission.py:328
msgid "User group to apply permissions to (sets target)"
msgstr ""
-#: ipalib/plugins/permission.py:316
+#: ipalib/plugins/permission.py:334
msgid "Type of IPA object (sets subtree and objectClass targetfilter)"
msgstr ""
-#: ipalib/plugins/permission.py:322
+#: ipalib/plugins/permission.py:340
#, python-format
msgid "Deprecated; use %s"
msgstr ""
-#: ipalib/plugins/permission.py:333
+#: ipalib/plugins/permission.py:351
#, python-format
msgid "Permission with unknown flag %s may not be modified or removed"
msgstr ""
-#: ipalib/plugins/permission.py:337
+#: ipalib/plugins/permission.py:355
msgid "A SYSTEM permission may not be modified or removed"
msgstr ""
-#: ipalib/plugins/permission.py:565
+#: ipalib/plugins/permission.py:603
#, python-format
msgid "Entry %s not found"
msgstr ""
-#: ipalib/plugins/permission.py:656
+#: ipalib/plugins/permission.py:694
#, python-format
msgid "The ACI for permission %(name)s was not found in %(dn)s "
msgstr ""
-#: ipalib/plugins/permission.py:760
+#: ipalib/plugins/permission.py:798
msgid ""
"cannot specify full target filter and extra target filter simultaneously"
msgstr ""
-#: ipalib/plugins/permission.py:783
+#: ipalib/plugins/permission.py:821
#, python-format
msgid "option was renamed; use %s"
msgstr ""
-#: ipalib/plugins/permission.py:787
+#: ipalib/plugins/permission.py:825
#, python-format
msgid "Cannot use %(old_name)s with %(new_name)s"
msgstr ""
-#: ipalib/plugins/permission.py:801 ipalib/plugins/permission.py:816
+#: ipalib/plugins/permission.py:839 ipalib/plugins/permission.py:854
#, python-format
msgid "%s: group not found"
msgstr ""
-#: ipalib/plugins/permission.py:811
+#: ipalib/plugins/permission.py:849
msgid "target and targetgroup are mutually exclusive"
msgstr ""
-#: ipalib/plugins/permission.py:832
+#: ipalib/plugins/permission.py:870
msgid "subtree and type are mutually exclusive"
msgstr ""
-#: ipalib/plugins/permission.py:868
+#: ipalib/plugins/permission.py:906
msgid "Bad search filter"
msgstr ""
-#: ipalib/plugins/permission.py:878
+#: ipalib/plugins/permission.py:916
#, python-format
msgid "Entry %s does not exist"
msgstr ""
-#: ipalib/plugins/permission.py:887
+#: ipalib/plugins/permission.py:925
msgid ""
"there must be at least one target entry specifier (e.g. target, "
"targetfilter, attrs)"
msgstr ""
-#: ipalib/plugins/permission.py:897
+#: ipalib/plugins/permission.py:935
msgid "Add a system permission without an ACI (internal command)"
msgstr ""
-#: ipalib/plugins/permission.py:899 ipalib/plugins/permission.py:930
+#: ipalib/plugins/permission.py:937 ipalib/plugins/permission.py:968
#, python-format
msgid "Added permission \"%(value)s\""
msgstr ""
-#: ipalib/plugins/permission.py:905
+#: ipalib/plugins/permission.py:943
msgid "Permission flags"
msgstr ""
-#: ipalib/plugins/permission.py:928
+#: ipalib/plugins/permission.py:966
msgid "Add a new permission."
msgstr ""
-#: ipalib/plugins/permission.py:956
+#: ipalib/plugins/permission.py:994
msgid "attrs and included attributes are mutually exclusive"
msgstr ""
-#: ipalib/plugins/permission.py:990
+#: ipalib/plugins/permission.py:1026
+#, python-format
+msgid "Cannot store permission ACI to %s"
+msgstr ""
+
+#: ipalib/plugins/permission.py:1035
msgid "Delete a permission."
msgstr ""
-#: ipalib/plugins/permission.py:992
+#: ipalib/plugins/permission.py:1037
#, python-format
msgid "Deleted permission \"%(value)s\""
msgstr ""
-#: ipalib/plugins/permission.py:998
+#: ipalib/plugins/permission.py:1043
msgid "force delete of SYSTEM permissions"
msgstr ""
-#: ipalib/plugins/permission.py:1012
+#: ipalib/plugins/permission.py:1057
msgid "cannot delete managed permissions"
msgstr ""
-#: ipalib/plugins/permission.py:1018
+#: ipalib/plugins/permission.py:1063
#, python-format
msgid "ACI of permission %s was not found"
msgstr ""
-#: ipalib/plugins/permission.py:1025
+#: ipalib/plugins/permission.py:1070
msgid "Modify a permission."
msgstr ""
-#: ipalib/plugins/permission.py:1027
+#: ipalib/plugins/permission.py:1072
#, python-format
msgid "Modified permission \"%(value)s\""
msgstr ""
-#: ipalib/plugins/permission.py:1061
+#: ipalib/plugins/permission.py:1106
msgid "cannot rename managed permissions"
msgstr ""
-#: ipalib/plugins/permission.py:1068 ipalib/plugins/permission.py:1072
+#: ipalib/plugins/permission.py:1113 ipalib/plugins/permission.py:1117
msgid "not modifiable on managed permissions"
msgstr ""
-#: ipalib/plugins/permission.py:1079
+#: ipalib/plugins/permission.py:1124
msgid "only available on managed permissions"
msgstr ""
-#: ipalib/plugins/permission.py:1086 ipalib/plugins/permission.py:1206
+#: ipalib/plugins/permission.py:1131 ipalib/plugins/permission.py:1251
msgid "attrs and included/excluded attributes are mutually exclusive"
msgstr ""
-#: ipalib/plugins/permission.py:1097
+#: ipalib/plugins/permission.py:1142
msgid "cannot set bindtype for a permission that is assigned to a privilege"
msgstr ""
-#: ipalib/plugins/permission.py:1191
+#: ipalib/plugins/permission.py:1236
msgid "Search for permissions."
msgstr ""
-#: ipalib/plugins/permission.py:1194
+#: ipalib/plugins/permission.py:1239
#, python-format
msgid "%(count)d permission matched"
msgid_plural "%(count)d permissions matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/permission.py:1321
+#: ipalib/plugins/permission.py:1366
msgid "Display information about a permission."
msgstr ""
@@ -9307,127 +10941,127 @@ msgstr ""
msgid "priority must be a unique value (%(prio)d already used by %(gname)s)"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:214
+#: ipalib/plugins/pwpolicy.py:219
msgid "password policy"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:215
+#: ipalib/plugins/pwpolicy.py:220
msgid "password policies"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:284
+#: ipalib/plugins/pwpolicy.py:289
msgid "Max failures"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:285
+#: ipalib/plugins/pwpolicy.py:290
msgid "Consecutive failures before lockout"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:290
+#: ipalib/plugins/pwpolicy.py:295
msgid "Failure reset interval"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:291
+#: ipalib/plugins/pwpolicy.py:296
msgid "Period after which failure count will be reset (seconds)"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:296
+#: ipalib/plugins/pwpolicy.py:301
msgid "Lockout duration"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:297
+#: ipalib/plugins/pwpolicy.py:302
msgid "Period for which lockout is enforced (seconds)"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:302
+#: ipalib/plugins/pwpolicy.py:307
msgid "Password Policies"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:308
+#: ipalib/plugins/pwpolicy.py:313
msgid "Group"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:309
+#: ipalib/plugins/pwpolicy.py:314
msgid "Manage password policy for specific group"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:314
+#: ipalib/plugins/pwpolicy.py:319
msgid "Max lifetime (days)"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:315
+#: ipalib/plugins/pwpolicy.py:320
msgid "Maximum password lifetime (in days)"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:321
+#: ipalib/plugins/pwpolicy.py:326
msgid "Min lifetime (hours)"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:322
+#: ipalib/plugins/pwpolicy.py:327
msgid "Minimum password lifetime (in hours)"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:327
+#: ipalib/plugins/pwpolicy.py:332
msgid "History size"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:328
+#: ipalib/plugins/pwpolicy.py:333
msgid "Password history size"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:333
+#: ipalib/plugins/pwpolicy.py:338
msgid "Character classes"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:334
+#: ipalib/plugins/pwpolicy.py:339
msgid "Minimum number of character classes"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:340
+#: ipalib/plugins/pwpolicy.py:345
msgid "Min length"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:341
+#: ipalib/plugins/pwpolicy.py:346
msgid "Minimum length of password"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:347
+#: ipalib/plugins/pwpolicy.py:352
msgid "Priority of the policy (higher number means lower priority"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:401
+#: ipalib/plugins/pwpolicy.py:406
msgid "Maximum password life must be greater than minimum."
msgstr ""
-#: ipalib/plugins/pwpolicy.py:419
+#: ipalib/plugins/pwpolicy.py:424
msgid "Add a new group password policy."
msgstr ""
-#: ipalib/plugins/pwpolicy.py:445
+#: ipalib/plugins/pwpolicy.py:450
msgid "Delete a group password policy."
msgstr ""
-#: ipalib/plugins/pwpolicy.py:457
+#: ipalib/plugins/pwpolicy.py:462
msgid "cannot delete global password policy"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:472
+#: ipalib/plugins/pwpolicy.py:477
msgid "Modify a group password policy."
msgstr ""
-#: ipalib/plugins/pwpolicy.py:483
+#: ipalib/plugins/pwpolicy.py:488
msgid "priority cannot be set on global policy"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:515
+#: ipalib/plugins/pwpolicy.py:520
msgid "Display information about password policy."
msgstr ""
-#: ipalib/plugins/pwpolicy.py:520
+#: ipalib/plugins/pwpolicy.py:525
msgid "Display effective policy for a specific user"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:544
+#: ipalib/plugins/pwpolicy.py:549
msgid "Search for group password policies."
msgstr ""
@@ -9518,10 +11152,6 @@ msgstr ""
msgid "A description of this RADIUS proxy server"
msgstr ""
-#: ipalib/plugins/radiusproxy.py:114 ipalib/plugins/user.py:101
-msgid "Server"
-msgstr ""
-
#: ipalib/plugins/radiusproxy.py:115
msgid "The hostname or IP (with or without port)"
msgstr ""
@@ -9714,81 +11344,81 @@ msgstr ""
msgid "roles"
msgstr ""
-#: ipalib/plugins/role.py:129
+#: ipalib/plugins/role.py:131
msgid "Role"
msgstr ""
-#: ipalib/plugins/role.py:134
+#: ipalib/plugins/role.py:136
msgid "Role name"
msgstr ""
-#: ipalib/plugins/role.py:140
+#: ipalib/plugins/role.py:142
msgid "A description of this role-group"
msgstr ""
-#: ipalib/plugins/role.py:148
+#: ipalib/plugins/role.py:150
msgid "Add a new role."
msgstr ""
-#: ipalib/plugins/role.py:150
+#: ipalib/plugins/role.py:152
#, python-format
msgid "Added role \"%(value)s\""
msgstr ""
-#: ipalib/plugins/role.py:156
+#: ipalib/plugins/role.py:158
msgid "Delete a role."
msgstr ""
-#: ipalib/plugins/role.py:158
+#: ipalib/plugins/role.py:160
#, python-format
msgid "Deleted role \"%(value)s\""
msgstr ""
-#: ipalib/plugins/role.py:164
+#: ipalib/plugins/role.py:166
msgid "Modify a role."
msgstr ""
-#: ipalib/plugins/role.py:166
+#: ipalib/plugins/role.py:168
#, python-format
msgid "Modified role \"%(value)s\""
msgstr ""
-#: ipalib/plugins/role.py:172
+#: ipalib/plugins/role.py:174
msgid "Search for roles."
msgstr ""
-#: ipalib/plugins/role.py:175
+#: ipalib/plugins/role.py:177
#, python-format
msgid "%(count)d role matched"
msgid_plural "%(count)d roles matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/role.py:182
+#: ipalib/plugins/role.py:184
msgid "Display information about a role."
msgstr ""
-#: ipalib/plugins/role.py:188
+#: ipalib/plugins/role.py:190
msgid "Add members to a role."
msgstr ""
-#: ipalib/plugins/role.py:194
+#: ipalib/plugins/role.py:196
msgid "Remove members from a role."
msgstr ""
-#: ipalib/plugins/role.py:200
+#: ipalib/plugins/role.py:202
msgid "Add privileges to a role."
msgstr ""
-#: ipalib/plugins/role.py:215
+#: ipalib/plugins/role.py:217
msgid "Number of privileges added"
msgstr ""
-#: ipalib/plugins/role.py:223
+#: ipalib/plugins/role.py:225
msgid "Remove privileges from a role."
msgstr ""
-#: ipalib/plugins/role.py:238
+#: ipalib/plugins/role.py:240
msgid "Number of privileges removed"
msgstr ""
@@ -10073,6 +11703,96 @@ msgstr ""
msgid "Remove target hosts and hostgroups from an SELinux User Map rule."
msgstr ""
+#: ipalib/plugins/server.py:15
+msgid ""
+"\n"
+"IPA servers\n"
+msgstr ""
+
+#: ipalib/plugins/server.py:17
+msgid ""
+"\n"
+"Get information about installed IPA servers.\n"
+msgstr ""
+
+#: ipalib/plugins/server.py:21
+msgid ""
+"\n"
+" Find all servers:\n"
+" ipa server-find\n"
+msgstr ""
+
+#: ipalib/plugins/server.py:24
+msgid ""
+"\n"
+" Show specific server:\n"
+" ipa server-show ipa.example.com\n"
+msgstr ""
+
+#: ipalib/plugins/server.py:38
+msgid "server"
+msgstr ""
+
+#: ipalib/plugins/server.py:39
+msgid "servers"
+msgstr ""
+
+#: ipalib/plugins/server.py:45
+msgid "IPA Servers"
+msgstr ""
+
+#: ipalib/plugins/server.py:52
+msgid "Server name"
+msgstr ""
+
+#: ipalib/plugins/server.py:53
+msgid "IPA server hostname"
+msgstr ""
+
+#: ipalib/plugins/server.py:58
+msgid "Managed suffix"
+msgstr ""
+
+#: ipalib/plugins/server.py:63
+msgid "Min domain level"
+msgstr ""
+
+#: ipalib/plugins/server.py:64
+msgid "Minimum domain level"
+msgstr ""
+
+#: ipalib/plugins/server.py:70
+msgid "Max domain level"
+msgstr ""
+
+#: ipalib/plugins/server.py:71
+msgid "Maximum domain level"
+msgstr ""
+
+#: ipalib/plugins/server.py:79
+msgid "Search for IPA servers."
+msgstr ""
+
+#: ipalib/plugins/server.py:82
+#, python-format
+msgid "%(count)d IPA server matched"
+msgid_plural "%(count)d IPA servers matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/server.py:89
+msgid "Show IPA server."
+msgstr ""
+
+#: ipalib/plugins/server.py:94
+msgid "Delete IPA server."
+msgstr ""
+
+#: ipalib/plugins/server.py:96
+#, python-format
+msgid "Deleted IPA server \"%(value)s\""
+msgstr ""
+
#: ipalib/plugins/service.py:36
msgid ""
"\n"
@@ -10129,6 +11849,17 @@ msgid ""
"\n"
" Request a certificate for an IPA service:\n"
" ipa cert-request --principal=HTTP/web.example.com example.csr\n"
+msgstr ""
+
+#: ipalib/plugins/service.py:89
+msgid ""
+"\n"
+" Allow user to create a keytab:\n"
+" ipa service-allow-create-keytab HTTP/web.example.com --users=tuser1\n"
+msgstr ""
+
+#: ipalib/plugins/service.py:92
+msgid ""
"\n"
" Generate and retrieve a keytab for an IPA service:\n"
" ipa-getkeytab -s ipa.example.com -p HTTP/web.example.com -k /etc/httpd/"
@@ -10136,132 +11867,523 @@ msgid ""
"\n"
msgstr ""
-#: ipalib/plugins/service.py:136
+#: ipalib/plugins/service.py:169
msgid "Requires pre-authentication"
msgstr ""
-#: ipalib/plugins/service.py:137
+#: ipalib/plugins/service.py:170
msgid "Pre-authentication is required for the service"
msgstr ""
-#: ipalib/plugins/service.py:142
+#: ipalib/plugins/service.py:175
msgid "Trusted for delegation"
msgstr ""
-#: ipalib/plugins/service.py:143
+#: ipalib/plugins/service.py:176
msgid "Client credentials may be delegated to the service"
msgstr ""
-#: ipalib/plugins/service.py:162
-msgid "missing service"
+#: ipalib/plugins/service.py:196
+msgid "unable to determine service"
msgstr ""
-#: ipalib/plugins/service.py:166
+#: ipalib/plugins/service.py:200
msgid "blank service"
msgstr ""
-#: ipalib/plugins/service.py:170
+#: ipalib/plugins/service.py:208
msgid "unable to determine realm"
msgstr ""
-#: ipalib/plugins/service.py:243
+#: ipalib/plugins/service.py:225
+msgid "missing service"
+msgstr ""
+
+#: ipalib/plugins/service.py:287
msgid "This principal is required by the IPA master"
msgstr ""
-#: ipalib/plugins/service.py:299
+#: ipalib/plugins/service.py:360
msgid "service"
msgstr ""
-#: ipalib/plugins/service.py:300
+#: ipalib/plugins/service.py:361
msgid "services"
msgstr ""
-#: ipalib/plugins/service.py:372
+#: ipalib/plugins/service.py:447
msgid "Service principal"
msgstr ""
-#: ipalib/plugins/service.py:384
+#: ipalib/plugins/service.py:459
msgid "PAC type"
msgstr ""
-#: ipalib/plugins/service.py:385
+#: ipalib/plugins/service.py:460
msgid ""
"Override default list of supported PAC types. Use 'NONE' to disable PAC "
"support for this service, e.g. this might be necessary for NFS services."
msgstr ""
-#: ipalib/plugins/service.py:406
+#: ipalib/plugins/service.py:481
msgid "NONE value cannot be combined with other PAC types"
msgstr ""
-#: ipalib/plugins/service.py:412
+#: ipalib/plugins/service.py:490
msgid "Add a new IPA new service."
msgstr ""
-#: ipalib/plugins/service.py:414
+#: ipalib/plugins/service.py:492
#, python-format
msgid "Added service \"%(value)s\""
msgstr ""
-#: ipalib/plugins/service.py:420
+#: ipalib/plugins/service.py:498
msgid "force principal name even if not in DNS"
msgstr ""
-#: ipalib/plugins/service.py:434
+#: ipalib/plugins/service.py:512
#, python-format
msgid "The host '%s' does not exist to add a service to."
msgstr ""
-#: ipalib/plugins/service.py:474
+#: ipalib/plugins/service.py:553
msgid "Delete an IPA service."
msgstr ""
-#: ipalib/plugins/service.py:476
+#: ipalib/plugins/service.py:555
#, python-format
msgid "Deleted service \"%(value)s\""
msgstr ""
-#: ipalib/plugins/service.py:519
+#: ipalib/plugins/service.py:596
msgid "Modify an existing IPA service."
msgstr ""
-#: ipalib/plugins/service.py:521
+#: ipalib/plugins/service.py:598
#, python-format
msgid "Modified service \"%(value)s\""
msgstr ""
-#: ipalib/plugins/service.py:566
+#: ipalib/plugins/service.py:666
msgid "Search for IPA services."
msgstr ""
-#: ipalib/plugins/service.py:569
+#: ipalib/plugins/service.py:669
#, python-format
msgid "%(count)d service matched"
msgid_plural "%(count)d services matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/service.py:603
+#: ipalib/plugins/service.py:704
msgid "Display information about an IPA service."
msgstr ""
-#: ipalib/plugins/service.py:638
+#: ipalib/plugins/service.py:746
msgid "Add hosts that can manage this service."
msgstr ""
-#: ipalib/plugins/service.py:647
+#: ipalib/plugins/service.py:755
msgid "Remove hosts that can manage this service."
msgstr ""
-#: ipalib/plugins/service.py:656
+#: ipalib/plugins/service.py:763
+msgid ""
+"Allow users, groups, hosts or host groups to retrieve a keytab of this "
+"service."
+msgstr ""
+
+#: ipalib/plugins/service.py:782
+msgid ""
+"Disallow users, groups, hosts or host groups to retrieve a keytab of this "
+"service."
+msgstr ""
+
+#: ipalib/plugins/service.py:800
+msgid ""
+"Allow users, groups, hosts or host groups to create a keytab of this service."
+msgstr ""
+
+#: ipalib/plugins/service.py:819
+msgid ""
+"Disallow users, groups, hosts or host groups to create a keytab of this "
+"service."
+msgstr ""
+
+#: ipalib/plugins/service.py:837
msgid "Disable the Kerberos key and SSL certificate of a service."
msgstr ""
-#: ipalib/plugins/service.py:659
+#: ipalib/plugins/service.py:840
#, python-format
msgid "Disabled service \"%(value)s\""
msgstr ""
+#: ipalib/plugins/servicedelegation.py:12
+msgid ""
+"\n"
+"Service Constrained Delegation\n"
+"\n"
+"Manage rules to allow constrained delegation of credentials so\n"
+"that a service can impersonate a user when communicating with another\n"
+"service without requiring the user to actually forward their TGT.\n"
+"This makes for a much better method of delegating credentials as it\n"
+"prevents exposure of the short term secret of the user.\n"
+"\n"
+"The naming convention is to append the word \"target\" or \"targets\" to\n"
+"a matching rule name. This is not mandatory but helps conceptually\n"
+"to associate rules and targets.\n"
+"\n"
+"A rule consists of two things:\n"
+" - A list of targets the rule applies to\n"
+" - A list of memberPrincipals that are allowed to delegate for\n"
+" those targets\n"
+"\n"
+"A target consists of a list of principals that can be delegated.\n"
+"\n"
+"In English, a rule says that this principal can delegate as this\n"
+"list of principals, as defined by these targets.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a new constrained delegation rule:\n"
+" ipa servicedelegationrule-add ftp-delegation\n"
+"\n"
+" Add a new constrained delegation target:\n"
+" ipa servicedelegationtarget-add ftp-delegation-target\n"
+"\n"
+" Add a principal to the rule:\n"
+" ipa servicedelegationrule-add-member --principals=ftp/ipa.example."
+"com ftp-delegation\n"
+"\n"
+" Add our target to the rule:\n"
+" ipa servicedelegationrule-add-target --servicedelegationtargets=ftp-"
+"delegation-target ftp-delegation\n"
+"\n"
+" Add a principal to the target:\n"
+" ipa servicedelegationtarget-add-member --principals=ldap/ipa.example."
+"com ftp-delegation-target\n"
+"\n"
+" Display information about a named delegation rule and target:\n"
+" ipa servicedelegationrule_show ftp-delegation\n"
+" ipa servicedelegationtarget_show ftp-delegation-target\n"
+"\n"
+" Remove a constrained delegation:\n"
+" ipa servicedelegationrule-del ftp-delegation-target\n"
+" ipa servicedelegationtarget-del ftp-delegation\n"
+"\n"
+"In this example the ftp service can get a TGT for the ldap service on\n"
+"the bound user's behalf.\n"
+"\n"
+"It is strongly discouraged to modify the delegations that ship with\n"
+"IPA, ipa-http-delegation and its targets ipa-cifs-delegation-targets and\n"
+"ipa-ldap-delegation-targets. Incorrect changes can remove the ablity\n"
+"to delegate, causing the framework to stop functioning.\n"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:88
+msgid "Allowed Target"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:92
+msgid "Allowed to Impersonate"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:96
+msgid "Member principals"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:104
+msgid "Failed targets"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:168
+msgid "Add target to a named service delegation."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:249
+msgid "Remove member from a named service delegation."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:342
+#: ipalib/plugins/servicedelegation.py:375
+msgid "service delegation rule"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:343
+msgid "service delegation rules"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:354
+msgid "Service delegation rules"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:355
+msgid "Service delegation rule"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:360
+msgid "Create a new service delegation rule."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:362
+#, python-format
+msgid "Added service delegation rule \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:367
+msgid "Delete service delegation."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:369
+#, python-format
+msgid "Deleted service delegation \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:377
+msgid "privileged service delegation rule"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:384
+msgid "Search for service delegations rule."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:389
+#, python-format
+msgid "%(count)d service delegation rule matched"
+msgid_plural "%(count)d service delegation rules matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/servicedelegation.py:396
+msgid "Display information about a named service delegation rule."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:403
+msgid "Add member to a named service delegation rule."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:412
+msgid "Remove member from a named service delegation rule."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:420
+msgid "Add target to a named service delegation rule."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:431
+msgid "Remove target from a named service delegation rule."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:441
+#: ipalib/plugins/servicedelegation.py:470
+msgid "service delegation target"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:442
+msgid "service delegation targets"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:449
+msgid "Service delegation targets"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:450
+msgid "Service delegation target"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:455
+msgid "Create a new service delegation target."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:457
+#, python-format
+msgid "Added service delegation target \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:462
+msgid "Delete service delegation target."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:464
+#, python-format
+msgid "Deleted service delegation target \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:472
+msgid "privileged service delegation target"
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:479
+msgid "Search for service delegation target."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:484
+#, python-format
+msgid "%(count)d service delegation target matched"
+msgid_plural "%(count)d service delegation targets matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/servicedelegation.py:518
+msgid "Display information about a named service delegation target."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:525
+msgid "Add member to a named service delegation target."
+msgstr ""
+
+#: ipalib/plugins/servicedelegation.py:534
+msgid "Remove member from a named service delegation target."
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:48
+msgid ""
+"\n"
+"Stageusers\n"
+"\n"
+"Manage stage user entries.\n"
+"\n"
+"Stage user entries are directly under the container: \"cn=stage users,\n"
+"cn=accounts, cn=provisioning, SUFFIX\".\n"
+"User can not authenticate with those entries (even if the entries\n"
+"contain credentials) and are candidate to become Active entries.\n"
+"\n"
+"Active user entries are Posix users directly under the container: "
+"\"cn=accounts, SUFFIX\".\n"
+"User can authenticate with Active entries, at the condition they have\n"
+"credentials\n"
+"\n"
+"Delete user enties are Posix users directly under the container: "
+"\"cn=deleted users,\n"
+"cn=accounts, cn=provisioning, SUFFIX\".\n"
+"User can not authenticate with those entries (even if the entries contain "
+"credentials)\n"
+"\n"
+"The stage user container contains entries\n"
+" - created by 'stageuser-add' commands that are Posix users\n"
+" - created by external provisioning system\n"
+"\n"
+"A valid stage user entry MUST:\n"
+" - entry RDN is 'uid'\n"
+" - ipaUniqueID is 'autogenerate'\n"
+"\n"
+"IPA supports a wide range of username formats, but you need to be aware of "
+"any\n"
+"restrictions that may apply to your particular environment. For example,\n"
+"usernames that start with a digit or usernames that exceed a certain length\n"
+"may cause problems for some UNIX systems.\n"
+"Use 'ipa config-mod' to change the username format allowed by IPA tools.\n"
+"\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a new stageuser:\n"
+" ipa stageuser-add --first=Tim --last=User --password tuser1\n"
+"\n"
+" Add a stageuser from the Delete container\n"
+" ipa stageuser-add --first=Tim --last=User --from-delete tuser1\n"
+"\n"
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:110
+msgid "Stage Users"
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:111
+msgid "Stage User"
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:112
+msgid "stage user"
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:113
+msgid "stage users"
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:248
+msgid "Add a new stage user."
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:250
+#, python-format
+msgid "Added stage user \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:256
+msgid "Create Stage user in from a delete user"
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:268
+msgid "givenname is required"
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:271
+msgid "sn is required"
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:412
+msgid "Delete a stage user."
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:414
+#, python-format
+msgid "Deleted stage user \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:418
+msgid "Modify a stage user."
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:420
+#, python-format
+msgid "Modified stage user \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:439
+msgid "Search for stage users."
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:469 ipalib/plugins/user.py:711
+#, python-format
+msgid "%(count)d user matched"
+msgid_plural "%(count)d users matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/stageuser.py:474
+msgid "Display information about a stage user."
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:486
+msgid "Activate a stage user."
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:488
+#, python-format
+msgid "Activate a stage user \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:501
+msgid "Entry RDN is not 'uid'"
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:507
+msgid "Entry has no 'cn'"
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:677
+#, python-format
+msgid "Active user %(user)s already exists"
+msgstr ""
+
+#: ipalib/plugins/stageuser.py:738
+#, python-format
+msgid "Stage user %s activated"
+msgstr ""
+
#: ipalib/plugins/sudocmd.py:30
msgid ""
"\n"
@@ -10709,11 +12831,11 @@ msgid ""
"%(type)s category cannot be set to 'all' while there are allowed %(objects)s"
msgstr ""
-#: ipalib/plugins/sudorule.py:419 ipalib/plugins/user.py:228
+#: ipalib/plugins/sudorule.py:419 ipalib/plugins/user.py:127
msgid "user"
msgstr ""
-#: ipalib/plugins/sudorule.py:419 ipalib/plugins/user.py:229
+#: ipalib/plugins/sudorule.py:419 ipalib/plugins/user.py:128
msgid "users"
msgstr ""
@@ -10855,6 +12977,278 @@ msgstr ""
msgid "Removed option \"%(option)s\" from Sudo Rule \"%(rule)s\""
msgstr ""
+#: ipalib/plugins/topology.py:16
+msgid ""
+"\n"
+"Topology\n"
+"\n"
+"Management of a replication topology.\n"
+"\n"
+"Requires minimum domain level 1.\n"
+msgstr ""
+
+#: ipalib/plugins/topology.py:33
+#, python-brace-format
+msgid "Topology management requires minimum domain level {0} "
+msgstr ""
+
+#: ipalib/plugins/topology.py:45
+msgid "segment"
+msgstr ""
+
+#: ipalib/plugins/topology.py:46
+msgid "segments"
+msgstr ""
+
+#: ipalib/plugins/topology.py:60
+msgid "Topology Segments"
+msgstr ""
+
+#: ipalib/plugins/topology.py:61
+msgid "Topology Segment"
+msgstr ""
+
+#: ipalib/plugins/topology.py:69
+msgid "Segment name"
+msgstr ""
+
+#: ipalib/plugins/topology.py:73
+msgid "Arbitrary string identifying the segment"
+msgstr ""
+
+#: ipalib/plugins/topology.py:81
+msgid "Left node"
+msgstr ""
+
+#: ipalib/plugins/topology.py:83
+msgid "Left replication node - an IPA server"
+msgstr ""
+
+#: ipalib/plugins/topology.py:92
+msgid "Right node"
+msgstr ""
+
+#: ipalib/plugins/topology.py:94
+msgid "Right replication node - an IPA server"
+msgstr ""
+
+#: ipalib/plugins/topology.py:100
+msgid "Connectivity"
+msgstr ""
+
+#: ipalib/plugins/topology.py:103
+msgid "Direction of replication between left and right replication node"
+msgstr ""
+
+#: ipalib/plugins/topology.py:110
+msgid "Attributes to strip"
+msgstr ""
+
+#: ipalib/plugins/topology.py:112
+msgid ""
+"A space separated list of attributes which are removed from replication "
+"updates."
+msgstr ""
+
+#: ipalib/plugins/topology.py:119
+msgid ""
+"Attributes that are not replicated to a consumer server during a fractional "
+"update. E.g., `(objectclass=*) $ EXCLUDE accountlockout memberof"
+msgstr ""
+
+#: ipalib/plugins/topology.py:126
+msgid "Attributes for total update"
+msgstr ""
+
+#: ipalib/plugins/topology.py:127
+msgid ""
+"Attributes that are not replicated to a consumer server during a total "
+"update. E.g. (objectclass=*) $ EXCLUDE accountlockout"
+msgstr ""
+
+#: ipalib/plugins/topology.py:134
+msgid "Session timeout"
+msgstr ""
+
+#: ipalib/plugins/topology.py:136
+msgid ""
+"Number of seconds outbound LDAP operations waits for a response from the "
+"remote replica before timing out and failing"
+msgstr ""
+
+#: ipalib/plugins/topology.py:143
+msgid "Replication agreement enabled"
+msgstr ""
+
+#: ipalib/plugins/topology.py:144
+msgid ""
+"Whether a replication agreement is active, meaning whether replication is "
+"occurring per that agreement"
+msgstr ""
+
+#: ipalib/plugins/topology.py:164
+#, python-format
+msgid "left node is not a topology node: %(leftnode)s"
+msgstr ""
+
+#: ipalib/plugins/topology.py:171
+#, python-format
+msgid "right node is not a topology node: %(rightnode)s"
+msgstr ""
+
+#: ipalib/plugins/topology.py:188
+msgid "left node and right node must not be the same"
+msgstr ""
+
+#: ipalib/plugins/topology.py:194
+msgid "Search for topology segments."
+msgstr ""
+
+#: ipalib/plugins/topology.py:197
+#, python-format
+msgid "%(count)d segment matched"
+msgid_plural "%(count)d segments matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/topology.py:204
+msgid "Add a new segment."
+msgstr ""
+
+#: ipalib/plugins/topology.py:206
+#, python-format
+msgid "Added segment \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/topology.py:217
+msgid "Delete a segment."
+msgstr ""
+
+#: ipalib/plugins/topology.py:219
+#, python-format
+msgid "Deleted segment \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/topology.py:229
+msgid "Modify a segment."
+msgstr ""
+
+#: ipalib/plugins/topology.py:231
+#, python-format
+msgid "Modified segment \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/topology.py:242
+msgid ""
+"Request a full re-initialization of the node retrieving data from the other "
+"node."
+msgstr ""
+
+#: ipalib/plugins/topology.py:246
+#, python-format
+msgid "%(value)s"
+msgstr ""
+
+#: ipalib/plugins/topology.py:251
+msgid "Initialize left node"
+msgstr ""
+
+#: ipalib/plugins/topology.py:256
+msgid "Initialize right node"
+msgstr ""
+
+#: ipalib/plugins/topology.py:261
+msgid "Stop already started refresh of chosen node(s)"
+msgstr ""
+
+#: ipalib/plugins/topology.py:282
+msgid "left or right node has to be specified"
+msgstr ""
+
+#: ipalib/plugins/topology.py:287
+msgid "only one node can be specified"
+msgstr ""
+
+#: ipalib/plugins/topology.py:291
+#, python-format
+msgid "Replication refresh for segment: \"%(pkey)s\" requested."
+msgstr ""
+
+#: ipalib/plugins/topology.py:294
+#, python-format
+msgid "Stopping of replication refresh for segment: \"%(pkey)s\" requested."
+msgstr ""
+
+#: ipalib/plugins/topology.py:315
+msgid "Display a segment."
+msgstr ""
+
+#: ipalib/plugins/topology.py:324
+msgid "suffix"
+msgstr ""
+
+#: ipalib/plugins/topology.py:325
+msgid "suffices"
+msgstr ""
+
+#: ipalib/plugins/topology.py:329
+msgid "Topology suffices"
+msgstr ""
+
+#: ipalib/plugins/topology.py:330
+msgid "Topology suffix"
+msgstr ""
+
+#: ipalib/plugins/topology.py:337
+msgid "Suffix name"
+msgstr ""
+
+#: ipalib/plugins/topology.py:343
+msgid "LDAP suffix to be managed"
+msgstr ""
+
+#: ipalib/plugins/topology.py:351
+msgid "Search for topology suffices."
+msgstr ""
+
+#: ipalib/plugins/topology.py:354
+#, python-format
+msgid "%(count)d topology suffix matched"
+msgid_plural "%(count)d topology suffices matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/topology.py:361
+msgid "Delete a topology suffix."
+msgstr ""
+
+#: ipalib/plugins/topology.py:365
+#, python-format
+msgid "Deleted topology suffix \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/topology.py:375
+msgid "Add a new topology suffix to be managed."
+msgstr ""
+
+#: ipalib/plugins/topology.py:379
+#, python-format
+msgid "Added topology suffix \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/topology.py:389
+msgid "Modify a topology suffix."
+msgstr ""
+
+#: ipalib/plugins/topology.py:393
+#, python-format
+msgid "Modified topology suffix \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/topology.py:403
+msgid "Show managed suffix."
+msgstr ""
+
#: ipalib/plugins/trust.py:50
msgid ""
"\n"
@@ -11043,7 +13437,7 @@ msgid "Active Directory domain administrator"
msgstr ""
#: ipalib/plugins/trust.py:438
-msgid "Active directory domain administrator's password"
+msgid "Active Directory domain administrator's password"
msgstr ""
#: ipalib/plugins/trust.py:443
@@ -11077,106 +13471,106 @@ msgstr ""
msgid "Re-established trust to domain \"%(value)s\""
msgstr ""
-#: ipalib/plugins/trust.py:517 ipalib/plugins/trust.py:559
-#: ipalib/plugins/trust.py:579 ipalib/plugins/trust.py:589
-#: ipalib/plugins/trust.py:711 ipalib/plugins/trust.py:743
-#: ipalib/plugins/trust.py:1320 ipalib/plugins/trust.py:1332
+#: ipalib/plugins/trust.py:543 ipalib/plugins/trust.py:585
+#: ipalib/plugins/trust.py:605 ipalib/plugins/trust.py:615
+#: ipalib/plugins/trust.py:737 ipalib/plugins/trust.py:770
+#: ipalib/plugins/trust.py:1348 ipalib/plugins/trust.py:1360
msgid "AD Trust setup"
msgstr ""
-#: ipalib/plugins/trust.py:519 ipalib/plugins/trust.py:1322
+#: ipalib/plugins/trust.py:545 ipalib/plugins/trust.py:1350
msgid ""
"Cannot perform join operation without Samba 4 support installed. Make sure "
"you have installed server-trust-ad sub-package of IPA"
msgstr ""
-#: ipalib/plugins/trust.py:527
+#: ipalib/plugins/trust.py:553
msgid "missing base_id"
msgstr ""
-#: ipalib/plugins/trust.py:529
+#: ipalib/plugins/trust.py:555
msgid "pysss_murmur is not available on the server and no base-id is given."
msgstr ""
-#: ipalib/plugins/trust.py:535 ipalib/plugins/trust.py:539
+#: ipalib/plugins/trust.py:561 ipalib/plugins/trust.py:565
msgid "trust type"
msgstr ""
-#: ipalib/plugins/trust.py:540
+#: ipalib/plugins/trust.py:566
msgid "only \"ad\" is supported"
msgstr ""
-#: ipalib/plugins/trust.py:550
+#: ipalib/plugins/trust.py:576
msgid "Realm-domain mismatch"
msgstr ""
-#: ipalib/plugins/trust.py:551
+#: ipalib/plugins/trust.py:577
msgid ""
"To establish trust with Active Directory, the domain name and the realm name "
"of the IPA server must match"
msgstr ""
-#: ipalib/plugins/trust.py:581
+#: ipalib/plugins/trust.py:607
msgid "Trusted domain and administrator account use different realms"
msgstr ""
-#: ipalib/plugins/trust.py:590
+#: ipalib/plugins/trust.py:616
msgid "Realm administrator password should be specified"
msgstr ""
-#: ipalib/plugins/trust.py:611
+#: ipalib/plugins/trust.py:637
msgid "id range type"
msgstr ""
-#: ipalib/plugins/trust.py:613
+#: ipalib/plugins/trust.py:639
msgid ""
"Only the ipa-ad-trust and ipa-ad-trust-posix are allowed values for --range-"
"type when adding an AD trust."
msgstr ""
-#: ipalib/plugins/trust.py:623
+#: ipalib/plugins/trust.py:649
msgid "id range"
msgstr ""
-#: ipalib/plugins/trust.py:625
+#: ipalib/plugins/trust.py:651
msgid ""
"An id range already exists for this trust. You should either delete the old "
"range, or exclude --base-id/--range-size options from the command."
msgstr ""
-#: ipalib/plugins/trust.py:647
+#: ipalib/plugins/trust.py:673
msgid "range exists"
msgstr ""
-#: ipalib/plugins/trust.py:649
+#: ipalib/plugins/trust.py:675
msgid ""
"ID range with the same name but different domain SID already exists. The ID "
"range for the new trusted domain must be created manually."
msgstr ""
-#: ipalib/plugins/trust.py:656
+#: ipalib/plugins/trust.py:682
msgid "range type change"
msgstr ""
-#: ipalib/plugins/trust.py:657
+#: ipalib/plugins/trust.py:683
msgid ""
"ID range for the trusted domain already exists, but it has a different type. "
"Please remove the old range manually, or do not enforce type via --range-"
"type option."
msgstr ""
-#: ipalib/plugins/trust.py:686
+#: ipalib/plugins/trust.py:712
#, python-format
msgid "Unable to resolve domain controller for '%s' domain. "
msgstr ""
-#: ipalib/plugins/trust.py:692
+#: ipalib/plugins/trust.py:718
msgid ""
"Forward policy is defined for it in IPA DNS, perhaps forwarder points to "
"incorrect host?"
msgstr ""
-#: ipalib/plugins/trust.py:695
+#: ipalib/plugins/trust.py:721
#, python-format
msgid ""
"IPA manages DNS, please verify your DNS configuration and make sure that "
@@ -11185,31 +13579,31 @@ msgid ""
"documentation. "
msgstr ""
-#: ipalib/plugins/trust.py:705
+#: ipalib/plugins/trust.py:731
#, python-format
msgid ""
"Since IPA does not manage DNS records, ensure DNS is configured to resolve "
"'%(domain)s' domain from IPA hosts and back."
msgstr ""
-#: ipalib/plugins/trust.py:712
+#: ipalib/plugins/trust.py:738
msgid "Unable to verify write permissions to the AD"
msgstr ""
-#: ipalib/plugins/trust.py:744
+#: ipalib/plugins/trust.py:771
msgid "Not enough arguments specified to perform trust setup"
msgstr ""
-#: ipalib/plugins/trust.py:748
+#: ipalib/plugins/trust.py:776
msgid "Delete a trust."
msgstr ""
-#: ipalib/plugins/trust.py:750
+#: ipalib/plugins/trust.py:778
#, python-format
msgid "Deleted trust \"%(value)s\""
msgstr ""
-#: ipalib/plugins/trust.py:754
+#: ipalib/plugins/trust.py:782
msgid ""
"\n"
" Modify a trust (for future use).\n"
@@ -11219,203 +13613,203 @@ msgid ""
" "
msgstr ""
-#: ipalib/plugins/trust.py:761
+#: ipalib/plugins/trust.py:789
#, python-format
msgid "Modified trust \"%(value)s\" (change will be effective in 60 seconds)"
msgstr ""
-#: ipalib/plugins/trust.py:773
+#: ipalib/plugins/trust.py:801
msgid "Search for trusts."
msgstr ""
-#: ipalib/plugins/trust.py:778
+#: ipalib/plugins/trust.py:806
#, python-format
msgid "%(count)d trust matched"
msgid_plural "%(count)d trusts matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/trust.py:804
+#: ipalib/plugins/trust.py:832
msgid "Display information about a trust."
msgstr ""
-#: ipalib/plugins/trust.py:839
+#: ipalib/plugins/trust.py:867
msgid "trust configuration"
msgstr ""
-#: ipalib/plugins/trust.py:845 ipalib/plugins/trust.py:846
+#: ipalib/plugins/trust.py:873 ipalib/plugins/trust.py:874
msgid "Global Trust Configuration"
msgstr ""
-#: ipalib/plugins/trust.py:854
+#: ipalib/plugins/trust.py:882
msgid "Security Identifier"
msgstr ""
-#: ipalib/plugins/trust.py:858
+#: ipalib/plugins/trust.py:886
msgid "NetBIOS name"
msgstr ""
-#: ipalib/plugins/trust.py:862
+#: ipalib/plugins/trust.py:890
msgid "Domain GUID"
msgstr ""
-#: ipalib/plugins/trust.py:867
+#: ipalib/plugins/trust.py:895
msgid "Fallback primary group"
msgstr ""
-#: ipalib/plugins/trust.py:879
+#: ipalib/plugins/trust.py:907
msgid "unsupported trust type"
msgstr ""
-#: ipalib/plugins/trust.py:942
+#: ipalib/plugins/trust.py:970
msgid "Modify global trust configuration."
msgstr ""
-#: ipalib/plugins/trust.py:945
+#: ipalib/plugins/trust.py:973
#, python-format
msgid "Modified \"%(value)s\" trust configuration"
msgstr ""
-#: ipalib/plugins/trust.py:964
+#: ipalib/plugins/trust.py:992
msgid "Show global trust configuration."
msgstr ""
-#: ipalib/plugins/trust.py:991
+#: ipalib/plugins/trust.py:1019
msgid "Resolve security identifiers of users and groups in trusted domains"
msgstr ""
-#: ipalib/plugins/trust.py:995
+#: ipalib/plugins/trust.py:1023
msgid "Security Identifiers (SIDs)"
msgstr ""
-#: ipalib/plugins/trust.py:1001
+#: ipalib/plugins/trust.py:1029
msgid "Name"
msgstr ""
-#: ipalib/plugins/trust.py:1002
+#: ipalib/plugins/trust.py:1030
msgid "SID"
msgstr ""
-#: ipalib/plugins/trust.py:1033
+#: ipalib/plugins/trust.py:1061
msgid "Determine whether ipa-adtrust-install has been run on this system"
msgstr ""
-#: ipalib/plugins/trust.py:1060
+#: ipalib/plugins/trust.py:1088
msgid ""
"Determine whether Schema Compatibility plugin is configured to serve trusted "
"domain users and groups"
msgstr ""
-#: ipalib/plugins/trust.py:1113
+#: ipalib/plugins/trust.py:1141
msgid "Determine whether ipa-adtrust-install has been run with sidgen task"
msgstr ""
-#: ipalib/plugins/trust.py:1129
+#: ipalib/plugins/trust.py:1157
msgid "sidgen_was_run"
msgstr ""
-#: ipalib/plugins/trust.py:1131
+#: ipalib/plugins/trust.py:1159
msgid ""
"This command relies on the existence of the \"editors\" group, but this "
"group was not found."
msgstr ""
-#: ipalib/plugins/trust.py:1150
+#: ipalib/plugins/trust.py:1178
msgid "trust domain"
msgstr ""
-#: ipalib/plugins/trust.py:1151
+#: ipalib/plugins/trust.py:1179
msgid "trust domains"
msgstr ""
-#: ipalib/plugins/trust.py:1156
+#: ipalib/plugins/trust.py:1184
msgid "Trusted domains"
msgstr ""
-#: ipalib/plugins/trust.py:1157
+#: ipalib/plugins/trust.py:1185
msgid "Trusted domain"
msgstr ""
-#: ipalib/plugins/trust.py:1161
+#: ipalib/plugins/trust.py:1189
msgid "Domain name"
msgstr ""
-#: ipalib/plugins/trust.py:1174
+#: ipalib/plugins/trust.py:1202
msgid "Trusted domain partner"
msgstr ""
-#: ipalib/plugins/trust.py:1194
+#: ipalib/plugins/trust.py:1222
msgid "Search domains of the trust"
msgstr ""
-#: ipalib/plugins/trust.py:1197
+#: ipalib/plugins/trust.py:1225
msgid "Domain enabled"
msgstr ""
-#: ipalib/plugins/trust.py:1224
+#: ipalib/plugins/trust.py:1252
msgid "Modify trustdomain of the trust"
msgstr ""
-#: ipalib/plugins/trust.py:1231
+#: ipalib/plugins/trust.py:1259
msgid "Allow access from the trusted domain"
msgstr ""
-#: ipalib/plugins/trust.py:1242
+#: ipalib/plugins/trust.py:1270
msgid "Remove infromation about the domain associated with the trust."
msgstr ""
-#: ipalib/plugins/trust.py:1244
+#: ipalib/plugins/trust.py:1272
#, python-format
msgid "Removed information about the trusted domain \"%(value)s\""
msgstr ""
-#: ipalib/plugins/trust.py:1253
+#: ipalib/plugins/trust.py:1281
msgid ""
"cannot delete root domain of the trust, use trust-del to delete the trust "
"itself"
msgstr ""
-#: ipalib/plugins/trust.py:1313
+#: ipalib/plugins/trust.py:1341
msgid "Refresh list of the domains associated with the trust"
msgstr ""
-#: ipalib/plugins/trust.py:1343
+#: ipalib/plugins/trust.py:1371
msgid "List of trust domains successfully refreshed"
msgstr ""
-#: ipalib/plugins/trust.py:1345
+#: ipalib/plugins/trust.py:1373
msgid "No new trust domains were found"
msgstr ""
-#: ipalib/plugins/trust.py:1355
+#: ipalib/plugins/trust.py:1383
msgid "Allow use of IPA resources by the domain of the trust"
msgstr ""
-#: ipalib/plugins/trust.py:1358
+#: ipalib/plugins/trust.py:1386
#, python-format
msgid "Enabled trust domain \"%(value)s\""
msgstr ""
-#: ipalib/plugins/trust.py:1365
+#: ipalib/plugins/trust.py:1393
msgid "Root domain of the trust is always enabled for the existing trust"
msgstr ""
-#: ipalib/plugins/trust.py:1395
+#: ipalib/plugins/trust.py:1423
msgid "Disable use of IPA resources by the domain of the trust"
msgstr ""
-#: ipalib/plugins/trust.py:1398
+#: ipalib/plugins/trust.py:1426
#, python-format
msgid "Disabled trust domain \"%(value)s\""
msgstr ""
-#: ipalib/plugins/trust.py:1405
+#: ipalib/plugins/trust.py:1433
msgid ""
"cannot disable root domain of the trust, use trust-del to delete the trust "
"itself"
msgstr ""
-#: ipalib/plugins/user.py:43
+#: ipalib/plugins/user.py:49
msgid ""
"\n"
"Users\n"
@@ -11461,334 +13855,546 @@ msgid ""
" ipa user-del tuser1\n"
msgstr ""
-#: ipalib/plugins/user.py:92
-msgid "Kerberos keys available"
+#: ipalib/plugins/user.py:333
+msgid "Account disabled"
msgstr ""
-#: ipalib/plugins/user.py:104
-msgid "Failed logins"
+#: ipalib/plugins/user.py:337
+msgid "Preserved user"
msgstr ""
-#: ipalib/plugins/user.py:107
-msgid "Last successful authentication"
+#: ipalib/plugins/user.py:389
+msgid "Add a new user."
msgstr ""
-#: ipalib/plugins/user.py:110
-msgid "Last failed authentication"
+#: ipalib/plugins/user.py:391
+#, python-format
+msgid "Added user \"%(value)s\""
msgstr ""
-#: ipalib/plugins/user.py:113
-msgid "Time now"
+#: ipalib/plugins/user.py:398
+msgid "Don't create user private group"
msgstr ""
-#: ipalib/plugins/user.py:134
-msgid "must be TRUE or FALSE"
+#: ipalib/plugins/user.py:474
+msgid "Default group for new users is not POSIX"
msgstr ""
-#: ipalib/plugins/user.py:438
-msgid "User login"
+#: ipalib/plugins/user.py:563
+msgid "Delete a user."
msgstr ""
-#: ipalib/plugins/user.py:445
-msgid "First name"
+#: ipalib/plugins/user.py:565
+#, python-format
+msgid "Deleted user \"%(value)s\""
msgstr ""
-#: ipalib/plugins/user.py:449
-msgid "Last name"
+#: ipalib/plugins/user.py:573
+msgid "Delete a user, keeping the entry available for future use"
msgstr ""
-#: ipalib/plugins/user.py:452
-msgid "Full name"
+#: ipalib/plugins/user.py:577
+msgid "Delete a user"
msgstr ""
-#: ipalib/plugins/user.py:457
-msgid "Display name"
+#: ipalib/plugins/user.py:585
+msgid "preserve and no-preserve cannot be both set"
msgstr ""
-#: ipalib/plugins/user.py:462
-msgid "Initials"
+#: ipalib/plugins/user.py:686
+msgid "Modify a user."
msgstr ""
-#: ipalib/plugins/user.py:468
-msgid "Home directory"
+#: ipalib/plugins/user.py:688
+#, python-format
+msgid "Modified user \"%(value)s\""
msgstr ""
-#: ipalib/plugins/user.py:471
-msgid "GECOS"
+#: ipalib/plugins/user.py:705
+msgid "Search for users."
msgstr ""
-#: ipalib/plugins/user.py:477
-msgid "Login shell"
+#: ipalib/plugins/user.py:716
+msgid "Self"
msgstr ""
-#: ipalib/plugins/user.py:481
-msgid "Kerberos principal"
+#: ipalib/plugins/user.py:717
+msgid "Display user record for current Kerberos principal"
msgstr ""
-#: ipalib/plugins/user.py:489
-msgid "Kerberos principal expiration"
+#: ipalib/plugins/user.py:764
+msgid "Display information about a user."
msgstr ""
-#: ipalib/plugins/user.py:493
-msgid "Email address"
+#: ipalib/plugins/user.py:776
+msgid "Undelete a delete user account."
msgstr ""
-#: ipalib/plugins/user.py:498
-msgid "Prompt to set the user password"
+#: ipalib/plugins/user.py:779
+#, python-format
+msgid "Undeleted user account \"%(value)s\""
msgstr ""
-#: ipalib/plugins/user.py:504
-msgid "Generate a random user password"
+#: ipalib/plugins/user.py:789
+#, python-format
+msgid "User %r is already active"
msgstr ""
-#: ipalib/plugins/user.py:514
-msgid "UID"
+#: ipalib/plugins/user.py:795
+#, python-format
+msgid "User %r not found"
msgstr ""
-#: ipalib/plugins/user.py:515
-msgid "User ID Number (system will assign one if not provided)"
+#: ipalib/plugins/user.py:822
+msgid "Disable a user account."
msgstr ""
-#: ipalib/plugins/user.py:520
-msgid "Group ID Number"
+#: ipalib/plugins/user.py:825
+#, python-format
+msgid "Disabled user account \"%(value)s\""
msgstr ""
-#: ipalib/plugins/user.py:525
-msgid "Street address"
+#: ipalib/plugins/user.py:843
+msgid "Enable a user account."
msgstr ""
-#: ipalib/plugins/user.py:529
-msgid "City"
+#: ipalib/plugins/user.py:847
+#, python-format
+msgid "Enabled user account \"%(value)s\""
msgstr ""
-#: ipalib/plugins/user.py:533
-msgid "State/Province"
+#: ipalib/plugins/user.py:864
+msgid ""
+"\n"
+" Unlock a user account\n"
+"\n"
+" An account may become locked if the password is entered incorrectly too\n"
+" many times within a specific time period as controlled by password\n"
+" policy. A locked account is a temporary condition and may be unlocked "
+"by\n"
+" an administrator."
msgstr ""
-#: ipalib/plugins/user.py:536
-msgid "ZIP"
+#: ipalib/plugins/user.py:873
+#, python-format
+msgid "Unlocked account \"%(value)s\""
msgstr ""
-#: ipalib/plugins/user.py:540
-msgid "Telephone Number"
+#: ipalib/plugins/user.py:893
+msgid ""
+"\n"
+" Lockout status of a user account\n"
+"\n"
+" An account may become locked if the password is entered incorrectly too\n"
+" many times within a specific time period as controlled by password\n"
+" policy. A locked account is a temporary condition and may be unlocked "
+"by\n"
+" an administrator.\n"
+"\n"
+" This connects to each IPA master and displays the lockout status on\n"
+" each one.\n"
+"\n"
+" To determine whether an account is locked on a given server you need\n"
+" to compare the number of failed logins and the time of the last "
+"failure.\n"
+" For an account to be locked it must exceed the maxfail failures within\n"
+" the failinterval duration as specified in the password policy "
+"associated\n"
+" with the user.\n"
+"\n"
+" The failed login counter is modified only when a user attempts a log in\n"
+" so it is possible that an account may appear locked but the last failed\n"
+" login attempt is older than the lockouttime of the password policy. "
+"This\n"
+" means that the user may attempt a login again. "
msgstr ""
-#: ipalib/plugins/user.py:543
-msgid "Mobile Telephone Number"
+#: ipalib/plugins/user.py:951
+#, python-format
+msgid "%(host)s failed: %(error)s"
msgstr ""
-#: ipalib/plugins/user.py:546
-msgid "Pager Number"
+#: ipalib/plugins/user.py:988
+#, python-format
+msgid "%(host)s failed"
msgstr ""
-#: ipalib/plugins/user.py:550
-msgid "Fax Number"
+#: ipalib/plugins/user.py:998
+#, python-format
+msgid "Account disabled: %(disabled)s"
msgstr ""
-#: ipalib/plugins/user.py:554
-msgid "Org. Unit"
+#: ipalib/plugins/vault.py:48
+msgid ""
+"\n"
+"Vaults\n"
msgstr ""
-#: ipalib/plugins/user.py:557
-msgid "Job Title"
+#: ipalib/plugins/vault.py:50
+msgid ""
+"\n"
+"Manage vaults.\n"
msgstr ""
-#: ipalib/plugins/user.py:563
-msgid "Car License"
+#: ipalib/plugins/vault.py:54
+msgid ""
+"\n"
+" List private vaults:\n"
+" ipa vault-find\n"
msgstr ""
-#: ipalib/plugins/user.py:566
-msgid "Account disabled"
+#: ipalib/plugins/vault.py:57
+msgid ""
+"\n"
+" List service vaults:\n"
+" ipa vault-find --service <service name>\n"
msgstr ""
-#: ipalib/plugins/user.py:578
-msgid "User authentication types"
+#: ipalib/plugins/vault.py:60
+msgid ""
+"\n"
+" List shared vaults:\n"
+" ipa vault-find --shared\n"
msgstr ""
-#: ipalib/plugins/user.py:579
-msgid "Types of supported user authentication"
+#: ipalib/plugins/vault.py:63
+msgid ""
+"\n"
+" List user vaults:\n"
+" ipa vault-find --user <username>\n"
msgstr ""
-#: ipalib/plugins/user.py:586
+#: ipalib/plugins/vault.py:66
msgid ""
-"User category (semantics placed on this attribute are for local "
-"interpretation)"
+"\n"
+" Add a private vault:\n"
+" ipa vault-add <name>\n"
msgstr ""
-#: ipalib/plugins/user.py:591
-msgid "RADIUS proxy configuration"
+#: ipalib/plugins/vault.py:69
+msgid ""
+"\n"
+" Add a service vault:\n"
+" ipa vault-add <name> --service <service name>\n"
msgstr ""
-#: ipalib/plugins/user.py:595
-msgid "RADIUS proxy username"
+#: ipalib/plugins/vault.py:72
+msgid ""
+"\n"
+" Add a shared vault:\n"
+" ipa vault-add <ame> --shared\n"
msgstr ""
-#: ipalib/plugins/user.py:598
-msgid "Department Number"
+#: ipalib/plugins/vault.py:75
+msgid ""
+"\n"
+" Add a user vault:\n"
+" ipa vault-add <name> --user <username>\n"
msgstr ""
-#: ipalib/plugins/user.py:601
-msgid "Employee Number"
+#: ipalib/plugins/vault.py:78
+msgid ""
+"\n"
+" Show a private vault:\n"
+" ipa vault-show <name>\n"
msgstr ""
-#: ipalib/plugins/user.py:604
-msgid "Employee Type"
+#: ipalib/plugins/vault.py:81
+msgid ""
+"\n"
+" Show a service vault:\n"
+" ipa vault-show <name> --service <service name>\n"
msgstr ""
-#: ipalib/plugins/user.py:607
-msgid "Preferred Language"
+#: ipalib/plugins/vault.py:84
+msgid ""
+"\n"
+" Show a shared vault:\n"
+" ipa vault-show <name> --shared\n"
msgstr ""
-#: ipalib/plugins/user.py:629 ipalib/plugins/user.py:633
-#, python-format
-msgid "invalid e-mail format: %(email)s"
+#: ipalib/plugins/vault.py:87
+msgid ""
+"\n"
+" Show a user vault:\n"
+" ipa vault-show <name> --user <username>\n"
msgstr ""
-#: ipalib/plugins/user.py:659
-#, python-format
-msgid "manager %(manager)s not found"
+#: ipalib/plugins/vault.py:90
+msgid ""
+"\n"
+" Modify a private vault:\n"
+" ipa vault-mod <name> --desc <description>\n"
msgstr ""
-#: ipalib/plugins/user.py:677
-msgid "Add a new user."
+#: ipalib/plugins/vault.py:93
+msgid ""
+"\n"
+" Modify a service vault:\n"
+" ipa vault-mod <name> --service <service name> --desc <description>\n"
msgstr ""
-#: ipalib/plugins/user.py:679
-#, python-format
-msgid "Added user \"%(value)s\""
+#: ipalib/plugins/vault.py:96
+msgid ""
+"\n"
+" Modify a shared vault:\n"
+" ipa vault-mod <name> --shared --desc <description>\n"
msgstr ""
-#: ipalib/plugins/user.py:686
-msgid "Don't create user private group"
+#: ipalib/plugins/vault.py:99
+msgid ""
+"\n"
+" Modify a user vault:\n"
+" ipa vault-mod <name> --user <username> --desc <description>\n"
msgstr ""
-#: ipalib/plugins/user.py:730 ipalib/plugins/user.py:891
-#, python-format
-msgid "can be at most %(len)d characters"
+#: ipalib/plugins/vault.py:102
+msgid ""
+"\n"
+" Delete a private vault:\n"
+" ipa vault-del <name>\n"
msgstr ""
-#: ipalib/plugins/user.py:762
-msgid "Default group for new users is not POSIX"
+#: ipalib/plugins/vault.py:105
+msgid ""
+"\n"
+" Delete a service vault:\n"
+" ipa vault-del <name> --service <service name>\n"
msgstr ""
-#: ipalib/plugins/user.py:852
-msgid "Delete a user."
+#: ipalib/plugins/vault.py:108
+msgid ""
+"\n"
+" Delete a shared vault:\n"
+" ipa vault-del <name> --shared\n"
msgstr ""
-#: ipalib/plugins/user.py:854
-#, python-format
-msgid "Deleted user \"%(value)s\""
+#: ipalib/plugins/vault.py:111
+msgid ""
+"\n"
+" Delete a user vault:\n"
+" ipa vault-del <name> --user <username>\n"
msgstr ""
-#: ipalib/plugins/user.py:877
-msgid "Modify a user."
+#: ipalib/plugins/vault.py:114
+msgid ""
+"\n"
+" Display vault configuration:\n"
+" ipa vault-config\n"
+msgstr ""
+
+#: ipalib/plugins/vault.py:117
+msgid ""
+"\n"
+" Archive data into private vault:\n"
+" ipa vault-archive <name> --in <input file>\n"
+msgstr ""
+
+#: ipalib/plugins/vault.py:120
+msgid ""
+"\n"
+" Archive data into service vault:\n"
+" ipa vault-archive <name> --service <service name> --in <input file>\n"
msgstr ""
-#: ipalib/plugins/user.py:879
+#: ipalib/plugins/vault.py:123
+msgid ""
+"\n"
+" Archive data into shared vault:\n"
+" ipa vault-archive <name> --shared --in <input file>\n"
+msgstr ""
+
+#: ipalib/plugins/vault.py:126
+msgid ""
+"\n"
+" Archive data into user vault:\n"
+" ipa vault-archive <name> --user <username> --in <input file>\n"
+msgstr ""
+
+#: ipalib/plugins/vault.py:129
+msgid ""
+"\n"
+" Retrieve data from private vault:\n"
+" ipa vault-retrieve <name> --out <output file>\n"
+msgstr ""
+
+#: ipalib/plugins/vault.py:132
+msgid ""
+"\n"
+" Retrieve data from service vault:\n"
+" ipa vault-retrieve <name> --service <service name> --out <output file>\n"
+msgstr ""
+
+#: ipalib/plugins/vault.py:135
+msgid ""
+"\n"
+" Retrieve data from shared vault:\n"
+" ipa vault-retrieve <name> --shared --out <output file>\n"
+msgstr ""
+
+#: ipalib/plugins/vault.py:138
+msgid ""
+"\n"
+" Retrieve data from user vault:\n"
+" ipa vault-retrieve <name> --user <user name> --out <output file>\n"
+msgstr ""
+
+#: ipalib/plugins/vault.py:153
+msgid "Shared vault"
+msgstr ""
+
+#: ipalib/plugins/vault.py:164
+msgid ""
+"\n"
+" Vault object.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/vault.py:170
+msgid "vault"
+msgstr ""
+
+#: ipalib/plugins/vault.py:171
+msgid "vaults"
+msgstr ""
+
+#: ipalib/plugins/vault.py:179
+msgid "Vaults"
+msgstr ""
+
+#: ipalib/plugins/vault.py:180
+msgid "Vault"
+msgstr ""
+
+#: ipalib/plugins/vault.py:186
+msgid "Vault name"
+msgstr ""
+
+#: ipalib/plugins/vault.py:196
+msgid "Vault description"
+msgstr ""
+
+#: ipalib/plugins/vault.py:221
+msgid "Service, shared, and user options cannot be specified simultaneously"
+msgstr ""
+
+#: ipalib/plugins/vault.py:236
+msgid "Host is not supported"
+msgstr ""
+
+#: ipalib/plugins/vault.py:313
+msgid "Create a new vault."
+msgstr ""
+
+#: ipalib/plugins/vault.py:317
#, python-format
-msgid "Modified user \"%(value)s\""
+msgid "Added vault \"%(value)s\""
msgstr ""
-#: ipalib/plugins/user.py:950
-msgid "Search for users."
+#: ipalib/plugins/vault.py:325 ipalib/plugins/vault.py:349
+#: ipalib/plugins/vault.py:395 ipalib/plugins/vault.py:427
+#: ipalib/plugins/vault.py:443 ipalib/plugins/vault.py:491
+#: ipalib/plugins/vault.py:629 ipalib/plugins/vault.py:779
+msgid "KRA service is not enabled"
msgstr ""
-#: ipalib/plugins/user.py:957
-msgid "Self"
+#: ipalib/plugins/vault.py:338
+msgid "Delete a vault."
msgstr ""
-#: ipalib/plugins/user.py:958
-msgid "Display user record for current Kerberos principal"
+#: ipalib/plugins/vault.py:342
+#, python-format
+msgid "Deleted vault \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/vault.py:379
+msgid "Search for vaults."
msgstr ""
-#: ipalib/plugins/user.py:994
+#: ipalib/plugins/vault.py:384
#, python-format
-msgid "%(count)d user matched"
-msgid_plural "%(count)d users matched"
+msgid "%(count)d vault matched"
+msgid_plural "%(count)d vaults matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/user.py:1000
-msgid "Display information about a user."
+#: ipalib/plugins/vault.py:414
+msgid "Modify a vault."
msgstr ""
-#: ipalib/plugins/user.py:1016
-msgid "Disable a user account."
+#: ipalib/plugins/vault.py:418
+#, python-format
+msgid "Modified vault \"%(value)s\""
msgstr ""
-#: ipalib/plugins/user.py:1019
-#, python-format
-msgid "Disabled user account \"%(value)s\""
+#: ipalib/plugins/vault.py:434
+msgid "Display information about a vault."
msgstr ""
-#: ipalib/plugins/user.py:1037
-msgid "Enable a user account."
+#: ipalib/plugins/vault.py:450
+msgid "Vault configuration"
msgstr ""
-#: ipalib/plugins/user.py:1041
-#, python-format
-msgid "Enabled user account \"%(value)s\""
+#: ipalib/plugins/vault.py:455
+msgid "Transport Certificate"
msgstr ""
-#: ipalib/plugins/user.py:1058
-msgid ""
-"\n"
-" Unlock a user account\n"
-"\n"
-" An account may become locked if the password is entered incorrectly too\n"
-" many times within a specific time period as controlled by password\n"
-" policy. A locked account is a temporary condition and may be unlocked "
-"by\n"
-" an administrator."
+#: ipalib/plugins/vault.py:462
+msgid "Show vault configuration."
msgstr ""
-#: ipalib/plugins/user.py:1067
-#, python-format
-msgid "Unlocked account \"%(value)s\""
+#: ipalib/plugins/vault.py:467
+msgid "Output file to store the transport certificate"
msgstr ""
-#: ipalib/plugins/user.py:1087
-msgid ""
-"\n"
-" Lockout status of a user account\n"
-"\n"
-" An account may become locked if the password is entered incorrectly too\n"
-" many times within a specific time period as controlled by password\n"
-" policy. A locked account is a temporary condition and may be unlocked "
-"by\n"
-" an administrator.\n"
-"\n"
-" This connects to each IPA master and displays the lockout status on\n"
-" each one.\n"
-"\n"
-" To determine whether an account is locked on a given server you need\n"
-" to compare the number of failed logins and the time of the last "
-"failure.\n"
-" For an account to be locked it must exceed the maxfail failures within\n"
-" the failinterval duration as specified in the password policy "
-"associated\n"
-" with the user.\n"
-"\n"
-" The failed login counter is modified only when a user attempts a log in\n"
-" so it is possible that an account may appear locked but the last failed\n"
-" login attempt is older than the lockouttime of the password policy. "
-"This\n"
-" means that the user may attempt a login again. "
+#: ipalib/plugins/vault.py:505
+msgid "Archive data into a vault."
msgstr ""
-#: ipalib/plugins/user.py:1145
-#, python-format
-msgid "%(host)s failed: %(error)s"
+#: ipalib/plugins/vault.py:510
+msgid "Binary data to archive"
+msgstr ""
+
+#: ipalib/plugins/vault.py:514
+msgid "File containing data to archive"
msgstr ""
-#: ipalib/plugins/user.py:1181
+#: ipalib/plugins/vault.py:520
#, python-format
-msgid "%(host)s failed"
+msgid "Archived data into vault \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/vault.py:536
+msgid "Input data specified multiple times"
+msgstr ""
+
+#: ipalib/plugins/vault.py:613 ipalib/plugins/vault.py:771
+msgid "Session key wrapped with transport certificate"
+msgstr ""
+
+#: ipalib/plugins/vault.py:617
+msgid "Vault data encrypted with session key"
+msgstr ""
+
+#: ipalib/plugins/vault.py:621
+msgid "Nonce"
+msgstr ""
+
+#: ipalib/plugins/vault.py:674
+msgid "Retrieve a data from a vault."
msgstr ""
-#: ipalib/plugins/user.py:1191
+#: ipalib/plugins/vault.py:679
+msgid "File to store retrieved data"
+msgstr ""
+
+#: ipalib/plugins/vault.py:691
#, python-format
-msgid "Account disabled: %(disabled)s"
+msgid "Retrieved data from vault \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/vault.py:801
+msgid "No archived data."
msgstr ""
#: ipalib/plugins/virtual.py:52
@@ -11803,7 +14409,7 @@ msgstr ""
msgid "No such virtual command"
msgstr ""
-#: ipalib/rpc.py:839
+#: ipalib/rpc.py:849
msgid "any of the configured servers"
msgstr ""
@@ -11811,92 +14417,131 @@ msgstr ""
msgid "could not allocate unique new session_id"
msgstr ""
-#: ipalib/util.py:191
+#: ipalib/util.py:205
msgid "Filename is empty"
msgstr ""
-#: ipalib/util.py:195
+#: ipalib/util.py:209
#, python-format
msgid "Permission denied: %(file)s"
msgstr ""
-#: ipalib/util.py:243
+#: ipalib/util.py:251 ipalib/util.py:757
+msgid "empty DNS label"
+msgstr ""
+
+#: ipalib/util.py:254
msgid "DNS label cannot be longer that 63 characters"
msgstr ""
-#: ipalib/util.py:248
+#: ipalib/util.py:259
#, python-format
msgid ""
"only letters, numbers, %(chars)s are allowed. DNS label may not start or end "
"with %(chars2)s"
msgstr ""
-#: ipalib/util.py:268
+#: ipalib/util.py:277
msgid "too many '@' characters"
msgstr ""
-#: ipalib/util.py:270
-msgid "missing address domain"
-msgstr ""
-
-#: ipalib/util.py:272
-msgid "missing mail account"
-msgstr ""
-
-#: ipalib/util.py:286
+#: ipalib/util.py:293
msgid "cannot be longer that 255 characters"
msgstr ""
-#: ipalib/util.py:292
+#: ipalib/util.py:299
msgid "hostname contains empty label (consecutive dots)"
msgstr ""
-#: ipalib/util.py:296
+#: ipalib/util.py:303
msgid "not fully qualified"
msgstr ""
-#: ipalib/util.py:308 ipalib/util.py:314
+#: ipalib/util.py:315 ipalib/util.py:321
msgid "invalid SSH public key"
msgstr ""
-#: ipalib/util.py:317
+#: ipalib/util.py:324
msgid "options are not allowed"
msgstr ""
-#: ipalib/util.py:553
+#: ipalib/util.py:560
msgid "invalid hostmask"
msgstr ""
-#: ipalib/x509.py:208
+#: ipalib/util.py:572
+#, python-format
+msgid "query '%(owner)s %(rtype)s': %(error)s"
+msgstr ""
+
+#: ipalib/util.py:576
+#, python-format
+msgid "query '%(owner)s %(rtype)s' with EDNS0: %(error)s"
+msgstr ""
+
+#: ipalib/util.py:580
+#, python-format
+msgid ""
+"answer to query '%(owner)s %(rtype)s' is missing DNSSEC signatures (no RRSIG "
+"data)"
+msgstr ""
+
+#: ipalib/util.py:585
+#, python-format
+msgid "record '%(owner)s %(rtype)s' failed DNSSEC validation on server %(ip)s"
+msgstr ""
+
+#: ipalib/util.py:755
+msgid "invalid escape code in domain name"
+msgstr ""
+
+#: ipalib/util.py:759
+msgid "domain name cannot be longer than 255 characters"
+msgstr ""
+
+#: ipalib/util.py:761
+msgid "DNS label cannot be longer than 63 characters"
+msgstr ""
+
+#: ipalib/util.py:763
+msgid "invalid domain name"
+msgstr ""
+
+#: ipalib/util.py:775
+#, python-format
+msgid "domain name '%(domain)s' should be normalized to: %(normalized)s"
+msgstr ""
+
+#: ipalib/x509.py:302
msgid "improperly formatted DER-encoded certificate"
msgstr ""
-#: ipalib/x509.py:245
+#: ipalib/x509.py:357
#, python-format
msgid "Issuer \"%(issuer)s\" does not match the expected issuer"
msgstr ""
-#: ipapython/dogtag.py:181
+#: ipapython/dogtag.py:194
#, python-format
msgid "Retrieving CA cert chain failed: %s"
msgstr ""
-#: ipapython/dogtag.py:187
+#: ipapython/dogtag.py:200
#, python-format
msgid "request failed with HTTP status %d"
msgstr ""
-#: ipapython/dogtag.py:214 ipapython/dogtag.py:221
+#: ipapython/dogtag.py:212 ipapython/dogtag.py:237
#, python-format
msgid "Retrieving CA status failed: %s"
msgstr ""
-#: ipapython/ipaldap.py:1237
+#: ipapython/ipaldap.py:1010
#, python-format
msgid "objectclass %s not found"
msgstr ""
-#: ipaserver/dcerpc.py:60
+#: ipaserver/dcerpc.py:63
msgid ""
"\n"
"Classes to manage trust joins using DCE-RPC calls\n"
@@ -11905,145 +14550,179 @@ msgid ""
"and Samba4 python bindings.\n"
msgstr ""
-#: ipaserver/dcerpc.py:77
+#: ipaserver/dcerpc.py:80
msgid "CIFS server denied your credentials"
msgstr ""
-#: ipaserver/dcerpc.py:80
+#: ipaserver/dcerpc.py:83
msgid "communication with CIFS server was unsuccessful"
msgstr ""
-#: ipaserver/dcerpc.py:85
+#: ipaserver/dcerpc.py:88
msgid "AD domain controller"
msgstr ""
-#: ipaserver/dcerpc.py:85
+#: ipaserver/dcerpc.py:88
msgid "unsupported functional level"
msgstr ""
-#: ipaserver/dcerpc.py:88
+#: ipaserver/dcerpc.py:91
msgid ""
"AD domain controller complains about communication sequence. It may mean "
"unsynchronized time on both sides, for example"
msgstr ""
-#: ipaserver/dcerpc.py:93
+#: ipaserver/dcerpc.py:95
+msgid "CIFS server configuration does not allow access to \\\\pipe\\lsarpc"
+msgstr ""
+
+#: ipaserver/dcerpc.py:100
msgid "Cannot find specified domain or server name"
msgstr ""
-#: ipaserver/dcerpc.py:95
+#: ipaserver/dcerpc.py:102
+msgid ""
+"AD DC was unable to reach any IPA domain controller. Most likely it is a DNS "
+"or firewall issue"
+msgstr ""
+
+#: ipaserver/dcerpc.py:104
msgid "At least the domain or IP address should be specified"
msgstr ""
-#: ipaserver/dcerpc.py:107
+#: ipaserver/dcerpc.py:116
#, python-format
msgid ""
"CIFS server communication error: code \"%(num)s\",\n"
" message \"%(message)s\" (both may be \"None\")"
msgstr ""
-#: ipaserver/dcerpc.py:207
+#: ipaserver/dcerpc.py:216
msgid "no trusted domain is configured"
msgstr ""
-#: ipaserver/dcerpc.py:214
+#: ipaserver/dcerpc.py:223
msgid "domain is not configured"
msgstr ""
-#: ipaserver/dcerpc.py:221
+#: ipaserver/dcerpc.py:230
msgid "SID is not valid"
msgstr ""
-#: ipaserver/dcerpc.py:236
+#: ipaserver/dcerpc.py:245
msgid "SID does not match exactlywith any trusted domain's SID"
msgstr ""
-#: ipaserver/dcerpc.py:247
+#: ipaserver/dcerpc.py:256
msgid "SID does not match any trusted domain"
msgstr ""
-#: ipaserver/dcerpc.py:287 ipaserver/dcerpc.py:293 ipaserver/dcerpc.py:515
+#: ipaserver/dcerpc.py:296 ipaserver/dcerpc.py:302 ipaserver/dcerpc.py:571
msgid "Trust setup"
msgstr ""
-#: ipaserver/dcerpc.py:288
+#: ipaserver/dcerpc.py:297
msgid "Our domain is not configured"
msgstr ""
-#: ipaserver/dcerpc.py:294
+#: ipaserver/dcerpc.py:303
msgid "No trusted domain is not configured"
msgstr ""
-#: ipaserver/dcerpc.py:299 ipaserver/dcerpc.py:314 ipaserver/dcerpc.py:331
-#: ipaserver/dcerpc.py:343 ipaserver/dcerpc.py:350 ipaserver/dcerpc.py:395
+#: ipaserver/dcerpc.py:308 ipaserver/dcerpc.py:323 ipaserver/dcerpc.py:340
+#: ipaserver/dcerpc.py:352 ipaserver/dcerpc.py:359 ipaserver/dcerpc.py:399
+#: ipaserver/dcerpc.py:451
msgid "trusted domain object"
msgstr ""
-#: ipaserver/dcerpc.py:300
+#: ipaserver/dcerpc.py:309
msgid "domain is not trusted"
msgstr ""
-#: ipaserver/dcerpc.py:315
+#: ipaserver/dcerpc.py:324
msgid "no trusted domain matched the specified flat name"
msgstr ""
-#: ipaserver/dcerpc.py:317
+#: ipaserver/dcerpc.py:326
msgid "trusted domain object not found"
msgstr ""
-#: ipaserver/dcerpc.py:332 ipaserver/dcerpc.py:396
+#: ipaserver/dcerpc.py:341 ipaserver/dcerpc.py:452
msgid "Ambiguous search, user domain was not specified"
msgstr ""
-#: ipaserver/dcerpc.py:344
+#: ipaserver/dcerpc.py:353 ipaserver/dcerpc.py:400
msgid "Trusted domain did not return a unique object"
msgstr ""
-#: ipaserver/dcerpc.py:351
+#: ipaserver/dcerpc.py:360
msgid "Trusted domain did not return a valid SID for the object"
msgstr ""
-#: ipaserver/dcerpc.py:381 ipaserver/dcerpc.py:391
+#: ipaserver/dcerpc.py:437 ipaserver/dcerpc.py:447
msgid "trusted domain user not found"
msgstr ""
-#: ipaserver/dcerpc.py:516
+#: ipaserver/dcerpc.py:572
msgid "Cannot retrieve trusted domain GC list"
msgstr ""
-#: ipaserver/dcerpc.py:652
+#: ipaserver/dcerpc.py:713
msgid "CIFS credentials object"
msgstr ""
-#: ipaserver/dcerpc.py:685
+#: ipaserver/dcerpc.py:750
#, python-format
msgid "CIFS server %(host)s denied your credentials"
msgstr ""
-#: ipaserver/dcerpc.py:689
+#: ipaserver/dcerpc.py:754
#, python-format
msgid "Cannot establish LSA connection to %(host)s. Is CIFS server running?"
msgstr ""
-#: ipaserver/dcerpc.py:878
+#: ipaserver/dcerpc.py:955
#, python-format
msgid ""
"the IPA server and the remote domain cannot share the same NetBIOS name: %s"
msgstr ""
-#: ipaserver/install/certs.py:641
+#: ipaserver/dcerpc.py:1035
+#, python-format
+msgid ""
+"IPA master denied trust validation requests from AD DC %(count)d times. Most "
+"likely AD DC contacted a replica that has no trust information replicated "
+"yet."
+msgstr ""
+
+#: ipaserver/install/certs.py:409
#, python-format
msgid "Unable to communicate with CMS (%s)"
msgstr ""
-#: ipaserver/plugins/dogtag.py:1253
+#: ipaserver/plugins/dogtag.py:1321
msgid "Unable to communicate with CMS"
msgstr ""
-#: ipaserver/plugins/dogtag.py:1833
+#: ipaserver/plugins/dogtag.py:1853
msgid "find not supported on CAs upgraded from 9 to 10"
msgstr ""
+#: ipaserver/plugins/dogtag.py:2018
+msgid "Failed to authenticate to CA REST API"
+msgstr ""
+
+#: ipaserver/plugins/dogtag.py:2043
+msgid "REST API is not logged in."
+msgstr ""
+
+#: ipaserver/plugins/dogtag.py:2060
+#, python-format
+msgid ""
+"Non-2xx response from CA REST API: %(status)d %(status_text)s. "
+"%(explanation)s"
+msgstr ""
+
#: ipaserver/plugins/join.py:59
msgid "The hostname to register as"
msgstr ""
@@ -12067,35 +14746,35 @@ msgid ""
"'%s'."
msgstr ""
-#: ipaserver/plugins/ldap2.py:323
+#: ipaserver/plugins/ldap2.py:282
msgid "Could not read UPG Definition originfilter. Check your permissions."
msgstr ""
-#: ipaserver/rpcserver.py:475
+#: ipaserver/rpcserver.py:479
msgid "Request must be a dict"
msgstr ""
-#: ipaserver/rpcserver.py:477
+#: ipaserver/rpcserver.py:481
msgid "Request is missing \"method\""
msgstr ""
-#: ipaserver/rpcserver.py:479
+#: ipaserver/rpcserver.py:483
msgid "Request is missing \"params\""
msgstr ""
-#: ipaserver/rpcserver.py:485
+#: ipaserver/rpcserver.py:489
msgid "params must be a list"
msgstr ""
-#: ipaserver/rpcserver.py:487
+#: ipaserver/rpcserver.py:491
msgid "params must contain [args, options]"
msgstr ""
-#: ipaserver/rpcserver.py:490
+#: ipaserver/rpcserver.py:494
msgid "params[0] (aka args) must be a list"
msgstr ""
-#: ipaserver/rpcserver.py:493
+#: ipaserver/rpcserver.py:497
msgid "params[1] (aka options) must be a dict"
msgstr ""
@@ -12119,337 +14798,308 @@ msgstr ""
msgid "read error\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:62
+#: ipa-client/ipa-getkeytab.c:63
#, c-format
msgid "Kerberos context initialization failed: %1$s (%2$d)\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:73
+#: ipa-client/ipa-getkeytab.c:74
#, c-format
msgid "Unable to parse principal: %1$s (%2$d)\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:128
+#: ipa-client/ipa-getkeytab.c:129
#, c-format
msgid "No keys accepted by KDC\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:143
+#: ipa-client/ipa-getkeytab.c:144
#, c-format
msgid "Out of memory \n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:169
+#: ipa-client/ipa-getkeytab.c:170
#, c-format
msgid "Unable to set LDAP_OPT_X_TLS_CERTIFICATE\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:175
+#: ipa-client/ipa-getkeytab.c:176
#, c-format
msgid "Unable to init for ldaps(636) connection\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:182
+#: ipa-client/ipa-getkeytab.c:183
#, c-format
msgid "Unable to set LDAP_OPT_X_TLS\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:188
+#: ipa-client/ipa-getkeytab.c:189
#, c-format
msgid "Unable to init for ldap(389) connection\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:194
+#: ipa-client/ipa-getkeytab.c:195
#, c-format
msgid "Unable to initialize ldap library!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:202 ipa-client/ipa-join.c:240
+#: ipa-client/ipa-getkeytab.c:203 ipa-client/ipa-join.c:243
#, c-format
msgid "Unable to set LDAP_OPT_X_SASL_NOCANON\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:210
+#: ipa-client/ipa-getkeytab.c:211
#, c-format
msgid "Unable to set LDAP_OPT_PROTOCOL_VERSION\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:221
+#: ipa-client/ipa-getkeytab.c:222
#, c-format
msgid "Simple bind failed\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:264
+#: ipa-client/ipa-getkeytab.c:265
#, c-format
-msgid "Operation failed! %s\n"
+msgid "Operation failed: %s\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:273
+#: ipa-client/ipa-getkeytab.c:274
#, c-format
-msgid "Failed to get result! %s\n"
+msgid "Failed to get result: %s\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:279
+#: ipa-client/ipa-getkeytab.c:280
#, c-format
-msgid "Failed to parse extended result! %s\n"
+msgid "Failed to parse extended result: %s\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:286
+#: ipa-client/ipa-getkeytab.c:287
#, c-format
-msgid "Failed to parse result! %s\n"
+msgid "Failed to parse result: %s\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:304
+#: ipa-client/ipa-getkeytab.c:306
#, c-format
msgid "Missing reply control list!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:314
+#: ipa-client/ipa-getkeytab.c:316
#, c-format
msgid "Missing reply control!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:342
+#: ipa-client/ipa-getkeytab.c:356
#, c-format
msgid "Out of Memory!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:349 ipa-client/ipa-getkeytab.c:595
+#: ipa-client/ipa-getkeytab.c:363 ipa-client/ipa-getkeytab.c:522
#, c-format
msgid "Failed to create control!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:355 ipa-client/ipa-getkeytab.c:602
+#: ipa-client/ipa-getkeytab.c:369 ipa-client/ipa-getkeytab.c:529
#, c-format
msgid "Failed to bind to server!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:362
+#: ipa-client/ipa-getkeytab.c:376
#, c-format
msgid "Failed to get keytab!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:371
+#: ipa-client/ipa-getkeytab.c:385
#, c-format
msgid "ber_init() failed, Invalid control ?!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:390
+#: ipa-client/ipa-getkeytab.c:404
#, c-format
msgid "ber_scanf() failed, unable to find kvno ?!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:402
+#: ipa-client/ipa-getkeytab.c:416
#, c-format
msgid "Failed to retrieve encryption type type #%d\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:406
+#: ipa-client/ipa-getkeytab.c:420
#, c-format
msgid "Failed to retrieve encryption type %1$s (#%2$d)\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:416
+#: ipa-client/ipa-getkeytab.c:430
#, c-format
msgid "Failed to retrieve any keys"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:614
-msgid "Failed to find or parse reply control!\n"
-msgstr ""
-
-#: ipa-client/ipa-getkeytab.c:621
-msgid "Failed to parse control head!\n"
-msgstr ""
-
-#: ipa-client/ipa-getkeytab.c:636 ipa-client/ipa-getkeytab.c:656
-#: ipa-client/ipa-getkeytab.c:675 ipa-client/ipa-join.c:408
-#: ipa-client/ipa-join.c:483 ipa-client/ipa-join.c:501
-#: ipa-client/ipa-join.c:602 ipa-client/ipa-join.c:808
-#: ipa-client/ipa-join.c:869 util/ipa_krb5.c:1002 util/ipa_krb5.c:1036
-#, c-format
-msgid "Out of memory!\n"
-msgstr ""
-
-#: ipa-client/ipa-getkeytab.c:647
-msgid "Failed to parse enctype in key data!\n"
-msgstr ""
-
-#: ipa-client/ipa-getkeytab.c:667
-msgid "Failed to parse salt in key data!\n"
-msgstr ""
-
-#: ipa-client/ipa-getkeytab.c:684
-msgid "Failed to parse ending of key data!\n"
+#: ipa-client/ipa-getkeytab.c:544
+msgid "Failed to decode control reply!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:694
-msgid "Failed to parse ending of control!\n"
-msgstr ""
-
-#: ipa-client/ipa-getkeytab.c:724
+#: ipa-client/ipa-getkeytab.c:572
msgid "New Principal Password"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:730
+#: ipa-client/ipa-getkeytab.c:578
msgid "Verify Principal Password"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:765
+#: ipa-client/ipa-getkeytab.c:613
msgid "Print as little as possible"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:765
+#: ipa-client/ipa-getkeytab.c:613
msgid "Output only on errors"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:767
+#: ipa-client/ipa-getkeytab.c:615
msgid "Contact this specific KDC Server"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:768
+#: ipa-client/ipa-getkeytab.c:616
msgid "Server Name"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:770 ipa-client/ipa-rmkeytab.c:171
+#: ipa-client/ipa-getkeytab.c:618
msgid "The principal to get a keytab for (ex: ftp/ftp.example.com@EXAMPLE.COM)"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:771 ipa-client/ipa-rmkeytab.c:172
+#: ipa-client/ipa-getkeytab.c:619 ipa-client/ipa-rmkeytab.c:172
msgid "Kerberos Service Principal Name"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:773 ipa-client/ipa-rmkeytab.c:174
+#: ipa-client/ipa-getkeytab.c:621
msgid "File were to store the keytab information"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:774 ipa-client/ipa-rmkeytab.c:174
+#: ipa-client/ipa-getkeytab.c:622 ipa-client/ipa-rmkeytab.c:174
msgid "Keytab File Name"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:776
+#: ipa-client/ipa-getkeytab.c:624
msgid "Encryption types to request"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:777
+#: ipa-client/ipa-getkeytab.c:625
msgid "Comma separated encryption types list"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:779
+#: ipa-client/ipa-getkeytab.c:627
msgid "Show the list of permitted encryption types and exit"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:780
+#: ipa-client/ipa-getkeytab.c:628
msgid "Permitted Encryption Types"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:782
+#: ipa-client/ipa-getkeytab.c:630
msgid "Asks for a non-random password to use for the principal"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:784
+#: ipa-client/ipa-getkeytab.c:632
msgid "LDAP DN"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:784
+#: ipa-client/ipa-getkeytab.c:632
msgid "DN to bind as if not using kerberos"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:786
+#: ipa-client/ipa-getkeytab.c:634
msgid "LDAP password"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:786
+#: ipa-client/ipa-getkeytab.c:634
msgid "password to use if not using kerberos"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:788
+#: ipa-client/ipa-getkeytab.c:636
msgid "Retrieve current keys without changing them"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:813 ipa-client/ipa-rmkeytab.c:190
+#: ipa-client/ipa-getkeytab.c:661 ipa-client/ipa-rmkeytab.c:190
#, c-format
msgid "Kerberos context initialization failed\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:826 util/ipa_krb5.c:874
+#: ipa-client/ipa-getkeytab.c:674 util/ipa_krb5.c:878
#, c-format
msgid "No system preferred enctypes ?!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:829
+#: ipa-client/ipa-getkeytab.c:677
#, c-format
msgid "Supported encryption types:\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:833
+#: ipa-client/ipa-getkeytab.c:681
#, c-format
msgid "Warning: failed to convert type (#%d)\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:852
+#: ipa-client/ipa-getkeytab.c:700
#, c-format
msgid "Bind password required when using a bind DN.\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:859
+#: ipa-client/ipa-getkeytab.c:707
#, c-format
msgid "Incompatible options provided (-r and -P)\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:870
+#: ipa-client/ipa-getkeytab.c:718
#, c-format
msgid ""
"Warning: salt types are not honored with randomized passwords (see opt. -P)\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:882
+#: ipa-client/ipa-getkeytab.c:730
#, c-format
msgid "Invalid Service Principal Name\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:890
+#: ipa-client/ipa-getkeytab.c:738
#, c-format
msgid "Kerberos Credential Cache not found. Do you have a Kerberos Ticket?\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:898
+#: ipa-client/ipa-getkeytab.c:746
#, c-format
msgid ""
"Kerberos User Principal not found. Do you have a valid Credential Cache?\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:906
+#: ipa-client/ipa-getkeytab.c:754
#, c-format
msgid "Failed to open Keytab\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:921
+#: ipa-client/ipa-getkeytab.c:771
#, c-format
-msgid "Retrying with old method\n"
+msgid "Retrying with pre-4.0 keytab retrieval method...\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:929
+#: ipa-client/ipa-getkeytab.c:781
#, c-format
msgid "Failed to create key material\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:937
+#: ipa-client/ipa-getkeytab.c:789
#, c-format
msgid "Failed to get keytab\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:951
+#: ipa-client/ipa-getkeytab.c:803
#, c-format
msgid "Failed to add key to the keytab\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:960
+#: ipa-client/ipa-getkeytab.c:812
#, c-format
msgid "Failed to close the keytab\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:966
+#: ipa-client/ipa-getkeytab.c:818
#, c-format
msgid "Keytab successfully retrieved and stored in: %s\n"
msgstr ""
@@ -12470,127 +15120,135 @@ msgid "access() on %1$s failed: errno = %2$d\n"
msgstr ""
#: ipa-client/ipa-join.c:134 ipa-client/ipa-join.c:163
-#: ipa-client/ipa-join.c:220
+#: ipa-client/ipa-join.c:223
#, c-format
msgid "Out of memory!"
msgstr ""
-#: ipa-client/ipa-join.c:227
+#: ipa-client/ipa-join.c:230
#, c-format
msgid "Unable to initialize connection to ldap server: %s"
msgstr ""
-#: ipa-client/ipa-join.c:233
+#: ipa-client/ipa-join.c:236
#, c-format
msgid "Unable to enable SSL in LDAP\n"
msgstr ""
-#: ipa-client/ipa-join.c:246
+#: ipa-client/ipa-join.c:249
#, c-format
msgid "Unable to set LDAP version\n"
msgstr ""
-#: ipa-client/ipa-join.c:266
+#: ipa-client/ipa-join.c:269
#, c-format
msgid "Bind failed: %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:337
+#: ipa-client/ipa-join.c:340
#, c-format
msgid "Search for %1$s on rootdse failed with error %2$d\n"
msgstr ""
-#: ipa-client/ipa-join.c:357 ipa-client/ipa-join.c:428
+#: ipa-client/ipa-join.c:360 ipa-client/ipa-join.c:431
#, c-format
msgid "No values for %s"
msgstr ""
-#: ipa-client/ipa-join.c:367
+#: ipa-client/ipa-join.c:370
#, c-format
msgid "Search for IPA namingContext failed with error %d\n"
msgstr ""
-#: ipa-client/ipa-join.c:373
+#: ipa-client/ipa-join.c:376
#, c-format
msgid "IPA namingContext not found\n"
msgstr ""
-#: ipa-client/ipa-join.c:419
+#: ipa-client/ipa-join.c:411 ipa-client/ipa-join.c:484
+#: ipa-client/ipa-join.c:502 ipa-client/ipa-join.c:599
+#: ipa-client/ipa-join.c:805 ipa-client/ipa-join.c:869 util/ipa_krb5.c:1006
+#: util/ipa_krb5.c:1040
+#, c-format
+msgid "Out of memory!\n"
+msgstr ""
+
+#: ipa-client/ipa-join.c:422
#, c-format
msgid "Search for ipaCertificateSubjectBase failed with error %d"
msgstr ""
-#: ipa-client/ipa-join.c:490
+#: ipa-client/ipa-join.c:491
#, c-format
msgid "Unable to determine root DN of %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:508
+#: ipa-client/ipa-join.c:509
#, c-format
msgid "Incorrect password.\n"
msgstr ""
-#: ipa-client/ipa-join.c:516
+#: ipa-client/ipa-join.c:517
#, c-format
msgid "Unable to determine certificate subject of %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:532
+#: ipa-client/ipa-join.c:533
#, c-format
msgid "Enrollment failed. %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:661
+#: ipa-client/ipa-join.c:658
#, c-format
msgid "principal not found in XML-RPC response\n"
msgstr ""
-#: ipa-client/ipa-join.c:676
+#: ipa-client/ipa-join.c:673
#, c-format
msgid "Host is already joined.\n"
msgstr ""
-#: ipa-client/ipa-join.c:751 ipa-client/ipa-join.c:955
+#: ipa-client/ipa-join.c:748 ipa-client/ipa-join.c:956
#, c-format
msgid "Unable to determine IPA server from %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:772 ipa-client/ipa-join.c:970
+#: ipa-client/ipa-join.c:769 ipa-client/ipa-join.c:971
#, c-format
msgid "The hostname must be fully-qualified: %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:781 ipa-client/ipa-join.c:986
+#: ipa-client/ipa-join.c:778 ipa-client/ipa-join.c:987
#, c-format
msgid "Unable to join host: Kerberos context initialization failed\n"
msgstr ""
-#: ipa-client/ipa-join.c:789
+#: ipa-client/ipa-join.c:786
#, c-format
msgid "Error resolving keytab: %s.\n"
msgstr ""
-#: ipa-client/ipa-join.c:798
+#: ipa-client/ipa-join.c:795
#, c-format
msgid "Error getting default Kerberos realm: %s.\n"
msgstr ""
-#: ipa-client/ipa-join.c:816
+#: ipa-client/ipa-join.c:813
#, c-format
msgid "Error parsing \"%1$s\": %2$s.\n"
msgstr ""
-#: ipa-client/ipa-join.c:834
+#: ipa-client/ipa-join.c:832
#, c-format
msgid "Error obtaining initial credentials: %s.\n"
msgstr ""
-#: ipa-client/ipa-join.c:845
+#: ipa-client/ipa-join.c:844
#, c-format
msgid "Unable to generate Kerberos Credential Cache\n"
msgstr ""
-#: ipa-client/ipa-join.c:853
+#: ipa-client/ipa-join.c:852
#, c-format
msgid "Error storing creds in credential cache: %s.\n"
msgstr ""
@@ -12610,102 +15268,102 @@ msgstr ""
msgid "result not found in XML-RPC response\n"
msgstr ""
-#: ipa-client/ipa-join.c:976
+#: ipa-client/ipa-join.c:977
#, c-format
msgid "The hostname must not be: %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:993
+#: ipa-client/ipa-join.c:994
#, c-format
msgid "Unable to join host: Kerberos Credential Cache not found\n"
msgstr ""
-#: ipa-client/ipa-join.c:1001
+#: ipa-client/ipa-join.c:1002
#, c-format
msgid ""
"Unable to join host: Kerberos User Principal not found and host password not "
"provided.\n"
msgstr ""
-#: ipa-client/ipa-join.c:1016
+#: ipa-client/ipa-join.c:1017
#, c-format
msgid "fork() failed\n"
msgstr ""
-#: ipa-client/ipa-join.c:1045
+#: ipa-client/ipa-join.c:1046
#, c-format
msgid "ipa-getkeytab not found\n"
msgstr ""
-#: ipa-client/ipa-join.c:1048
+#: ipa-client/ipa-join.c:1049
#, c-format
msgid "ipa-getkeytab has bad permissions?\n"
msgstr ""
-#: ipa-client/ipa-join.c:1051
+#: ipa-client/ipa-join.c:1052
#, c-format
msgid "executing ipa-getkeytab failed, errno %d\n"
msgstr ""
-#: ipa-client/ipa-join.c:1063
+#: ipa-client/ipa-join.c:1064
#, c-format
msgid "child exited with %d\n"
msgstr ""
-#: ipa-client/ipa-join.c:1069
+#: ipa-client/ipa-join.c:1070
#, c-format
msgid "Certificate subject base is: %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:1107
+#: ipa-client/ipa-join.c:1108
msgid "Print the raw XML-RPC output in GSSAPI mode"
msgstr ""
-#: ipa-client/ipa-join.c:1109
+#: ipa-client/ipa-join.c:1110
msgid "Quiet mode. Only errors are displayed."
msgstr ""
-#: ipa-client/ipa-join.c:1111
+#: ipa-client/ipa-join.c:1112
msgid "Unenroll this host from IPA server"
msgstr ""
-#: ipa-client/ipa-join.c:1113
+#: ipa-client/ipa-join.c:1114
msgid "Hostname of this server"
msgstr ""
-#: ipa-client/ipa-join.c:1113 ipa-client/ipa-join.c:1115
+#: ipa-client/ipa-join.c:1114 ipa-client/ipa-join.c:1116
msgid "hostname"
msgstr ""
-#: ipa-client/ipa-join.c:1115
+#: ipa-client/ipa-join.c:1116
msgid "IPA Server to use"
msgstr ""
-#: ipa-client/ipa-join.c:1117
+#: ipa-client/ipa-join.c:1118
msgid "Specifies where to store keytab information."
msgstr ""
-#: ipa-client/ipa-join.c:1117
+#: ipa-client/ipa-join.c:1118
msgid "filename"
msgstr ""
-#: ipa-client/ipa-join.c:1119
+#: ipa-client/ipa-join.c:1120
msgid "Force the host join. Rejoin even if already joined."
msgstr ""
-#: ipa-client/ipa-join.c:1121
+#: ipa-client/ipa-join.c:1122
msgid "LDAP password (if not using Kerberos)"
msgstr ""
-#: ipa-client/ipa-join.c:1121
+#: ipa-client/ipa-join.c:1122
msgid "password"
msgstr ""
-#: ipa-client/ipa-join.c:1123
+#: ipa-client/ipa-join.c:1124
msgid "LDAP basedn"
msgstr ""
-#: ipa-client/ipa-join.c:1123
+#: ipa-client/ipa-join.c:1124
msgid "basedn"
msgstr ""
@@ -12777,6 +15435,15 @@ msgstr ""
msgid "Debugging output"
msgstr ""
+#: ipa-client/ipa-rmkeytab.c:171
+msgid ""
+"The principal to remove from the keytab (ex: ftp/ftp.example.com@EXAMPLE.COM)"
+msgstr ""
+
+#: ipa-client/ipa-rmkeytab.c:174
+msgid "The keytab file to remove the principcal(s) from"
+msgstr ""
+
#: ipa-client/ipa-rmkeytab.c:176
msgid "Remove all principals in this realm"
msgstr ""
@@ -12796,35 +15463,35 @@ msgstr ""
msgid "krb5_kt_close %1$d: %2$s\n"
msgstr ""
-#: util/ipa_krb5.c:795 util/ipa_krb5.c:810
+#: util/ipa_krb5.c:799 util/ipa_krb5.c:814
msgid "Out of memory\n"
msgstr ""
-#: util/ipa_krb5.c:828
+#: util/ipa_krb5.c:832
msgid "Warning unrecognized encryption type.\n"
msgstr ""
-#: util/ipa_krb5.c:842
+#: util/ipa_krb5.c:846
msgid "Warning unrecognized salt type.\n"
msgstr ""
-#: util/ipa_krb5.c:882
+#: util/ipa_krb5.c:886
msgid "Out of memory!?\n"
msgstr ""
-#: util/ipa_krb5.c:917
+#: util/ipa_krb5.c:921
msgid "Enctype comparison failed!\n"
msgstr ""
-#: util/ipa_krb5.c:982
+#: util/ipa_krb5.c:986
msgid "Failed to create random key!\n"
msgstr ""
-#: util/ipa_krb5.c:995 util/ipa_krb5.c:1013 util/ipa_krb5.c:1021
-#: util/ipa_krb5.c:1061
+#: util/ipa_krb5.c:999 util/ipa_krb5.c:1017 util/ipa_krb5.c:1025
+#: util/ipa_krb5.c:1065
msgid "Failed to create key!\n"
msgstr ""
-#: util/ipa_krb5.c:1047
+#: util/ipa_krb5.c:1051
msgid "Bad or unsupported salt type.\n"
msgstr ""