summaryrefslogtreecommitdiffstats
path: root/install/po
diff options
context:
space:
mode:
authorPavel Zuna <pzuna@redhat.com>2011-03-14 16:24:11 -0400
committerRob Crittenden <rcritten@redhat.com>2011-03-18 14:59:34 -0400
commitb2a4f1c049d2377932537072a9699db7c6fcd458 (patch)
tree8659ef14e23cd9130c5fdcbeddbf14eb8a7b170f /install/po
parent0832bf5a6a32926c41a8a571569453d8ba9432fa (diff)
downloadfreeipa-b2a4f1c049d2377932537072a9699db7c6fcd458.tar.gz
freeipa-b2a4f1c049d2377932537072a9699db7c6fcd458.tar.xz
freeipa-b2a4f1c049d2377932537072a9699db7c6fcd458.zip
Update translation file (ipa.pot).
Diffstat (limited to 'install/po')
-rw-r--r--install/po/ipa.pot7046
1 files changed, 6091 insertions, 955 deletions
diff --git a/install/po/ipa.pot b/install/po/ipa.pot
index 41ddcd5ed..96acd1e0c 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: 2010-10-13 14:22-0400\n"
+"POT-Creation-Date: 2011-03-14 16:23-0400\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"
@@ -19,1507 +19,4622 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: ipalib/cli.py:507
-#, python-format
-msgid "Enter %(label)s again to verify: "
+#: ipalib/plugins/__init__.py:20
+msgid ""
+"\n"
+"Sub-package containing all core plugins.\n"
msgstr ""
-#: ipalib/cli.py:511 ipa-client/ipa-getkeytab.c:730
-#, c-format
-msgid "Passwords do not match!"
+#: ipalib/plugins/aci.py:20
+msgid ""
+"\n"
+"Directory Server Access Control Instructions (ACIs)\n"
+"\n"
+"ACIs are used to allow or deny access to information. This module is\n"
+"currently designed to allow, not deny, access.\n"
+"\n"
+"The aci commands are designed to grant permissions that allow updating\n"
+"existing entries or adding or deleting new ones. The goal of the ACIs\n"
+"that ship with IPA is to provide a set of low-level permissions that\n"
+"grant access to special groups called taskgroups. These low-level\n"
+"permissions can be combined into roles that grant broader access. These\n"
+"roles are another type of group, roles.\n"
+"\n"
+"For example, if you have taskgroups that allow adding and modifying users "
+"you\n"
+"could create a role, useradmin. You would assign users to the useradmin\n"
+"role to allow them to do the operations defined by the taskgroups.\n"
+"\n"
+"You can create ACIs that delegate permission so users in group A can write\n"
+"attributes on group B.\n"
+"\n"
+"The type option is a map that applies to all entries in the users, groups "
+"or\n"
+"host location. It is primarily designed to be used when granting add\n"
+"permissions (to write new entries).\n"
+"\n"
+"An ACI consists of three parts:\n"
+"1. target\n"
+"2. permissions\n"
+"3. bind rules\n"
+"\n"
+"The target is a set of rules that define which LDAP objects are being\n"
+"targeted. This can include a list of attributes, an area of that LDAP\n"
+"tree or an LDAP filter.\n"
+"\n"
+"The targets include:\n"
+"- attrs: list of attributes affected\n"
+"- type: an object type (user, group, host, service, etc)\n"
+"- memberof: members of a group\n"
+"- targetgroup: grant access to modify a specific group. This is primarily\n"
+" designed to enable users to add or remove members of a specific group.\n"
+"- filter: A legal LDAP filter used to narrow the scope of the target.\n"
+"- subtree: Used to apply a rule across an entire set of objects. For "
+"example,\n"
+" to allow adding users you need to grant \"add\" permission to the subtree\n"
+" ldap://uid=*,cn=users,cn=accounts,dc=example,dc=com. The subtree option\n"
+" is a fail-safe for objects that may not be covered by the type option.\n"
+"\n"
+"The permissions define what the the ACI is allowed to do, and are one or\n"
+"more of:\n"
+"1. write - write one or more attributes\n"
+"2. read - read one or more attributes\n"
+"3. add - add a new entry to the tree\n"
+"4. delete - delete an existing entry\n"
+"5. all - all permissions are granted\n"
+"\n"
+"Note the distinction between attributes and entries. The permissions are\n"
+"independent, so being able to add a user does not mean that the user will\n"
+"be editabe.\n"
+"\n"
+"The bind rule defines who this ACI grants permissions to. The LDAP server\n"
+"allows this to be any valid LDAP entry but we encourage the use of\n"
+"taskgroups so that the rights can be easily shared through roles.\n"
+"\n"
+"For a more thorough description of access controls see\n"
+"http://www.redhat.com/docs/manuals/dir-server/ag/8.0/Managing_Access_Control."
+"html\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+"NOTE: ACIs are now added via the permision plugin. These examples are to\n"
+"demonstrate how the various options work but this is done via the "
+"permission\n"
+"command-line now (see last example).\n"
+"\n"
+" Add an ACI so that the group \"secretaries\" can update the address on any "
+"user:\n"
+" ipa group-add --desc=\"Office secretaries\" secretaries\n"
+" ipa aci-add --attrs=streetAddress --memberof=ipausers --group=secretaries "
+"--permissions=write --prefix=none \"Secretaries write addresses\"\n"
+"\n"
+" Show the new ACI:\n"
+" ipa aci-show --prefix=none \"Secretaries write addresses\"\n"
+"\n"
+" Add an ACI that allows members of the \"addusers\" permission to add new "
+"users:\n"
+" ipa aci-add --type=user --permission=addusers --permissions=add --"
+"prefix=none \"Add new users\"\n"
+"\n"
+" Add an ACI that allows members of the editors manage members of the admins "
+"group:\n"
+" ipa aci-add --permissions=write --attrs=member --targetgroup=admins --"
+"group=editors --prefix=none \"Editors manage admins\"\n"
+"\n"
+" Add an ACI that allows members of the admin group to manage the street and "
+"zip code of those in the editors group:\n"
+" ipa aci-add --permissions=write --memberof=editors --group=admins --"
+"attrs=street,postalcode --prefix=none \"admins edit the address of editors"
+"\"\n"
+"\n"
+" Add an ACI that allows the admins group manage the street and zipcode of "
+"those who work for the boss:\n"
+" ipa aci-add --permissions=write --group=admins --attrs=street,postalcode "
+"--filter=\"(manager=uid=boss,cn=users,cn=accounts,dc=example,dc=com)\" --"
+"prefix=none \"Edit the address of those who work for the boss\"\n"
+"\n"
+" Add an entirely new kind of record to IPA that isn't covered by any of the "
+"--type options, creating a permission:\n"
+" ipa permission-add --permissions=add --subtree=\"cn=*,cn=orange,"
+"cn=accounts,dc=example,dc=com\" --desc=\"Add Orange Entries\" add_orange\n"
+"\n"
+"\n"
+"The show command shows the raw 389-ds ACI.\n"
+"\n"
+"IMPORTANT: When modifying the target attributes of an existing ACI you\n"
+"must include all existing attributes as well. When doing an aci-mod the\n"
+"targetattr REPLACES the current attributes, it does not add to them.\n"
+"\n"
msgstr ""
-#: ipalib/cli.py:516
-msgid "Cancelled."
+#: ipalib/plugins/aci.py:153
+msgid "A list of ACI values"
msgstr ""
-#: ipalib/errors.py:297
-#, python-format
-msgid "%(cver)s client incompatible with %(sver)s server at %(server)r"
+#: ipalib/plugins/aci.py:172
+msgid ""
+"\n"
+" Given a name and a prefix construct an ACI name.\n"
+" "
msgstr ""
-#: ipalib/errors.py:315
-#, python-format
-msgid "unknown error %(code)d from %(server)s: %(error)s"
+#: ipalib/plugins/aci.py:181
+msgid ""
+"\n"
+" Parse the raw ACI name and return a tuple containing the ACI prefix\n"
+" and the actual ACI name.\n"
+" "
msgstr ""
-#: ipalib/errors.py:331
-msgid "an internal error has occurred"
+#: ipalib/plugins/aci.py:193
+msgid ""
+"\n"
+" Pull the group name out of a memberOf filter\n"
+" "
msgstr ""
-#: ipalib/errors.py:353
-#, python-format
-msgid "an internal error has occurred on server at %(server)r"
+#: ipalib/plugins/aci.py:204
+msgid ""
+"\n"
+" Given a name and a set of keywords construct an ACI.\n"
+" "
msgstr ""
-#: ipalib/errors.py:369
-#, python-format
-msgid "unknown command %(name)r"
+#: ipalib/plugins/aci.py:215
+msgid "type, filter, subtree and targetgroup are mutually exclusive"
msgstr ""
-#: ipalib/errors.py:386 ipalib/errors.py:411
-#, python-format
-msgid "error on server %(server)r: %(error)s"
+#: ipalib/plugins/aci.py:218
+msgid "ACI prefix is required"
msgstr ""
-#: ipalib/errors.py:402
-#, python-format
-msgid "cannot connect to %(uri)r: %(error)s"
+#: ipalib/plugins/aci.py:221
+msgid ""
+"at least one of: type, filter, subtree, targetgroup, attrs or memberof are "
+"required"
msgstr ""
-#: ipalib/errors.py:420
-#, python-format
-msgid "Invalid JSON-RPC request: %(error)s"
+#: ipalib/plugins/aci.py:224
+msgid "filter and memberof are mutually exclusive"
msgstr ""
-#: ipalib/errors.py:448
-#, python-format
-msgid "Kerberos error: %(major)s/%(minor)s"
+#: ipalib/plugins/aci.py:230
+msgid "group, permission and self are mutually exclusive"
msgstr ""
-#: ipalib/errors.py:465
-msgid "did not receive Kerberos credentials"
+#: ipalib/plugins/aci.py:232
+msgid "One of group, permission or self is required"
msgstr ""
-#: ipalib/errors.py:481
-#, python-format
-msgid "Service %(service)r not found in Kerberos database"
+#: ipalib/plugins/aci.py:251
+msgid "Group '%s' does not exist"
msgstr ""
-#: ipalib/errors.py:497
-msgid "No credentials cache found"
+#: ipalib/plugins/aci.py:273
+msgid "empty filter"
msgstr ""
-#: ipalib/errors.py:513
-msgid "Ticket expired"
+#: ipalib/plugins/aci.py:294
+msgid "Syntax Error: %(error)s"
msgstr ""
-#: ipalib/errors.py:529
-msgid "Credentials cache permissions incorrect"
+#: ipalib/plugins/aci.py:299
+msgid ""
+"Convert an ACI into its equivalent keywords.\n"
+"\n"
+" This is used for the modify operation so we can merge the\n"
+" incoming kw and existing ACI and pass the result to\n"
+" _make_aci().\n"
+" "
msgstr ""
-#: ipalib/errors.py:545
-msgid "Bad format in credentials cache"
+#: ipalib/plugins/aci.py:379
+msgid "ACI with name \"%s\" not found"
msgstr ""
-#: ipalib/errors.py:561
-msgid "Cannot resolve KDC for requested realm"
+#: ipalib/plugins/aci.py:400
+msgid "ACI prefix"
msgstr ""
-#: ipalib/errors.py:580
-#, python-format
-msgid "Insufficient access: %(info)s"
+#: ipalib/plugins/aci.py:401
+msgid ""
+"Prefix used to distinguish ACI types (permission, delegation, selfservice, "
+"none)"
msgstr ""
-#: ipalib/errors.py:624
-#, python-format
-msgid "command %(name)r takes no arguments"
+#: ipalib/plugins/aci.py:407
+msgid ""
+"\n"
+" ACI object.\n"
+" "
msgstr ""
-#: ipalib/errors.py:644
-#, python-format
-msgid "command %(name)r takes at most %(count)d argument"
-msgid_plural "command %(name)r takes at most %(count)d arguments"
-msgstr[0] ""
-msgstr[1] ""
+#: ipalib/plugins/aci.py:412
+msgid "ACIs"
+msgstr ""
-#: ipalib/errors.py:674
-#, python-format
-msgid "overlapping arguments and options: %(names)r"
+#: ipalib/plugins/aci.py:417
+msgid "ACI name"
msgstr ""
-#: ipalib/errors.py:690
-#, python-format
-msgid "%(name)r is required"
+#: ipalib/plugins/aci.py:422
+msgid "Permission"
msgstr ""
-#: ipalib/errors.py:706 ipalib/errors.py:722
-#, python-format
-msgid "invalid %(name)r: %(error)s"
+#: ipalib/plugins/aci.py:423
+msgid "Permission ACI grants access to"
msgstr ""
-#: ipalib/errors.py:738
-#, python-format
-msgid "api has no such namespace: %(name)r"
+#: ipalib/plugins/aci.py:427 ipalib/plugins/delegation.py:130
+msgid "User group"
msgstr ""
-#: ipalib/errors.py:747
-msgid "Passwords do not match"
+#: ipalib/plugins/aci.py:428 ipalib/plugins/delegation.py:131
+msgid "User group ACI grants access to"
msgstr ""
-#: ipalib/errors.py:755
-msgid "Command not implemented"
+#: ipalib/plugins/aci.py:432 ipalib/plugins/baseldap.py:60
+#: ipalib/plugins/delegation.py:113 ipalib/plugins/permission.py:107
+#: ipalib/plugins/permission.py:118 ipalib/plugins/selfservice.py:86
+msgid "Permissions"
msgstr ""
-#: ipalib/errors.py:783 ipalib/errors.py:1023 ipalib/errors.py:1254
-#, python-format
-msgid "%(reason)s"
+#: ipalib/plugins/aci.py:433
+msgid ""
+"comma-separated list of permissions to grant(read, write, add, delete, all)"
msgstr ""
-#: ipalib/errors.py:799
-msgid "This entry already exists"
+#: ipalib/plugins/aci.py:439 ipalib/plugins/delegation.py:119
+#: ipalib/plugins/permission.py:124 ipalib/plugins/selfservice.py:92
+msgid "Attributes"
msgstr ""
-#: ipalib/errors.py:815
-msgid "You must enroll a host in order to create a host service"
+#: ipalib/plugins/aci.py:440 ipalib/plugins/delegation.py:120
+#: ipalib/plugins/permission.py:125 ipalib/plugins/selfservice.py:93
+msgid "Comma-separated list of attributes"
msgstr ""
-#: ipalib/errors.py:831
-#, python-format
-msgid ""
-"Service principal is not of the form: service/fully-qualified host name: "
-"%(reason)s"
+#: ipalib/plugins/aci.py:444 ipalib/plugins/internal.py:158
+#: ipalib/plugins/permission.py:131
+msgid "Type"
msgstr ""
-#: ipalib/errors.py:847
-msgid ""
-"The realm for the principal does not match the realm for this IPA server"
+#: ipalib/plugins/aci.py:445
+msgid "type of IPA object (user, group, host, hostgroup, service, netgroup)"
msgstr ""
-#: ipalib/errors.py:863
-msgid "This command requires root access"
+#: ipalib/plugins/aci.py:450
+msgid "Member of"
msgstr ""
-#: ipalib/errors.py:879
-msgid "This is already a posix group"
+#: ipalib/plugins/aci.py:451
+msgid "Member of a group"
msgstr ""
-#: ipalib/errors.py:895
-#, python-format
-msgid "Principal is not of the form user@REALM: %(principal)r"
+#: ipalib/plugins/aci.py:455 ipalib/plugins/internal.py:228
+#: ipalib/plugins/permission.py:144
+msgid "Filter"
msgstr ""
-#: ipalib/errors.py:911
-msgid "This entry is already unlocked"
+#: ipalib/plugins/aci.py:456 ipalib/plugins/permission.py:145
+msgid "Legal LDAP filter (e.g. ou=Engineering)"
msgstr ""
-#: ipalib/errors.py:927
-msgid "This entry is already locked"
+#: ipalib/plugins/aci.py:460 ipalib/plugins/permission.py:150
+msgid "Subtree"
msgstr ""
-#: ipalib/errors.py:943
-msgid "This entry has nsAccountLock set, it cannot be locked or unlocked"
+#: ipalib/plugins/aci.py:461
+msgid "Subtree to apply ACI to"
msgstr ""
-#: ipalib/errors.py:959
-msgid "This entry is not a member of the group"
+#: ipalib/plugins/aci.py:465 ipalib/plugins/permission.py:156
+msgid "Target group"
msgstr ""
-#: ipalib/errors.py:975
-msgid "A group may not be a member of itself"
+#: ipalib/plugins/aci.py:466
+msgid "Group to apply ACI to"
msgstr ""
-#: ipalib/errors.py:991
-msgid "This entry is already a member of the group"
+#: ipalib/plugins/aci.py:470
+msgid "Target your own entry (self)"
msgstr ""
-#: ipalib/errors.py:1007
-#, python-format
-msgid "Base64 decoding failed: %(reason)s"
+#: ipalib/plugins/aci.py:471
+msgid "Apply ACI to your own entry (self)"
msgstr ""
-#: ipalib/errors.py:1039
-msgid "A group may not be added as a member of itself"
+#: ipalib/plugins/aci.py:478
+msgid ""
+"\n"
+" Create new ACI.\n"
+" "
msgstr ""
-#: ipalib/errors.py:1055
-msgid "The default users group cannot be removed"
+#: ipalib/plugins/aci.py:482
+msgid "Created ACI \"%(value)s\""
msgstr ""
-#: ipalib/errors.py:1071
-msgid "Host does not have corresponding DNS A record"
+#: ipalib/plugins/aci.py:487
+msgid "Test the ACI syntax but don't write anything"
msgstr ""
-#: ipalib/errors.py:1086
-msgid "Deleting a managed group is not allowed. It must be detached first."
+#: ipalib/plugins/aci.py:493
+msgid ""
+"\n"
+" Execute the aci-create operation.\n"
+"\n"
+" Returns the entry as it will be created in LDAP.\n"
+"\n"
+" :param aciname: The name of the ACI being added.\n"
+" :param kw: Keyword arguments for the other LDAP attributes.\n"
+" "
msgstr ""
-#: ipalib/errors.py:1109
-#, python-format
-msgid "no command nor help topic %(topic)r"
+#: ipalib/plugins/aci.py:533
+msgid ""
+"\n"
+" Delete ACI.\n"
+" "
msgstr ""
-#: ipalib/errors.py:1133
-msgid "change collided with another change"
+#: ipalib/plugins/aci.py:538
+msgid "Deleted ACI \"%(value)s\""
msgstr ""
-#: ipalib/errors.py:1149
-msgid "no modifications to be performed"
+#: ipalib/plugins/aci.py:543
+msgid ""
+"\n"
+" Execute the aci-delete operation.\n"
+"\n"
+" :param aciname: The name of the ACI being added.\n"
+" :param kw: unused\n"
+" "
msgstr ""
-#: ipalib/errors.py:1165
-#, python-format
-msgid "%(desc)s:%(info)s"
+#: ipalib/plugins/aci.py:576
+msgid ""
+"\n"
+" Modify ACI.\n"
+" "
msgstr ""
-#: ipalib/errors.py:1181
-msgid "limits exceeded for this query"
+#: ipalib/plugins/aci.py:582 ipalib/plugins/aci.py:830
+#: ipalib/plugins/aci.py:871 ipalib/plugins/delegation.py:255
+#: ipalib/plugins/selfservice.py:212
+msgid "ACI"
msgstr ""
-#: ipalib/errors.py:1196
-#, python-format
-msgid "%(info)s"
+#: ipalib/plugins/aci.py:588
+msgid "Modified ACI \"%(value)s\""
msgstr ""
-#: ipalib/errors.py:1221
-#, python-format
-msgid "Certificate operation cannot be completed: %(error)s"
+#: ipalib/plugins/aci.py:633
+msgid ""
+"\n"
+" Search for ACIs.\n"
+"\n"
+" Returns a list of ACIs\n"
+"\n"
+" EXAMPLES:\n"
+"\n"
+" To find all ACIs that apply directly to members of the group ipausers:\n"
+" ipa aci-find --memberof=ipausers\n"
+"\n"
+" To find all ACIs that grant add access:\n"
+" ipa aci-find --permissions=add\n"
+"\n"
+" Note that the find command only looks for the given text in the set of\n"
+" ACIs, it does not evaluate the ACIs to see if something would apply.\n"
+" For example, searching on memberof=ipausers will find all ACIs that\n"
+" have ipausers as a memberof. There may be other ACIs that apply to\n"
+" members of that group indirectly.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/aci.py:653
+msgid "%(count)d ACI matched"
+msgid_plural "%(count)d ACIs matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/aci.py:823
+msgid ""
+"\n"
+" Display a single ACI given an ACI name.\n"
+" "
msgstr ""
-#: ipalib/errors.py:1237
-#, python-format
-msgid "Certificate format error: %(error)s"
+#: ipalib/plugins/aci.py:837
+msgid ""
+"\n"
+" Execute the aci-show operation.\n"
+"\n"
+" Returns the entry\n"
+"\n"
+" :param uid: The login name of the user to retrieve.\n"
+" :param kw: unused\n"
+" "
msgstr ""
-#: ipalib/frontend.py:380
-msgid "Results are truncated, try a more specific search"
+#: ipalib/plugins/aci.py:865
+msgid ""
+"\n"
+" Rename an ACI.\n"
+" "
msgstr ""
-#: ipalib/frontend.py:797 ipalib/plugins/misc.py:47
-msgid "retrieve all attributes"
+#: ipalib/plugins/aci.py:878
+msgid "New ACI name"
msgstr ""
-#: ipalib/frontend.py:803
-msgid "print entries as stored on the server"
+#: ipalib/plugins/aci.py:882
+msgid "Renamed ACI to \"%(value)s\""
msgstr ""
-#: ipalib/frontend.py:940
-msgid "Forward to server instead of running locally"
+#: ipalib/plugins/automount.py:20
+msgid ""
+"\n"
+"Automount\n"
+"\n"
+"Stores automount(8) configuration for autofs(8) in IPA.\n"
+"\n"
+"The base of an automount configuration is the configuration file auto."
+"master.\n"
+"This is also the base location in IPA. Multiple auto.master configurations\n"
+"can be stored in separate locations. A location is implementation-specific\n"
+"with the default being a location named 'default'. For example, you can "
+"have\n"
+"locations by geographic region, by floor, by type, etc.\n"
+"\n"
+"Automount has three basic object types: locations, maps and keys.\n"
+"\n"
+"A location defines a set of maps anchored in auto.master. This allows you\n"
+"to store multiple automount configurations. A location in itself isn't\n"
+"very interesting, it is just a point to start a new automount map.\n"
+"\n"
+"A map is roughly equivalent to a discrete automount file and provides\n"
+"storage for keys.\n"
+"\n"
+"A key is a mount point associated with a map.\n"
+"\n"
+"When a new location is created, two maps are automatically created for\n"
+"it: auto.master and auto.direct. auto.master is the root map for all\n"
+"automount maps for the location. auto.direct is the default map for\n"
+"direct mounts and is mounted on /-.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+"Locations:\n"
+"\n"
+" Create a named location, \"Baltimore\":\n"
+" ipa automountlocation-add baltimore\n"
+"\n"
+" Display the new location:\n"
+" ipa automountlocation-show baltimore\n"
+"\n"
+" Find available locations:\n"
+" ipa automountlocation-find\n"
+"\n"
+" Remove a named automount location:\n"
+" ipa automountlocation-del baltimore\n"
+"\n"
+" Show what the automount maps would look like if they were in the "
+"filesystem:\n"
+" ipa automountlocation-tofiles baltimore\n"
+"\n"
+" Import an existing configuration into a location:\n"
+" ipa automountlocation-import baltimore /etc/auto.master\n"
+"\n"
+" The import will fail if any duplicate entries are found. For\n"
+" continuous operation where errors are ignored, use the --continue\n"
+" option.\n"
+"\n"
+"Maps:\n"
+"\n"
+" Create a new map, \"auto.share\":\n"
+" ipa automountmap-add baltimore auto.share\n"
+"\n"
+" Display the new map:\n"
+" ipa automountmap-show baltimore auto.share\n"
+"\n"
+" Find maps in the location baltimore:\n"
+" ipa automountmap-find baltimore\n"
+"\n"
+" Remove the auto.share map:\n"
+" ipa automountmap-del baltimore auto.share\n"
+"\n"
+"Keys:\n"
+"\n"
+" Create a new key for the auto.share map in location baltimore. This ties\n"
+" the map we previously created to auto.master:\n"
+" ipa automountkey-add baltimore auto.master --key=/share --info=auto."
+"share\n"
+"\n"
+" Create a new key for our auto.share map, an NFS mount for man pages:\n"
+" ipa automountkey-add baltimore auto.share --key=man --info=\"-ro,soft,"
+"rsize=8192,wsize=8192 ipa.example.com:/shared/man\"\n"
+"\n"
+" Find all keys for the auto.share map:\n"
+" ipa automountkey-find baltimore auto.share\n"
+"\n"
+" Find all direct automount keys:\n"
+" ipa automountkey-find baltimore --key=/-\n"
+"\n"
+" Remove the man key from the auto.share map:\n"
+" ipa automountkey-del baltimore auto.share --key=man\n"
+msgstr ""
+
+#: ipalib/plugins/automount.py:181
+msgid ""
+"\n"
+" Location container for automount maps.\n"
+" "
msgstr ""
-#: ipalib/output.py:92
-msgid "A dictionary representing an LDAP entry"
+#: ipalib/plugins/automount.py:189
+msgid "Automount"
msgstr ""
-#: ipalib/output.py:100
-msgid "A list of LDAP entries"
+#: ipalib/plugins/automount.py:195 ipalib/plugins/host.py:230
+msgid "Location"
msgstr ""
-#: ipalib/output.py:111
-msgid "All commands should at least have a result"
+#: ipalib/plugins/automount.py:196
+msgid "Automount location name."
msgstr ""
-#: ipalib/parameters.py:295
-msgid "incorrect type"
+#: ipalib/plugins/automount.py:205
+msgid ""
+"\n"
+" Create a new automount location.\n"
+" "
msgstr ""
-#: ipalib/parameters.py:298
-msgid "Only one value is allowed"
+#: ipalib/plugins/automount.py:220
+msgid ""
+"\n"
+" Delete an automount location.\n"
+" "
msgstr ""
-#: ipalib/parameters.py:877
-msgid "must be True or False"
+#: ipalib/plugins/automount.py:228
+msgid ""
+"\n"
+" Display an automount location.\n"
+" "
msgstr ""
-#: ipalib/parameters.py:978
-msgid "must be an integer"
+#: ipalib/plugins/automount.py:236
+msgid ""
+"\n"
+" Search for an automount location.\n"
+" "
msgstr ""
-#: ipalib/parameters.py:1029
-#, python-format
-msgid "must be at least %(minvalue)d"
+#: ipalib/plugins/automount.py:244
+msgid ""
+"\n"
+" Generate automount files for a specific location.\n"
+" "
msgstr ""
-#: ipalib/parameters.py:1039
-#, python-format
-msgid "can be at most %(maxvalue)d"
+#: ipalib/plugins/automount.py:307
+msgid ""
+"\n"
+" Import automount files for a specific location.\n"
+" "
msgstr ""
-#: ipalib/parameters.py:1049
-msgid "must be a decimal number"
+#: ipalib/plugins/automount.py:313
+msgid "Master file"
msgstr ""
-#: ipalib/parameters.py:1071
-#, python-format
-msgid "must be at least %(minvalue)f"
+#: ipalib/plugins/automount.py:314
+msgid "Automount master file."
msgstr ""
-#: ipalib/parameters.py:1081
-#, python-format
-msgid "can be at most %(maxvalue)f"
+#: ipalib/plugins/automount.py:321
+msgid ""
+"Continuous operation mode. Errors are reported but the process continues."
msgstr ""
-#: ipalib/parameters.py:1145
-#, python-format
-msgid "must match pattern \"%(pattern)s\""
+#: ipalib/plugins/automount.py:333
+msgid "File %(file)s not found"
msgstr ""
-#: ipalib/parameters.py:1163
-msgid "must be binary data"
+#: ipalib/plugins/automount.py:340
+msgid ""
+"\n"
+" The basic idea is to read the master file and create all the maps\n"
+" we need, then read each map file and add all the keys for the map.\n"
+" "
msgstr ""
-#: ipalib/parameters.py:1179
-#, python-format
-msgid "must be at least %(minlength)d bytes"
+#: ipalib/plugins/automount.py:491
+msgid ""
+"\n"
+" Automount map object.\n"
+" "
msgstr ""
-#: ipalib/parameters.py:1189
-#, python-format
-msgid "can be at most %(maxlength)d bytes"
+#: ipalib/plugins/automount.py:504
+msgid "Map"
msgstr ""
-#: ipalib/parameters.py:1199
-#, python-format
-msgid "must be exactly %(length)d bytes"
+#: ipalib/plugins/automount.py:505
+msgid "Automount map name."
msgstr ""
-#: ipalib/parameters.py:1217
-msgid "must be Unicode text"
+#: ipalib/plugins/automount.py:510 ipalib/plugins/group.py:113
+#: ipalib/plugins/hbacrule.py:171 ipalib/plugins/hbacsvc.py:73
+#: ipalib/plugins/hbacsvcgroup.py:75 ipalib/plugins/host.py:220
+#: ipalib/plugins/hostgroup.py:85 ipalib/plugins/netgroup.py:109
+#: ipalib/plugins/privilege.py:76 ipalib/plugins/role.py:93
+#: ipalib/plugins/sudocmd.py:74 ipalib/plugins/sudocmdgroup.py:76
+#: ipalib/plugins/sudorule.py:78
+msgid "Description"
msgstr ""
-#: ipalib/parameters.py:1248
-#, python-format
-msgid "must be at least %(minlength)d characters"
+#: ipalib/plugins/automount.py:514
+msgid "Automount Maps"
msgstr ""
-#: ipalib/parameters.py:1258
-#, python-format
-msgid "can be at most %(maxlength)d characters"
+#: ipalib/plugins/automount.py:520
+msgid ""
+"\n"
+" Create a new automount map.\n"
+" "
msgstr ""
-#: ipalib/parameters.py:1268
-#, python-format
-msgid "must be exactly %(length)d characters"
+#: ipalib/plugins/automount.py:528
+msgid ""
+"\n"
+" Delete an automount map.\n"
+" "
msgstr ""
-#: ipalib/parameters.py:1307
-#, python-format
-msgid "must be one of %(values)r"
+#: ipalib/plugins/automount.py:547
+msgid ""
+"\n"
+" Modify an automount map.\n"
+" "
msgstr ""
-#: ipalib/plugins/aci.py:111
-msgid "A list of ACI values"
+#: ipalib/plugins/automount.py:555
+msgid ""
+"\n"
+" Search for an automount map.\n"
+" "
msgstr ""
-#: ipalib/plugins/aci.py:142
-msgid "type, filter, subtree and targetgroup are mutually exclusive"
+#: ipalib/plugins/automount.py:563
+msgid ""
+"\n"
+" Display an automount map.\n"
+" "
msgstr ""
-#: ipalib/plugins/aci.py:145
+#: ipalib/plugins/automount.py:571
msgid ""
-"at least one of: type, filter, subtree, targetgroup, attrs or memberof are "
-"required"
+"\n"
+" Automount key object.\n"
+" "
msgstr ""
-#: ipalib/plugins/aci.py:151
-msgid "group, taskgroup and self are mutually exclusive"
+#: ipalib/plugins/automount.py:588 ipalib/plugins/automount.py:724
+#: ipalib/plugins/automount.py:796
+msgid "Key"
msgstr ""
-#: ipalib/plugins/aci.py:153
-msgid "One of group, taskgroup or self is required"
+#: ipalib/plugins/automount.py:589 ipalib/plugins/automount.py:725
+#: ipalib/plugins/automount.py:797
+msgid "Automount key name."
msgstr ""
-#: ipalib/plugins/aci.py:172
-#, python-format
-msgid "Group '%s' does not exist"
+#: ipalib/plugins/automount.py:593 ipalib/plugins/automount.py:729
+#: ipalib/plugins/automount.py:801
+msgid "Mount information"
msgstr ""
-#: ipalib/plugins/aci.py:269
-#, python-format
-msgid "ACI with name \"%s\" not found"
+#: ipalib/plugins/automount.py:596
+msgid "description"
msgstr ""
-#: ipalib/plugins/aci.py:286
-msgid "ACIs"
+#: ipalib/plugins/automount.py:605
+msgid "Automount Keys"
msgstr ""
-#: ipalib/plugins/aci.py:291
-msgid "ACI name"
+#: ipalib/plugins/automount.py:606
+msgid ""
+"The key,info pair must be unique. A key named %(key)s with info %(info)s "
+"already exists"
msgstr ""
-#: ipalib/plugins/aci.py:296
-msgid "Taskgroup"
+#: ipalib/plugins/automount.py:607
+msgid "The automount key %(key)s with info %(info)s does not exist"
msgstr ""
-#: ipalib/plugins/aci.py:297
-msgid "Taskgroup ACI grants access to"
+#: ipalib/plugins/automount.py:667
+msgid ""
+"\n"
+" Create a new automount key.\n"
+" "
msgstr ""
-#: ipalib/plugins/aci.py:301
-msgid "User group"
+#: ipalib/plugins/automount.py:688
+msgid ""
+"\n"
+" Create a new indirect mount point.\n"
+" "
msgstr ""
-#: ipalib/plugins/aci.py:302
-msgid "User group ACI grants access to"
+#: ipalib/plugins/automount.py:694
+msgid "Mount point"
msgstr ""
-#: ipalib/plugins/aci.py:306
-msgid "Permissions"
+#: ipalib/plugins/automount.py:698
+msgid "Parent map"
+msgstr ""
+
+#: ipalib/plugins/automount.py:699
+msgid "Name of parent automount map (default: auto.master)."
msgstr ""
-#: ipalib/plugins/aci.py:307
+#: ipalib/plugins/automount.py:718
msgid ""
-"comma-separated list of permissions to grant(read, write, add, delete, all)"
+"\n"
+" Delete an automount key.\n"
+" "
msgstr ""
-#: ipalib/plugins/aci.py:313
-msgid "Attributes"
+#: ipalib/plugins/automount.py:749
+msgid ""
+"\n"
+" Modify an automount key.\n"
+" "
msgstr ""
-#: ipalib/plugins/aci.py:314
-msgid "Comma-separated list of attributes"
+#: ipalib/plugins/automount.py:755
+msgid "New mount information"
msgstr ""
-#: ipalib/plugins/aci.py:318
-msgid "Type"
+#: ipalib/plugins/automount.py:782
+msgid ""
+"\n"
+" Search for an automount key.\n"
+" "
msgstr ""
-#: ipalib/plugins/aci.py:319
-msgid "type of IPA object (user, group, host)"
+#: ipalib/plugins/automount.py:790
+msgid ""
+"\n"
+" Display an automount key.\n"
+" "
msgstr ""
-#: ipalib/plugins/aci.py:324
-msgid "Member of"
+#: ipalib/plugins/baseldap.py:19
+msgid ""
+"\n"
+"Base classes for LDAP plugins.\n"
msgstr ""
-#: ipalib/plugins/aci.py:325
-msgid "Member of a group"
+#: ipalib/plugins/baseldap.py:39
+msgid "Failed members"
msgstr ""
-#: ipalib/plugins/aci.py:329
-msgid "Filter"
+#: ipalib/plugins/baseldap.py:42
+msgid "Member users"
msgstr ""
-#: ipalib/plugins/aci.py:330
-msgid "Legal LDAP filter (e.g. ou=Engineering)"
+#: ipalib/plugins/baseldap.py:45
+msgid "Member groups"
msgstr ""
-#: ipalib/plugins/aci.py:334
-msgid "Subtree"
+#: ipalib/plugins/baseldap.py:48
+msgid "Member of groups"
msgstr ""
-#: ipalib/plugins/aci.py:335
-msgid "Subtree to apply ACI to"
+#: ipalib/plugins/baseldap.py:51
+msgid "Member hosts"
msgstr ""
-#: ipalib/plugins/aci.py:339
-msgid "Target group"
+#: ipalib/plugins/baseldap.py:54
+msgid "Member host-groups"
msgstr ""
-#: ipalib/plugins/aci.py:340
-msgid "Group to apply ACI to"
+#: ipalib/plugins/baseldap.py:57
+msgid "Member of host-groups"
msgstr ""
-#: ipalib/plugins/aci.py:344
-msgid "Target your own entry (self)"
+#: ipalib/plugins/baseldap.py:66
+msgid "Roles"
msgstr ""
-#: ipalib/plugins/aci.py:345
-msgid "Apply ACI to your own entry (self)"
+#: ipalib/plugins/baseldap.py:69 ipalib/plugins/sudocmdgroup.py:65
+#: ipalib/plugins/sudocmdgroup.py:84 ipalib/plugins/sudorule.py:139
+#: ipalib/plugins/sudorule.py:143
+msgid "Sudo Command Groups"
msgstr ""
-#: ipalib/plugins/aci.py:357
-#, python-format
-msgid "Created ACI \"%(value)s\""
+#: ipalib/plugins/baseldap.py:75
+msgid "Granting privilege to roles"
msgstr ""
-#: ipalib/plugins/aci.py:407
-#, python-format
-msgid "Deleted ACI \"%(value)s\""
+#: ipalib/plugins/baseldap.py:78
+msgid "Member netgroups"
msgstr ""
-#: ipalib/plugins/aci.py:447
-#, python-format
-msgid "Modified ACI \"%(value)s\""
+#: ipalib/plugins/baseldap.py:81
+msgid "Member of netgroups"
msgstr ""
-#: ipalib/plugins/aci.py:519
-#, python-format
-msgid "%(count)d ACI matched"
-msgid_plural "%(count)d ACIs matched"
-msgstr[0] ""
-msgstr[1] ""
+#: ipalib/plugins/baseldap.py:84
+msgid "Member services"
+msgstr ""
-#: ipalib/plugins/automount.py:103
-msgid "Automount"
+#: ipalib/plugins/baseldap.py:87
+msgid "Member service groups"
msgstr ""
-#: ipalib/plugins/automount.py:109 ipalib/plugins/host.py:134
-msgid "Location"
+#: ipalib/plugins/baseldap.py:93
+msgid "Member HBAC service groups"
msgstr ""
-#: ipalib/plugins/automount.py:110
-msgid "Automount location name"
+#: ipalib/plugins/baseldap.py:102
+msgid "Indirect Member users"
msgstr ""
-#: ipalib/plugins/automount.py:226
-msgid "Map"
+#: ipalib/plugins/baseldap.py:105
+msgid "Indirect Member groups"
msgstr ""
-#: ipalib/plugins/automount.py:227
-msgid "Automount map name"
+#: ipalib/plugins/baseldap.py:108
+msgid "Indirect Member hosts"
msgstr ""
-#: ipalib/plugins/automount.py:232 ipalib/plugins/group.py:108
-#: ipalib/plugins/hbac.py:151 ipalib/plugins/hbacsvc.py:72
-#: ipalib/plugins/hbacsvcgroup.py:77 ipalib/plugins/host.py:124
-#: ipalib/plugins/hostgroup.py:81 ipalib/plugins/netgroup.py:96
-#: ipalib/plugins/rolegroup.py:90 ipalib/plugins/sudocmd.py:71
-#: ipalib/plugins/sudocmdgroup.py:77 ipalib/plugins/sudorule.py:58
-#: ipalib/plugins/taskgroup.py:62
-msgid "Description"
+#: ipalib/plugins/baseldap.py:111
+msgid "Indirect Member host-groups"
msgstr ""
-#: ipalib/plugins/automount.py:236
-msgid "Automount Maps"
+#: ipalib/plugins/baseldap.py:114
+msgid "Indirect Member of roles"
msgstr ""
-#: ipalib/plugins/automount.py:308
-msgid "Key"
+#: ipalib/plugins/baseldap.py:117
+msgid "Indirect Member permissions"
msgstr ""
-#: ipalib/plugins/automount.py:309
-msgid "Automount key name"
+#: ipalib/plugins/baseldap.py:120
+msgid "Indirect Member HBAC service"
msgstr ""
-#: ipalib/plugins/automount.py:314
-msgid "Mount information"
+#: ipalib/plugins/baseldap.py:123
+msgid "Indirect Member HBAC service group"
msgstr ""
-#: ipalib/plugins/automount.py:318
-msgid "description"
+#: ipalib/plugins/baseldap.py:126
+msgid "Indirect Member netgroups"
msgstr ""
-#: ipalib/plugins/automount.py:322
-msgid "Automount Keys"
+#: ipalib/plugins/baseldap.py:141
+msgid "External host"
msgstr ""
-#: ipalib/plugins/automount.py:342
-msgid "Mount point"
+#: ipalib/plugins/baseldap.py:144
+msgid "Failed hosts/hostgroups"
msgstr ""
-#: ipalib/plugins/automount.py:346
-msgid "Parent map"
+#: ipalib/plugins/baseldap.py:147
+msgid "Failed users/groups"
msgstr ""
-#: ipalib/plugins/automount.py:347
-msgid "Name of parent automount map (default: auto.master)"
+#: ipalib/plugins/baseldap.py:150
+msgid "Failed managedby"
msgstr ""
-#: ipalib/plugins/baseldap.py:79
-#, python-format
+#: ipalib/plugins/baseldap.py:153
+msgid "Failed to remove"
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:171
+msgid ""
+"\n"
+" Given a list of values in the form name=value, return a list of name.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:197
+msgid ""
+"\n"
+" When adding or removing reverse members we are faking an update to\n"
+" object A by updating the member attribute in object B. The memberof\n"
+" plugin makes this work by adding or removing the memberof attribute\n"
+" to/from object A, it just takes a little bit of time.\n"
+"\n"
+" This will loop for 6+ seconds, retrieving object A so we can see\n"
+" if all the memberof attributes have been updated.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:241
+msgid ""
+"\n"
+" Object representing a LDAP entry.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:275
+msgid "Entry"
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:277
msgid "container entry (%(container)s) not found"
msgstr ""
-#: ipalib/plugins/baseldap.py:80
-#, python-format
+#: ipalib/plugins/baseldap.py:278
msgid "%(parent)s: %(oname)s not found"
msgstr ""
-#: ipalib/plugins/baseldap.py:81
-#, python-format
+#: ipalib/plugins/baseldap.py:279
msgid "%(pkey)s: %(oname)s not found"
msgstr ""
-#: ipalib/plugins/baseldap.py:150
-msgid "Add an attribute/value pair. Format is attr=value"
+#: ipalib/plugins/baseldap.py:280
+msgid "%(oname)s with name \"%(pkey)s\" already exists"
msgstr ""
-#: ipalib/plugins/baseldap.py:155
-msgid "Set an attribute to an name/value pair. Format is attr=value"
+#: ipalib/plugins/baseldap.py:409
+msgid ""
+"Add an attribute/value pair. Format is attr=value. The attribute must be "
+"part of the schema."
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:414
+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:438
+msgid ""
+"\n"
+" Callback registration interface\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:509
+msgid ""
+"\n"
+" Create a new entry in LDAP.\n"
+" "
msgstr ""
-#: ipalib/plugins/baseldap.py:359
+#: ipalib/plugins/baseldap.py:644
+msgid ""
+"\n"
+" Base class for commands that need to retrieve an existing entry.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:657
+msgid ""
+"\n"
+" Base class for commands that need to retrieve one or more existing "
+"entries.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:663
msgid "Continuous mode: Don't stop on errors."
msgstr ""
-#: ipalib/plugins/baseldap.py:517
+#: ipalib/plugins/baseldap.py:679
+msgid ""
+"\n"
+" Retrieve an LDAP entry.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:687 ipalib/plugins/baseldap.py:753
+#: ipalib/plugins/internal.py:226
+msgid "Rights"
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:688 ipalib/plugins/baseldap.py:754
+msgid ""
+"Display the access rights of this entry (requires --all). See ipa man page "
+"for details."
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:747
+msgid ""
+"\n"
+" Update an LDAP entry.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:763
+msgid "Rename"
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:764
+msgid "Rename the %(ldap_obj_name)s object"
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:880
msgid "the entry was deleted while being modified"
msgstr ""
-#: ipalib/plugins/baseldap.py:674
+#: ipalib/plugins/baseldap.py:908
+msgid ""
+"\n"
+" Delete an LDAP entry and all of its direct subentries.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:995
+msgid ""
+"\n"
+" Base class for member manipulation.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:1037
+msgid ""
+"\n"
+" Add other LDAP entries to members.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:1048 ipalib/plugins/baseldap.py:1481
+#: ipalib/plugins/privilege.py:165 ipalib/plugins/privilege.py:191
+#: ipalib/plugins/role.py:180 ipalib/plugins/role.py:204
msgid "Members that could not be added"
msgstr ""
-#: ipalib/plugins/baseldap.py:678
+#: ipalib/plugins/baseldap.py:1052 ipalib/plugins/baseldap.py:1485
msgid "Number of members added"
msgstr ""
-#: ipalib/plugins/baseldap.py:684 ipalib/plugins/baseldap.py:789
-msgid "Failed members"
+#: ipalib/plugins/baseldap.py:1140
+msgid ""
+"\n"
+" Remove LDAP entries from members.\n"
+" "
msgstr ""
-#: ipalib/plugins/baseldap.py:779
+#: ipalib/plugins/baseldap.py:1150 ipalib/plugins/baseldap.py:1591
msgid "Members that could not be removed"
msgstr ""
-#: ipalib/plugins/baseldap.py:783
+#: ipalib/plugins/baseldap.py:1154 ipalib/plugins/baseldap.py:1595
msgid "Number of members removed"
msgstr ""
-#: ipalib/plugins/baseldap.py:880
+#: ipalib/plugins/baseldap.py:1246
+msgid ""
+"\n"
+" Retrieve all LDAP entries matching the given criteria.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:1255
msgid "Time Limit"
msgstr ""
-#: ipalib/plugins/baseldap.py:881
+#: ipalib/plugins/baseldap.py:1256
msgid "Time limit of search in seconds"
msgstr ""
-#: ipalib/plugins/baseldap.py:887
+#: ipalib/plugins/baseldap.py:1262
msgid "Size Limit"
msgstr ""
-#: ipalib/plugins/baseldap.py:888
+#: ipalib/plugins/baseldap.py:1263
msgid "Maximum number of entries returned"
msgstr ""
-#: ipalib/plugins/cert.py:93
+#: ipalib/plugins/baseldap.py:1441
+msgid ""
+"\n"
+" Base class for reverse member manipulation.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:1463
+msgid ""
+"\n"
+" Add other LDAP entries to members in reverse.\n"
+"\n"
+" The call looks like \"add A to B\" but in fact executes\n"
+" add B to A to handle reverse membership.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:1543
+msgid "added"
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:1573
+msgid ""
+"\n"
+" Remove other LDAP entries from members in reverse.\n"
+"\n"
+" The call looks like \"remove A from B\" but in fact executes\n"
+" remove B from A to handle reverse membership.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/baseldap.py:1653
+msgid "removed"
+msgstr ""
+
+#: ipalib/plugins/batch.py:21
+msgid ""
+"\n"
+"Plugin to make multiple ipa calls via one remote procedure call\n"
+"\n"
+"To run this code in the lite-server\n"
+"\n"
+"curl -H \"Content-Type:application/json\" -H \"Acept:applicaton/"
+"json\" -H \"Accept-Language:en\" --negotiate -u : --cacert /"
+"etc/ipa/ca.crt -d @batch_request.json -X POST http://"
+"localhost:8888/ipa/json\n"
+"\n"
+"where the contenst of the file batch_request.json follow the below example\n"
+"\n"
+"{\"method\":\"batch\",\"params\":[[\n"
+" {\"method\":\"group_find\",\"params\":[[],{}]},\n"
+" {\"method\":\"user_find\",\"params\":[[],{\"whoami\":\"true\",\"all"
+"\":\"true\"}]},\n"
+" {\"method\":\"user_show\",\"params\":[[\"admin\"],{\"all\":true}]}\n"
+" ],{}],\"id\":1}\n"
+"\n"
+"The format of the response is nested the same way. At the top you will see\n"
+" \"error\": null,\n"
+" \"id\": 1,\n"
+" \"result\": {\n"
+" \"count\": 3,\n"
+" \"results\": [\n"
+"\n"
+"\n"
+"And then a nested response for each IPA command method sent in the request\n"
+"\n"
+msgstr ""
+
+#: ipalib/plugins/batch.py:61
+msgid "Nested Methods to execute"
+msgstr ""
+
+#: ipalib/plugins/batch.py:68 ipalib/frontend.py:862
+msgid "Client version. Used to determine if server will accept request."
+msgstr ""
+
+#: ipalib/plugins/cert.py:22
+msgid ""
+"\n"
+"IPA certificate operations\n"
+"\n"
+"Implements a set of commands for managing server SSL certificates.\n"
+"\n"
+"Certificate requests exist in the form of a Certificate Signing Request "
+"(CSR)\n"
+"in PEM format.\n"
+"\n"
+"If using the selfsign back end then the subject in the CSR needs to match\n"
+"the subject configured in the server. The dogtag CA uses just the CN\n"
+"value of the CSR and forces the rest of the subject.\n"
+"\n"
+"A certificate is stored with a service principal and a service principal\n"
+"needs a host.\n"
+"\n"
+"In order to request a certificate:\n"
+"\n"
+"* The host must exist\n"
+"* The service must exist (or you use the --add option to automatically add "
+"it)\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Request a new certificate and add the principal:\n"
+" ipa cert-request --add --principal=HTTP/lion.example.com example.csr\n"
+"\n"
+" Retrieve an existing certificate:\n"
+" ipa cert-show 1032\n"
+"\n"
+" Revoke a certificate (see RFC 5280 for reason details):\n"
+" ipa cert-revoke --revocation-reason=6 1032\n"
+"\n"
+" Remove a certificate from revocation hold status:\n"
+" ipa cert-remove-hold 1032\n"
+"\n"
+" Check the status of a signing request:\n"
+" ipa cert-status 10\n"
+"\n"
+"IPA currently immediately issues (or declines) all certificate requests so\n"
+"the status of a request is not normally useful. This is for future use\n"
+"or the case where a CA does not immediately issue a certificate.\n"
+"\n"
+"The following revocation reasons are supported:\n"
+"\n"
+" * 0 - unspecified\n"
+" * 1 - keyCompromise\n"
+" * 2 - cACompromise\n"
+" * 3 - affiliationChanged\n"
+" * 4 - superseded\n"
+" * 5 - cessationOfOperation\n"
+" * 6 - certificateHold\n"
+" * 8 - removeFromCRL\n"
+" * 9 - privilegeWithdrawn\n"
+" * 10 - aACompromise\n"
+"\n"
+"Note that reason code 7 is not used. See RFC 5280 for more details:\n"
+"\n"
+"http://www.ietf.org/rfc/rfc5280.txt\n"
+"\n"
+msgstr ""
+
+#: ipalib/plugins/cert.py:105
+msgid ""
+"\n"
+" Return the value of CN in the subject of the request or None\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/cert.py:113
msgid "Failure decoding Certificate Signing Request:"
msgstr ""
-#: ipalib/plugins/cert.py:106 ipalib/plugins/cert.py:118
+#: ipalib/plugins/cert.py:116
+msgid ""
+"\n"
+" Return the first value of the subject alt name, if any\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/cert.py:126 ipalib/plugins/cert.py:138
msgid "Failure decoding Certificate Signing Request"
msgstr ""
-#: ipalib/plugins/cert.py:120
-#, python-format
+#: ipalib/plugins/cert.py:129
+msgid ""
+"\n"
+" Ensure the CSR is base64-encoded and can be decoded by our PKCS#10\n"
+" parser.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/cert.py:140
msgid "Failure decoding Certificate Signing Request: %s"
msgstr ""
-#: ipalib/plugins/cert.py:171 ipalib/plugins/service.py:197
+#: ipalib/plugins/cert.py:143
+msgid ""
+"\n"
+" Strip any leading and trailing cruft around the BEGIN/END block\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/cert.py:163
+msgid ""
+"\n"
+" Convert a SN given in decimal or hexadecimal.\n"
+" Returns the number or None if conversion fails.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/cert.py:189
+msgid ""
+"\n"
+" Given a principal with or without a realm return the\n"
+" host portion.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/cert.py:203
+msgid ""
+"\n"
+" Submit a certificate signing request.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/cert.py:217 ipalib/plugins/service.py:304
msgid "Principal"
msgstr ""
-#: ipalib/plugins/cert.py:172
+#: ipalib/plugins/cert.py:218
msgid "Service principal for this certificate (e.g. HTTP/test.example.com)"
msgstr ""
-#: ipalib/plugins/cert.py:179
+#: ipalib/plugins/cert.py:225
msgid "automatically add the principal if it doesn't exist"
msgstr ""
-#: ipalib/plugins/cert.py:187 ipalib/plugins/cert.py:392
-#: ipalib/plugins/host.py:154 ipalib/plugins/service.py:204
+#: ipalib/plugins/cert.py:233 ipalib/plugins/cert.py:440
+#: ipalib/plugins/entitle.py:182 ipalib/plugins/host.py:259
+#: ipalib/plugins/service.py:311
msgid "Certificate"
msgstr ""
-#: ipalib/plugins/cert.py:191 ipalib/plugins/cert.py:395
+#: ipalib/plugins/cert.py:237 ipalib/plugins/cert.py:443
+#: ipalib/plugins/host.py:143 ipalib/plugins/service.py:93
msgid "Subject"
msgstr ""
-#: ipalib/plugins/cert.py:195 ipalib/plugins/cert.py:398
+#: ipalib/plugins/cert.py:241 ipalib/plugins/cert.py:446
+#: ipalib/plugins/host.py:149 ipalib/plugins/service.py:99
msgid "Issuer"
msgstr ""
-#: ipalib/plugins/cert.py:199 ipalib/plugins/cert.py:401
+#: ipalib/plugins/cert.py:245 ipalib/plugins/cert.py:449
+#: ipalib/plugins/host.py:152 ipalib/plugins/service.py:102
msgid "Not Before"
msgstr ""
-#: ipalib/plugins/cert.py:203 ipalib/plugins/cert.py:404
+#: ipalib/plugins/cert.py:249 ipalib/plugins/cert.py:452
+#: ipalib/plugins/host.py:155 ipalib/plugins/service.py:105
msgid "Not After"
msgstr ""
-#: ipalib/plugins/cert.py:207 ipalib/plugins/cert.py:407
+#: ipalib/plugins/cert.py:253 ipalib/plugins/cert.py:455
+#: ipalib/plugins/host.py:158 ipalib/plugins/service.py:108
msgid "Fingerprint (MD5)"
msgstr ""
-#: ipalib/plugins/cert.py:211 ipalib/plugins/cert.py:410
+#: ipalib/plugins/cert.py:257 ipalib/plugins/cert.py:458
+#: ipalib/plugins/host.py:161 ipalib/plugins/service.py:111
msgid "Fingerprint (SHA1)"
msgstr ""
-#: ipalib/plugins/cert.py:215 ipalib/plugins/cert.py:379
+#: ipalib/plugins/cert.py:261 ipalib/plugins/cert.py:426
msgid "Serial number"
msgstr ""
-#: ipalib/plugins/cert.py:223 ipalib/plugins/misc.py:57
+#: ipalib/plugins/cert.py:269 ipalib/plugins/entitle.py:237
+#: ipalib/plugins/entitle.py:595 ipalib/plugins/misc.py:57
msgid "Dictionary mapping variable name to value"
msgstr ""
-#: ipalib/plugins/cert.py:357
+#: ipalib/plugins/cert.py:397
+msgid ""
+"\n"
+" Check the status of a certificate signing request.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/cert.py:403
msgid "Request id"
msgstr ""
-#: ipalib/plugins/cert.py:363
+#: ipalib/plugins/cert.py:409
msgid "Request status"
msgstr ""
-#: ipalib/plugins/cert.py:380
+#: ipalib/plugins/cert.py:427
msgid "Serial number in decimal or if prefixed with 0x in hexadecimal"
msgstr ""
-#: ipalib/plugins/cert.py:413
+#: ipalib/plugins/cert.py:432
+msgid ""
+"\n"
+" Retrieve an existing certificate.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/cert.py:461 ipalib/plugins/host.py:164
+#: ipalib/plugins/service.py:114
msgid "Revocation reason"
msgstr ""
-#: ipalib/plugins/cert.py:458
+#: ipalib/plugins/cert.py:467
+msgid "Output filename"
+msgstr ""
+
+#: ipalib/plugins/cert.py:468
+msgid "File to store the certificate in."
+msgstr ""
+
+#: ipalib/plugins/cert.py:519
+msgid ""
+"\n"
+" Revoke a certificate.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/cert.py:527
msgid "Revoked"
msgstr ""
-#: ipalib/plugins/cert.py:466
+#: ipalib/plugins/cert.py:535
msgid "Reason"
msgstr ""
-#: ipalib/plugins/cert.py:467
+#: ipalib/plugins/cert.py:536
msgid "Reason for revoking the certificate (0-10)"
msgstr ""
-#: ipalib/plugins/cert.py:502
+#: ipalib/plugins/cert.py:563
+msgid ""
+"\n"
+" Take a revoked certificate off hold.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/cert.py:571
msgid "Unrevoked"
msgstr ""
-#: ipalib/plugins/cert.py:505
+#: ipalib/plugins/cert.py:574
msgid "Error"
msgstr ""
-#: ipalib/plugins/config.py:73
+#: ipalib/plugins/config.py:20
+msgid ""
+"\n"
+"Manage the IPA configuration\n"
+"\n"
+"Manage the default values that IPA uses and some of its tuning parameters.\n"
+"\n"
+" To show the current configuration:\n"
+" ipa config-show\n"
+"\n"
+" To modify the configuration:\n"
+" ipa config-mod --maxusername=99\n"
+"\n"
+"The available options are:\n"
+"\n"
+"User management options:\n"
+"\n"
+" --maxusername=INT Max. username length when creating/modifying a user\n"
+" --homedirectory=STR Default location of home directories (default /"
+"home)\n"
+" --defaultshell=STR Default shell for new users (default /bin/sh)\n"
+" --defaultgroup=STR Default group for new users (default ipausers). The\n"
+" group must exist, or adding new users will fail.\n"
+" --emaildomain=STR Default e-mail domain for new users\n"
+"\n"
+"Search tuning options. These impact how much data is searched through and\n"
+"how many records may be returned on a given search.\n"
+"\n"
+" --searchtimelimit=INT Max. amount of time (sec.) for a search (> 0, or -1 "
+"for\n"
+" unlimited)\n"
+" --searchrecordslimit=INT Max. number of records to search (-1 is "
+"unlimited)\n"
+"\n"
+"Server Configuration.\n"
+"\n"
+" --enable-migration=BOOL Enable migration mode\n"
+" --pwdexpnotify=INT Password Expiration Notification (days)\n"
+"\n"
+"The password notification value is stored here so it will be replicated.\n"
+"It is not currently used to notify users in advance of an expiring\n"
+"password.\n"
+"\n"
+"Some attributes are read-only, provided only for information purposes. "
+"These\n"
+"include:\n"
+"\n"
+"Certificate Subject base: the configured certificate subject base,\n"
+" e.g. O=EXAMPLE.COM. This is configurable only at install time.\n"
+"Password plug-in features: currently defines additional hashes that the\n"
+" password will generate (there may be other conditions).\n"
+msgstr ""
+
+#: ipalib/plugins/config.py:76
+msgid "searchtimelimit must be -1 or > 1."
+msgstr ""
+
+#: ipalib/plugins/config.py:80
+msgid ""
+"\n"
+" IPA configuration object\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/config.py:91 ipalib/plugins/internal.py:145
msgid "Configuration"
msgstr ""
-#: ipalib/plugins/config.py:78
-msgid "Max username length"
+#: ipalib/plugins/config.py:96
+msgid "Max. username length"
msgstr ""
-#: ipalib/plugins/config.py:83
+#: ipalib/plugins/config.py:101
msgid "Home directory base"
msgstr ""
-#: ipalib/plugins/config.py:84
-msgid "Default location of home directories"
+#: ipalib/plugins/config.py:102
+msgid "Default location of home directories."
msgstr ""
-#: ipalib/plugins/config.py:88
+#: ipalib/plugins/config.py:106
msgid "Default shell"
msgstr ""
-#: ipalib/plugins/config.py:89
-msgid "Default shell for new users"
+#: ipalib/plugins/config.py:107
+msgid "Default shell for new users."
msgstr ""
-#: ipalib/plugins/config.py:93
+#: ipalib/plugins/config.py:111
msgid "Default users group"
msgstr ""
-#: ipalib/plugins/config.py:94
-msgid "Default group for new users"
+#: ipalib/plugins/config.py:112
+msgid "Default group for new users."
msgstr ""
-#: ipalib/plugins/config.py:98
-msgid "Default e-mail domain"
+#: ipalib/plugins/config.py:116
+msgid "Default e-mail domain for new users"
msgstr ""
-#: ipalib/plugins/config.py:99
-msgid "Default e-mail domain new users"
+#: ipalib/plugins/config.py:117
+msgid "Default e-mail domain new users."
msgstr ""
-#: ipalib/plugins/config.py:103
+#: ipalib/plugins/config.py:121
msgid "Search time limit"
msgstr ""
-#: ipalib/plugins/config.py:104
-msgid "Max. amount of time (sec.) for a search (-1 is unlimited)"
+#: ipalib/plugins/config.py:122
+msgid "Max. amount of time (sec.) for a search (> 0, or -1 for unlimited)."
msgstr ""
-#: ipalib/plugins/config.py:109
+#: ipalib/plugins/config.py:127
msgid "Search size limit"
msgstr ""
-#: ipalib/plugins/config.py:110
-msgid "Max. number of records to search (-1 is unlimited)"
+#: ipalib/plugins/config.py:128
+msgid "Max. number of records to search (-1 is unlimited)."
msgstr ""
-#: ipalib/plugins/config.py:115
+#: ipalib/plugins/config.py:133
msgid "User search fields"
msgstr ""
-#: ipalib/plugins/config.py:116
-msgid "A comma-separated list of fields to search when searching for users"
+#: ipalib/plugins/config.py:134
+msgid "A comma-separated list of fields to search when searching for users."
msgstr ""
-#: ipalib/plugins/config.py:121
-msgid "A comma-separated list of fields to search when searching for groups"
+#: ipalib/plugins/config.py:139
+msgid "A comma-separated list of fields to search when searching for groups."
msgstr ""
-#: ipalib/plugins/config.py:125
+#: ipalib/plugins/config.py:143
msgid "Migration mode"
msgstr ""
-#: ipalib/plugins/config.py:126
-msgid "Enable migration mode"
+#: ipalib/plugins/config.py:144
+msgid "Enable migration mode."
msgstr ""
-#: ipalib/plugins/config.py:130
+#: ipalib/plugins/config.py:148
msgid "Certificate Subject base"
msgstr ""
-#: ipalib/plugins/config.py:131
-msgid "Base for certificate subjects (OU=Test,O=Example)"
+#: ipalib/plugins/config.py:149
+msgid "Base for certificate subjects (OU=Test,O=Example)."
+msgstr ""
+
+#: ipalib/plugins/config.py:154
+msgid "Default group objectclasses"
+msgstr ""
+
+#: ipalib/plugins/config.py:155
+msgid "Default group objectclassses (comma-separated list)."
+msgstr ""
+
+#: ipalib/plugins/config.py:159
+msgid "Default user objectclasses"
+msgstr ""
+
+#: ipalib/plugins/config.py:160
+msgid "Default user objectclassses (comma-separated list)."
+msgstr ""
+
+#: ipalib/plugins/config.py:164
+msgid "Password Expiration Notification"
+msgstr ""
+
+#: ipalib/plugins/config.py:165
+msgid "Number of days's notice of impending password expiration."
+msgstr ""
+
+#: ipalib/plugins/config.py:170
+msgid "Password plugin features"
+msgstr ""
+
+#: ipalib/plugins/config.py:171
+msgid "Extra hashes to generate in password plug-in."
msgstr ""
-#: ipalib/plugins/dns.py:131
+#: ipalib/plugins/config.py:183
+msgid ""
+"\n"
+" Modify configuration options.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/config.py:220
+msgid ""
+"\n"
+" Show the current configuration.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/delegation.py:19
+msgid ""
+"\n"
+"Group to Group Delegation\n"
+"\n"
+"A permission enables fine-grained delegation of permissions. Access Control\n"
+"Rules, or instructions (ACIs), grant permission to permissions to perform\n"
+"given tasks such as adding a user, modifying a group, etc.\n"
+"\n"
+"Group to Group Delegations grants the members of one group to update a set\n"
+"of attributes of members of another group.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a delegation rule to allow editors to edit admin's addresses:\n"
+" ipa delegation-add --attrs=street --membergroup=admins --group=editors "
+"'editors edit admins street'\n"
+"\n"
+" When managing the list of attributes you need to include all attributes\n"
+" in the list, including existing ones. Add postalCode to the list:\n"
+" ipa delegation-mod --attrs=street,postalCode --membergroup=admins --"
+"group=editors 'editors edit admins street'\n"
+"\n"
+" Display our updated rule:\n"
+" ipa delegation-show 'editors edit admins street'\n"
+"\n"
+" Delete a rule:\n"
+" ipa delegation-del 'editors edit admins street'\n"
+msgstr ""
+
+#: ipalib/plugins/delegation.py:56
+msgid ""
+"\n"
+" memberOf is in filter but we want to pull out the group for easier\n"
+" displaying.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/delegation.py:63 ipalib/plugins/delegation.py:90
+msgid "Delegation '%(permission)s' not found"
+msgstr ""
+
+#: ipalib/plugins/delegation.py:70
+msgid "Error retrieving member group %(group)s: %(error)s"
+msgstr ""
+
+#: ipalib/plugins/delegation.py:79
+msgid ""
+"\n"
+" Determine if the ACI is a Delegation ACI and raise an exception if it\n"
+" isn't.\n"
+"\n"
+" Return the result if it is a delegation ACI, adding a new attribute\n"
+" membergroup.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/delegation.py:95
+msgid ""
+"\n"
+" Delegation object.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/delegation.py:102
+msgid "Delegation"
+msgstr ""
+
+#: ipalib/plugins/delegation.py:107 ipalib/plugins/delegation.py:108
+msgid "Delegation name"
+msgstr ""
+
+#: ipalib/plugins/delegation.py:114 ipalib/plugins/selfservice.py:87
+msgid ""
+"Comma-separated list of permissions to grant (read, write). Default is write."
+msgstr ""
+
+#: ipalib/plugins/delegation.py:125
+msgid "Member user group"
+msgstr ""
+
+#: ipalib/plugins/delegation.py:126
+msgid "User group to apply delegation to"
+msgstr ""
+
+#: ipalib/plugins/delegation.py:152
+msgid ""
+"\n"
+" Add a new delegation.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/delegation.py:156
+msgid "Added delegation \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/delegation.py:176
+msgid ""
+"\n"
+" Delete a delegation.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/delegation.py:181
+msgid "Deleted delegation \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/delegation.py:197
+msgid ""
+"\n"
+" Modify a delegation.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/delegation.py:201
+msgid "Modified delegation \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/delegation.py:219
+msgid ""
+"\n"
+" Search for delegations.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/delegation.py:223
+msgid "%(count)d delegation matched"
+msgid_plural "%(count)d delegations matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/delegation.py:250
+msgid ""
+"\n"
+" Display information about a delegation.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:19
+msgid ""
+"\n"
+"Domain Name System (DNS)\n"
+"\n"
+"Manage DNS zone and resource records.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add new zone:\n"
+" ipa dnszone-add example.com --name-server nameserver.example.com\n"
+" --admin-email admin@example.com\n"
+"\n"
+" Add second nameserver for example.com:\n"
+" ipa dnsrecord-add example.com @ --ns-rec nameserver2.example.com\n"
+"\n"
+" Add a mail server for example.com:\n"
+" ipa dnsrecord-add example.com @ --mx-rec=\"10 mail2\"\n"
+"\n"
+" Delete previously added nameserver from example.com:\n"
+" ipa dnsrecord-del example.com @ --ns-rec nameserver2.example.com\n"
+"\n"
+" Add new A record for www.example.com: (random IP)\n"
+" ipa dnsrecord-add example.com www --a-rec 80.142.15.2\n"
+"\n"
+" Add new PTR record for www.example.com\n"
+" ipa dnsrecord-add 15.142.80.in-addr.arpa 2 --ptr-rec www.example.com.\n"
+"\n"
+" Add new SRV records for LDAP servers. Three quarters of the requests\n"
+" should go to fast.example.com, one quarter to slow.example.com. If neither\n"
+" is available, switch to backup.example.com.\n"
+" ipa dnsrecord-add example.com _ldap._tcp --srv-rec=\"0 3 389 fast.example."
+"com\"\n"
+" ipa dnsrecord-add example.com _ldap._tcp --srv-rec=\"0 1 389 slow.example."
+"com\"\n"
+" ipa dnsrecord-add example.com _ldap._tcp --srv-rec=\"1 1 389 backup."
+"example.com\"\n"
+"\n"
+" Show zone example.com:\n"
+" ipa dnszone-show example.com\n"
+"\n"
+" Find zone with \"example\" in its domain name:\n"
+" ipa dnszone-find example\n"
+"\n"
+" Find records for resources with \"www\" in their name in zone example.com:\n"
+" ipa dnsrecord-find example.com www\n"
+"\n"
+" Find A records with value 10.10.0.1 in zone example.com\n"
+" ipa dnsrecord-find example.com --a-rec 10.10.0.1\n"
+"\n"
+" Show records for resource www in zone example.com\n"
+" ipa dnsrecord-show example.com www\n"
+"\n"
+" Delete zone example.com with all resource records:\n"
+" ipa dnszone-del example.com\n"
+"\n"
+" Resolve a host name to see if it exists (will add default IPA domain\n"
+" if one is not included):\n"
+" ipa dns-resolve www.example.com\n"
+" ipa dns-resolve www\n"
+"\n"
+msgstr ""
+
+#: ipalib/plugins/dns.py:110
+msgid "Generate serial number for zones."
+msgstr ""
+
+#: ipalib/plugins/dns.py:159
+msgid "see RFC 2915 "
+msgstr ""
+
+#: ipalib/plugins/dns.py:205
+msgid "Nameserver '%(host)s' does not have a corresponding A/AAAA record"
+msgstr ""
+
+#: ipalib/plugins/dns.py:228
+msgid ""
+"\n"
+" DNS Zone, container for resource records.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:240
msgid "DNS"
msgstr ""
-#: ipalib/plugins/dns.py:136
-msgid "Zone"
+#: ipalib/plugins/dns.py:245
+msgid "Zone name"
msgstr ""
-#: ipalib/plugins/dns.py:137
+#: ipalib/plugins/dns.py:246
msgid "Zone name (FQDN)"
msgstr ""
-#: ipalib/plugins/dns.py:143
-msgid "Authoritative name server"
+#: ipalib/plugins/dns.py:252
+msgid "Authoritative nameserver"
+msgstr ""
+
+#: ipalib/plugins/dns.py:253
+msgid "Authoritative nameserver."
msgstr ""
-#: ipalib/plugins/dns.py:147
-msgid "administrator e-mail address"
+#: ipalib/plugins/dns.py:257 ipalib/plugins/dns.py:258
+msgid "Administrator e-mail address"
msgstr ""
-#: ipalib/plugins/dns.py:153
+#: ipalib/plugins/dns.py:264
msgid "SOA serial"
msgstr ""
-#: ipalib/plugins/dns.py:157
+#: ipalib/plugins/dns.py:265
+msgid "SOA record serial number"
+msgstr ""
+
+#: ipalib/plugins/dns.py:272
msgid "SOA refresh"
msgstr ""
-#: ipalib/plugins/dns.py:161
+#: ipalib/plugins/dns.py:273
+msgid "SOA record refresh time"
+msgstr ""
+
+#: ipalib/plugins/dns.py:280
msgid "SOA retry"
msgstr ""
-#: ipalib/plugins/dns.py:165
+#: ipalib/plugins/dns.py:281
+msgid "SOA record retry time"
+msgstr ""
+
+#: ipalib/plugins/dns.py:288
msgid "SOA expire"
msgstr ""
-#: ipalib/plugins/dns.py:169
+#: ipalib/plugins/dns.py:289
+msgid "SOA record expire time"
+msgstr ""
+
+#: ipalib/plugins/dns.py:296
msgid "SOA minimum"
msgstr ""
-#: ipalib/plugins/dns.py:173
+#: ipalib/plugins/dns.py:297
+msgid "How long should negative responses be cached"
+msgstr ""
+
+#: ipalib/plugins/dns.py:305
msgid "SOA time to live"
msgstr ""
-#: ipalib/plugins/dns.py:177
+#: ipalib/plugins/dns.py:306
+msgid "SOA record time to live"
+msgstr ""
+
+#: ipalib/plugins/dns.py:310
msgid "SOA class"
msgstr ""
-#: ipalib/plugins/dns.py:182
-msgid "allow dynamic update?"
+#: ipalib/plugins/dns.py:311
+msgid "SOA record class"
msgstr ""
-#: ipalib/plugins/dns.py:186
+#: ipalib/plugins/dns.py:316 ipalib/plugins/dns.py:317
msgid "BIND update policy"
msgstr ""
-#: ipalib/plugins/dns.py:426 ipalib/plugins/dns.py:460
-#: ipalib/plugins/dns.py:495 ipalib/plugins/dns.py:610
-#: ipalib/plugins/dns.py:695 ipalib/plugins/dns.py:819
-msgid "Zone name"
+#: ipalib/plugins/dns.py:321
+msgid "Active zone"
msgstr ""
-#: ipalib/plugins/dns.py:500
-msgid "resource name"
+#: ipalib/plugins/dns.py:322
+msgid "Is zone active?"
msgstr ""
-#: ipalib/plugins/dns.py:505 ipalib/plugins/dns.py:620
-#: ipalib/plugins/dns.py:711
-msgid "Record type"
+#: ipalib/plugins/dns.py:328
+msgid "Dynamic update"
msgstr ""
-#: ipalib/plugins/dns.py:509 ipalib/plugins/dns.py:624
-msgid "Data"
+#: ipalib/plugins/dns.py:329
+msgid "Allow dynamic updates."
+msgstr ""
+
+#: ipalib/plugins/dns.py:338
+msgid ""
+"\n"
+" Create new DNS zone (SOA record).\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:343
+msgid "Force DNS zone creation even if nameserver not in DNS."
+msgstr ""
+
+#: ipalib/plugins/dns.py:346
+msgid "Add the nameserver to DNS with this IP address"
+msgstr ""
+
+#: ipalib/plugins/dns.py:352
+msgid "DNS is not configured"
+msgstr ""
+
+#: ipalib/plugins/dns.py:386
+msgid ""
+"\n"
+" Delete DNS zone (SOA record).\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:394
+msgid ""
+"\n"
+" Modify DNS zone (SOA record).\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:407
+msgid ""
+"\n"
+" Search for DNS zones (SOA records).\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:415
+msgid ""
+"\n"
+" Display information about a DNS zone (SOA record).\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:423
+msgid ""
+"\n"
+" Disable DNS Zone.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:427
+msgid "Disabled DNS zone \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/dns.py:445
+msgid ""
+"\n"
+" Enable DNS Zone.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:449
+msgid "Enabled DNS zone \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/dns.py:467
+msgid ""
+"\n"
+" DNS record.\n"
+" "
msgstr ""
-#: ipalib/plugins/dns.py:510 ipalib/plugins/dns.py:625
-msgid "Type-specific data"
+#: ipalib/plugins/dns.py:477
+msgid "DNS resource record"
msgstr ""
-#: ipalib/plugins/dns.py:517
+#: ipalib/plugins/dns.py:482 ipalib/plugins/dns.py:483
+msgid "Record name"
+msgstr ""
+
+#: ipalib/plugins/dns.py:488 ipalib/plugins/dns.py:489
msgid "Time to live"
msgstr ""
-#: ipalib/plugins/dns.py:522
+#: ipalib/plugins/dns.py:493
msgid "Class"
msgstr ""
-#: ipalib/plugins/dns.py:615 ipalib/plugins/dns.py:707
-#: ipalib/plugins/dns.py:824
-msgid "Resource name"
+#: ipalib/plugins/dns.py:494
+msgid "DNS class"
msgstr ""
-#: ipalib/plugins/dns.py:700
-msgid "Search criteria"
+#: ipalib/plugins/dns.py:521
+msgid ""
+"\n"
+" Base class for DNS record commands with record options.\n"
+" "
msgstr ""
-#: ipalib/plugins/dns.py:715
-msgid "type-specific data"
+#: ipalib/plugins/dns.py:550
+msgid ""
+"\n"
+" Base class for adding/removing records from DNS resource entries.\n"
+" "
msgstr ""
-#: ipalib/plugins/dns.py:865
-#, python-format
+#: ipalib/plugins/dns.py:614
+msgid ""
+"\n"
+" Add records to DNS resource.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:630
+msgid ""
+"\n"
+" Add new DNS resource record.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:637
+msgid "force NS record creation even if its hostname is not in DNS"
+msgstr ""
+
+#: ipalib/plugins/dns.py:696
+msgid ""
+"\n"
+" Delete DNS record entry.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:699
+msgid "Deleted record \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/dns.py:706
+msgid ""
+"\n"
+" Delete DNS resource record.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:713
+msgid "Delete all associated records"
+msgstr ""
+
+#: ipalib/plugins/dns.py:749
+msgid ""
+"\n"
+" Display DNS resource.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:765
+msgid ""
+"\n"
+" Search for DNS resources.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:792
+msgid ""
+"\n"
+" Resolve a host name in DNS\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/dns.py:796
msgid "Found '%(value)s'"
msgstr ""
-#: ipalib/plugins/dns.py:869
+#: ipalib/plugins/dns.py:800
msgid "Hostname"
msgstr ""
-#: ipalib/plugins/dns.py:882
-#, python-format
+#: ipalib/plugins/dns.py:822
msgid "Host '%(host)s' not found"
msgstr ""
-#: ipalib/plugins/group.py:94
+#: ipalib/plugins/dns.py:830
+msgid ""
+"\n"
+" Checks if any of the servers has the DNS service enabled.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:19
+msgid ""
+"\n"
+"Entitlements\n"
+"\n"
+"Manage entitlements for client machines\n"
+"\n"
+"Entitlements can be managed either by registering with an entitlement\n"
+"server with a username and password or by manually importing entitlement\n"
+"certificates. An entitlement certificate contains embedded information\n"
+"such as the product being entitled, the quantity and the validity dates.\n"
+"\n"
+"An entitlement server manages the number of client entitlements available.\n"
+"To mark these entitlements as used by the IPA server you provide a quantity\n"
+"and they are marked as consumed on the entitlement server.\n"
+"\n"
+" Register with an entitlement server:\n"
+" ipa entitle-register consumer\n"
+"\n"
+" Import an entitlement certificate:\n"
+" ipa entitle-import /home/user/ipaclient.pem\n"
+"\n"
+" Display current entitlements:\n"
+" ipa entitle-status\n"
+"\n"
+" Retrieve details on entitlement certificates:\n"
+" ipa entitle-get\n"
+"\n"
+" Consume some entitlements from the entitlement server:\n"
+" ipa entitle-consume 50\n"
+"\n"
+"The registration ID is a Unique Identifier (UUID). This ID will be\n"
+"IMPORTED if you have used entitle-import.\n"
+"\n"
+"Changes to /etc/rhsm/rhsm.conf require a restart of the httpd service.\n"
+msgstr ""
+
+#: ipalib/plugins/entitle.py:105
+msgid ""
+"\n"
+" The M2Crypto/openSSL modules are very picky about PEM format and\n"
+" require lines split to 64 characters with proper headers.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:115
+msgid ""
+"\n"
+" Get our entitlement pool. Assume there is only one pool.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:138
+msgid ""
+"\n"
+" Retrieve our UUID, certificate and key from LDAP.\n"
+"\n"
+" Except on error the caller is responsible for removing temporary files\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:187
+msgid ""
+"\n"
+" Entitlement object\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:213
+msgid ""
+"\n"
+" Display current entitlements\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:221 ipalib/plugins/entitle.py:609
+msgid "UUID"
+msgstr ""
+
+#: ipalib/plugins/entitle.py:224 ipalib/plugins/entitle.py:313
+#: ipalib/plugins/entitle.py:395 ipalib/plugins/entitle.py:582
+#: ipalib/plugins/entitle.py:697
+msgid "Product"
+msgstr ""
+
+#: ipalib/plugins/entitle.py:227 ipalib/plugins/entitle.py:293
+#: ipalib/plugins/entitle.py:303 ipalib/plugins/entitle.py:398
+#: ipalib/plugins/entitle.py:585 ipalib/plugins/entitle.py:687
+msgid "Quantity"
+msgstr ""
+
+#: ipalib/plugins/entitle.py:230 ipalib/plugins/entitle.py:316
+#: ipalib/plugins/entitle.py:588 ipalib/plugins/entitle.py:700
+msgid "Consumed"
+msgstr ""
+
+#: ipalib/plugins/entitle.py:283
+msgid ""
+"\n"
+" Consume an entitlement\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:289
+msgid "Consumed %(value)s entitlement(s)."
+msgstr ""
+
+#: ipalib/plugins/entitle.py:321
+msgid ""
+"\n"
+" Override this so we can set value to the number of entitlements\n"
+" consumed.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:369 ipalib/plugins/entitle.py:731
+msgid ""
+"\n"
+" Returning the certificates isn't very interesting. Return the\n"
+" status of entitlements instead.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:387
+msgid ""
+"\n"
+" Retrieve the entitlement certs\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:401
+msgid "Start"
+msgstr ""
+
+#: ipalib/plugins/entitle.py:404
+msgid "End"
+msgstr ""
+
+#: ipalib/plugins/entitle.py:407 ipalib/plugins/host.py:146
+#: ipalib/plugins/internal.py:126 ipalib/plugins/service.py:96
+msgid "Serial Number"
+msgstr ""
+
+#: ipalib/plugins/entitle.py:442 ipalib/plugins/entitle.py:633
+#: ipalib/plugins/entitle.py:635
+msgid "Not an entitlement certificate"
+msgstr ""
+
+#: ipalib/plugins/entitle.py:467
+msgid ""
+"\n"
+" Search for entitlement accounts.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:480
+msgid ""
+"\n"
+" Register to the entitlement system\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:486
+msgid "Registered to entitlement server."
+msgstr ""
+
+#: ipalib/plugins/entitle.py:490
+msgid "Username"
+msgstr ""
+
+#: ipalib/plugins/entitle.py:497 ipalib/plugins/entitle.py:610
+msgid "Enrollment UUID"
+msgstr ""
+
+#: ipalib/plugins/entitle.py:501 ipalib/plugins/migration.py:264
+#: ipalib/plugins/passwd.py:59 ipalib/plugins/user.py:161
+msgid "Password"
+msgstr ""
+
+#: ipalib/plugins/entitle.py:502
+msgid "Registration password"
+msgstr ""
+
+#: ipalib/plugins/entitle.py:576
+msgid ""
+"\n"
+" Import an entitlement certificate.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:653
+msgid ""
+"\n"
+" If we are adding the first entry there are no updates so "
+"EmptyModlist\n"
+" will get thrown. Ignore it.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:674
+msgid ""
+"\n"
+" Re-sync the local entitlement cache with the entitlement server\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/entitle.py:680
+msgid "Entitlement(s) synchronized."
+msgstr ""
+
+#: ipalib/plugins/group.py:20
+msgid ""
+"\n"
+"Groups of users\n"
+"\n"
+"Manage groups of users. By default, new groups are POSIX groups. You\n"
+"can add the --nonposix option to the group-add command to mark a new group\n"
+"as non-POSIX, and you can use the same argument to the group-mod command\n"
+"to convert a non-POSIX group to a POSIX group. POSIX groups cannot be\n"
+"converted to non-POSIX groups.\n"
+"\n"
+"Every group must have a description.\n"
+"\n"
+"POSIX groups must have a Group ID (GID) number. Changing a GID is\n"
+"supported but can have an impact on your file permissions. It is not "
+"necessary\n"
+"to supply a GID when creating a group. IPA will generate one automatically\n"
+"if it is not provided.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a new group:\n"
+" ipa group-add --desc='local administrators' localadmins\n"
+"\n"
+" Add a new non-POSIX group:\n"
+" ipa group-add --nonposix --desc='remote administrators' remoteadmins\n"
+"\n"
+" Convert a non-POSIX group to posix:\n"
+" ipa group-mod --posix remoteadmins\n"
+"\n"
+" Add a new POSIX group with a specific Group ID number:\n"
+" ipa group-add --gid=500 --desc='unix admins' unixadmins\n"
+"\n"
+" Add a new POSIX group and let IPA assign a Group ID number:\n"
+" ipa group-add --desc='printer admins' printeradmins\n"
+"\n"
+" Remove a group:\n"
+" ipa group-del unixadmins\n"
+"\n"
+" To add the \"remoteadmins\" group to the \"localadmins\" group:\n"
+" ipa group-add-member --groups=remoteadmins localadmins\n"
+"\n"
+" Add a list of users to the \"localadmins\" group:\n"
+" ipa group-add-member --users=test1,test2 localadmins\n"
+"\n"
+" Remove a user from the \"localadmins\" group:\n"
+" ipa group-remove-member --users=test2 localadmins\n"
+"\n"
+" Display information about a named group.\n"
+" ipa group-show localadmins\n"
+msgstr ""
+
+#: ipalib/plugins/group.py:76
+msgid ""
+"\n"
+" Group object.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/group.py:99
msgid "User Groups"
msgstr ""
-#: ipalib/plugins/group.py:102
+#: ipalib/plugins/group.py:107
msgid "Group name"
msgstr ""
-#: ipalib/plugins/group.py:109 ipalib/plugins/sudocmdgroup.py:78
+#: ipalib/plugins/group.py:114 ipalib/plugins/sudocmdgroup.py:77
msgid "Group description"
msgstr ""
-#: ipalib/plugins/group.py:113
+#: ipalib/plugins/group.py:118 ipalib/plugins/user.py:176
msgid "GID"
msgstr ""
-#: ipalib/plugins/group.py:114
+#: ipalib/plugins/group.py:119
msgid "GID (use this option to set it manually)"
msgstr ""
-#: ipalib/plugins/group.py:117 ipalib/plugins/rolegroup.py:94
-#: ipalib/plugins/taskgroup.py:66
-msgid "Member groups"
+#: ipalib/plugins/group.py:127
+msgid ""
+"\n"
+" Create a new group.\n"
+" "
msgstr ""
-#: ipalib/plugins/group.py:121 ipalib/plugins/rolegroup.py:98
-#: ipalib/plugins/taskgroup.py:70
-msgid "Member users"
+#: ipalib/plugins/group.py:131
+msgid "Added group \"%(value)s\""
msgstr ""
-#: ipalib/plugins/group.py:134
-#, python-format
-msgid "Added group \"%(value)s\""
+#: ipalib/plugins/group.py:136
+msgid "Create as a non-POSIX group"
msgstr ""
-#: ipalib/plugins/group.py:139
-msgid "Create as a non-POSIX group?"
+#: ipalib/plugins/group.py:153
+msgid ""
+"\n"
+" Delete group.\n"
+" "
msgstr ""
-#: ipalib/plugins/group.py:160
-#, python-format
+#: ipalib/plugins/group.py:157
msgid "Deleted group \"%(value)s\""
msgstr ""
-#: ipalib/plugins/group.py:191
-#, python-format
+#: ipalib/plugins/group.py:185
+msgid ""
+"\n"
+" Modify a group.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/group.py:188
msgid "Modified group \"%(value)s\""
msgstr ""
-#: ipalib/plugins/group.py:196
+#: ipalib/plugins/group.py:193
msgid "change to a POSIX group"
msgstr ""
-#: ipalib/plugins/group.py:222 ipalib/plugins/hbacsvcgroup.py:129
-#, python-format
+#: ipalib/plugins/group.py:214
+msgid ""
+"\n"
+" Search for groups.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/group.py:219
msgid "%(count)d group matched"
msgid_plural "%(count)d groups matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/group.py:257
-#, python-format
+#: ipalib/plugins/group.py:226 ipalib/plugins/netgroup.py:192
+msgid "search for private groups"
+msgstr ""
+
+#: ipalib/plugins/group.py:256
+msgid ""
+"\n"
+" Display information about a named group.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/group.py:264
+msgid ""
+"\n"
+" Add members to a group.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/group.py:272
+msgid ""
+"\n"
+" Remove members from a group.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/group.py:280
+msgid ""
+"\n"
+" Detach a managed group from a user\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/group.py:284
msgid "Detached group \"%(value)s\" from user \"%(value)s\""
msgstr ""
-#: ipalib/plugins/group.py:273
+#: ipalib/plugins/group.py:287
+msgid ""
+"\n"
+" This requires updating both the user and the group. We first need "
+"to\n"
+" verify that both the user and group can be updated, then we go\n"
+" about our work. We don't want a situation where only the user or\n"
+" group can be modified and we're left in a bad state.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/group.py:305
msgid "not allowed to modify user entries"
msgstr ""
-#: ipalib/plugins/group.py:277
+#: ipalib/plugins/group.py:311
msgid "not allowed to modify group entries"
msgstr ""
-#: ipalib/plugins/group.py:284 ipalib/plugins/group.py:295
+#: ipalib/plugins/group.py:330
msgid "Not a managed group"
msgstr ""
-#: ipalib/plugins/hbac.py:106
+#: ipalib/plugins/hbacrule.py:19
+msgid ""
+"\n"
+"Host-based access control\n"
+"\n"
+"Control who can access what services on what hosts and from where. You\n"
+"can use HBAC to control which users or groups on a source host can\n"
+"access a service, or group of services, on a target host.\n"
+"\n"
+"You can also specify a category of users, target hosts, and source\n"
+"hosts. This is currently limited to \"all\", but might be expanded in the\n"
+"future.\n"
+"\n"
+"Target hosts and source hosts in HBAC rules must be hosts managed by IPA.\n"
+"\n"
+"The available services and groups of services are controlled by the\n"
+"hbacsvc and hbacsvcgroup plug-ins respectively.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Create a rule, \"test1\", that grants all users access to the host \"server"
+"\" from\n"
+" anywhere:\n"
+" ipa hbacrule-add --type=allow --usercat=all --srchostcat=all test1\n"
+" ipa hbacrule-add-host --hosts=server.example.com test1\n"
+"\n"
+" Display the properties of a named HBAC rule:\n"
+" ipa hbacrule-show test1\n"
+"\n"
+" Create a rule for a specific service. This lets the user john access\n"
+" the sshd service on any machine from any machine:\n"
+" ipa hbacrule-add --type=allow --hostcat=all --srchostcat=all john_sshd\n"
+" ipa hbacrule-add-user --users=john john_sshd\n"
+" ipa hbacrule-add-service --hbacsvcs=sshd john_sshd\n"
+"\n"
+" Create a rule for a new service group. This lets the user john access\n"
+" the FTP service on any machine from any machine:\n"
+" ipa hbacsvcgroup-add ftpers\n"
+" ipa hbacsvc-add sftp\n"
+" ipa hbacsvcgroup-add-member --hbacsvcs=ftp,sftp ftpers\n"
+" ipa hbacrule-add --type=allow --hostcat=all --srchostcat=all john_ftp\n"
+" ipa hbacrule-add-user --users=john john_ftp\n"
+" ipa hbacrule-add-service --hbacsvcgroups=ftpers john_ftp\n"
+"\n"
+" Disable a named HBAC rule:\n"
+" ipa hbacrule-disable test1\n"
+"\n"
+" Remove a named HBAC rule:\n"
+" ipa hbacrule-del allow_server\n"
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:91
+msgid ""
+"\n"
+" See if options[attribute] is lower-case 'all' in a safe way.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:103
+msgid ""
+"\n"
+" HBAC object.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:126 ipalib/plugins/internal.py:367
msgid "HBAC"
msgstr ""
-#: ipalib/plugins/hbac.py:111 ipalib/plugins/sudorule.py:53
+#: ipalib/plugins/hbacrule.py:131 ipalib/plugins/sudorule.py:73
msgid "Rule name"
msgstr ""
-#: ipalib/plugins/hbac.py:116
+#: ipalib/plugins/hbacrule.py:136
msgid "Rule type (allow or deny)"
msgstr ""
-#: ipalib/plugins/hbac.py:117
+#: ipalib/plugins/hbacrule.py:137
msgid "Rule type"
msgstr ""
-#: ipalib/plugins/hbac.py:123
+#: ipalib/plugins/hbacrule.py:143 ipalib/plugins/netgroup.py:124
+#: ipalib/plugins/sudorule.py:86
msgid "User category"
msgstr ""
-#: ipalib/plugins/hbac.py:124
+#: ipalib/plugins/hbacrule.py:144 ipalib/plugins/netgroup.py:125
+#: ipalib/plugins/sudorule.py:87
msgid "User category the rule applies to"
msgstr ""
-#: ipalib/plugins/hbac.py:129
+#: ipalib/plugins/hbacrule.py:149 ipalib/plugins/netgroup.py:130
+#: ipalib/plugins/sudorule.py:92
msgid "Host category"
msgstr ""
-#: ipalib/plugins/hbac.py:130
+#: ipalib/plugins/hbacrule.py:150 ipalib/plugins/netgroup.py:131
+#: ipalib/plugins/sudorule.py:93
msgid "Host category the rule applies to"
msgstr ""
-#: ipalib/plugins/hbac.py:135
+#: ipalib/plugins/hbacrule.py:155
msgid "Source host category"
msgstr ""
-#: ipalib/plugins/hbac.py:136
+#: ipalib/plugins/hbacrule.py:156
msgid "Source host category the rule applies to"
msgstr ""
-#: ipalib/plugins/hbac.py:141
+#: ipalib/plugins/hbacrule.py:161
msgid "Service category"
msgstr ""
-#: ipalib/plugins/hbac.py:142
+#: ipalib/plugins/hbacrule.py:162
msgid "Service category the rule applies to"
msgstr ""
-#: ipalib/plugins/hbac.py:147 ipalib/plugins/hbac.py:325
-#: ipalib/plugins/hbac.py:363
-msgid "Access time"
-msgstr ""
-
-#: ipalib/plugins/hbac.py:154
+#: ipalib/plugins/hbacrule.py:174 ipalib/plugins/sudorule.py:81
msgid "Enabled"
msgstr ""
-#: ipalib/plugins/hbac.py:158 ipalib/plugins/sudorule.py:61
-#: ipalib/plugins/user.py:76
+#: ipalib/plugins/hbacrule.py:178 ipalib/plugins/sudorule.py:115
+#: ipalib/plugins/user.py:97
msgid "Users"
msgstr ""
-#: ipalib/plugins/hbac.py:162 ipalib/plugins/host.py:113
-#: ipalib/plugins/sudorule.py:65
+#: ipalib/plugins/hbacrule.py:182 ipalib/plugins/internal.py:266
+#: ipalib/plugins/sudorule.py:119
+msgid "Groups"
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:186 ipalib/plugins/host.py:209
+#: ipalib/plugins/sudorule.py:123
msgid "Hosts"
msgstr ""
-#: ipalib/plugins/hbac.py:166 ipalib/plugins/hostgroup.py:69
-#: ipalib/plugins/sudorule.py:69
+#: ipalib/plugins/hbacrule.py:190 ipalib/plugins/hostgroup.py:73
+#: ipalib/plugins/sudorule.py:127
msgid "Host Groups"
msgstr ""
-#: ipalib/plugins/hbac.py:170
+#: ipalib/plugins/hbacrule.py:194
msgid "Source hosts"
msgstr ""
-#: ipalib/plugins/hbac.py:174 ipalib/plugins/hbacsvc.py:60
-#: ipalib/plugins/service.py:192
+#: ipalib/plugins/hbacrule.py:198
+msgid "Source host groups"
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:202 ipalib/plugins/internal.py:190
+#: ipalib/plugins/service.py:299
msgid "Services"
msgstr ""
-#: ipalib/plugins/hbac.py:178
+#: ipalib/plugins/hbacrule.py:206
msgid "Service Groups"
msgstr ""
-#: ipalib/plugins/hbacsvc.py:65
-msgid "Service name"
+#: ipalib/plugins/hbacrule.py:215
+msgid ""
+"\n"
+" Create a new HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:219
+msgid "Added HBAC rule \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:230
+msgid ""
+"\n"
+" Delete an HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:234
+msgid "Deleted HBAC rule \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:240
+msgid ""
+"\n"
+" Modify an HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:244
+msgid "Modified HBAC rule \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:266
+msgid ""
+"\n"
+" Search for HBAC rules.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:270
+msgid "%(count)d HBAC rule matched"
+msgid_plural "%(count)d HBAC rules matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/hbacrule.py:278
+msgid ""
+"\n"
+" Display the properties of an HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:286
+msgid ""
+"\n"
+" Enable an HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:290
+msgid "Enabled HBAC rule \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:315
+msgid ""
+"\n"
+" Disable an HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:319
+msgid "Disabled HBAC rule \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:344
+msgid ""
+"\n"
+" Add an access time to an HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:351 ipalib/plugins/hbacrule.py:391
+msgid "Access time"
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:385
+msgid ""
+"\n"
+" Remove access time to HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:425
+msgid ""
+"\n"
+" Add users and groups to an HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:442
+msgid ""
+"\n"
+" Remove users and groups from an HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:452
+msgid ""
+"\n"
+" Add target hosts and hostgroups to an HBAC rule\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:469
+msgid ""
+"\n"
+" Remove target hosts and hostgroups from an HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:479
+msgid ""
+"\n"
+" Add source hosts and hostgroups from a HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:496
+msgid ""
+"\n"
+" Remove source hosts and hostgroups from an HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:506
+msgid ""
+"\n"
+" Add services to an HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacrule.py:523
+msgid ""
+"\n"
+" Remove service and service groups from an HBAC rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacsvc.py:19
+msgid ""
+"\n"
+"HBAC Services\n"
+"\n"
+"The PAM services that HBAC can control access to. The name used here\n"
+"must match the service name that PAM is evaluating.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a new HBAC service:\n"
+" ipa hbacsvc-add tftp\n"
+"\n"
+" Modify an existing HBAC service:\n"
+" ipa hbacsvc-mod --desc=\"TFTP service\" tftp\n"
+"\n"
+" Search for HBAC services. This example will return two results, the FTP\n"
+" service and the newly-added tftp service:\n"
+" ipa hbacsvc-find ftp\n"
+"\n"
+" Delete an HBAC service:\n"
+" ipa hbacsvc-del tftp\n"
+"\n"
+msgstr ""
+
+#: ipalib/plugins/hbacsvc.py:51
+msgid ""
+"\n"
+" HBAC Service object.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacsvc.py:61
+msgid "HBAC Services"
msgstr ""
#: ipalib/plugins/hbacsvc.py:66
-msgid "HBAC Service"
+msgid "Service name"
msgstr ""
-#: ipalib/plugins/hbacsvc.py:73
-msgid "Description of service"
+#: ipalib/plugins/hbacsvc.py:67
+msgid "HBAC service"
msgstr ""
-#: ipalib/plugins/hbacsvc.py:84 ipalib/plugins/service.py:216
-#, python-format
-msgid "Added service \"%(value)s\""
+#: ipalib/plugins/hbacsvc.py:74
+msgid "HBAC service description"
msgstr ""
-#: ipalib/plugins/hbacsvc.py:93 ipalib/plugins/service.py:255
-#, python-format
-msgid "Deleted service \"%(value)s\""
+#: ipalib/plugins/hbacsvc.py:82
+msgid ""
+"\n"
+" Add a new HBAC service.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacsvc.py:85
+msgid "Added HBAC service \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/hbacsvc.py:91
+msgid ""
+"\n"
+" Delete an existing HBAC service.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacsvc.py:94
+msgid "Deleted HBAC service \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/hbacsvc.py:100
+msgid ""
+"\n"
+" Modify an HBAC service.\n"
+" "
msgstr ""
-#: ipalib/plugins/hbacsvcgroup.py:66
-msgid "HBAC Service Groups"
+#: ipalib/plugins/hbacsvc.py:104
+msgid "Modified HBAC service \"%(value)s\""
msgstr ""
-#: ipalib/plugins/hbacsvcgroup.py:71
+#: ipalib/plugins/hbacsvc.py:110
+msgid ""
+"\n"
+" Search for HBAC services.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacsvc.py:114
+msgid "%(count)d HBAC service matched"
+msgid_plural "%(count)d HBAC services matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/hbacsvc.py:122
+msgid ""
+"\n"
+" Display information about an HBAC service.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacsvcgroup.py:19
+msgid ""
+"\n"
+"HBAC Service Groups\n"
+"\n"
+"HBAC service groups can contain any number of individual services,\n"
+"or \"members\". Every group must have a description.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a new HBAC service group:\n"
+" ipa hbacsvcgroup-add --desc=\"login services\" login\n"
+"\n"
+" Add members to an HBAC service group:\n"
+" ipa hbacsvcgroup-add-member --hbacsvcs=sshd,login login\n"
+"\n"
+" Display information about a named group:\n"
+" ipa hbacsvcgroup-show login\n"
+"\n"
+" Add a new group to the \"login\" group:\n"
+" ipa hbacsvcgroup-add --desc=\"switch users\" login\n"
+" ipa hbacsvcgroup-add-member --hbacsvcs=su,su-l login\n"
+"\n"
+" Delete an HBAC service group:\n"
+" ipa hbacsvcgroup-del login\n"
+msgstr ""
+
+#: ipalib/plugins/hbacsvcgroup.py:51
+msgid ""
+"\n"
+" HBAC service group object.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacsvcgroup.py:64
+msgid "HBAC service Groups"
+msgstr ""
+
+#: ipalib/plugins/hbacsvcgroup.py:69
msgid "Service group name"
msgstr ""
-#: ipalib/plugins/hbacsvcgroup.py:78
+#: ipalib/plugins/hbacsvcgroup.py:76
msgid "HBAC service group description"
msgstr ""
-#: ipalib/plugins/hbacsvcgroup.py:81
-msgid "Member services"
+#: ipalib/plugins/hbacsvcgroup.py:84
+msgid ""
+"\n"
+" Add a new HBAC service group.\n"
+" "
msgstr ""
-#: ipalib/plugins/hbacsvcgroup.py:85
-msgid "Member service groups"
+#: ipalib/plugins/hbacsvcgroup.py:87
+msgid "Added HBAC service group \"%(value)s\""
msgstr ""
-#: ipalib/plugins/hbacsvcgroup.py:101
-#, python-format
-msgid "Added HBAC Service group \"%(value)s\""
+#: ipalib/plugins/hbacsvcgroup.py:93
+msgid ""
+"\n"
+" Delete an HBAC service group.\n"
+" "
msgstr ""
-#: ipalib/plugins/hbacsvcgroup.py:110
-#, python-format
-msgid "Deleted HBAC Service group \"%(value)s\""
+#: ipalib/plugins/hbacsvcgroup.py:96
+msgid "Deleted HBAC service group \"%(value)s\""
msgstr ""
-#: ipalib/plugins/hbacsvcgroup.py:119
-#, python-format
-msgid "Modified HBAC Service group \"%(value)s\""
+#: ipalib/plugins/hbacsvcgroup.py:102
+msgid ""
+"\n"
+" Modify an HBAC service group.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacsvcgroup.py:105
+msgid "Modified HBAC service group \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/hbacsvcgroup.py:111
+msgid ""
+"\n"
+" Search for an HBAC service group.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacsvcgroup.py:114
+msgid "%(count)d HBAC service group matched"
+msgid_plural "%(count)d HBAC service groups matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/hbacsvcgroup.py:122
+msgid ""
+"\n"
+" Display information about an HBAC service group.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hbacsvcgroup.py:130
+msgid ""
+"\n"
+" Add members to an HBAC service group.\n"
+" "
msgstr ""
-#: ipalib/plugins/host.py:86
+#: ipalib/plugins/hbacsvcgroup.py:138
+msgid ""
+"\n"
+" Remove members from an HBAC service group.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/host.py:20
+msgid ""
+"\n"
+"Hosts/Machines\n"
+"\n"
+"A host represents a machine. It can be used in a number of contexts:\n"
+"- service entries are associated with a host\n"
+"- a host stores the host/ service principal\n"
+"- a host can be used in Host-based Access Control (HBAC) rules\n"
+"- every enrolled client generates a host entry\n"
+"\n"
+"ENROLLMENT:\n"
+"\n"
+"There are three enrollment scenarios when enrolling a new client:\n"
+"\n"
+"1. You are enrolling as a full administrator. The host entry may exist\n"
+" or not. A full administrator is a member of the hostadmin role\n"
+" or the admins group.\n"
+"2. You are enrolling as a limited administrator. The host must already\n"
+" exist. A limited administrator is a member a role with the\n"
+" Host Enrollment privilege.\n"
+"3. The host has been created with a one-time password.\n"
+"\n"
+"A host can only be enrolled once. If a client has enrolled and needs to\n"
+"be re-enrolled, the host entry must be removed and re-created. Note that\n"
+"re-creating the host entry will result in all services for the host being\n"
+"removed, and all SSL certificates associated with those services being\n"
+"revoked.\n"
+"\n"
+"A host can optionally store information such as where it is located,\n"
+"the OS that it runs, etc.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a new host:\n"
+" ipa host-add --location=\"3rd floor lab\" --locality=Dallas test.example."
+"com\n"
+"\n"
+" Delete a host:\n"
+" ipa host-del test.example.com\n"
+"\n"
+" Add a new host with a one-time password:\n"
+" ipa host-add --os='Fedora 12' --password=Secret123 test.example.com\n"
+"\n"
+" Add a new host with a random one-time password:\n"
+" ipa host-add --os='Fedora 12' --random test.example.com\n"
+"\n"
+" Modify information about a host:\n"
+" ipa host-mod --os='Fedora 12' test.example.com\n"
+"\n"
+" Disable the host Kerberos key, SSL certificate and all of its services:\n"
+" ipa host-disable test.example.com\n"
+"\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:102
+msgid ""
+"\n"
+" Require at least one dot in the hostname (to support localhost."
+"localdomain)\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/host.py:106
msgid "Fully-qualified hostname required"
msgstr ""
-#: ipalib/plugins/host.py:118
+#: ipalib/plugins/host.py:137 ipalib/plugins/service.py:87
+msgid "Keytab"
+msgstr ""
+
+#: ipalib/plugins/host.py:169
+msgid ""
+"\n"
+" Verify that we have either an IPv4 or IPv6 address.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/host.py:173
+msgid "invalid IP address"
+msgstr ""
+
+#: ipalib/plugins/host.py:178
+msgid ""
+"\n"
+" Host object.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/host.py:214
msgid "Host name"
msgstr ""
-#: ipalib/plugins/host.py:125
+#: ipalib/plugins/host.py:221
msgid "A description of this host"
msgstr ""
-#: ipalib/plugins/host.py:129
+#: ipalib/plugins/host.py:225
msgid "Locality"
msgstr ""
-#: ipalib/plugins/host.py:130
+#: ipalib/plugins/host.py:226
msgid "Host locality (e.g. \"Baltimore, MD\")"
msgstr ""
-#: ipalib/plugins/host.py:135
+#: ipalib/plugins/host.py:231
msgid "Host location (e.g. \"Lab 2\")"
msgstr ""
-#: ipalib/plugins/host.py:139
+#: ipalib/plugins/host.py:235
msgid "Platform"
msgstr ""
-#: ipalib/plugins/host.py:140
+#: ipalib/plugins/host.py:236
msgid "Host hardware platform (e.g. \"Lenovo T61\")"
msgstr ""
-#: ipalib/plugins/host.py:144
+#: ipalib/plugins/host.py:240
msgid "Operating system"
msgstr ""
-#: ipalib/plugins/host.py:145
+#: ipalib/plugins/host.py:241
msgid "Host operating system and version (e.g. \"Fedora 9\")"
msgstr ""
-#: ipalib/plugins/host.py:149
+#: ipalib/plugins/host.py:245
msgid "User password"
msgstr ""
-#: ipalib/plugins/host.py:150
+#: ipalib/plugins/host.py:246
msgid "Password used in bulk enrollment"
msgstr ""
-#: ipalib/plugins/host.py:155 ipalib/plugins/service.py:205
-msgid "Base-64 encoded server certificate"
+#: ipalib/plugins/host.py:249
+msgid "Generate a random password to be used in bulk enrollment"
msgstr ""
-#: ipalib/plugins/host.py:158 ipalib/plugins/host.py:274
-msgid "Principal name"
+#: ipalib/plugins/host.py:254
+msgid "Random password"
msgstr ""
-#: ipalib/plugins/host.py:162 ipalib/plugins/hostgroup.py:93
-msgid "Member of host-groups"
+#: ipalib/plugins/host.py:260 ipalib/plugins/service.py:312
+msgid "Base-64 encoded server certificate"
msgstr ""
-#: ipalib/plugins/host.py:166
-msgid "Member of net-groups"
+#: ipalib/plugins/host.py:263 ipalib/plugins/host.py:539
+msgid "Principal name"
msgstr ""
-#: ipalib/plugins/host.py:170
-msgid "Member of role-groups"
+#: ipalib/plugins/host.py:289
+msgid ""
+"\n"
+" Add a new host.\n"
+" "
msgstr ""
-#: ipalib/plugins/host.py:199
-#, python-format
+#: ipalib/plugins/host.py:294
msgid "Added host \"%(value)s\""
msgstr ""
-#: ipalib/plugins/host.py:202
+#: ipalib/plugins/host.py:298 ipalib/plugins/service.py:329
+msgid "Force"
+msgstr ""
+
+#: ipalib/plugins/host.py:299
msgid "force host name even if not in DNS"
msgstr ""
-#: ipalib/plugins/host.py:235
-#, python-format
+#: ipalib/plugins/host.py:302
+msgid "skip reverse DNS detection"
+msgstr ""
+
+#: ipalib/plugins/host.py:305
+msgid "Add the host to DNS with this IP address"
+msgstr ""
+
+#: ipalib/plugins/host.py:321 ipalib/plugins/host.py:468
+msgid "DNS zone %(zone)s not found"
+msgstr ""
+
+#: ipalib/plugins/host.py:334
+msgid "Reverse DNS zone %(zone)s not found"
+msgstr ""
+
+#: ipalib/plugins/host.py:404
+msgid "The host was added but the DNS update failed with: %(exc)s"
+msgstr ""
+
+#: ipalib/plugins/host.py:413
+msgid ""
+"\n"
+" Delete a host.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/host.py:417
msgid "Deleted host \"%(value)s\""
msgstr ""
-#: ipalib/plugins/host.py:269
-#, python-format
+#: ipalib/plugins/host.py:422
+msgid "Remove entries from DNS"
+msgstr ""
+
+#: ipalib/plugins/host.py:528
+msgid ""
+"\n"
+" Modify information about a host.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/host.py:533
msgid "Modified host \"%(value)s\""
msgstr ""
-#: ipalib/plugins/host.py:275
+#: ipalib/plugins/host.py:540
msgid "Kerberos principal name for this host"
msgstr ""
-#: ipalib/plugins/host.py:319
-#, python-format
+#: ipalib/plugins/host.py:608
+msgid ""
+"\n"
+" Search for hosts.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/host.py:613
msgid "%(count)d host matched"
msgid_plural "%(count)d hosts matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/host.py:337 ipalib/plugins/service.py:84
-msgid "Keytab"
+#: ipalib/plugins/host.py:633
+msgid ""
+"\n"
+" Display information about a host.\n"
+" "
msgstr ""
-#: ipalib/plugins/host.py:359 ipalib/plugins/service.py:399
-#, python-format
-msgid "Removed kerberos key from \"%(value)s\""
+#: ipalib/plugins/host.py:639 ipalib/plugins/service.py:475
+msgid "file to store certificate in"
+msgstr ""
+
+#: ipalib/plugins/host.py:663 ipalib/plugins/service.py:497
+msgid "Certificate stored in file '%(file)s'"
+msgstr ""
+
+#: ipalib/plugins/host.py:674
+msgid ""
+"\n"
+" Disable the Kerberos key, SSL certificate and all services of a host.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/host.py:678
+msgid "Disabled host \"%(value)s\""
msgstr ""
-#: ipalib/plugins/host.py:368
-msgid "Host principal has no kerberos key"
+#: ipalib/plugins/host.py:760
+msgid ""
+"\n"
+" Add hosts that can manage this host.\n"
+" "
msgstr ""
-#: ipalib/plugins/hostgroup.py:74
+#: ipalib/plugins/host.py:771
+msgid ""
+"\n"
+" Remove hosts that can manage this host.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hostgroup.py:20
+msgid ""
+"\n"
+"Groups of hosts.\n"
+"\n"
+"Manage groups of hosts. This is useful for applying access control to a\n"
+"number of hosts by using Host-based Access Control.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a new host group:\n"
+" ipa hostgroup-add --desc=\"Baltimore hosts\" baltimore\n"
+"\n"
+" Add another new host group:\n"
+" ipa hostgroup-add --desc=\"Maryland hosts\" maryland\n"
+"\n"
+" Add members to the hostgroup:\n"
+" ipa hostgroup-add-member --hosts=box1,box2,box3 baltimore\n"
+"\n"
+" Add a hostgroup as a member of another hostgroup:\n"
+" ipa hostgroup-add-member --hostgroups=baltimore maryland\n"
+"\n"
+" Remove a host from the hostgroup:\n"
+" ipa hostgroup-remove-member --hosts=box2 baltimore\n"
+"\n"
+" Display a host group:\n"
+" ipa hostgroup-show baltimore\n"
+"\n"
+" Delete a hostgroup:\n"
+" ipa hostgroup-del baltimore\n"
+msgstr ""
+
+#: ipalib/plugins/hostgroup.py:55
+msgid ""
+"\n"
+" Hostgroup object.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hostgroup.py:78
msgid "Host-group"
msgstr ""
-#: ipalib/plugins/hostgroup.py:75
+#: ipalib/plugins/hostgroup.py:79
msgid "Name of host-group"
msgstr ""
-#: ipalib/plugins/hostgroup.py:82
+#: ipalib/plugins/hostgroup.py:86
msgid "A description of this host-group"
msgstr ""
-#: ipalib/plugins/hostgroup.py:85
-msgid "Member hosts"
+#: ipalib/plugins/hostgroup.py:94
+msgid ""
+"\n"
+" Add a new hostgroup.\n"
+" "
msgstr ""
-#: ipalib/plugins/hostgroup.py:89
-msgid "Member host-groups"
+#: ipalib/plugins/hostgroup.py:98
+msgid "Added hostgroup \"%(value)s\""
msgstr ""
-#: ipalib/plugins/hostgroup.py:106
-#, python-format
-msgid "Added hostgroup \"%(value)s\""
+#: ipalib/plugins/hostgroup.py:104
+msgid ""
+"\n"
+" Delete a hostgroup.\n"
+" "
msgstr ""
-#: ipalib/plugins/hostgroup.py:116
-#, python-format
+#: ipalib/plugins/hostgroup.py:108
msgid "Deleted hostgroup \"%(value)s\""
msgstr ""
-#: ipalib/plugins/hostgroup.py:126
-#, python-format
+#: ipalib/plugins/hostgroup.py:114
+msgid ""
+"\n"
+" Modify a hostgroup.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hostgroup.py:118
msgid "Modified hostgroup \"%(value)s\""
msgstr ""
-#: ipalib/plugins/hostgroup.py:137
-#, python-format
+#: ipalib/plugins/hostgroup.py:124
+msgid ""
+"\n"
+" Search for hostgroups.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hostgroup.py:128
msgid "%(count)d hostgroup matched"
msgid_plural "%(count)d hostgroups matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/internal.py:39
+#: ipalib/plugins/hostgroup.py:136
+msgid ""
+"\n"
+" Display information about a hostgroup.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hostgroup.py:144
+msgid ""
+"\n"
+" Add members to a hostgroup.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/hostgroup.py:152
+msgid ""
+"\n"
+" Remove members from a hostgroup.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/internal.py:22
+msgid ""
+"\n"
+"Plugins not accessible directly through the CLI, commands used internally\n"
+msgstr ""
+
+#: ipalib/plugins/internal.py:36
+msgid ""
+"\n"
+" Export plugin meta-data for the webUI.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/internal.py:44
+msgid "Name of object to export"
+msgstr ""
+
+#: ipalib/plugins/internal.py:47
+msgid "Name of method to export"
+msgstr ""
+
+#: ipalib/plugins/internal.py:52
+msgid "Dict of JSON encoded IPA Objects"
+msgstr ""
+
+#: ipalib/plugins/internal.py:53
+msgid "Dict of JSON encoded IPA Methods"
+msgstr ""
+
+#: ipalib/plugins/internal.py:96
msgid "Logged In As"
msgstr ""
-#: ipalib/plugins/internal.py:41
+#: ipalib/plugins/internal.py:99
+msgid "Attribute"
+msgstr ""
+
+#: ipalib/plugins/internal.py:102
+msgid "Add Automount Location"
+msgstr ""
+
+#: ipalib/plugins/internal.py:103
+msgid "Automount Location Settings"
+msgstr ""
+
+#: ipalib/plugins/internal.py:106
+msgid "Unspecified"
+msgstr ""
+
+#: ipalib/plugins/internal.py:107
+msgid "Key Compromise"
+msgstr ""
+
+#: ipalib/plugins/internal.py:108
+msgid "CA Compromise"
+msgstr ""
+
+#: ipalib/plugins/internal.py:109
+msgid "Affiliation Changed"
+msgstr ""
+
+#: ipalib/plugins/internal.py:110
+msgid "Superseded"
+msgstr ""
+
+#: ipalib/plugins/internal.py:111
+msgid "Cessation of Operation"
+msgstr ""
+
+#: ipalib/plugins/internal.py:112
+msgid "Certificate Hold"
+msgstr ""
+
+#: ipalib/plugins/internal.py:113
+msgid "Remove from CRL"
+msgstr ""
+
+#: ipalib/plugins/internal.py:114
+msgid "Privilege Withdrawn"
+msgstr ""
+
+#: ipalib/plugins/internal.py:115
+msgid "AA Compromise"
+msgstr ""
+
+#: ipalib/plugins/internal.py:116
+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:118
+msgid "Note"
+msgstr ""
+
+#: ipalib/plugins/internal.py:119
+msgid "Reason for Revocation"
+msgstr ""
+
+#: ipalib/plugins/internal.py:120
+msgid ""
+"To confirm your intention to restore this certificate, click the \"Restore\" "
+"button."
+msgstr ""
+
+#: ipalib/plugins/internal.py:122
+msgid "Issued To"
+msgstr ""
+
+#: ipalib/plugins/internal.py:123
+msgid "Common Name"
+msgstr ""
+
+#: ipalib/plugins/internal.py:124
+msgid "Organization"
+msgstr ""
+
+#: ipalib/plugins/internal.py:125
+msgid "Organizational Unit"
+msgstr ""
+
+#: ipalib/plugins/internal.py:127
+msgid "Issued By"
+msgstr ""
+
+#: ipalib/plugins/internal.py:128
+msgid "Validity"
+msgstr ""
+
+#: ipalib/plugins/internal.py:129
+msgid "Issued On"
+msgstr ""
+
+#: ipalib/plugins/internal.py:130
+msgid "Expires On"
+msgstr ""
+
+#: ipalib/plugins/internal.py:131
+msgid "Fingerprints"
+msgstr ""
+
+#: ipalib/plugins/internal.py:132
+msgid "SHA1 Fingerprint"
+msgstr ""
+
+#: ipalib/plugins/internal.py:133
+msgid "MD5 Fingerprint"
+msgstr ""
+
+#: ipalib/plugins/internal.py:134
+msgid "Enter the Base64-encoded CSR below"
+msgstr ""
+
+#: ipalib/plugins/internal.py:135
+msgid "Valid Certificate Present"
+msgstr ""
+
+#: ipalib/plugins/internal.py:136
+msgid "New Certificate"
+msgstr ""
+
+#: ipalib/plugins/internal.py:137
+msgid "Certificate Revoked"
+msgstr ""
+
+#: ipalib/plugins/internal.py:138
+msgid "No Valid Certificate"
+msgstr ""
+
+#: ipalib/plugins/internal.py:139
+msgid "Certificate for ${entity} ${primary_key}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:140
+msgid "Issue New Certificate for ${entity} ${primary_key}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:141
+msgid "Revoke Certificate for ${entity} ${primary_key}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:142
+msgid "Restore Certificate for ${entity} ${primary_key}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:146
+msgid "Name"
+msgstr ""
+
+#: ipalib/plugins/internal.py:149
+msgid "Add Delegation"
+msgstr ""
+
+#: ipalib/plugins/internal.py:152
+msgid "Add DNS Zone"
+msgstr ""
+
+#: ipalib/plugins/internal.py:153
+msgid "DNS Zone Settings"
+msgstr ""
+
+#: ipalib/plugins/internal.py:156
+msgid "Add DNS Resource Record"
+msgstr ""
+
+#: ipalib/plugins/internal.py:157
+msgid "Resource"
+msgstr ""
+
+#: ipalib/plugins/internal.py:159
+msgid "Data"
+msgstr ""
+
+#: ipalib/plugins/internal.py:160
+msgid "Records for DNS Zone"
+msgstr ""
+
+#: ipalib/plugins/internal.py:163
+msgid "Add New Group"
+msgstr ""
+
+#: ipalib/plugins/internal.py:164
+msgid "Group Settings"
+msgstr ""
+
+#: ipalib/plugins/internal.py:165 ipalib/plugins/internal.py:200
+msgid "Is this a POSIX group?"
+msgstr ""
+
+#: ipalib/plugins/internal.py:168 ipalib/plugins/internal.py:273
+msgid "Add New Rule"
+msgstr ""
+
+#: ipalib/plugins/internal.py:169 ipalib/plugins/internal.py:274
+#: ipalib/plugins/internal.py:300
+msgid "Active"
+msgstr ""
+
+#: ipalib/plugins/internal.py:170 ipalib/plugins/internal.py:276
+msgid "Allow"
+msgstr ""
+
+#: ipalib/plugins/internal.py:171 ipalib/plugins/internal.py:277
+msgid "Deny"
+msgstr ""
+
+#: ipalib/plugins/internal.py:172 ipalib/plugins/internal.py:275
+#: ipalib/plugins/internal.py:302
+msgid "Inactive"
+msgstr ""
+
+#: ipalib/plugins/internal.py:173 ipalib/plugins/internal.py:290
+msgid "Rule status"
+msgstr ""
+
+#: ipalib/plugins/internal.py:174 ipalib/plugins/internal.py:278
+msgid "Who"
+msgstr ""
+
+#: ipalib/plugins/internal.py:175 ipalib/plugins/internal.py:279
+msgid "Anyone"
+msgstr ""
+
+#: ipalib/plugins/internal.py:176 ipalib/plugins/internal.py:280
+msgid "Specified Users and Groups"
+msgstr ""
+
+#: ipalib/plugins/internal.py:177
+msgid "Accessing"
+msgstr ""
+
+#: ipalib/plugins/internal.py:178 ipalib/plugins/internal.py:282
+msgid "Any Host"
+msgstr ""
+
+#: ipalib/plugins/internal.py:179 ipalib/plugins/internal.py:283
+msgid "Specified Hosts and Groups"
+msgstr ""
+
+#: ipalib/plugins/internal.py:180
+msgid "Via Service"
+msgstr ""
+
+#: ipalib/plugins/internal.py:181
+msgid "Any Service"
+msgstr ""
+
+#: ipalib/plugins/internal.py:182
+msgid "Specified Services and Groups"
+msgstr ""
+
+#: ipalib/plugins/internal.py:183
+msgid "From"
+msgstr ""
+
+#: ipalib/plugins/internal.py:186
+msgid "Add New HBAC Service"
+msgstr ""
+
+#: ipalib/plugins/internal.py:189
+msgid "Add New HBAC Service Group"
+msgstr ""
+
+#: ipalib/plugins/internal.py:193
+msgid "Add New Host"
+msgstr ""
+
+#: ipalib/plugins/internal.py:194
+msgid "Host Certificate"
+msgstr ""
+
+#: ipalib/plugins/internal.py:195 ipalib/plugins/internal.py:253
+msgid "Host Name"
+msgstr ""
+
+#: ipalib/plugins/internal.py:196
+msgid "Host Settings"
+msgstr ""
+
+#: ipalib/plugins/internal.py:197
+msgid "Enrolled?"
+msgstr ""
+
+#: ipalib/plugins/internal.py:198
+msgid "Enrollment"
+msgstr ""
+
+#: ipalib/plugins/internal.py:199
+msgid "Fully Qualified Host Name"
+msgstr ""
+
+#: ipalib/plugins/internal.py:201 ipalib/plugins/internal.py:256
+msgid "Status"
+msgstr ""
+
+#: ipalib/plugins/internal.py:202
+msgid "Kerberos Key Present, Host Provisioned"
+msgstr ""
+
+#: ipalib/plugins/internal.py:203 ipalib/plugins/internal.py:258
+msgid "Delete Key, Unprovision"
+msgstr ""
+
+#: ipalib/plugins/internal.py:204 ipalib/plugins/internal.py:259
+msgid "Kerberos Key Not Present"
+msgstr ""
+
+#: ipalib/plugins/internal.py:205
+msgid "Enroll via One-Time-Password"
+msgstr ""
+
+#: ipalib/plugins/internal.py:206
+msgid "Set OTP"
+msgstr ""
+
+#: ipalib/plugins/internal.py:207
+msgid "One-Time-Password has been set."
+msgstr ""
+
+#: ipalib/plugins/internal.py:208 ipalib/plugins/internal.py:260
+msgid "Unprovisioning ${entity}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:209
+msgid "Are you sure you want to unprovision this host?"
+msgstr ""
+
+#: ipalib/plugins/internal.py:210 ipalib/plugins/internal.py:262
+msgid "Unprovision"
+msgstr ""
+
+#: ipalib/plugins/internal.py:213
+msgid "Add Hostgroup"
+msgstr ""
+
+#: ipalib/plugins/internal.py:214
+msgid "Hostgroup Settings"
+msgstr ""
+
+#: ipalib/plugins/internal.py:217
+msgid "Kerberos ticket policy"
+msgstr ""
+
+#: ipalib/plugins/internal.py:220
+msgid "Add Netgroup"
+msgstr ""
+
+#: ipalib/plugins/internal.py:221
+msgid "Netgroup Settings"
+msgstr ""
+
+#: ipalib/plugins/internal.py:224
+msgid "Add Permission"
+msgstr ""
+
+#: ipalib/plugins/internal.py:225 ipalib/plugins/internal.py:362
+msgid "Identity"
+msgstr ""
+
+#: ipalib/plugins/internal.py:227
+msgid "Target"
+msgstr ""
+
+#: ipalib/plugins/internal.py:229
+msgid "By Subtree"
+msgstr ""
+
+#: ipalib/plugins/internal.py:230
+msgid "Target Group"
+msgstr ""
+
+#: ipalib/plugins/internal.py:231
+msgid "Object By Type"
+msgstr ""
+
+#: ipalib/plugins/internal.py:232
+msgid "Permission with invalid target specification"
+msgstr ""
+
+#: ipalib/plugins/internal.py:235
+msgid "Add Privilege"
+msgstr ""
+
+#: ipalib/plugins/internal.py:236
+msgid "Privilege Settings"
+msgstr ""
+
+#: ipalib/plugins/internal.py:239
+msgid "Add Password Policy"
+msgstr ""
+
+#: ipalib/plugins/internal.py:240 ipalib/plugins/pwpolicy.py:209
+msgid "Password Policy"
+msgstr ""
+
+#: ipalib/plugins/internal.py:243
+msgid "Add Role"
+msgstr ""
+
+#: ipalib/plugins/internal.py:244
+msgid "Role Settings"
+msgstr ""
+
+#: ipalib/plugins/internal.py:247
+msgid "Add Self Service Definition"
+msgstr ""
+
+#: ipalib/plugins/internal.py:250
+msgid "Add New Service"
+msgstr ""
+
+#: ipalib/plugins/internal.py:251
+msgid "Service Certificate"
+msgstr ""
+
+#: ipalib/plugins/internal.py:252
+msgid "Service Settings"
+msgstr ""
+
+#: ipalib/plugins/internal.py:254
+msgid "Provisioning"
+msgstr ""
+
+#: ipalib/plugins/internal.py:255
+msgid "Service"
+msgstr ""
+
+#: ipalib/plugins/internal.py:257
+msgid "Kerberos Key Present, Service Provisioned"
+msgstr ""
+
+#: ipalib/plugins/internal.py:261
+msgid "Are you sure you want to unprovision this service?"
+msgstr ""
+
+#: ipalib/plugins/internal.py:265
+msgid "Add New Sudo Command"
+msgstr ""
+
+#: ipalib/plugins/internal.py:269
+msgid "Add New Sudo Command Group"
+msgstr ""
+
+#: ipalib/plugins/internal.py:270 ipalib/plugins/sudocmdgroup.py:80
+msgid "Commands"
+msgstr ""
+
+#: ipalib/plugins/internal.py:281
+msgid "Access this host"
+msgstr ""
+
+#: ipalib/plugins/internal.py:284
+msgid "Run Commands"
+msgstr ""
+
+#: ipalib/plugins/internal.py:285
+msgid "Any Command"
+msgstr ""
+
+#: ipalib/plugins/internal.py:286
+msgid "Specified Commands and Groups"
+msgstr ""
+
+#: ipalib/plugins/internal.py:287
+msgid "As Whom"
+msgstr ""
+
+#: ipalib/plugins/internal.py:288
+msgid "Any Group"
+msgstr ""
+
+#: ipalib/plugins/internal.py:289
+msgid "Specified Groups"
+msgstr ""
+
+#: ipalib/plugins/internal.py:291
+msgid "External"
+msgstr ""
+
+#: ipalib/plugins/internal.py:294
+msgid "Add User"
+msgstr ""
+
+#: ipalib/plugins/internal.py:295
+msgid "Account Settings"
+msgstr ""
+
+#: ipalib/plugins/internal.py:296
+msgid "Contact Settings"
+msgstr ""
+
+#: ipalib/plugins/internal.py:297
+msgid "Mailing Address"
+msgstr ""
+
+#: ipalib/plugins/internal.py:298
+msgid "Employee Information"
+msgstr ""
+
+#: ipalib/plugins/internal.py:299
+msgid "Misc. Information"
+msgstr ""
+
+#: ipalib/plugins/internal.py:301
+msgid "Click to Deactivate"
+msgstr ""
+
+#: ipalib/plugins/internal.py:303
+msgid "Click to Activate"
+msgstr ""
+
+#: ipalib/plugins/internal.py:304
+msgid "Error changing account status"
+msgstr ""
+
+#: ipalib/plugins/internal.py:305
+msgid "Reset Password"
+msgstr ""
+
+#: ipalib/plugins/internal.py:306
+msgid "New Password"
+msgstr ""
+
+#: ipalib/plugins/internal.py:307
+msgid "Repeat Password"
+msgstr ""
+
+#: ipalib/plugins/internal.py:308
+msgid "Password change complete"
+msgstr ""
+
+#: ipalib/plugins/internal.py:309
+msgid "Passwords must match"
+msgstr ""
+
+#: ipalib/plugins/internal.py:313
msgid "Add"
msgstr ""
-#: ipalib/plugins/internal.py:42
+#: ipalib/plugins/internal.py:314
+msgid "Add and Add Another"
+msgstr ""
+
+#: ipalib/plugins/internal.py:315
+msgid "Add and Edit"
+msgstr ""
+
+#: ipalib/plugins/internal.py:316
+msgid "Add and Close"
+msgstr ""
+
+#: ipalib/plugins/internal.py:317
+msgid "Add Many"
+msgstr ""
+
+#: ipalib/plugins/internal.py:318
+msgid "Back to List"
+msgstr ""
+
+#: ipalib/plugins/internal.py:319
+msgid "Cancel"
+msgstr ""
+
+#: ipalib/plugins/internal.py:320
+msgid "Close"
+msgstr ""
+
+#: ipalib/plugins/internal.py:321
+msgid "Enroll"
+msgstr ""
+
+#: ipalib/plugins/internal.py:322
msgid "Find"
msgstr ""
-#: ipalib/plugins/internal.py:43
+#: ipalib/plugins/internal.py:323
+msgid "Get"
+msgstr ""
+
+#: ipalib/plugins/internal.py:324
+msgid "Issue"
+msgstr ""
+
+#: ipalib/plugins/internal.py:325
+msgid "OK"
+msgstr ""
+
+#: ipalib/plugins/internal.py:326
msgid "Reset"
msgstr ""
-#: ipalib/plugins/internal.py:44
+#: ipalib/plugins/internal.py:327
+msgid "Delete"
+msgstr ""
+
+#: ipalib/plugins/internal.py:328
+msgid "Restore"
+msgstr ""
+
+#: ipalib/plugins/internal.py:329
+msgid "Retry"
+msgstr ""
+
+#: ipalib/plugins/internal.py:330
+msgid "Revoke"
+msgstr ""
+
+#: ipalib/plugins/internal.py:331
msgid "Update"
msgstr ""
-#: ipalib/plugins/internal.py:45
-msgid "Enroll"
+#: ipalib/plugins/internal.py:332
+msgid "View"
msgstr ""
-#: ipalib/plugins/internal.py:46
-msgid "Delete"
+#: ipalib/plugins/internal.py:335
+msgid "Available"
+msgstr ""
+
+#: ipalib/plugins/internal.py:336
+msgid "This page has unsaved changes. Please save or revert."
+msgstr ""
+
+#: ipalib/plugins/internal.py:337
+msgid "Dirty"
+msgstr ""
+
+#: ipalib/plugins/internal.py:338
+msgid "Hide already enrolled."
+msgstr ""
+
+#: ipalib/plugins/internal.py:339
+msgid "Select ${entity} to be removed."
msgstr ""
-#: ipalib/plugins/internal.py:49
+#: ipalib/plugins/internal.py:340
+msgid "Remove ${entity}."
+msgstr ""
+
+#: ipalib/plugins/internal.py:341
+msgid "Prospective"
+msgstr ""
+
+#: ipalib/plugins/internal.py:344
+msgid "Search"
+msgstr ""
+
+#: ipalib/plugins/internal.py:345
+msgid "Settings"
+msgstr ""
+
+#: ipalib/plugins/internal.py:348
msgid "Quick Links"
msgstr ""
-#: ipalib/plugins/internal.py:50
+#: ipalib/plugins/internal.py:349
msgid "Select All"
msgstr ""
-#: ipalib/plugins/internal.py:51
+#: ipalib/plugins/internal.py:350
msgid "Unselect All"
msgstr ""
-#: ipalib/plugins/internal.py:52
-msgid "Do you really want to delete the selected entries?"
+#: ipalib/plugins/internal.py:351
+msgid "Are you sure you want to delete selected entries?"
msgstr ""
-#: ipalib/plugins/internal.py:55
-msgid "Identity Details"
+#: ipalib/plugins/internal.py:352
+msgid ""
+"Query returned more results than the configured size limit. Displaying the "
+"first ${counter} results."
msgstr ""
-#: ipalib/plugins/internal.py:56
-msgid "Account Details"
+#: ipalib/plugins/internal.py:356
+msgid "General"
msgstr ""
-#: ipalib/plugins/internal.py:57
-msgid "Contact Details"
+#: ipalib/plugins/internal.py:357
+msgid "${entity} Settings"
msgstr ""
-#: ipalib/plugins/internal.py:58
-msgid "Mailing Address"
+#: ipalib/plugins/internal.py:358
+msgid "Identity Settings"
msgstr ""
-#: ipalib/plugins/internal.py:59
-msgid " Employee Information"
+#: ipalib/plugins/internal.py:359
+msgid "Back to Top"
msgstr ""
-#: ipalib/plugins/internal.py:60
-msgid "Misc. Information"
+#: ipalib/plugins/internal.py:363
+msgid "Policy"
msgstr ""
-#: ipalib/plugins/internal.py:61
-msgid "Back to Top"
+#: ipalib/plugins/internal.py:364
+msgid "Audit"
msgstr ""
-#: ipalib/plugins/internal.py:66
-msgid "Name of object to export"
+#: ipalib/plugins/internal.py:365
+msgid "IPA Server"
msgstr ""
-#: ipalib/plugins/internal.py:71
-msgid "Dict of JSON encoded IPA Objects"
+#: ipalib/plugins/internal.py:366 ipalib/plugins/sudorule.py:68
+msgid "Sudo"
+msgstr ""
+
+#: ipalib/plugins/internal.py:368
+msgid "Role Based Access Control"
msgstr ""
-#: ipalib/plugins/internal.py:72
+#: ipalib/plugins/internal.py:371
+msgid "Add ${other_entity} into ${entity} ${primary_key}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:372
+msgid "${other_entity} enrolled in ${entity} ${primary_key}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:373
+msgid "${entity} ${primary_key} is enrolled in the following ${other_entity}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:374
+msgid "Remove ${other_entity} from ${entity} ${primary_key}"
+msgstr ""
+
+#: ipalib/plugins/internal.py:377
+msgid "Text does not match field pattern"
+msgstr ""
+
+#: ipalib/plugins/internal.py:380
+msgid ""
+"Your Kerberos ticket is no longer valid. Please run kinit and then click "
+"'Retry'. If this is your first time running the IPA Web UI <a href='/ipa/"
+"config/unauthorized.html'>follow these directions</a> to configure your "
+"browser."
+msgstr ""
+
+#: ipalib/plugins/internal.py:384
msgid "Dict of I18N messages"
msgstr ""
-#: ipalib/plugins/krbtpolicy.py:59
+#: ipalib/plugins/kerberos.py:20
+msgid ""
+"\n"
+"Backend plugin for Kerberos.\n"
+"\n"
+"This wraps the python-kerberos and python-krbV bindings.\n"
+msgstr ""
+
+#: ipalib/plugins/kerberos.py:35
+msgid ""
+"\n"
+" Kerberos backend plugin.\n"
+"\n"
+" This wraps the `krbV` bindings (and will eventually wrap the `kerberos`\n"
+" bindings also). Importantly, this plugin does correct Unicode\n"
+" encoding/decoding of values going-to/coming-from the bindings.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/kerberos.py:44
+msgid ""
+"\n"
+" Return the ``krbV.CCache`` for the default credential cache.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/kerberos.py:50
+msgid ""
+"\n"
+" Return the ``krb5.Principal`` for the default credential cache.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/kerberos.py:56
+msgid ""
+"\n"
+" Return the ``krbV.CCache`` for the ``ccname`` credential ccache.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/kerberos.py:62
+msgid ""
+"\n"
+" Return the ``krb5.Principal`` for the ``ccname`` credential ccache.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/kerberos.py:68
+msgid ""
+"\n"
+" Return the default ccache file name.\n"
+"\n"
+" This will return something like '/tmp/krb5cc_500'.\n"
+"\n"
+" This cannot return anything meaningful if used in the server as a\n"
+" request is processed.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/kerberos.py:79
+msgid ""
+"\n"
+" Return the principal name in default credential cache.\n"
+"\n"
+" This will return something like 'admin@EXAMPLE.COM'. If no "
+"credential\n"
+" cache exists for the invoking user, None is returned.\n"
+"\n"
+" This cannot return anything meaningful if used in the server as a\n"
+" request is processed.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/kerberos.py:91
+msgid ""
+"\n"
+" Return the realm from the default credential cache.\n"
+"\n"
+" This will return something like 'EXAMPLE.COM'. If no credential "
+"cache\n"
+" exists for the invoking user, None is returned.\n"
+"\n"
+" This cannot return anything meaningful if used in the server as a\n"
+" request is processed.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/kerberos.py:103
+msgid ""
+"\n"
+" Return the principal from credential cache file at ``ccname``.\n"
+"\n"
+" This will return something like 'admin@EXAMPLE.COM'.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/kerberos.py:111
+msgid ""
+"\n"
+" Return the realm from credential cache file at ``ccname``.\n"
+"\n"
+" This will return something like 'EXAMPLE.COM'.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/krbtpolicy.py:19
+msgid ""
+"\n"
+"Kerberos ticket policy\n"
+"\n"
+"There is a single Kerberos ticket policy. This policy defines the\n"
+"maximum ticket lifetime and the maximum renewal age, the period during\n"
+"which the ticket is renewable.\n"
+"\n"
+"You can also create a per-user ticket policy by specifying the user login.\n"
+"\n"
+"For changes to the global policy to take effect, restarting the KDC service\n"
+"is required, which can be achieved using:\n"
+"\n"
+"service krb5kdc restart\n"
+"\n"
+"Changes to per-user policies take effect immediately for newly requested\n"
+"tickets (e.g. when the user next runs kinit).\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Display the current Kerberos ticket policy:\n"
+" ipa krbtpolicy-show\n"
+"\n"
+" Reset the policy to the default:\n"
+" ipa krbtpolicy-reset\n"
+"\n"
+" Modify the policy to 8 hours max life, 1-day max renewal:\n"
+" ipa krbtpolicy-mod --maxlife=28800 --maxrenew=86400\n"
+"\n"
+" Display effective Kerberos ticket policy for user 'admin':\n"
+" ipa krbtpolicy-show admin\n"
+"\n"
+" Reset per-user policy for user 'admin':\n"
+" ipa krbtpolicy-reset admin\n"
+"\n"
+" Modify per-user policy for user 'admin':\n"
+" ipa krbtpolicy-mod admin --maxlife=3600\n"
+msgstr ""
+
+#: ipalib/plugins/krbtpolicy.py:71
+msgid ""
+"\n"
+" Kerberos Ticket Policy object\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/krbtpolicy.py:78
msgid "Kerberos Ticket Policy"
msgstr ""
-#: ipalib/plugins/krbtpolicy.py:64 ipalib/plugins/passwd.py:52
+#: ipalib/plugins/krbtpolicy.py:83 ipalib/plugins/passwd.py:53
msgid "User name"
msgstr ""
-#: ipalib/plugins/krbtpolicy.py:65
+#: ipalib/plugins/krbtpolicy.py:84
msgid "Manage ticket policy for specific user"
msgstr ""
-#: ipalib/plugins/krbtpolicy.py:70
+#: ipalib/plugins/krbtpolicy.py:89
msgid "Max life"
msgstr ""
-#: ipalib/plugins/krbtpolicy.py:71
+#: ipalib/plugins/krbtpolicy.py:90
msgid "Maximum ticket life (seconds)"
msgstr ""
-#: ipalib/plugins/krbtpolicy.py:75
+#: ipalib/plugins/krbtpolicy.py:95
msgid "Max renew"
msgstr ""
-#: ipalib/plugins/krbtpolicy.py:76
+#: ipalib/plugins/krbtpolicy.py:96
msgid "Maximum renewable age (seconds)"
msgstr ""
-#: ipalib/plugins/migration.py:44
-#, python-format
+#: ipalib/plugins/krbtpolicy.py:110
+msgid ""
+"\n"
+" Modify Kerberos ticket policy.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/krbtpolicy.py:124
+msgid ""
+"\n"
+" Display the current Kerberos ticket policy.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/krbtpolicy.py:148
+msgid ""
+"\n"
+" Reset Kerberos ticket policy to the default values.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/migration.py:19
+msgid ""
+"\n"
+"Migration to IPA\n"
+"\n"
+"Migrate users and groups from an LDAP server to IPA.\n"
+"\n"
+"This performs an LDAP query against the remote server searching for\n"
+"users and groups in a container. In order to migrate passwords you need\n"
+"to bind as a user that can read the userPassword attribute on the remote\n"
+"server. This is generally restricted to high-level admins such as\n"
+"cn=Directory Manager in 389-ds (this is the default bind user).\n"
+"\n"
+"The default user container is ou=People.\n"
+"\n"
+"The default group container is ou=Groups.\n"
+"\n"
+"Users and groups that already exist on the IPA server are skipped.\n"
+"\n"
+"Two LDAP schemas define how group members are stored: RFC2307 and\n"
+"RFC2307bis. RFC2307bis uses member and uniquemember to specify group\n"
+"members, RFC2307 uses memberUid. The default schema is RFC2307bis.\n"
+"\n"
+"Migrated users do not have Kerberos credentials, they have only their\n"
+"LDAP password. To complete the migration process, users need to go\n"
+"to http://ipa.example.com/ipa/migration and authenticate using their\n"
+"LDAP password in order to generate their Kerberos credentials.\n"
+"\n"
+"Migration is disabled by default. Use the command ipa config-mod to\n"
+"enable it:\n"
+"\n"
+" ipa config-mod --enable-migration=TRUE\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" The simplest migration, accepting all defaults:\n"
+" ipa migrate-ds ldap://ds.example.com:389\n"
+"\n"
+" Specify the user and group container. This can be used to migrate user and\n"
+" group data from an IPA v1 server:\n"
+" ipa migrate-ds --user-container='cn=users,cn=accounts' --group-"
+"container='cn=groups,cn=accounts' ldap://ds.example.com:389\n"
+msgstr ""
+
+#: ipalib/plugins/migration.py:78
msgid ""
"Kerberos principal %s already exists. Use 'ipa user-mod' to set it manually."
msgstr ""
-#: ipalib/plugins/migration.py:45
+#: ipalib/plugins/migration.py:79
msgid ""
"Failed to add user to the default group. Use 'ipa group-add-member' to add "
"manually."
msgstr ""
-#: ipalib/plugins/migration.py:169
+#: ipalib/plugins/migration.py:175
+msgid ""
+"\n"
+" Convert usernames in member attributes to work in IPA.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/migration.py:213
+msgid "Invalid LDAP URI."
+msgstr ""
+
+#: ipalib/plugins/migration.py:218
+msgid ""
+"\n"
+" Migrate users and groups from DS to IPA.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/migration.py:259
msgid "LDAP URI"
msgstr ""
-#: ipalib/plugins/migration.py:170
+#: ipalib/plugins/migration.py:260
msgid "LDAP URI of DS server to migrate from"
msgstr ""
-#: ipalib/plugins/migration.py:174
+#: ipalib/plugins/migration.py:265
msgid "bind password"
msgstr ""
-#: ipalib/plugins/migration.py:181
+#: ipalib/plugins/migration.py:272
msgid "Bind DN"
msgstr ""
-#: ipalib/plugins/migration.py:187
+#: ipalib/plugins/migration.py:278
msgid "User container"
msgstr ""
-#: ipalib/plugins/migration.py:188
+#: ipalib/plugins/migration.py:279
msgid "RDN of container for users in DS"
msgstr ""
-#: ipalib/plugins/migration.py:194
+#: ipalib/plugins/migration.py:285
msgid "Group container"
msgstr ""
-#: ipalib/plugins/migration.py:195
+#: ipalib/plugins/migration.py:286
msgid "RDN of container for groups in DS"
msgstr ""
-#: ipalib/plugins/migration.py:200
-msgid "Continous operation mode. Errors are reported but the process continues"
+#: ipalib/plugins/migration.py:292
+msgid "User object class"
+msgstr ""
+
+#: ipalib/plugins/migration.py:293
+msgid ""
+"Comma-separated list of objectclasses used to search for user entries in DS"
+msgstr ""
+
+#: ipalib/plugins/migration.py:299
+msgid "Group object class"
+msgstr ""
+
+#: ipalib/plugins/migration.py:300
+msgid ""
+"Comma-separated list of objectclasses used to search for group entries in DS"
+msgstr ""
+
+#: ipalib/plugins/migration.py:306
+msgid "LDAP schema"
+msgstr ""
+
+#: ipalib/plugins/migration.py:307
+msgid ""
+"The schema used on the LDAP server. Supported values are RFC2307 and "
+"RFC2307bis. The default is RFC2307bis"
msgstr ""
-#: ipalib/plugins/migration.py:208
+#: ipalib/plugins/migration.py:313
+msgid ""
+"Continuous operation mode. Errors are reported but the process continues"
+msgstr ""
+
+#: ipalib/plugins/migration.py:321
msgid "Lists of objects migrated; categorized by type."
msgstr ""
-#: ipalib/plugins/migration.py:212
+#: ipalib/plugins/migration.py:325
msgid "Lists of objects that could not be migrated; categorized by type."
msgstr ""
-#: ipalib/plugins/migration.py:216
+#: ipalib/plugins/migration.py:329
msgid "False if migration mode was disabled."
msgstr ""
-#: ipalib/plugins/migration.py:220
-#, python-format
+#: ipalib/plugins/migration.py:333
msgid "comma-separated list of %s to exclude from migration"
msgstr ""
-#: ipalib/plugins/migration.py:222
+#: ipalib/plugins/migration.py:335
msgid ""
"search results for objects to be migrated\n"
"have been truncated by the server;\n"
-"migration process might be uncomplete\n"
+"migration process might be incomplete\n"
msgstr ""
-#: ipalib/plugins/migration.py:227
+#: ipalib/plugins/migration.py:340
msgid "Migration mode is disabled. Use 'ipa config-mod' to enable it."
msgstr ""
-#: ipalib/plugins/migration.py:230
+#: ipalib/plugins/migration.py:343
msgid ""
"Passwords have been migrated in pre-hashed format.\n"
"IPA is unable to generate Kerberos keys unless provided\n"
@@ -1528,16 +4643,55 @@ msgid ""
"can use their Kerberos accounts."
msgstr ""
-#: ipalib/plugins/migration.py:297
-#, python-format
+#: ipalib/plugins/migration.py:351
+msgid ""
+"\n"
+" Call get_options of the baseclass and add \"exclude\" options\n"
+" for each type of object being migrated.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/migration.py:368
+msgid ""
+"\n"
+" Convert all \"exclude\" option values to lower-case.\n"
+"\n"
+" Also, empty List parameters are converted to None, but the "
+"migration\n"
+" plugin doesn't like that - convert back to empty lists.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/migration.py:392
+msgid ""
+"\n"
+" Migrate objects from DS to LDAP.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/migration.py:418
msgid "Container for %(container)s not found"
msgstr ""
+#: ipalib/plugins/misc.py:20
+msgid ""
+"\n"
+"Misc plug-ins\n"
+msgstr ""
+
+#: ipalib/plugins/misc.py:36
+msgid "Show environment variables"
+msgstr ""
+
#: ipalib/plugins/misc.py:38
-#, python-format
msgid "%(count)d variables"
msgstr ""
+#: ipalib/plugins/misc.py:47 ipalib/plugins/misc.py:115
+msgid ""
+"retrieve and print all attributes from the server. Affects command output."
+msgstr ""
+
#: ipalib/plugins/misc.py:61
msgid "Total number of variables env (>= count)"
msgstr ""
@@ -1546,435 +4700,2392 @@ msgstr ""
msgid "Number of variables returned (<= total)"
msgstr ""
-#: ipalib/plugins/misc.py:109
-#, python-format
+#: ipalib/plugins/misc.py:106
+msgid "Show all loaded plugins"
+msgstr ""
+
+#: ipalib/plugins/misc.py:108
msgid "%(count)d plugin loaded"
msgid_plural "%(count)d plugins loaded"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/misc.py:116
+#: ipalib/plugins/misc.py:126
msgid "Number of plugins loaded"
msgstr ""
-#: ipalib/plugins/netgroup.py:57
+#: ipalib/plugins/netgroup.py:20
+msgid ""
+"\n"
+"Netgroups\n"
+"\n"
+"A netgroup is a group used for permission checking. It can contain both\n"
+"user and host values.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a new netgroup:\n"
+" ipa netgroup-add --desc=\"NFS admins\" admins\n"
+"\n"
+" Add members to the netgroup:\n"
+" ipa netgroup-add-member --users=tuser1,tuser2 admins\n"
+"\n"
+" Remove a member from the netgroup:\n"
+" ipa netgroup-remove-member --users=tuser2 admins\n"
+"\n"
+" Display infromation about a netgroup:\n"
+" ipa netgroup-show admins\n"
+"\n"
+" Delete a netgroup:\n"
+" ipa netgroup-del admins\n"
+msgstr ""
+
+#: ipalib/plugins/netgroup.py:59
msgid "Member Host"
msgstr ""
-#: ipalib/plugins/netgroup.py:63
-msgid "External host"
+#: ipalib/plugins/netgroup.py:67
+msgid ""
+"\n"
+" Netgroup object.\n"
+" "
msgstr ""
-#: ipalib/plugins/netgroup.py:85
-msgid "Net Groups"
+#: ipalib/plugins/netgroup.py:98
+msgid "Netgroups"
msgstr ""
-#: ipalib/plugins/netgroup.py:90
+#: ipalib/plugins/netgroup.py:103
msgid "Netgroup name"
msgstr ""
-#: ipalib/plugins/netgroup.py:97
+#: ipalib/plugins/netgroup.py:110
msgid "Netgroup description"
msgstr ""
-#: ipalib/plugins/netgroup.py:101
+#: ipalib/plugins/netgroup.py:114
msgid "NIS domain name"
msgstr ""
-#: ipalib/plugins/netgroup.py:106
+#: ipalib/plugins/netgroup.py:119
msgid "IPA unique ID"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:84
-#, python-format
+#: ipalib/plugins/netgroup.py:140
+msgid ""
+"\n"
+" Add a new netgroup.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/netgroup.py:144
+msgid "Added netgroup \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/netgroup.py:153
+msgid ""
+"\n"
+" Delete a netgroup.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/netgroup.py:156
+msgid "Deleted netgroup \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/netgroup.py:162
+msgid ""
+"\n"
+" Modify a netgroup.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/netgroup.py:166
+msgid "Modified netgroup \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/netgroup.py:180
+msgid ""
+"\n"
+" Search for a netgroup.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/netgroup.py:185
+msgid "%(count)d netgroup matched"
+msgid_plural "%(count)d netgroups matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/netgroup.py:213
+msgid ""
+"\n"
+" Display information about a netgroup.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/netgroup.py:222
+msgid ""
+"\n"
+" Add members to a netgroup.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/netgroup.py:258
+msgid ""
+"\n"
+" Remove members from a netgroup.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/passwd.py:19
+msgid ""
+"\n"
+"Set a user's password\n"
+"\n"
+"If someone other than a user changes that user's password (e.g., Helpdesk\n"
+"resets it) then the password will need to be changed the first time it\n"
+"is used. This is so the end-user is the only one who knows the password.\n"
+"\n"
+"The IPA password policy controls how often a password may be changed,\n"
+"what strength requirements exist, and the length of the password history.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" To reset your own password:\n"
+" ipa passwd\n"
+"\n"
+" To change another user's password:\n"
+" ipa passwd tuser1\n"
+msgstr ""
+
+#: ipalib/plugins/passwd.py:46
+msgid ""
+"\n"
+" Set a user's password\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/passwd.py:64
+msgid "Changed password for \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/passwd.py:67
+msgid ""
+"\n"
+" Execute the passwd operation.\n"
+"\n"
+" The dn should not be passed as a keyword argument as it is "
+"constructed\n"
+" by this method.\n"
+"\n"
+" Returns the entry\n"
+"\n"
+" :param principal: The login name or principal of the user\n"
+" :param password: the new password\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/permission.py:19
+msgid ""
+"\n"
+"Permissions\n"
+"\n"
+"A permission enables fine-grained delegation of rights. A permission is\n"
+"a human-readable form of a 389-ds Access Control Rule, or instruction "
+"(ACI).\n"
+"A permission grants the right to perform a specific task such as adding a\n"
+"user, modifying a group, etc.\n"
+"\n"
+"A permission may not contain other permissions.\n"
+"\n"
+"* A permission grants access to read, write, add or delete.\n"
+"* A privilege combines similar permissions (for example all the permissions\n"
+" needed to add a user).\n"
+"* A role grants a set of privileges to users, groups, hosts or hostgroups.\n"
+"\n"
+"A permission is made up of a number of different parts:\n"
+"\n"
+"1. The name of the permission.\n"
+"2. The target of the permission.\n"
+"3. The rights granted by the permission.\n"
+"\n"
+"Rights define what operations are allowed, and may be one or more\n"
+"of the following:\n"
+"1. write - write one or more attributes\n"
+"2. read - read one or more attributes\n"
+"3. add - add a new entry to the tree\n"
+"4. delete - delete an existing entry\n"
+"5. all - all permissions are granted\n"
+"\n"
+"Read permission is granted for most attributes by default so the read\n"
+"permission is not expected to be used very often.\n"
+"\n"
+"Note the distinction between attributes and entries. The permissions are\n"
+"independent, so being able to add a user does not mean that the user will\n"
+"be editable.\n"
+"\n"
+"There are a number of allowed targets:\n"
+"1. type: a type of object (user, group, etc).\n"
+"2. memberof: a member of a group or hostgroup\n"
+"3. filter: an LDAP filter\n"
+"4. subtree: an LDAP filter specifying part of the LDAP DIT. This is a\n"
+" super-set of the \"type\" target.\n"
+"5. targetgroup: grant access to modify a specific group (such as granting\n"
+" the rights to manage group membership)\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a permission that grants the creation of users:\n"
+" ipa permission-add --type=user --permissions=add \"Add Users\"\n"
+"\n"
+" Add a permission that grants the ability to manage group membership:\n"
+" ipa permission-add --attrs=member --permissions=write --type=group "
+"\"Manage Group Members\"\n"
+msgstr ""
+
+#: ipalib/plugins/permission.py:84
+msgid "Permission Type"
+msgstr ""
+
+#: ipalib/plugins/permission.py:89
+msgid ""
+"\n"
+" Permission object.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/permission.py:112
+msgid "Permission name"
+msgstr ""
+
+#: ipalib/plugins/permission.py:119
+msgid ""
+"Comma-separated list of permissions to grant (read, write, add, delete, all)"
+msgstr ""
+
+#: ipalib/plugins/permission.py:132
+msgid ""
+"Type of IPA object (user, group, host, hostgroup, service, netgroup, dns)"
+msgstr ""
+
+#: ipalib/plugins/permission.py:138
+msgid "Member of group"
+msgstr ""
+
+#: ipalib/plugins/permission.py:139
+msgid "Target members of a group"
+msgstr ""
+
+#: ipalib/plugins/permission.py:151
+msgid "Subtree to apply permissions to"
+msgstr ""
+
+#: ipalib/plugins/permission.py:157
+msgid "User group to apply permissions to"
+msgstr ""
+
+#: ipalib/plugins/permission.py:177
+msgid ""
+"\n"
+" Add a new permission.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/permission.py:181
+msgid "Added permission \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/permission.py:236
+msgid ""
+"\n"
+" Delete a permission.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/permission.py:240
+msgid "Deleted permission \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/permission.py:256
+msgid ""
+"\n"
+" Modify a permission.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/permission.py:260
+msgid "Modified permission \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/permission.py:352
+msgid ""
+"\n"
+" Search for permissions.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/permission.py:356
+msgid "%(count)d permission matched"
+msgid_plural "%(count)d permissions matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/permission.py:405
+msgid ""
+"\n"
+" Display information about a permission.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/permission.py:423
+msgid ""
+"\n"
+" Add members to a permission.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/permission.py:432
+msgid ""
+"\n"
+" Remove members from a permission.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/ping.py:19
+msgid ""
+"\n"
+"Ping the remote IPA server\n"
+msgstr ""
+
+#: ipalib/plugins/ping.py:29
+msgid ""
+"\n"
+" ping a remote server\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/ping.py:37
+msgid ""
+"\n"
+" A possible enhancement would be to take an argument and echo it\n"
+" back but a fixed value works for now.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/pkinit.py:19
+msgid ""
+"\n"
+"Kerberos pkinit options\n"
+"\n"
+"Enable or disable anonymous pkinit using the principal\n"
+"WELLKNOWN/ANONYMOUS@REALM. The server must have been installed with\n"
+"pkinit support.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Enable anonymous pkinit:\n"
+" ipa pkinit-anonymous enable\n"
+"\n"
+" Disable anonymous pkinit:\n"
+" ipa pkinit-anonymous disable\n"
+"\n"
+"For more information on anonymous pkinit see:\n"
+"\n"
+"http://k5wiki.kerberos.org/wiki/Projects/Anonymous_pkinit\n"
+msgstr ""
+
+#: ipalib/plugins/pkinit.py:46
+msgid ""
+"\n"
+" PKINIT Options\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/pkinit.py:51
+msgid "PKINIT"
+msgstr ""
+
+#: ipalib/plugins/pkinit.py:56
+msgid ""
+"\n"
+" Accepts only Enable/Disable.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/pkinit.py:67
+msgid ""
+"\n"
+" Enable or Disable Anonymous PKINIT\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/privilege.py:19
+msgid ""
+"\n"
+"Privileges\n"
+"\n"
+"A privilege combines permissions into a logical task. A permission provides\n"
+"the rights to do a single task. There are some IPA operations that require\n"
+"multiple permissions to succeed. A privilege is where permissions are\n"
+"combined in order to perform a specific task.\n"
+"\n"
+"For example, adding a user requires the following permissions:\n"
+" * Creating a new user entry\n"
+" * Resetting a user password\n"
+" * Adding the new user to the default IPA users group\n"
+"\n"
+"Combining these three low-level tasks into a higher level task in the\n"
+"form of a privilege named \"Add User\" makes it easier to manage Roles.\n"
+"\n"
+"A privilege may not contain other privileges.\n"
+"\n"
+"See role and permission for additional information.\n"
+msgstr ""
+
+#: ipalib/plugins/privilege.py:45
+msgid ""
+"\n"
+" Privilege object.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/privilege.py:65
+msgid "Privileges"
+msgstr ""
+
+#: ipalib/plugins/privilege.py:70
+msgid "Privilege name"
+msgstr ""
+
+#: ipalib/plugins/privilege.py:77
+msgid "Privilege description"
+msgstr ""
+
+#: ipalib/plugins/privilege.py:85
+msgid ""
+"\n"
+" Add a new privilege.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/privilege.py:89
+msgid "Added privilege \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/privilege.py:95
+msgid ""
+"\n"
+" Delete a privilege.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/privilege.py:99
+msgid "Deleted privilege \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/privilege.py:105
+msgid ""
+"\n"
+" Modify a privilege.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/privilege.py:109
+msgid "Modified privilege \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/privilege.py:115
+msgid ""
+"\n"
+" Search for privileges.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/privilege.py:119
+msgid "%(count)d privilege matched"
+msgid_plural "%(count)d privileges matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/privilege.py:127
+msgid ""
+"\n"
+" Display information about a privilege.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/privilege.py:135
+msgid ""
+"\n"
+" Add members to a privilege\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/privilege.py:144
+msgid ""
+"\n"
+" Remove members from a privilege\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/privilege.py:153
+msgid ""
+"\n"
+" Add permissions to a privilege.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/privilege.py:169
+msgid "Number of permissions added"
+msgstr ""
+
+#: ipalib/plugins/privilege.py:177
+msgid ""
+"\n"
+" Remove permissions from a privilege.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/privilege.py:195
+msgid "Number of permissions removed"
+msgstr ""
+
+#: ipalib/plugins/pwpolicy.py:19
+msgid ""
+"\n"
+"Password policy\n"
+"\n"
+"A password policy sets limitations on IPA passwords, including maximum\n"
+"lifetime, minimum lifetime, the number of passwords to save in\n"
+"history, the number of character classes required (for stronger passwords)\n"
+"and the minimum password length.\n"
+"\n"
+"By default there is a single, global policy for all users. You can also\n"
+"create a password policy to apply to a group. Each user is only subject\n"
+"to one password policy, either the group policy or the global policy. A\n"
+"group policy stands alone; it is not a super-set of the global policy plus\n"
+"custom settings.\n"
+"\n"
+"Each group password policy requires a unique priority setting. If a user\n"
+"is in multiple groups that have password policies, this priority determines\n"
+"which password policy is applied. A lower value indicates a higher priority\n"
+"policy.\n"
+"\n"
+"Group password policies are automatically removed when the groups they\n"
+"are associated with are removed.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Modify the global policy:\n"
+" ipa pwpolicy-mod --minlength=10\n"
+"\n"
+" Add a new group password policy:\n"
+" ipa pwpolicy-add --maxlife=90 --minlife=1 --history=10 --minclasses=3 --"
+"minlength=8 --priority=10 localadmins\n"
+"\n"
+" Display the global password policy:\n"
+" ipa pwpolicy-show\n"
+"\n"
+" Display a group password policy:\n"
+" ipa pwpolicy-show localadmins\n"
+"\n"
+" Display the policy that would be applied to a given user:\n"
+" ipa pwpolicy-show --user=tuser1\n"
+"\n"
+" Modify a group password policy:\n"
+" ipa pwpolicy-mod --minclasses=2 localadmins\n"
+msgstr ""
+
+#: ipalib/plugins/pwpolicy.py:70
+msgid ""
+"\n"
+" Class of Service object used for linking policies with groups\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/pwpolicy.py:85
msgid "priority must be a unique value (%(prio)d already used by %(gname)s)"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:170
-msgid "Password Policy"
+#: ipalib/plugins/pwpolicy.py:162
+msgid ""
+"\n"
+" Password Policy object\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/pwpolicy.py:191
+msgid "Max failures"
+msgstr ""
+
+#: ipalib/plugins/pwpolicy.py:192
+msgid "Consecutive failures before lockout"
+msgstr ""
+
+#: ipalib/plugins/pwpolicy.py:197
+msgid "Failure reset interval"
+msgstr ""
+
+#: ipalib/plugins/pwpolicy.py:198
+msgid "Period after which failure count will be reset (seconds)"
+msgstr ""
+
+#: ipalib/plugins/pwpolicy.py:203
+msgid "Lockout duration"
+msgstr ""
+
+#: ipalib/plugins/pwpolicy.py:204
+msgid "Period for which lockout is enforced (seconds)"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:175
+#: ipalib/plugins/pwpolicy.py:214
msgid "Group"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:176
+#: ipalib/plugins/pwpolicy.py:215
msgid "Manage password policy for specific group"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:181
+#: ipalib/plugins/pwpolicy.py:220
msgid "Max lifetime (days)"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:182
+#: ipalib/plugins/pwpolicy.py:221
msgid "Maximum password lifetime (in days)"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:187
+#: ipalib/plugins/pwpolicy.py:226
msgid "Min lifetime (hours)"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:188
+#: ipalib/plugins/pwpolicy.py:227
msgid "Minimum password lifetime (in hours)"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:193
+#: ipalib/plugins/pwpolicy.py:232
msgid "History size"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:194
+#: ipalib/plugins/pwpolicy.py:233
msgid "Password history size"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:199
+#: ipalib/plugins/pwpolicy.py:238
msgid "Character classes"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:200
+#: ipalib/plugins/pwpolicy.py:239
msgid "Minimum number of character classes"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:206
+#: ipalib/plugins/pwpolicy.py:245
msgid "Min length"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:207
+#: ipalib/plugins/pwpolicy.py:246
msgid "Minimum length of password"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:212
+#: ipalib/plugins/pwpolicy.py:251
msgid "Priority"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:213
+#: ipalib/plugins/pwpolicy.py:252
msgid "Priority of the policy (higher number means lower priority"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:265
+#: ipalib/plugins/pwpolicy.py:284
+msgid ""
+"\n"
+" Ensure that the maximum lifetime is greater than the minimum.\n"
+" If there is no minimum lifetime set then don't return an error.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/pwpolicy.py:304
msgid "Maximum password life must be greater than minimum."
msgstr ""
-#: ipalib/plugins/pwpolicy.py:330
-msgid "priority cannot be set on global policy"
+#: ipalib/plugins/pwpolicy.py:311
+msgid ""
+"\n"
+" Add a new group password policy.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/pwpolicy.py:340
+msgid ""
+"\n"
+" Delete a group password policy.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/pwpolicy.py:359
+msgid ""
+"\n"
+" Modify a group password policy.\n"
+" "
msgstr ""
#: ipalib/plugins/pwpolicy.py:369
+msgid "priority cannot be set on global policy"
+msgstr ""
+
+#: ipalib/plugins/pwpolicy.py:401
+msgid ""
+"\n"
+" Display information about password policy.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/pwpolicy.py:406
msgid "User"
msgstr ""
-#: ipalib/plugins/pwpolicy.py:370
+#: ipalib/plugins/pwpolicy.py:407
msgid "Display effective policy for a specific user"
msgstr ""
-#: ipalib/plugins/rolegroup.py:79
-msgid "Role Groups"
+#: ipalib/plugins/pwpolicy.py:442
+msgid ""
+"\n"
+" Search for group password policies.\n"
+" "
msgstr ""
-#: ipalib/plugins/rolegroup.py:84
-msgid "Role-group name"
+#: ipalib/plugins/role.py:20
+msgid ""
+"\n"
+"Roles\n"
+"\n"
+"A role is used for fine-grained delegation. A permission grants the ability\n"
+"to perform given low-level tasks (add a user, modify a group, etc.). A\n"
+"privilege combines one or more permissions into a higher-level abstraction\n"
+"such as useradmin. A useradmin would be able to add, delete and modify "
+"users.\n"
+"\n"
+"Privileges are assigned to Roles.\n"
+"\n"
+"Users, groups, hosts and hostgroups may be members of a Role.\n"
+"\n"
+"Roles can not contain other roles.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a new role:\n"
+" ipa role-add --desc=\"Junior-level admin\" junioradmin\n"
+"\n"
+" Add some privileges to this role:\n"
+" ipa role-add-privilege --privileges=addusers junioradmin\n"
+" ipa role-add-privilege --privileges=change_password junioradmin\n"
+" ipa role-add-privilege --privileges=add_user_to_default_group juioradmin\n"
+"\n"
+" Add a group of users to this role:\n"
+" ipa group-add --desc=\"User admins\" useradmins\n"
+" ipa role-add-member --groups=useradmins junioradmin\n"
+"\n"
+" Display information about a role:\n"
+" ipa role-show junioradmin\n"
+"\n"
+" The result of this is that any users in the group 'useradmins' can\n"
+" add users, reset passwords or add a user to the default IPA user group.\n"
+msgstr ""
+
+#: ipalib/plugins/role.py:62
+msgid ""
+"\n"
+" Role object.\n"
+" "
msgstr ""
-#: ipalib/plugins/rolegroup.py:91
+#: ipalib/plugins/role.py:82
+msgid "Role"
+msgstr ""
+
+#: ipalib/plugins/role.py:87
+msgid "Role name"
+msgstr ""
+
+#: ipalib/plugins/role.py:94
msgid "A description of this role-group"
msgstr ""
-#: ipalib/plugins/rolegroup.py:102
-msgid "Member of task-groups"
+#: ipalib/plugins/role.py:102
+msgid ""
+"\n"
+" Add a new role.\n"
+" "
msgstr ""
-#: ipalib/plugins/rolegroup.py:115
-#, python-format
-msgid "Added rolegroup \"%(value)s\""
+#: ipalib/plugins/role.py:106
+msgid "Added role \"%(value)s\""
msgstr ""
-#: ipalib/plugins/rolegroup.py:125
-#, python-format
-msgid "Deleted rolegroup \"%(value)s\""
+#: ipalib/plugins/role.py:112
+msgid ""
+"\n"
+" Delete a role.\n"
+" "
msgstr ""
-#: ipalib/plugins/rolegroup.py:135
-#, python-format
-msgid "Modified rolegroup \"%(value)s\""
+#: ipalib/plugins/role.py:116
+msgid "Deleted role \"%(value)s\""
msgstr ""
-#: ipalib/plugins/rolegroup.py:146
-#, python-format
-msgid "%(count)d rolegroup matched"
-msgid_plural "%(count)d rolegroups matched"
+#: ipalib/plugins/role.py:122
+msgid ""
+"\n"
+" Modify a role.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/role.py:126
+msgid "Modified role \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/role.py:132
+msgid ""
+"\n"
+" Search for roles.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/role.py:136
+msgid "%(count)d role matched"
+msgid_plural "%(count)d roles matched"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/plugins/role.py:144
+msgid ""
+"\n"
+" Display information about a role.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/role.py:152
+msgid ""
+"\n"
+" Add members to a role.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/role.py:160
+msgid ""
+"\n"
+" Remove members from a role.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/role.py:168
+msgid ""
+"\n"
+" Add privileges to a role.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/role.py:184
+msgid "Number of privileges added"
+msgstr ""
+
+#: ipalib/plugins/role.py:192
+msgid ""
+"\n"
+" Remove privileges from a role.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/role.py:208
+msgid "Number of privileges removed"
+msgstr ""
+
+#: ipalib/plugins/selfservice.py:19
+msgid ""
+"\n"
+"Self-service Permissions\n"
+"\n"
+"A permission enables fine-grained delegation of permissions. Access Control\n"
+"Rules, or instructions (ACIs), grant permission to permissions to perform\n"
+"given tasks such as adding a user, modifying a group, etc.\n"
+"\n"
+"A Self-service permission defines what an object can change in its own "
+"entry.\n"
+"\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a self-service rule to allow users to manage their address:\n"
+" ipa selfservice-add --permissions=write --attrs=street,postalCode,l,c,st "
+"\"Users manage their own address\"\n"
+"\n"
+" When managing the list of attributes you need to include all attributes\n"
+" in the list, including existing ones. Add telephoneNumber to the list:\n"
+" ipa selfservice-mod --attrs=street,postalCode,l,c,st,telephoneNumber "
+"\"Users manage their own address\"\n"
+"\n"
+" Display our updated rule:\n"
+" ipa selfservice-show \"Users manage their own address\"\n"
+"\n"
+" Delete a rule:\n"
+" ipa selfservice-del \"Users manage their own address\"\n"
+msgstr ""
+
+#: ipalib/plugins/selfservice.py:56
+msgid ""
+"\n"
+" Determine if the ACI is a Self-service ACI and raise an exception if it\n"
+" isn't.\n"
+"\n"
+" Return the result if it is a self-service ACI.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/selfservice.py:64
+msgid "Self-service permission '%(permission)s' not found"
+msgstr ""
+
+#: ipalib/plugins/selfservice.py:68
+msgid ""
+"\n"
+" Selfservice object.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/selfservice.py:75
+msgid "Self Service Permissions"
+msgstr ""
+
+#: ipalib/plugins/selfservice.py:80 ipalib/plugins/selfservice.py:81
+msgid "Self-service name"
+msgstr ""
+
+#: ipalib/plugins/selfservice.py:114
+msgid ""
+"\n"
+" Add a new self-service permission.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/selfservice.py:118
+msgid "Added selfservice \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/selfservice.py:137
+msgid ""
+"\n"
+" Delete a self-service permission.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/selfservice.py:142
+msgid "Deleted selfservice \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/selfservice.py:158
+msgid ""
+"\n"
+" Modify a self-service permission.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/selfservice.py:162
+msgid "Modified selfservice \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/selfservice.py:181
+msgid ""
+"\n"
+" Search for a self-service permission.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/selfservice.py:185
+msgid "%(count)d selfservice matched"
+msgid_plural "%(count)d selfservices matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/service.py:198
+#: ipalib/plugins/selfservice.py:207
+msgid ""
+"\n"
+" Display information about a self-service permission.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:21
+msgid ""
+"\n"
+"Services\n"
+"\n"
+"A IPA service represents a service that runs on a host. The IPA service\n"
+"record can store a Kerberos principal, an SSL certificate, or both.\n"
+"\n"
+"An IPA service can be managed directly from a machine, provided that\n"
+"machine has been given the correct permission. This is true even for\n"
+"machines other than the one the service is associated with. For example,\n"
+"requesting an SSL certificate using the host service principal credentials\n"
+"of the host. To manage a service using host credentials you need to\n"
+"kinit as the host:\n"
+"\n"
+" # kinit -kt /etc/krb5.keytab host/ipa.example.com@EXAMPLE.COM\n"
+"\n"
+"Adding an IPA service allows the associated service to request an SSL\n"
+"certificate or keytab, but this is performed as a separate step; they\n"
+"are not produced as a result of adding the service.\n"
+"\n"
+"Only the public aspect of a certificate is stored in a service record;\n"
+"the private key is not stored.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a new IPA service:\n"
+" ipa service-add HTTP/web.example.com\n"
+"\n"
+" Allow a host to manage an IPA service certificate:\n"
+" ipa service-add-host --hosts=web.example.com HTTP/web.example.com\n"
+" ipa role-add-member --hosts=web.example.com certadmin\n"
+"\n"
+" Delete an IPA service:\n"
+" ipa service-del HTTP/web.example.com\n"
+"\n"
+" Find all IPA services associated with a host:\n"
+" ipa service-find web.example.com\n"
+"\n"
+" Find all HTTP services:\n"
+" ipa service-find HTTP\n"
+"\n"
+" Disable the service Kerberos key and SSL certificate:\n"
+" ipa service-disable HTTP/web.example.com\n"
+"\n"
+" Request a certificate for an IPA service:\n"
+" ipa cert-request --principal=HTTP/web.example.com example.csr\n"
+"\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/"
+"httpd.keytab\n"
+"\n"
+msgstr ""
+
+#: ipalib/plugins/service.py:162
+msgid ""
+"\n"
+" For now just verify that it is properly base64-encoded.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:175
+msgid ""
+"\n"
+" Incoming certificates should be DER-encoded.\n"
+"\n"
+" Note that this can't be a normalizer on the Param because only unicode\n"
+" variables are normalized.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:210
+msgid ""
+"\n"
+" Set individual attributes from some values from a certificate.\n"
+"\n"
+" entry_attrs is a dict of an entry\n"
+"\n"
+" returns nothing\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:234
+msgid ""
+"\n"
+" Determine if the file is writable. If the file doesn't exist then\n"
+" open the file to test writability.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:243
+msgid "Permission denied: %(file)s"
+msgstr ""
+
+#: ipalib/plugins/service.py:251
+msgid ""
+"\n"
+" Convert a raw base64-encoded blob into something that looks like a PE\n"
+" file with lines split to 64 characters and proper headers.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:261
+msgid ""
+"\n"
+" Check to see if the certificate should be written to a file and do so.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:278
+msgid ""
+"\n"
+" Service object.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:305
msgid "Service principal"
msgstr ""
-#: ipalib/plugins/service.py:221
+#: ipalib/plugins/service.py:321
+msgid ""
+"\n"
+" Add a new IPA new service.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:324
+msgid "Added service \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/service.py:330
msgid "force principal name even if not in DNS"
msgstr ""
-#: ipalib/plugins/service.py:292
-#, python-format
+#: ipalib/plugins/service.py:361
+msgid ""
+"\n"
+" Delete an IPA service.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:364
+msgid "Deleted service \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/service.py:398
+msgid ""
+"\n"
+" Modify an existing IPA service.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:401
msgid "Modified service \"%(value)s\""
msgstr ""
-#: ipalib/plugins/service.py:323
-#, python-format
+#: ipalib/plugins/service.py:431
+msgid ""
+"\n"
+" Search for IPA services.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:434
msgid "%(count)d service matched"
msgid_plural "%(count)d services matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/service.py:409
-msgid "Service principal has no kerberos key"
+#: ipalib/plugins/service.py:469
+msgid ""
+"\n"
+" Display information about an IPA service.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:507
+msgid ""
+"\n"
+" Add hosts that can manage this service.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:517
+msgid ""
+"\n"
+" Remove hosts that can manage this service.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:527
+msgid ""
+"\n"
+" Disable the Kerberos key and SSL certificate of a service.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/service.py:531
+msgid "Disabled service \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/sudocmd.py:19
+msgid ""
+"\n"
+"Sudo Commands\n"
+"\n"
+"Commands used as building blocks for sudo\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Create a new commnad\n"
+" ipa sudocmd-add --desc='For reading log files' /usr/bin/less\n"
+"\n"
+" Remove a command\n"
+" ipa sudocmd-del /usr/bin/less\n"
+"\n"
+msgstr ""
+
+#: ipalib/plugins/sudocmd.py:46
+msgid ""
+"\n"
+" Sudo Command object.\n"
+" "
msgstr ""
-#: ipalib/plugins/sudocmd.py:60
-msgid "SudoCmds"
+#: ipalib/plugins/sudocmd.py:64
+msgid "Sudo Commands"
msgstr ""
-#: ipalib/plugins/sudocmd.py:65
+#: ipalib/plugins/sudocmd.py:69
msgid "Sudo Command"
msgstr ""
-#: ipalib/plugins/sudocmd.py:72
+#: ipalib/plugins/sudocmd.py:75
msgid "A description of this command"
msgstr ""
-#: ipalib/plugins/sudocmd.py:99
-#, python-format
+#: ipalib/plugins/sudocmd.py:98
+msgid ""
+"\n"
+" Create new sudo command.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudocmd.py:102
msgid "Added sudo command \"%(value)s\""
msgstr ""
-#: ipalib/plugins/sudocmd.py:108
-#, python-format
+#: ipalib/plugins/sudocmd.py:107
+msgid ""
+"\n"
+" Delete sudo command.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudocmd.py:111
msgid "Deleted sudo command \"%(value)s\""
msgstr ""
-#: ipalib/plugins/sudocmd.py:117
-#, python-format
+#: ipalib/plugins/sudocmd.py:116
+msgid ""
+"\n"
+" Modify command.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudocmd.py:120
msgid "Modified sudo command \"%(value)s\""
msgstr ""
-#: ipalib/plugins/sudocmd.py:127
-#, python-format
+#: ipalib/plugins/sudocmd.py:125
+msgid ""
+"\n"
+" Search for commands.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudocmd.py:129
msgid "%(count)d sudo command matched"
msgid_plural "%(count)d sudo command matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/sudocmdgroup.py:66 ipalib/plugins/sudocmdgroup.py:85
-#: ipalib/plugins/sudorule.py:81 ipalib/plugins/sudorule.py:85
-msgid "Sudo Command Groups"
+#: ipalib/plugins/sudocmd.py:136
+msgid ""
+"\n"
+" Display sudo command.\n"
+" "
msgstr ""
-#: ipalib/plugins/sudocmdgroup.py:71
-msgid "Sudo Command Group name"
+#: ipalib/plugins/sudocmdgroup.py:19
+msgid ""
+"\n"
+"Groups of Sudo commands\n"
+"\n"
+"Manage groups of Sudo commands.\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a new Sudo command group:\n"
+" ipa sudocmdgroup-add --desc='administrators commands' admincmds\n"
+"\n"
+" Remove a Sudo command group:\n"
+" ipa sudocmdgroup-del admincmds\n"
+"\n"
+" Manage Sudo command group membership, commands:\n"
+" ipa sudocmdgroup-add-member --sudocmds=/usr/bin/less,/usr/bin/vim "
+"admincmds\n"
+"\n"
+" Manage Sudo command group membership, commands:\n"
+" ipa group-remove-member --sudocmds=/usr/bin/less admincmds\n"
+"\n"
+" Show a Sudo command group:\n"
+" ipa group-show localadmins\n"
+msgstr ""
+
+#: ipalib/plugins/sudocmdgroup.py:50
+msgid ""
+"\n"
+" Sudo Group object.\n"
+" "
msgstr ""
-#: ipalib/plugins/sudocmdgroup.py:81
-msgid "Commands"
+#: ipalib/plugins/sudocmdgroup.py:70
+msgid "Sudo Command Group"
msgstr ""
-#: ipalib/plugins/sudocmdgroup.py:98
-#, python-format
+#: ipalib/plugins/sudocmdgroup.py:93
+msgid ""
+"\n"
+" Create new sudo command group.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudocmdgroup.py:97
msgid "Added sudo command group \"%(value)s\""
msgstr ""
-#: ipalib/plugins/sudocmdgroup.py:108
-#, python-format
+#: ipalib/plugins/sudocmdgroup.py:103
+msgid ""
+"\n"
+" Delete sudo command group.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudocmdgroup.py:107
msgid "Deleted sudo command group \"%(value)s\""
msgstr ""
-#: ipalib/plugins/sudocmdgroup.py:118
-#, python-format
+#: ipalib/plugins/sudocmdgroup.py:113
+msgid ""
+"\n"
+" Modify group.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudocmdgroup.py:117
msgid "Modified sudo command group \"%(value)s\""
msgstr ""
-#: ipalib/plugins/sudocmdgroup.py:129
-#, python-format
+#: ipalib/plugins/sudocmdgroup.py:123
+msgid ""
+"\n"
+" Search for sudo command groups.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudocmdgroup.py:127
msgid "%(count)d sudo command group matched"
msgid_plural "%(count)d sudo command groups matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/sudorule.py:48
-msgid "SudoRule"
+#: ipalib/plugins/sudocmdgroup.py:136
+msgid ""
+"\n"
+" Display sudo command group.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudocmdgroup.py:144
+msgid ""
+"\n"
+" Add members to sudo command group.\n"
+" "
msgstr ""
-#: ipalib/plugins/sudorule.py:73
+#: ipalib/plugins/sudocmdgroup.py:152
+msgid ""
+"\n"
+" Remove members from sudo command group.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:19
+msgid ""
+"\n"
+"Sudo (su \"do\") allows a system administrator to delegate authority to\n"
+"give certain users (or groups of users) the ability to run some (or all)\n"
+"commands as root or another user while providing an audit trail of the\n"
+"commands and their arguments.\n"
+"\n"
+"FreeIPA provides a designated binddn to use with Sudo located at:\n"
+"uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n"
+"\n"
+"To enable the binddn run the following command to set the password:\n"
+"LDAPTLS_CACERT=/etc/ipa/ca.crt /usr/bin/ldappasswd -S -W -h ipa.example.com -"
+"ZZ -D \"cn=Directory Manager\" uid=sudo,cn=sysaccounts,cn=etc,dc=example,"
+"dc=com\n"
+"\n"
+"For more information, see the FreeIPA Documentation to Sudo.\n"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:44
+msgid ""
+"\n"
+" Sudo Rule management\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:98
+msgid "Command category"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:99
+msgid "Command category the rule applies to"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:104
+msgid "Run As User category"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:105
+msgid "Run As User category the rule applies to"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:110
+msgid "Run As Group category"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:111
+msgid "Run As Group category the rule applies to"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:131
msgid "Sudo Allow Commands"
msgstr ""
-#: ipalib/plugins/sudorule.py:77
+#: ipalib/plugins/sudorule.py:135
msgid "Sudo Deny Commands"
msgstr ""
-#: ipalib/plugins/sudorule.py:109
-#, python-format
+#: ipalib/plugins/sudorule.py:147
+msgid "Run As User"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:151
+msgid "Run As Group"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:156
+msgid "External User"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:157
+msgid "External User the rule applies to"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:161
+msgid "RunAs External User"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:162
+msgid "External User the commands can run as"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:166
+msgid "RunAs External Group"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:167
+msgid "External Group the commands can run as"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:175
+msgid ""
+"\n"
+" Create new Sudo Rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:183
msgid "Added sudo rule \"%(value)s\""
msgstr ""
-#: ipalib/plugins/taskgroup.py:51
-msgid "Task Groups"
+#: ipalib/plugins/sudorule.py:189
+msgid ""
+"\n"
+" Delete Sudo Rule.\n"
+" "
msgstr ""
-#: ipalib/plugins/taskgroup.py:56
-msgid "Task-group name"
+#: ipalib/plugins/sudorule.py:197
+msgid ""
+"\n"
+" Modify Sudo Rule.\n"
+" "
msgstr ""
-#: ipalib/plugins/taskgroup.py:63
-msgid "Task-group description"
+#: ipalib/plugins/sudorule.py:205
+msgid ""
+"\n"
+" Search for Sudo Rule.\n"
+" "
msgstr ""
-#: ipalib/plugins/taskgroup.py:74
-msgid "Member role-groups"
+#: ipalib/plugins/sudorule.py:213
+msgid ""
+"\n"
+" Dispaly Sudo Rule.\n"
+" "
msgstr ""
-#: ipalib/plugins/taskgroup.py:87
-#, python-format
-msgid "Added taskgroup \"%(value)s\""
+#: ipalib/plugins/sudorule.py:221
+msgid ""
+"\n"
+" Enable a Sudo rule.\n"
+" "
msgstr ""
-#: ipalib/plugins/taskgroup.py:97
-#, python-format
-msgid "Deleted taskgroup \"%(value)s\""
+#: ipalib/plugins/sudorule.py:247
+msgid ""
+"\n"
+" Disable a Sudo rule.\n"
+" "
msgstr ""
-#: ipalib/plugins/taskgroup.py:107
-#, python-format
-msgid "Modified taskgroup \"%(value)s\""
+#: ipalib/plugins/sudorule.py:273 ipalib/plugins/sudorule.py:293
+msgid ""
+"\n"
+" Add commands and sudo command groups affected by Sudo Rule.\n"
+" "
msgstr ""
-#: ipalib/plugins/taskgroup.py:118
-#, python-format
-msgid "%(count)d taskgroup matched"
-msgid_plural "%(count)d taskgroups matched"
-msgstr[0] ""
-msgstr[1] ""
+#: ipalib/plugins/sudorule.py:283 ipalib/plugins/sudorule.py:303
+msgid ""
+"\n"
+" Remove commands and sudo command groups affected by Sudo Rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:313
+msgid ""
+"\n"
+" Add users and groups affected by Sudo Rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:349
+msgid ""
+"\n"
+" Remove users and groups affected by Sudo Rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:383
+msgid ""
+"\n"
+" Add hosts and hostgroups affected by Sudo Rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:419
+msgid ""
+"\n"
+" Remove hosts and hostgroups affected by Sudo Rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:453
+msgid ""
+"\n"
+" Add user for Sudo to execute as.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:489
+msgid ""
+"\n"
+" Remove user for Sudo to execute as.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:523
+msgid ""
+"\n"
+" Add group for Sudo to execute as.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:559
+msgid ""
+"\n"
+" Remove group for Sudo to execute as.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:593
+msgid ""
+"\n"
+" Add an option to the Sudo rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:600 ipalib/plugins/sudorule.py:641
+msgid "Sudo Option"
+msgstr ""
+
+#: ipalib/plugins/sudorule.py:635
+msgid ""
+"\n"
+" Remove an option from Sudo rule.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/user.py:20
+msgid ""
+"\n"
+"Users\n"
+"\n"
+"Manage user entries. All users are POSIX users.\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"
+"Disabling a user account prevents that user from obtaining new Kerberos\n"
+"credentials. It does not invalidate any credentials that have already\n"
+"been issued.\n"
+"\n"
+"Password management is not a part of this module. For more information\n"
+"about this topic please see: ipa help passwd\n"
+"\n"
+"EXAMPLES:\n"
+"\n"
+" Add a new user:\n"
+" ipa user-add --first=Tim --last=User --password tuser1\n"
+"\n"
+" Find all users whose entries include the string \"Tim\":\n"
+" ipa user-find Tim\n"
+"\n"
+" Find all users with \"Tim\" as the first name:\n"
+" ipa user-find --first=Tim\n"
+"\n"
+" Disable a user account:\n"
+" ipa user-disable tuser1\n"
+"\n"
+" Enable a user account:\n"
+" ipa user-enable tuser1\n"
+"\n"
+" Delete a user:\n"
+" ipa user-del tuser1\n"
+msgstr ""
+
+#: ipalib/plugins/user.py:74
+msgid ""
+"\n"
+" User object.\n"
+" "
+msgstr ""
-#: ipalib/plugins/user.py:84
+#: ipalib/plugins/user.py:105
msgid "User login"
msgstr ""
-#: ipalib/plugins/user.py:91
+#: ipalib/plugins/user.py:112
msgid "First name"
msgstr ""
-#: ipalib/plugins/user.py:95
+#: ipalib/plugins/user.py:116
msgid "Last name"
msgstr ""
-#: ipalib/plugins/user.py:103
+#: ipalib/plugins/user.py:119
+msgid "Full name"
+msgstr ""
+
+#: ipalib/plugins/user.py:124
+msgid "Display name"
+msgstr ""
+
+#: ipalib/plugins/user.py:129
+msgid "Initials"
+msgstr ""
+
+#: ipalib/plugins/user.py:135
+msgid "Home directory"
+msgstr ""
+
+#: ipalib/plugins/user.py:139
msgid "GECOS field"
msgstr ""
-#: ipalib/plugins/user.py:109
+#: ipalib/plugins/user.py:145
msgid "Login shell"
msgstr ""
-#: ipalib/plugins/user.py:114
+#: ipalib/plugins/user.py:150
msgid "Kerberos principal"
msgstr ""
-#: ipalib/plugins/user.py:120
+#: ipalib/plugins/user.py:157
msgid "Email address"
msgstr ""
-#: ipalib/plugins/user.py:124
-msgid "Password"
-msgstr ""
-
-#: ipalib/plugins/user.py:125
-msgid "Set the user password"
+#: ipalib/plugins/user.py:162
+msgid "Prompt to set the user password"
msgstr ""
-#: ipalib/plugins/user.py:132
+#: ipalib/plugins/user.py:169
msgid "UID"
msgstr ""
-#: ipalib/plugins/user.py:133
+#: ipalib/plugins/user.py:170
msgid "User ID Number (system will assign one if not provided)"
msgstr ""
-#: ipalib/plugins/user.py:139
-msgid "Street address"
+#: ipalib/plugins/user.py:177
+msgid "Group ID Number"
msgstr ""
-#: ipalib/plugins/user.py:142
-msgid "Groups"
+#: ipalib/plugins/user.py:182
+msgid "Street address"
msgstr ""
-#: ipalib/plugins/user.py:146
-msgid "Netgroups"
+#: ipalib/plugins/user.py:186
+msgid "City"
msgstr ""
-#: ipalib/plugins/user.py:150
-msgid "Rolegroups"
+#: ipalib/plugins/user.py:190
+msgid "State/Province"
msgstr ""
-#: ipalib/plugins/user.py:154
-msgid "Taskgroups"
+#: ipalib/plugins/user.py:193
+msgid "ZIP"
msgstr ""
-#: ipalib/plugins/user.py:159
+#: ipalib/plugins/user.py:197
msgid "Telephone Number"
msgstr ""
-#: ipalib/plugins/user.py:161
+#: ipalib/plugins/user.py:200
msgid "Mobile Telephone Number"
msgstr ""
-#: ipalib/plugins/user.py:163
+#: ipalib/plugins/user.py:203
msgid "Pager Number"
msgstr ""
-#: ipalib/plugins/user.py:166
+#: ipalib/plugins/user.py:207
msgid "Fax Number"
msgstr ""
-#: ipalib/plugins/user.py:177
-#, python-format
+#: ipalib/plugins/user.py:211
+msgid "Org. Unit"
+msgstr ""
+
+#: ipalib/plugins/user.py:214
+msgid "Job Title"
+msgstr ""
+
+#: ipalib/plugins/user.py:217
+msgid "Manager"
+msgstr ""
+
+#: ipalib/plugins/user.py:220
+msgid "Car License"
+msgstr ""
+
+#: ipalib/plugins/user.py:223
+msgid "Account disabled"
+msgstr ""
+
+#: ipalib/plugins/user.py:250
+msgid ""
+"\n"
+" Add a new user.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/user.py:254
msgid "Added user \"%(value)s\""
msgstr ""
-#: ipalib/plugins/user.py:226
-#, python-format
+#: ipalib/plugins/user.py:275
+msgid "can be at most %(len)d characters"
+msgstr ""
+
+#: ipalib/plugins/user.py:324
+msgid ""
+"\n"
+" Delete a user.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/user.py:328
msgid "Deleted user \"%(value)s\""
msgstr ""
-#: ipalib/plugins/user.py:240
-#, python-format
+#: ipalib/plugins/user.py:337
+msgid ""
+"\n"
+" Modify a user.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/user.py:341
msgid "Modified user \"%(value)s\""
msgstr ""
-#: ipalib/plugins/user.py:252
+#: ipalib/plugins/user.py:358
+msgid ""
+"\n"
+" Search for users.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/user.py:365
msgid "Self"
msgstr ""
-#: ipalib/plugins/user.py:253
+#: ipalib/plugins/user.py:366
msgid "Display user record for current Kerberos principal"
msgstr ""
-#: ipalib/plugins/user.py:263
-#, python-format
+#: ipalib/plugins/user.py:383
msgid "%(count)d user matched"
msgid_plural "%(count)d users matched"
msgstr[0] ""
msgstr[1] ""
-#: ipalib/plugins/user.py:283
-#, python-format
+#: ipalib/plugins/user.py:391
+msgid ""
+"\n"
+" Display information about a user.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/user.py:403
+msgid ""
+"\n"
+" Disable a user account.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/user.py:408
msgid "Disabled user account \"%(value)s\""
msgstr ""
-#: ipalib/plugins/user.py:309
-#, python-format
+#: ipalib/plugins/user.py:426
+msgid ""
+"\n"
+" Enable a user account.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/user.py:431
msgid "Enabled user account \"%(value)s\""
msgstr ""
-#: ipaserver/install/certs.py:599 ipaserver/plugins/dogtag.py:1313
-#: ipaserver/plugins/dogtag.py:1398 ipaserver/plugins/dogtag.py:1463
-#: ipaserver/plugins/dogtag.py:1543 ipaserver/plugins/dogtag.py:1602
+#: ipalib/plugins/user.py:448
+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.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/user.py:457
+msgid "Unlocked account \"%(value)s\""
+msgstr ""
+
+#: ipalib/plugins/virtual.py:20
+msgid ""
+"\n"
+"Base classes for non-LDAP backend plugins.\n"
+msgstr ""
+
+#: ipalib/plugins/virtual.py:28
+msgid ""
+"\n"
+" A command that doesn't use the LDAP backend but wants to use the\n"
+" LDAP access control system to make authorization decisions.\n"
+"\n"
+" The class variable operation is the commonName attribute of the\n"
+" entry to be tested against.\n"
+"\n"
+" In advance, you need to create an entry of the form:\n"
+" cn=<operation>, api.env.container_virtual, api.env.basedn\n"
+"\n"
+" Ex.\n"
+" cn=request certificate, cn=virtual operations,cn=etc, dc=example, "
+"dc=com\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/virtual.py:44
+msgid ""
+"\n"
+" Perform an LDAP query to determine authorization.\n"
+"\n"
+" This should be executed before any actual work is done.\n"
+" "
+msgstr ""
+
+#: ipalib/plugins/xmlclient.py:21
+msgid ""
+"\n"
+"XML-RPC client plugin.\n"
+msgstr ""
+
+#: ipalib/cli.py:539
+#, python-format
+msgid "Enter %(label)s again to verify: "
+msgstr ""
+
+#: ipalib/cli.py:543 ipa-client/ipa-getkeytab.c:751
+#, c-format
+msgid "Passwords do not match!"
+msgstr ""
+
+#: ipalib/cli.py:548
+msgid "Cancelled."
+msgstr ""
+
+#: ipalib/cli.py:777
+msgid "Command name"
+msgstr ""
+
+#: ipalib/cli.py:1066
+msgid "No file to read"
+msgstr ""
+
+#: ipalib/errors.py:297
+#, python-format
+msgid "%(cver)s client incompatible with %(sver)s server at %(server)r"
+msgstr ""
+
+#: ipalib/errors.py:315
+#, python-format
+msgid "unknown error %(code)d from %(server)s: %(error)s"
+msgstr ""
+
+#: ipalib/errors.py:331
+msgid "an internal error has occurred"
+msgstr ""
+
+#: ipalib/errors.py:353
+#, python-format
+msgid "an internal error has occurred on server at %(server)r"
+msgstr ""
+
+#: ipalib/errors.py:369
+#, python-format
+msgid "unknown command %(name)r"
+msgstr ""
+
+#: ipalib/errors.py:386 ipalib/errors.py:411
+#, python-format
+msgid "error on server %(server)r: %(error)s"
+msgstr ""
+
+#: ipalib/errors.py:402
+#, python-format
+msgid "cannot connect to %(uri)r: %(error)s"
+msgstr ""
+
+#: ipalib/errors.py:420
+#, python-format
+msgid "Invalid JSON-RPC request: %(error)s"
+msgstr ""
+
+#: ipalib/errors.py:436
+#, python-format
+msgid "error marshalling data for XML-RPC transport: %(error)s"
+msgstr ""
+
+#: ipalib/errors.py:462
+#, python-format
+msgid "Kerberos error: %(major)s/%(minor)s"
+msgstr ""
+
+#: ipalib/errors.py:479
+msgid "did not receive Kerberos credentials"
+msgstr ""
+
+#: ipalib/errors.py:495
+#, python-format
+msgid "Service %(service)r not found in Kerberos database"
+msgstr ""
+
+#: ipalib/errors.py:511
+msgid "No credentials cache found"
+msgstr ""
+
+#: ipalib/errors.py:527
+msgid "Ticket expired"
+msgstr ""
+
+#: ipalib/errors.py:543
+msgid "Credentials cache permissions incorrect"
+msgstr ""
+
+#: ipalib/errors.py:559
+msgid "Bad format in credentials cache"
+msgstr ""
+
+#: ipalib/errors.py:575
+msgid "Cannot resolve KDC for requested realm"
+msgstr ""
+
+#: ipalib/errors.py:594
+#, python-format
+msgid "Insufficient access: %(info)s"
+msgstr ""
+
+#: ipalib/errors.py:638
+#, python-format
+msgid "command %(name)r takes no arguments"
+msgstr ""
+
+#: ipalib/errors.py:658
+#, python-format
+msgid "command %(name)r takes at most %(count)d argument"
+msgid_plural "command %(name)r takes at most %(count)d arguments"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ipalib/errors.py:688
+#, python-format
+msgid "overlapping arguments and options: %(names)r"
+msgstr ""
+
+#: ipalib/errors.py:704
+#, python-format
+msgid "%(name)r is required"
+msgstr ""
+
+#: ipalib/errors.py:720 ipalib/errors.py:736
+#, python-format
+msgid "invalid %(name)r: %(error)s"
+msgstr ""
+
+#: ipalib/errors.py:752
+#, python-format
+msgid "api has no such namespace: %(name)r"
+msgstr ""
+
+#: ipalib/errors.py:761
+msgid "Passwords do not match"
+msgstr ""
+
+#: ipalib/errors.py:770
+msgid "Command not implemented"
+msgstr ""
+
+#: ipalib/errors.py:779
+msgid "Client is not configured. Run ipa-client-install."
+msgstr ""
+
+#: ipalib/errors.py:807 ipalib/errors.py:1047 ipalib/errors.py:1141
+#: ipalib/errors.py:1421 ipalib/errors.py:1438
+#, python-format
+msgid "%(reason)s"
+msgstr ""
+
+#: ipalib/errors.py:823
+msgid "This entry already exists"
+msgstr ""
+
+#: ipalib/errors.py:839
+msgid "You must enroll a host in order to create a host service"
+msgstr ""
+
+#: ipalib/errors.py:855
+#, python-format
+msgid ""
+"Service principal is not of the form: service/fully-qualified host name: "
+"%(reason)s"
+msgstr ""
+
+#: ipalib/errors.py:871
+msgid ""
+"The realm for the principal does not match the realm for this IPA server"
+msgstr ""
+
+#: ipalib/errors.py:887
+msgid "This command requires root access"
+msgstr ""
+
+#: ipalib/errors.py:903
+msgid "This is already a posix group"
+msgstr ""
+
+#: ipalib/errors.py:919
+#, python-format
+msgid "Principal is not of the form user@REALM: %(principal)r"
+msgstr ""
+
+#: ipalib/errors.py:935
+msgid "This entry is already enabled"
+msgstr ""
+
+#: ipalib/errors.py:951
+msgid "This entry is already disabled"
+msgstr ""
+
+#: ipalib/errors.py:967
+msgid "This entry cannot be enabled or disabled"
+msgstr ""
+
+#: ipalib/errors.py:983
+msgid "This entry is not a member"
+msgstr ""
+
+#: ipalib/errors.py:999
+msgid "A group may not be a member of itself"
+msgstr ""
+
+#: ipalib/errors.py:1015
+msgid "This entry is already a member"
+msgstr ""
+
+#: ipalib/errors.py:1031
+#, python-format
+msgid "Base64 decoding failed: %(reason)s"
+msgstr ""
+
+#: ipalib/errors.py:1063
+msgid "A group may not be added as a member of itself"
+msgstr ""
+
+#: ipalib/errors.py:1079
+msgid "The default users group cannot be removed"
+msgstr ""
+
+#: ipalib/errors.py:1095
+msgid "Host does not have corresponding DNS A record"
+msgstr ""
+
+#: ipalib/errors.py:1110
+msgid "Deleting a managed group is not allowed. It must be detached first."
+msgstr ""
+
+#: ipalib/errors.py:1125
+msgid "A managed group cannot have a password policy."
+msgstr ""
+
+#: ipalib/errors.py:1157
+#, python-format
+msgid "'%(entry)s' doesn't have a certificate."
+msgstr ""
+
+#: ipalib/errors.py:1173
+#, python-format
+msgid "Unable to create private group. A group '%(group)s' already exists."
+msgstr ""
+
+#: ipalib/errors.py:1189
+#, python-format
+msgid ""
+"A problem was encountered when verifying that all members were %(verb)s: "
+"%(exc)s"
+msgstr ""
+
+#: ipalib/errors.py:1213
+#, python-format
+msgid "no command nor help topic %(topic)r"
+msgstr ""
+
+#: ipalib/errors.py:1237
+msgid "change collided with another change"
+msgstr ""
+
+#: ipalib/errors.py:1253
+msgid "no modifications to be performed"
+msgstr ""
+
+#: ipalib/errors.py:1269
+#, python-format
+msgid "%(desc)s: %(info)s"
+msgstr ""
+
+#: ipalib/errors.py:1285
+msgid "limits exceeded for this query"
+msgstr ""
+
+#: ipalib/errors.py:1300
+#, python-format
+msgid "%(info)s"
+msgstr ""
+
+#: ipalib/errors.py:1315
+msgid "modifying primary key is not allowed"
+msgstr ""
+
+#: ipalib/errors.py:1331
+#, python-format
+msgid "%(attr)s: Only one value allowed."
+msgstr ""
+
+#: ipalib/errors.py:1347
+#, python-format
+msgid "%(attr)s: Invalid syntax."
+msgstr ""
+
+#: ipalib/errors.py:1363
+#, python-format
+msgid "Bad search filter %(info)s"
+msgstr ""
+
+#: ipalib/errors.py:1388
+#, python-format
+msgid "Certificate operation cannot be completed: %(error)s"
+msgstr ""
+
+#: ipalib/errors.py:1404
+#, python-format
+msgid "Certificate format error: %(error)s"
+msgstr ""
+
+#: ipalib/errors.py:1455
+msgid "Already registered"
+msgstr ""
+
+#: ipalib/errors.py:1471
+msgid "Not registered yet"
+msgstr ""
+
+#: ipalib/frontend.py:399
+msgid "Results are truncated, try a more specific search"
+msgstr ""
+
+#: ipalib/frontend.py:851
+msgid ""
+"Retrieve and print all attributes from the server. Affects command output."
+msgstr ""
+
+#: ipalib/frontend.py:857
+msgid "Print entries as stored on the server. Only affects output format."
+msgstr ""
+
+#: ipalib/frontend.py:986
+msgid "Forward to server instead of running locally"
+msgstr ""
+
+#: ipalib/output.py:92
+msgid "A dictionary representing an LDAP entry"
+msgstr ""
+
+#: ipalib/output.py:100
+msgid "A list of LDAP entries"
+msgstr ""
+
+#: ipalib/output.py:111
+msgid "All commands should at least have a result"
+msgstr ""
+
+#: ipalib/parameters.py:296
+msgid "incorrect type"
+msgstr ""
+
+#: ipalib/parameters.py:299
+msgid "Only one value is allowed"
+msgstr ""
+
+#: ipalib/parameters.py:901
+msgid "must be True or False"
+msgstr ""
+
+#: ipalib/parameters.py:1002
+msgid "must be an integer"
+msgstr ""
+
+#: ipalib/parameters.py:1053
+#, python-format
+msgid "must be at least %(minvalue)d"
+msgstr ""
+
+#: ipalib/parameters.py:1063
+#, python-format
+msgid "can be at most %(maxvalue)d"
+msgstr ""
+
+#: ipalib/parameters.py:1073
+msgid "must be a decimal number"
+msgstr ""
+
+#: ipalib/parameters.py:1095
+#, python-format
+msgid "must be at least %(minvalue)f"
+msgstr ""
+
+#: ipalib/parameters.py:1105
+#, python-format
+msgid "can be at most %(maxvalue)f"
+msgstr ""
+
+#: ipalib/parameters.py:1169
+#, python-format
+msgid "must match pattern \"%(pattern)s\""
+msgstr ""
+
+#: ipalib/parameters.py:1187
+msgid "must be binary data"
+msgstr ""
+
+#: ipalib/parameters.py:1203
+#, python-format
+msgid "must be at least %(minlength)d bytes"
+msgstr ""
+
+#: ipalib/parameters.py:1213
+#, python-format
+msgid "can be at most %(maxlength)d bytes"
+msgstr ""
+
+#: ipalib/parameters.py:1223
+#, python-format
+msgid "must be exactly %(length)d bytes"
+msgstr ""
+
+#: ipalib/parameters.py:1241
+msgid "must be Unicode text"
+msgstr ""
+
+#: ipalib/parameters.py:1272
+#, python-format
+msgid "must be at least %(minlength)d characters"
+msgstr ""
+
+#: ipalib/parameters.py:1282
+#, python-format
+msgid "can be at most %(maxlength)d characters"
+msgstr ""
+
+#: ipalib/parameters.py:1292
+#, python-format
+msgid "must be exactly %(length)d characters"
+msgstr ""
+
+#: ipalib/parameters.py:1310
+#, python-format
+msgid "The character '%(char)r' is not allowed."
+msgstr ""
+
+#: ipalib/parameters.py:1350
+#, python-format
+msgid "must be one of %(values)r"
+msgstr ""
+
+#: ipaserver/plugins/dogtag.py:1313 ipaserver/plugins/dogtag.py:1398
+#: ipaserver/plugins/dogtag.py:1463 ipaserver/plugins/dogtag.py:1541
+#: ipaserver/plugins/dogtag.py:1600
#, python-format
msgid "Unable to communicate with CMS (%s)"
msgstr ""
@@ -1995,27 +7106,27 @@ msgstr ""
msgid "Operating System and version of the host (e.g. Fedora 9)"
msgstr ""
-#: ipaserver/plugins/selfsign.py:98
+#: ipaserver/plugins/selfsign.py:99
#, python-format
msgid ""
"Request subject \"%(request_subject)s\" does not match the form "
"\"%(subject_base)s\""
msgstr ""
-#: ipaserver/plugins/selfsign.py:103
+#: ipaserver/plugins/selfsign.py:104
#, python-format
msgid "unable to decode csr: %s"
msgstr ""
-#: ipaserver/plugins/selfsign.py:124 ipaserver/plugins/selfsign.py:139
+#: ipaserver/plugins/selfsign.py:125 ipaserver/plugins/selfsign.py:140
msgid "file operation"
msgstr ""
-#: ipaserver/plugins/selfsign.py:153
+#: ipaserver/plugins/selfsign.py:154
msgid "cannot obtain next serial number"
msgstr ""
-#: ipaserver/plugins/selfsign.py:188
+#: ipaserver/plugins/selfsign.py:189
msgid "certutil failure"
msgstr ""
@@ -2034,579 +7145,604 @@ msgstr ""
msgid "read error\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:138 ipa-client/ipa-getkeytab.c:838
+#: ipa-client/ipa-getkeytab.c:85 ipa-client/ipa-getkeytab.c:821
+#: ipa-client/ipa-rmkeytab.c:182
+#, c-format
+msgid "Kerberos context initialization failed\n"
+msgstr ""
+
+#: ipa-client/ipa-getkeytab.c:147 ipa-client/ipa-getkeytab.c:834
#, c-format
msgid "No system preferred enctypes ?!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:146
+#: ipa-client/ipa-getkeytab.c:155
#, c-format
msgid "Out of memory!?\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:164 ipa-client/ipa-getkeytab.c:179
+#: ipa-client/ipa-getkeytab.c:173 ipa-client/ipa-getkeytab.c:188
#, c-format
msgid "Out of memory\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:194
+#: ipa-client/ipa-getkeytab.c:203
#, c-format
msgid "Warning unrecognized encryption type: [%s]\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:209
+#: ipa-client/ipa-getkeytab.c:218
#, c-format
msgid "Warning unrecognized salt type: [%s]\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:235
+#: ipa-client/ipa-getkeytab.c:245
#, c-format
msgid "Enctype comparison failed!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:297
+#: ipa-client/ipa-getkeytab.c:307
#, c-format
msgid "Failed to create random key!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:310 ipa-client/ipa-getkeytab.c:327
-#: ipa-client/ipa-getkeytab.c:335 ipa-client/ipa-getkeytab.c:372
+#: ipa-client/ipa-getkeytab.c:320 ipa-client/ipa-getkeytab.c:337
+#: ipa-client/ipa-getkeytab.c:345 ipa-client/ipa-getkeytab.c:382
#, c-format
msgid "Failed to create key!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:317 ipa-client/ipa-getkeytab.c:350
+#: ipa-client/ipa-getkeytab.c:327 ipa-client/ipa-getkeytab.c:360
+#: ipa-client/ipa-join.c:413 ipa-client/ipa-join.c:422
+#: ipa-client/ipa-join.c:559 ipa-client/ipa-join.c:747
+#: ipa-client/ipa-join.c:815
#, c-format
msgid "Out of memory!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:361
+#: ipa-client/ipa-getkeytab.c:371
#, c-format
msgid "Bad or unsupported salt type (%d)!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:481
+#: ipa-client/ipa-getkeytab.c:492
#, c-format
msgid "No keys accepted by KDC\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:496
+#: ipa-client/ipa-getkeytab.c:507
#, c-format
msgid "Out of memory \n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:534
+#: ipa-client/ipa-getkeytab.c:545
#, c-format
msgid "Out of Memory!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:541
+#: ipa-client/ipa-getkeytab.c:552
#, c-format
msgid "Failed to create control!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:565
+#: ipa-client/ipa-getkeytab.c:576
#, c-format
msgid "Unable to initialize ldap library!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:572
+#: ipa-client/ipa-getkeytab.c:583
#, c-format
msgid "Unable to set ldap options!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:579
+#: ipa-client/ipa-getkeytab.c:596
#, c-format
msgid "Simple bind failed\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:589
+#: ipa-client/ipa-getkeytab.c:606
#, c-format
msgid "SASL Bind failed!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:605 ipa-client/ipa-getkeytab.c:618
-#: ipa-client/ipa-getkeytab.c:625 ipa-client/ipa-getkeytab.c:632
+#: ipa-client/ipa-getkeytab.c:622 ipa-client/ipa-getkeytab.c:635
+#: ipa-client/ipa-getkeytab.c:642 ipa-client/ipa-getkeytab.c:649
#, c-format
msgid "Operation failed! %s\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:638 ipa-client/ipa-getkeytab.c:648
+#: ipa-client/ipa-getkeytab.c:655 ipa-client/ipa-getkeytab.c:665
#, c-format
msgid "Missing reply control!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:655
+#: ipa-client/ipa-getkeytab.c:672
#, c-format
msgid "ber_init() failed, Invalid control ?!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:674
+#: ipa-client/ipa-getkeytab.c:691 ipa-client/ipa-getkeytab.c:698
#, c-format
msgid "ber_scanf() failed, Invalid control ?!\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:715
+#: ipa-client/ipa-getkeytab.c:736
msgid "New Principal Password"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:721
+#: ipa-client/ipa-getkeytab.c:742
msgid "Verify Principal Password"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:779 ipa-client/ipa-join.c:965
+#: ipa-client/ipa-getkeytab.c:776
msgid "Print as little as possible"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:779 ipa-client/ipa-join.c:965
+#: ipa-client/ipa-getkeytab.c:776
msgid "Output only on errors"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:781
+#: ipa-client/ipa-getkeytab.c:778
msgid "Contact this specific KDC Server"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:782
+#: ipa-client/ipa-getkeytab.c:779
msgid "Server Name"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:784 ipa-client/ipa-rmkeytab.c:188
+#: ipa-client/ipa-getkeytab.c:781 ipa-client/ipa-rmkeytab.c:163
msgid "The principal to get a keytab for (ex: ftp/ftp.example.com@EXAMPLE.COM)"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:785 ipa-client/ipa-rmkeytab.c:189
+#: ipa-client/ipa-getkeytab.c:782 ipa-client/ipa-rmkeytab.c:164
msgid "Kerberos Service Principal Name"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:787 ipa-client/ipa-join.c:973
-#: ipa-client/ipa-rmkeytab.c:191
+#: ipa-client/ipa-getkeytab.c:784 ipa-client/ipa-rmkeytab.c:166
msgid "File were to store the keytab information"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:788 ipa-client/ipa-join.c:973
-#: ipa-client/ipa-rmkeytab.c:191
+#: ipa-client/ipa-getkeytab.c:785 ipa-client/ipa-rmkeytab.c:166
msgid "Keytab File Name"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:790
+#: ipa-client/ipa-getkeytab.c:787
msgid "Encryption types to request"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:791
+#: ipa-client/ipa-getkeytab.c:788
msgid "Comma separated encryption types list"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:793
+#: ipa-client/ipa-getkeytab.c:790
msgid "Show the list of permitted encryption types and exit"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:794
+#: ipa-client/ipa-getkeytab.c:791
msgid "Permitted Encryption Types"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:796
+#: ipa-client/ipa-getkeytab.c:793
msgid "Asks for a non-random password to use for the principal"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:798
+#: ipa-client/ipa-getkeytab.c:795
msgid "LDAP DN"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:798
+#: ipa-client/ipa-getkeytab.c:795
msgid "DN to bind as if not using kerberos"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:800 ipa-client/ipa-join.c:975
+#: ipa-client/ipa-getkeytab.c:797
msgid "LDAP password"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:800 ipa-client/ipa-join.c:975
+#: ipa-client/ipa-getkeytab.c:797
msgid "password to use if not using kerberos"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:825 ipa-client/ipa-rmkeytab.c:207
-#, c-format
-msgid "Kerberos context initialization failed\n"
-msgstr ""
-
-#: ipa-client/ipa-getkeytab.c:841
+#: ipa-client/ipa-getkeytab.c:837
#, c-format
msgid "Supported encryption types:\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:845
+#: ipa-client/ipa-getkeytab.c:841
#, c-format
msgid "Warning: failed to convert type (#%d)\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:864
+#: ipa-client/ipa-getkeytab.c:860
#, c-format
msgid "Bind password required when using a bind DN.\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:877
+#: ipa-client/ipa-getkeytab.c:873
#, c-format
msgid ""
"Warning: salt types are not honored with randomized passwords (see opt. -P)\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:889
+#: ipa-client/ipa-getkeytab.c:885
#, c-format
msgid "Invalid Service Principal Name\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:897
+#: ipa-client/ipa-getkeytab.c:893
#, c-format
msgid "Kerberos Credential Cache not found. Do you have a Kerberos Ticket?\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:905
+#: ipa-client/ipa-getkeytab.c:901
#, c-format
msgid ""
"Kerberos User Principal not found. Do you have a valid Credential Cache?\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:913
+#: ipa-client/ipa-getkeytab.c:909
#, c-format
msgid "Failed to open Keytab\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:920
+#: ipa-client/ipa-getkeytab.c:916
#, c-format
msgid "Failed to create key material\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:939
+#: ipa-client/ipa-getkeytab.c:935
#, c-format
msgid "Failed to add key to the keytab\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:948
+#: ipa-client/ipa-getkeytab.c:944
#, c-format
msgid "Failed to close the keytab\n"
msgstr ""
-#: ipa-client/ipa-getkeytab.c:954
+#: ipa-client/ipa-getkeytab.c:950
#, c-format
msgid "Keytab successfully retrieved and stored in: %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:67
+#: ipa-client/ipa-join.c:65
#, c-format
msgid "No permission to join this host to the IPA domain.\n"
msgstr ""
-#: ipa-client/ipa-join.c:104 ipa-client/ipa-join.c:116
+#: ipa-client/ipa-join.c:94 ipa-client/ipa-join.c:106
#, c-format
msgid "No write permissions on keytab file '%s'\n"
msgstr ""
-#: ipa-client/ipa-join.c:121
+#: ipa-client/ipa-join.c:111
#, c-format
msgid "access() on %s failed: errno = %d\n"
msgstr ""
+#: ipa-client/ipa-join.c:193
+#, c-format
+msgid "Out of memory!"
+msgstr ""
+
#: ipa-client/ipa-join.c:200
#, c-format
-msgid "Unable to enable SSL in LDAP\n"
+msgid "Unable to initialize connection to ldap server: %s"
msgstr ""
#: ipa-client/ipa-join.c:206
#, c-format
+msgid "Unable to enable SSL in LDAP\n"
+msgstr ""
+
+#: ipa-client/ipa-join.c:212
+#, c-format
msgid "Unable to set LDAP version\n"
msgstr ""
-#: ipa-client/ipa-join.c:216
+#: ipa-client/ipa-join.c:232
#, c-format
msgid "Bind failed: %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:249
+#: ipa-client/ipa-join.c:265
#, c-format
msgid "Search for %s on rootdse failed with error %d"
msgstr ""
-#: ipa-client/ipa-join.c:259 ipa-client/ipa-join.c:311
+#: ipa-client/ipa-join.c:275 ipa-client/ipa-join.c:327
#, c-format
msgid "No values for %s"
msgstr ""
-#: ipa-client/ipa-join.c:302
+#: ipa-client/ipa-join.c:318
#, c-format
msgid "Search for ipaCertificateSubjectBase failed with error %d"
msgstr ""
-#: ipa-client/ipa-join.c:368
+#: ipa-client/ipa-join.c:386
#, c-format
msgid "Unable to determine root DN of %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:377
+#: ipa-client/ipa-join.c:395
#, c-format
msgid "Unable to determine certificate subject of %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:385
+#: ipa-client/ipa-join.c:403
#, c-format
msgid "Unable to make an LDAP connection to %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:394
+#: ipa-client/ipa-join.c:428
#, c-format
msgid "Searching with %s in %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:400
+#: ipa-client/ipa-join.c:434
#, c-format
msgid "ldap_search_ext_s: %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:408
+#: ipa-client/ipa-join.c:442
#, c-format
msgid "Unable to find host '%s'\n"
msgstr ""
-#: ipa-client/ipa-join.c:415
+#: ipa-client/ipa-join.c:449
#, c-format
msgid "Unable to get binddn for host '%s'\n"
msgstr ""
-#: ipa-client/ipa-join.c:428
+#: ipa-client/ipa-join.c:462
#, c-format
msgid "Host already has principal, trying bind anyway\n"
msgstr ""
-#: ipa-client/ipa-join.c:442 ipa-client/ipa-join.c:579
+#: ipa-client/ipa-join.c:476 ipa-client/ipa-join.c:629
#, c-format
msgid "Host is already joined.\n"
msgstr ""
-#: ipa-client/ipa-join.c:446
+#: ipa-client/ipa-join.c:480
#, c-format
msgid "Incorrect password.\n"
msgstr ""
-#: ipa-client/ipa-join.c:457
+#: ipa-client/ipa-join.c:491
#, c-format
msgid "principal not found in host entry\n"
msgstr ""
-#: ipa-client/ipa-join.c:564
+#: ipa-client/ipa-join.c:614
#, c-format
msgid "principal not found in XML-RPC response\n"
msgstr ""
-#: ipa-client/ipa-join.c:646 ipa-client/ipa-join.c:823
+#: ipa-client/ipa-join.c:695 ipa-client/ipa-join.c:896
#, c-format
msgid "Unable to determine IPA server from %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:662 ipa-client/ipa-join.c:838
+#: ipa-client/ipa-join.c:711 ipa-client/ipa-join.c:911
#, c-format
msgid "The hostname must be fully-qualified: %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:671 ipa-client/ipa-join.c:848
+#: ipa-client/ipa-join.c:720 ipa-client/ipa-join.c:921
#, c-format
msgid "Unable to join host: Kerberos context initialization failed\n"
msgstr ""
-#: ipa-client/ipa-join.c:679
+#: ipa-client/ipa-join.c:728
#, c-format
msgid "Error resolving keytab: %s.\n"
msgstr ""
-#: ipa-client/ipa-join.c:689
+#: ipa-client/ipa-join.c:737
+#, c-format
+msgid "Error getting default Kerberos realm: %s.\n"
+msgstr ""
+
+#: ipa-client/ipa-join.c:755
#, c-format
msgid "Error parsing \"%s\": %s.\n"
msgstr ""
-#: ipa-client/ipa-join.c:707
+#: ipa-client/ipa-join.c:773
#, c-format
msgid "Error obtaining initial credentials: %s.\n"
msgstr ""
-#: ipa-client/ipa-join.c:718
+#: ipa-client/ipa-join.c:784
#, c-format
msgid "Unable to generate Kerberos Credential Cache\n"
msgstr ""
-#: ipa-client/ipa-join.c:726
+#: ipa-client/ipa-join.c:792
#, c-format
msgid "Error storing creds in credential cache: %s.\n"
msgstr ""
-#: ipa-client/ipa-join.c:769
+#: ipa-client/ipa-join.c:842
#, c-format
msgid "Unenrollment successful.\n"
msgstr ""
-#: ipa-client/ipa-join.c:772
+#: ipa-client/ipa-join.c:845
#, c-format
msgid "Unenrollment failed.\n"
msgstr ""
-#: ipa-client/ipa-join.c:777
+#: ipa-client/ipa-join.c:850
#, c-format
msgid "result not found in XML-RPC response\n"
msgstr ""
-#: ipa-client/ipa-join.c:855
+#: ipa-client/ipa-join.c:928
#, c-format
msgid "Unable to join host: Kerberos Credential Cache not found\n"
msgstr ""
-#: ipa-client/ipa-join.c:863
+#: ipa-client/ipa-join.c:936
#, c-format
msgid ""
"Unable to join host: Kerberos User Principal not found and host password not "
"provided.\n"
msgstr ""
-#: ipa-client/ipa-join.c:877
+#: ipa-client/ipa-join.c:950
#, c-format
msgid "fork() failed\n"
msgstr ""
-#: ipa-client/ipa-join.c:906
+#: ipa-client/ipa-join.c:979
#, c-format
msgid "ipa-getkeytab not found\n"
msgstr ""
-#: ipa-client/ipa-join.c:909
+#: ipa-client/ipa-join.c:982
#, c-format
msgid "ipa-getkeytab has bad permissions?\n"
msgstr ""
-#: ipa-client/ipa-join.c:912
+#: ipa-client/ipa-join.c:985
#, c-format
msgid "executing ipa-getkeytab failed, errno %d\n"
msgstr ""
-#: ipa-client/ipa-join.c:924
+#: ipa-client/ipa-join.c:997
#, c-format
msgid "child exited with %d\n"
msgstr ""
-#: ipa-client/ipa-join.c:930
+#: ipa-client/ipa-join.c:1003
#, c-format
msgid "Certificate subject base is: %s\n"
msgstr ""
-#: ipa-client/ipa-join.c:963
-msgid "Print the raw XML-RPC output"
-msgstr ""
-
-#: ipa-client/ipa-join.c:963
-msgid "XML-RPC debugging Output"
+#: ipa-client/ipa-join.c:1038
+msgid "Print the raw XML-RPC output in GSSAPI mode"
msgstr ""
-#: ipa-client/ipa-join.c:967
-msgid "Unenroll this host"
+#: ipa-client/ipa-join.c:1040
+msgid "Quiet mode. Only errors are displayed."
msgstr ""
-#: ipa-client/ipa-join.c:967
+#: ipa-client/ipa-join.c:1042
msgid "Unenroll this host from IPA server"
msgstr ""
-#: ipa-client/ipa-join.c:969
-msgid "Use this hostname instead of the node name"
+#: ipa-client/ipa-join.c:1044
+msgid "Hostname of this server"
msgstr ""
-#: ipa-client/ipa-join.c:969
-msgid "Host Name"
+#: ipa-client/ipa-join.c:1044 ipa-client/ipa-join.c:1046
+msgid "hostname"
msgstr ""
-#: ipa-client/ipa-join.c:971
+#: ipa-client/ipa-join.c:1046
msgid "IPA Server to use"
msgstr ""
-#: ipa-client/ipa-join.c:971
-msgid "IPA Server Name"
+#: ipa-client/ipa-join.c:1048
+msgid "Specifies where to store keytab information."
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:44
+#: ipa-client/ipa-join.c:1048
+msgid "filename"
+msgstr ""
+
+#: ipa-client/ipa-join.c:1050
+msgid "LDAP password (if not using Kerberos)"
+msgstr ""
+
+#: ipa-client/ipa-join.c:1050
+msgid "password"
+msgstr ""
+
+#: ipa-client/ipa-rmkeytab.c:42
#, c-format
msgid "Unable to parse principal name\n"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:46
+#: ipa-client/ipa-rmkeytab.c:44
#, c-format
msgid "krb5_parse_name %d: %s\n"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:56
+#: ipa-client/ipa-rmkeytab.c:54
#, c-format
msgid "Removing principal %s\n"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:69
+#: ipa-client/ipa-rmkeytab.c:67
#, c-format
msgid "Failed to open keytab\n"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:73
+#: ipa-client/ipa-rmkeytab.c:71
#, c-format
msgid "principal not found\n"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:75
+#: ipa-client/ipa-rmkeytab.c:73
#, c-format
msgid "krb5_kt_get_entry %d: %s\n"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:83
+#: ipa-client/ipa-rmkeytab.c:81
#, c-format
msgid "Unable to remove entry\n"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:85
+#: ipa-client/ipa-rmkeytab.c:83
#, c-format
msgid "kvno %d\n"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:86
+#: ipa-client/ipa-rmkeytab.c:84
#, c-format
msgid "krb5_kt_remove_entry %d: %s\n"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:119
+#: ipa-client/ipa-rmkeytab.c:117
#, c-format
msgid "Unable to parse principal\n"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:121
+#: ipa-client/ipa-rmkeytab.c:119
#, c-format
msgid "krb5_unparse_name %d: %s\n"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:186
+#: ipa-client/ipa-rmkeytab.c:161
msgid "Print debugging information"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:186
+#: ipa-client/ipa-rmkeytab.c:161
msgid "Debugging output"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:193
+#: ipa-client/ipa-rmkeytab.c:168
msgid "Remove all principals in this realm"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:193
+#: ipa-client/ipa-rmkeytab.c:168
msgid "Realm name"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:241
+#: ipa-client/ipa-rmkeytab.c:222 ipa-client/ipa-rmkeytab.c:229
#, c-format
-msgid "Failed to open keytab '%s'\n"
+msgid "Failed to open keytab '%s': %s\n"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:255
+#: ipa-client/ipa-rmkeytab.c:245
#, c-format
msgid "Closing keytab failed\n"
msgstr ""
-#: ipa-client/ipa-rmkeytab.c:257
+#: ipa-client/ipa-rmkeytab.c:247
#, c-format
msgid "krb5_kt_close %d: %s\n"
msgstr ""