From 0d9886e7524277a0ffd1a925dbdff2e0e01ae874 Mon Sep 17 00:00:00 2001 From: Mark Reynolds Date: Jun 29 2018 16:55:47 +0000 Subject: Ticket 49811 - Update man pages Bug Description: A recent man page scan revealed several errors and warnings. Fix Description: Added missing man pages, fixed syntax issues, and added new man pages for config files. Also added dynamic man page creation for the lib389 CLI tools using python-argparse-manpages https://pagure.io/389-ds-base/issue/49811 Reviewed by: spichugi & vashirov(Thanks!!) --- diff --git a/Makefile.am b/Makefile.am index 76b7489..fdb13f3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -939,6 +939,7 @@ include_HEADERS = src/svrcore/src/svrcore.h #------------------------ dist_man_MANS = man/man1/dbscan.1 \ man/man1/cl-dump.1 \ + man/man1/cl-dump.pl.1 \ man/man1/dbgen.pl.1 \ man/man1/ds-logpipe.py.1 \ man/man1/ds-replcheck.1 \ @@ -951,8 +952,10 @@ dist_man_MANS = man/man1/dbscan.1 \ man/man1/mmldif.1 \ man/man1/pwdhash.1 \ man/man1/repl-monitor.1 \ + man/man1/repl-monitor.pl.1 \ man/man1/rsearch.1 \ man/man1/readnsstate.1 \ + man/man5/99user.ldif.5 \ man/man8/migrate-ds.pl.8 \ man/man8/ns-slapd.8 \ man/man8/restart-dirsrv.8 \ @@ -960,23 +963,48 @@ dist_man_MANS = man/man1/dbscan.1 \ man/man8/start-dirsrv.8 \ man/man8/stop-dirsrv.8 \ man/man8/status-dirsrv.8 \ - man/man8/bak2db.8 man/man8/bak2db.pl.8 \ - man/man8/db2bak.8 man/man8/db2bak.pl.8 \ - man/man8/db2ldif.8 man/man8/db2ldif.pl.8 \ - man/man8/db2index.8 man/man8/db2index.pl.8 \ - man/man8/ldif2db.8 man/man8/ldif2db.pl.8 \ - man/man8/dbverify.8 man/man8/verify-db.pl.8 \ + man/man8/bak2db.8 \ + man/man8/bak2db.pl.8 \ + man/man5/certmap.conf.5 \ + man/man8/cleanallruv.pl.8 \ + man/man8/dbverify.8 \ + man/man8/db2bak.8 \ + man/man8/db2bak.pl.8 \ + man/man8/db2ldif.8 \ + man/man8/db2ldif.pl.8 \ + man/man8/db2index.8 \ + man/man8/db2index.pl.8 \ + man/man8/dsconf.8 \ + man/man8/dsctl.8 \ + man/man8/dsidm.8 \ + man/man8/dscreate.8 \ + man/man8/fixup-linkedattrs.pl.8 \ + man/man8/fixup-memberof.pl.8 \ + man/man8/ldif2db.8 \ + man/man8/ldif2db.pl.8 \ man/man8/dbmon.sh.8 \ - man/man8/dn2rdn.8 man/man8/ldif2ldap.8 \ - man/man8/restoreconfig.8 man/man8/saveconfig.8 \ - man/man8/suffix2instance.8 man/man8/monitor.8 \ - man/man8/upgradednformat.8 man/man8/vlvindex.8 \ - man/man8/cleanallruv.pl.8 man/man8/schema-reload.pl.8 \ - man/man8/fixup-linkedattrs.pl.8 man/man8/fixup-memberof.pl.8 \ - man/man8/syntax-validate.pl.8 man/man8/usn-tombstone-cleanup.pl.8 \ - man/man8/ns-accountstatus.pl.8 man/man8/ns-newpwpolicy.pl.8 \ - man/man8/ns-activate.pl.8 man/man8/ns-inactivate.pl.8 \ - man/man8/upgradedb.8 man/man8/remove-ds.pl.8 + man/man5/dirsrv.5 \ + man/man5/dirsrv.systemd.5 \ + man/man8/dn2rdn.8 \ + man/man8/ldif2ldap.8 \ + man/man8/monitor.8 \ + man/man8/ns-accountstatus.pl.8 \ + man/man8/ns-newpwpolicy.pl.8 \ + man/man8/ns-activate.pl.8 \ + man/man8/ns-inactivate.pl.8 \ + man/man8/remove-ds.pl.8 \ + man/man8/restoreconfig.8 \ + man/man8/saveconfig.8 \ + man/man8/schema-reload.pl.8 \ + man/man5/slapd-collations.conf.5 \ + man/man8/suffix2instance.8 \ + man/man8/syntax-validate.pl.8 \ + man/man5/template-initconfig.5 \ + man/man8/upgradednformat.8 \ + man/man8/upgradedb.8 \ + man/man8/usn-tombstone-cleanup.pl.8 \ + man/man8/vlvindex.8 \ + man/man8/verify-db.pl.8 #------------------------ # updates @@ -2352,7 +2380,7 @@ git-archive: # How will we update this to python 3? lib389: src/lib389/setup.py - cd $(srcdir)/src/lib389; $(PYTHON) setup.py build + cd $(srcdir)/src/lib389; $(PYTHON) setup.py build ; $(PYTHON) setup.py build_manpages lib389-install: lib389 cd $(srcdir)/src/lib389; $(PYTHON) setup.py install --skip-build --force diff --git a/ldap/admin/src/template-initconfig.in b/ldap/admin/src/template-initconfig.in index 03a6922..f260c38 100644 --- a/ldap/admin/src/template-initconfig.in +++ b/ldap/admin/src/template-initconfig.in @@ -1,5 +1,5 @@ # This file is sourced by @package_name@ upon startup to set -# the default environment for a single specific directory +# the default environment for a single specific directory # server instances. To set defaults for all instances, edit # the file in the same directory called @package_name@. diff --git a/ldap/schema/slapd-collations.conf b/ldap/schema/slapd-collations.conf index 31fa477..583393b 100644 --- a/ldap/schema/slapd-collations.conf +++ b/ldap/schema/slapd-collations.conf @@ -1,7 +1,7 @@ # # BEGIN COPYRIGHT BLOCK # Copyright (C) 2001 Sun Microsystems, Inc. Used by permission. -# Copyright (C) 2005 Red Hat, Inc. +# Copyright (C) 2018 Red Hat, Inc. # All rights reserved. # # License: GPL (version 3 or any later version). diff --git a/lib/ldaputil/certmap.conf b/lib/ldaputil/certmap.conf index b490787..386e100 100644 --- a/lib/ldaputil/certmap.conf +++ b/lib/ldaputil/certmap.conf @@ -1,7 +1,7 @@ # # BEGIN COPYRIGHT BLOCK # Copyright (C) 2001 Sun Microsystems, Inc. Used by permission. -# Copyright (C) 2005 Red Hat, Inc. +# Copyright (C) 2018 Red Hat, Inc. # All rights reserved. # # License: GPL (version 3 or any later version). diff --git a/man/man1/cl-dump.pl.1 b/man/man1/cl-dump.pl.1 new file mode 100644 index 0000000..4d63a55 --- /dev/null +++ b/man/man1/cl-dump.pl.1 @@ -0,0 +1,96 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH CL-DUMP.PL 1 "March 31, 2017" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +cl-dump \- Dump and decode Directory Server replication change log +.SH SYNOPSIS +.B cl\-dump.pl +[\fI\-h host\fR] [\fI\-p port\fR] [\fI\-D bind\(hydn\fR] \-w bind\(hypassword | \-P bind\(hycert + [\fI\-r replica\(hyroots\fR] [\fI\-o output\(hyfile\fR] [\fI\-c\fR] [\fI\-v\fR] + +.PP +.B cl\-dump.pl +\-i changelog\(hyldif\(hyfile\(hywith\(hybase64encoding [\fI\-o output\(hyfile\fR] [\fI\-c\fR] +.PP +.SH DESCRIPTION +Dump and decode Directory Server replication change log +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +.SH OPTIONS +A summary of options is included below. +.TP +.B \-c +Dump and interpret CSN only. This option can be used with or +without \-i option. +.TP +.B \-D bind\-dn +Directory server's bind DN. Default to "cn=Directory Manager" if +the option is omitted. +.TP +.B \-h host +Directory server's host. Default to the server where the script +is running. +.TP +.B \-i changelog\(hyldif\(hyfile\(hywith\(hybase64encoding +If you already have a ldif-like changelog, but the changes +in that file are encoded, you may use this option to +decode that ldif-like changelog. +.TP +.B \-o output\(hyfile +Path name for the final result. Default to STDOUT if omitted. +.TP +.B \-p port +Directory server's port. Default to 389. +.TP +.B \-P bind\(hycert +Pathname of binding certificate DB +.TP +.B \-r replica\(hyroots +Specify replica roots whose changelog you want to dump. The replica +roots may be separated by comma. All the replica roots would be +dumped if the option is omitted. +.TP +.B \-v +Print the version of this script. +.TP +.B \-w bind\(hypassword +Password for the bind DN +.SH RESTRICTIONS +If you are not using \-i option, the script should be run when the server +is running, and from where the server's changelog directory is accessible. +.br +.SH SEE ALSO +.BR repl-monitor (1) +.br +.SH AUTHOR +cl-dump.pl was written by the 389 Project. +.SH "REPORTING BUGS" +Report bugs to https://pagure.io/389-ds-base/new_issue +.SH COPYRIGHT +Copyright \(co 2001 Sun Microsystems, Inc. Used by permission. +.br +Copyright \(co 2018 Red Hat, Inc. +.br +This manual page was written by Michele Baldessari , +for the Debian project (but may be used by others). +.br +This is free software. You may redistribute copies of it under the terms of +the Directory Server license found in the LICENSE file of this +software distribution. This license is essentially the GNU General Public +License version 2 with an exception for plug-in distribution. diff --git a/man/man1/ds-logpipe.py.1 b/man/man1/ds-logpipe.py.1 index 0a6c15a..b55d786 100644 --- a/man/man1/ds-logpipe.py.1 +++ b/man/man1/ds-logpipe.py.1 @@ -83,7 +83,7 @@ The directory server will usually need to be configured to log to the named pipe NOTE: Before doing this, you should save your current configuration so you can restore it later. ldapsearch ... \-s base \-b "cn=config" nsslapd-accesslog-maxlogsperdir nsslapd-accesslog-logexpirationtime \ - nsslapd-accesslog-logrotationtime nsslapd-accesslog nsslapd-accesslog > savedaccesslog.ldif + nsslapd-accesslog-logrotationtime nsslapd-accesslog > savedaccesslog.ldif The error log and audit log have similarly named configuration attributes e.g. nsslapd-errorlog, nsslapd-auditlog. Note that the audit log is disabled by default - use nsslapd-auditlog-logging-enabled: on to enable it. .br @@ -92,7 +92,7 @@ ds-logpipe.py was written by the 389 Project. .SH "REPORTING BUGS" Report bugs to https://pagure.io/389-ds-base/new_issue .SH COPYRIGHT -Copyright \(co 2017 Red Hat, Inc. +Copyright \(co 2018 Red Hat, Inc. .br This is free software. You may redistribute copies of it under the terms of the Directory Server license found in the LICENSE file of this diff --git a/man/man1/ds-replcheck.1 b/man/man1/ds-replcheck.1 index 3f14e11..e60438c 100644 --- a/man/man1/ds-replcheck.1 +++ b/man/man1/ds-replcheck.1 @@ -49,7 +49,7 @@ Prompt for the Directory Manager password (online mode) The LDAP Url for the first replica (online mode) .TP .B \fB\-r\fR \fILDAP URL\fR -The LDAP Url for the the second replica (online mode) +The LDAP Url for the second replica (online mode) .TP .B \fB\-b\fR \fISUFFIX\fR The replication suffix. (online & offline) diff --git a/man/man1/ldclt.1 b/man/man1/ldclt.1 index 451a88b..4cb6b91 100644 --- a/man/man1/ldclt.1 +++ b/man/man1/ldclt.1 @@ -125,7 +125,7 @@ Execution parameters: .br \fBappend\fR entries to the genldif file. .br -\fBascii\fR ascii 7\-bits strings. +\fBascii\fR use ascii 7\-bits strings. .br \fBattreplace=name:mask\fR replace attribute of existing entry. .br @@ -224,7 +224,7 @@ Report bugs to https://pagure.io/389-ds-base/new_issue .SH COPYRIGHT Copyright \(co 2001 Sun Microsystems, Inc. Used by permission. .br -Copyright \(co 2017 Red Hat, Inc. +Copyright \(co 2018 Red Hat, Inc. .br This manual page was written by Michele Baldessari , for the Debian project (but may be used by others). diff --git a/man/man1/repl-monitor.pl.1 b/man/man1/repl-monitor.pl.1 new file mode 100644 index 0000000..c9bdb69 --- /dev/null +++ b/man/man1/repl-monitor.pl.1 @@ -0,0 +1,138 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH REPL-MONITOR.PL 1 "March 31, 2017" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +repl-monitor.pl \- Directory Server replication monitor +.SH SYNOPSIS +.B repl\(hymonitor.pl +\ [\-f configuration\(hyfile] [\fI\(hyh host\fR] [\fI\-p port\fR] [\fI\-r\fR] +[\fI\-c connection\fR] [\fI\-a alias\fR] [\fI\-k color\fR] [\fI\-u refresh\(hyurl\fR] +[\fI\-s\fR] [\fI\-t refresh\(hyinterval\fR] [\fI\-v\fR] + +.SH DESCRIPTION +Outputs the status of all of the configured Directory Servers +participating in replication. The servers to query for status +are specified in the configuration file. +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +.SH OPTIONS +A summary of options is included below: +.TP +.B \-h, \-\-host\fR host +Hostname of DS server +.TP +.B \-p, \-\-port\fR port +TCP port +.TP +.B \-f, \-\-configfile\fR configuration-file +Configuration file +.TP +.B \-c, \-\-conn\fR connection +Uses the same format as the configfile directive +.TP +.B \-a, \-\-alias\fR alias +Uses the same format as the configfile directive +.TP +.B \-k, --color\fR color +Uses the same format as the configfile directive +.TP +.B \-r, --skip-header\fR +Removes extra HTML tags +.TP +.B \-u, \-\-refreshurl\fR refresh url +Refresh url +.TP +.B \-t, \-\-interval\fR refresh interval +Refresh interval +.TP +.B \-W, \-\-prompt +Prompt for passwords +.TP +.B \-s, \-\-text +Print plain text report + +.br +.SH CONFIGURATION FILE +This section describes the various directives that can be used in the configuration file. +.TP +.B [connection] +The connection details about a replica +.br + +host:port:binddn:bindpwd:cert_file +.br + +or, +.br + +host:port=shadowport:binddn:bindpwd:cert_file +.TP +.B [alias] +Define an alias for a server, this alias is used in the report in place of the +hostname/port + +.br +alias = host:port +.TP +.B [color] +Set a color based on the replicaton lag time lowmark (in minutes) +.br + +.R lowmark = color +.SH EXAMPLE +Example of a configuration file: + +[connection] +.br +localhost.localdomain:3891:cn=directory manager:password:* +.br +localhost2.localdomain:3892:cn=directory manager:password:* + +[alias] +.br +MY_SYSTEM1 = localhost.localdomain:3891 +.br +MY_SYSTEM2 = localhost2.localdomain:3892 + +[color] +.br +0 = #CCFFCC +.br +5 = #FFFFCC +.br +60 = #FFCCCC + +.SH AUTHOR +repl-monitor.pl was written by the 389 Project. +.SH "REPORTING BUGS" +Report bugs to https://pagure.io/389-ds-base/new_issue +.SH COPYRIGHT +Copyright \(co 2001 Sun Microsystems, Inc. Used by permission. +.br +Copyright \(co 2018 Red Hat, Inc. +.br +This manual page was written by Michele Baldessari , +for the Debian project (but may be used by others). +.br +Manual page updated by Mark Reynolds 3/31/2017 +.br +This is free software. You may redistribute copies of it under the terms of +the Directory Server license found in the LICENSE file of this +software distribution. This license is essentially the GNU General Public +License version 3 with an exception for plug\(hyin distribution. diff --git a/man/man5/99user.ldif.5 b/man/man5/99user.ldif.5 new file mode 100644 index 0000000..ca5e161 --- /dev/null +++ b/man/man5/99user.ldif.5 @@ -0,0 +1,54 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH 99USER.LDIF 5 "Jun 26, 2018" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +/etc/dirsrv/schema/99user.ldif - LDIF file containing custom LDAP Schema for 389 Directory Server. + +.SH SYNOPSIS +/etc/dirsrv/schema/99user.ldif + +.SH DESCRIPTION +99user.ldif + +This file contains user defined, or custom, LDAP schema definitions (attributes +and objectclasses) used by the Directory Server. + +.SH SYNTAX + +attributeTypes: VALUE +.br +objectClasses: VALUE +.br + +.SH EXAMPLE + +dn: cn=schema +.br +attributeTypes: ( 1.1.1.1.1.1.1 NAME 'myNewAttribute' DESC 'Custom defined +attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN +'user-defined' ) +.br +objectClasses: ( 1.1.1.1.1.1.1.2 NAME 'myNewObjectcass' DESC 'Custom defined +objectclass' SUP top MUST ( myNewAttrbiute ) MAY ( uid $ cn ) X-ORIGIN 'user-defined' ) + +.SH AUTHOR +99user.ldif was written by the 389 Project. +.SH "REPORTING BUGS" +Report bugs to https://pagure.io/389-ds-base/new_issue +.SH COPYRIGHT +Copyright \(co 2018 Red Hat, Inc. + diff --git a/man/man5/certmap.conf.5 b/man/man5/certmap.conf.5 new file mode 100644 index 0000000..30a3db8 --- /dev/null +++ b/man/man5/certmap.conf.5 @@ -0,0 +1,133 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH CERTMAP.CONF 5 "Jun 26, 2018" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +/etc/dirsrv/config/certmap.conf - Configuration file for TLS client authentication in 389 Directory Server. + +.SH SYNOPSIS +/etc/dirsrv/config/certmap.conf + +.SH DESCRIPTION +certmap.conf + +This file configures how a certificate is mapped to an LDAP entry. See the +documentation for more information on this file: https://access.redhat.com/documentation/en-us/red_hat_directory_server/10/html/configuration_command_and_file_reference/configuration_file_reference#certmap_conf + +.SH SYNTAX +The format of this file is as follows: +.br + certmap +.br + : [] +.br + : [] +.br + +Notes: + + 1. Mapping can be defined per issuer of a certificate. If mapping doesn't + exists for a particular 'issuerDN' then the server uses the default + mapping. + + 2. There must be an entry for =default and issuerDN "default". + This mapping is the default mapping. + + 3. '#' can be used to comment out a line. + + 4. DNComps & FilterComps are used to form the base DN and filter responsible for + performing an LDAP search while mapping the certificate to a user entry. + +.SH OPTIONS +.IP DNComps +The DNComps parameter determines how Directory Server generates the base DN +used to search for a user in the directory. This setting accepts a comma +separated list of attributes to form a DN. However, the order of the +attributes in the DNComps parameter must match the order in the subject of the +certificate. For example, if your certificate's subject is +"e=user_name@example.com,cn=user_name,o=Example Inc.,c=US", and you want +Directory Server to use "cn=user_name,o=Example Inc.,c=US" as the base DN when +searching for the user, set the DNComps parameter to "cn, o, c". + +Comment out or do not set this parameter, if either the subject field of the +certificate matches exactly the DN of the user in Directory Server or if you +want to use the setting from the CmapLdapAttr parameter. + +If the value is empty, it will search the entire LDAP tree by using the +FilterComps parameter. + +.IP FilterComps +This parameter sets which attributes from the subject field of the certificate +Directory Server uses to generate the search filter to locate the user. + +Set this parameter to a comma-separated list of attributes used in the +certificate's subject. Directory Server will use these attributes in an AND +operation in the filter. + +Note - Certificate Subjects use the e attribute for the email address, which +does not exist in the default Directory Server schema. For this reason, +Directory Server automatically maps this attribute to the mail attribute. This +means, if you use the mail attribute in the FilterComps parameter, Directory +Server reads the value of the e attribute from the subject of the certificate. + +For example, if the subject of a certificate is +"e=user_name@example.com,cn=user_name,dc=example,dc=com,o=Example Inc.,c=US" +and you want to dynamically generate the +"(&(mail=username@domain)(cn=user_name))" filter, set the FilterComps parameter +to "mail, cn". + +If the parameter is commented out or set to an empty value, the (objectclass=*) filter will be used. + +.IP verifycert +Directory Server always verifies if the certificate has been issued by a +trusted Certificate Authority (CA). However, if you additionally set the +verifycert parameter to on, Directory Server additionally verifies that the +certificate matches the Distinguished Encoding Rules (DER)-formatted +certificate stored in the userCertificate binary attribute of the user. + +If you do not set this parameter, verifycert is disabled + +.IP CmapLdapAttr +If your user entries contain an attribute that stores the subject DN of the +user certificate, set the CmapLdapAttr to this attribute name. Directory Server +will use this attribute and the subject DN to locate the user. In this case the +no filter is generated based on the attributes in the FilterComps parameter. + + +.SH EXAMPLES +certmap default default +.br +default:DNComps cn, o, c +.br +#default:FilterComps e, uid +.br +#default:verifycert on +.br +#default:CmapLdapAttr certSubjectDN +.br +.sp 1 +certmap example o=Example Inc.,c=US +.br +example:DNComps +.br + +.SH AUTHOR +certmap.conf was written by the 389 Project. +.SH "REPORTING BUGS" +Report bugs to https://pagure.io/389-ds-base/new_issue +.SH COPYRIGHT +Copyright \(co 2018 Red Hat, Inc. + diff --git a/man/man5/dirsrv.5 b/man/man5/dirsrv.5 new file mode 100644 index 0000000..b820484 --- /dev/null +++ b/man/man5/dirsrv.5 @@ -0,0 +1,46 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH DIRSRV 5 "Jun 26, 2018" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +/etc/sysconfig/dirsrv - Systemd EnvironmentFile that affects all Directory Server instances. + +.SH SYNOPSIS +/etc/sysconfig/dirsrv + +.SH DESCRIPTION +dirsrv + +This file is sourced by dirsrv upon startup to set +the default environment for all directory server instances. +To set instance specific defaults, use the file in the same +directory called dirsrv-instance where "instance" +is the name of your directory server instance e.g. +dirsrv-localhost for the slapd-localhost instance. + +This file is in systemd EnvironmentFile format - see man systemd.exec + +.SH EXAMPLE +LD_PRELOAD=/usr/lib64/dirsrv/lib/libjemalloc.so + + +.SH AUTHOR +dirsrv was written by the 389 Project. +.SH "REPORTING BUGS" +Report bugs to https://pagure.io/389-ds-base/new_issue +.SH COPYRIGHT +Copyright \(co 2018 Red Hat, Inc. + diff --git a/man/man5/dirsrv.systemd.5 b/man/man5/dirsrv.systemd.5 new file mode 100644 index 0000000..1a5cf75 --- /dev/null +++ b/man/man5/dirsrv.systemd.5 @@ -0,0 +1,39 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH DIRSRV.SYSTEMD 5 "Jun 26, 2018" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +/etc/sysconfig/dirsrv.systemd - Systemd EnvironmentFile for Directory Server. + +.SH SYNOPSIS +/etc/sysconfig/dirsrv.systemd + +.SH DESCRIPTION +dirsrv.systemd + +This controls the resources to the direct child of systemd, in +this case ns-slapd. Because we are type notify we recieve these +limits correctly. + +For more inforation see man systemd.exec and man systemd.resource-control + +.SH AUTHOR +dirsrv.systemd was written by the 389 Project. +.SH "REPORTING BUGS" +Report bugs to https://pagure.io/389-ds-base/new_issue +.SH COPYRIGHT +Copyright \(co 2018 Red Hat, Inc. + diff --git a/man/man5/slapd-collations.conf.5 b/man/man5/slapd-collations.conf.5 new file mode 100644 index 0000000..daac4f9 --- /dev/null +++ b/man/man5/slapd-collations.conf.5 @@ -0,0 +1,51 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH SLAPD-COLLATIONS.CONF 5 "Jun 26, 2018" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +/etc/dirsrv/config/slapd-collations.conf - Contains the language tags and OID's used in 389 Directory Server. + +.SH SYNOPSIS +/etc/dirsrv/config/slapd-collations.conf + +.SH DESCRIPTION +slapd-collations.conf + +This file contains all the collation rules (tags and OID's) that are used by the Directory Server. + +.SH SYNTAX + +.IP collation +This parameter is laid out as following: language, country, variant, strength, decomposition, oid, oid ... + +.SH EXAMPLE +collation "" "" "" 1 3 2.16.840.1.113730.3.3.2.0.1 default +.br +collation ar "" "" 1 3 2.16.840.1.113730.3.3.2.1.1 ar +.br +collation be "" "" 1 3 2.16.840.1.113730.3.3.2.2.1 be be-BY +.br +\&.\&.\&. +.br +\&.\&.\&. + +.SH AUTHOR +slapd-collations.conf was written by the 389 Project. +.SH "REPORTING BUGS" +Report bugs to https://pagure.io/389-ds-base/new_issue +.SH COPYRIGHT +Copyright \(co 2018 Red Hat, Inc. + diff --git a/man/man5/template-initconfig.5 b/man/man5/template-initconfig.5 new file mode 100644 index 0000000..19fba2e --- /dev/null +++ b/man/man5/template-initconfig.5 @@ -0,0 +1,62 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH TEMPLATE-INITCONFIG 5 "Jun 26, 2018" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +/etc/dirsrv/config/template-initconfig - Systemd configuration file used when starting a Directory Server instance. + +.SH SYNOPSIS +/etc/dirsrv/config/template-initconfig + +.SH DESCRIPTION +template-initconfig + +This file is sourced by dirsrv upon startup to set +the default environment for a single specific directory +server instances. To set defaults for all instances, edit +the file in the same directory named dirsrv. + +These settings are used by the start-dirsrv and +start-slapd scripts (as well as their associates stop +and restart scripts). Do not edit them unless you know +what you are doing. + +This file is in systemd EnvironmentFile format - see man systemd.exec + +.SH SYNTAX +SERVER_DIR={{SERVER-DIR}} +.br +SERVERBIN_DIR={{SERVERBIN-DIR}} +.br +CONFIG_DIR={{CONFIG-DIR}} +.br +INST_DIR={{INST-DIR}} +.br +RUN_DIR={{RUN-DIR}} +.br +DS_ROOT={{DS-ROOT}} +.br +PRODUCT_NAME={{PRODUCT-NAME}} +.br + + +.SH AUTHOR +template-initconfig was written by the 389 Project. +.SH "REPORTING BUGS" +Report bugs to https://pagure.io/389-ds-base/new_issue +.SH COPYRIGHT +Copyright \(co 2018 Red Hat, Inc. + diff --git a/man/man8/dn2rdn.8 b/man/man8/dn2rdn.8 index 98d74da..0814bfe 100644 --- a/man/man8/dn2rdn.8 +++ b/man/man8/dn2rdn.8 @@ -43,7 +43,6 @@ Display the version of the Directory Server. .br Display the usage. .SH EXAMPLE -dn2rdn dn2rdn \-Z instance3 \-f .SH DIAGNOSTICS @@ -55,4 +54,4 @@ dn2rdn was written by the 389 Project. .SH "REPORTING BUGS" Report bugs to https://pagure.io/389-ds-base/new_issue .SH COPYRIGHT -Copyright \(co 2017 Red Hat, Inc. +Copyright \(co 2018 Red Hat, Inc. diff --git a/man/man8/restoreconfig.8 b/man/man8/restoreconfig.8 index 97642b6..452e018 100644 --- a/man/man8/restoreconfig.8 +++ b/man/man8/restoreconfig.8 @@ -33,8 +33,6 @@ one instance on the system, this option can be skipped. Display the usage. .SH EXAMPLE .TP -restoreconfig -.TP restoreconfig \-Z instance2 .SH DIAGNOSTICS Exit status is zero if no errors occur. Errors result in a @@ -45,4 +43,4 @@ restoreconfig was written by the 389 Project. .SH "REPORTING BUGS" Report bugs to https://pagure.io/389-ds-base/new_issue .SH COPYRIGHT -Copyright \(co 2017 Red Hat, Inc. +Copyright \(co 2018 Red Hat, Inc. diff --git a/man/man8/saveconfig.8 b/man/man8/saveconfig.8 index 1597043..b473480 100644 --- a/man/man8/saveconfig.8 +++ b/man/man8/saveconfig.8 @@ -33,8 +33,6 @@ one instance on the system, this option can be skipped. Display the usage. .SH EXAMPLE .TP -saveconfig -.TP saveconfig \-Z instance3 .SH DIAGNOSTICS Exit status is zero if no errors occur. Errors result in a @@ -45,4 +43,4 @@ saveconfig was written by the 389 Project. .SH "REPORTING BUGS" Report bugs to https://pagure.io/389-ds-base/new_issue .SH COPYRIGHT -Copyright \(co 2017 Red Hat, Inc. +Copyright \(co 2018 Red Hat, Inc. diff --git a/rpm/389-ds-base.spec.in b/rpm/389-ds-base.spec.in index a75ab78..9a5d0e3 100644 --- a/rpm/389-ds-base.spec.in +++ b/rpm/389-ds-base.spec.in @@ -61,7 +61,6 @@ Group: System Environment/Daemons BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Obsoletes: %{name}-selinux Conflicts: selinux-policy-base < 3.9.8 -# upgrade path from monolithic %{name} (including -libs & -devel) to %{name} + %{name}-snmp Obsoletes: %{name} <= 1.4.0.9 Provides: ldif2ldbm @@ -96,7 +95,6 @@ BuildRequires: net-snmp-devel BuildRequires: bzip2-devel BuildRequires: zlib-devel BuildRequires: openssl-devel -BuildRequires: tcp_wrappers # the following is for the pam passthru auth plug-in BuildRequires: pam-devel BuildRequires: systemd-units @@ -121,6 +119,13 @@ BuildRequires: libevent-devel BuildRequires: python%{python3_pkgversion} BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-setuptools +BuildRequires: python%{python3_pkgversion}-ldap +BuildRequires: python%{python3_pkgversion}-six +BuildRequires: python%{python3_pkgversion}-pyasn1 +BuildRequires: python%{python3_pkgversion}-pyasn1-modules +BuildRequires: python%{python3_pkgversion}-dateutil +BuildRequires: python%{python3_pkgversion}-argcomplete +BuildRequires: python%{python3_pkgversion}-argparse-manpage # For cockpit BuildRequires: rsync @@ -134,9 +139,9 @@ Requires: python%{python3_pkgversion}-lib389 = %{version}-%{release} %endif # this is needed for using semanage from our setup scripts -Requires: policycoreutils-python +Requires: policycoreutils-python-utils # This is needed for our future move to python selinux interaction. -Requires: libsemanage-python +Requires: libsemanage-python%{python3_pkgversion} # the following are needed for some of our scripts Requires: openldap-clients # this is needed to setup SSL if you are not using the @@ -263,7 +268,6 @@ Development Libraries and headers for the 389 Directory Server base package. Summary: SNMP Agent for 389 Directory Server Group: System Environment/Daemons Requires: %{name} = %{version}-%{release} -# upgrade path from monolithic %{name} (including -libs & -devel) to %{name} + %{name}-snmp Obsoletes: %{name} <= 1.3.5.4 %description snmp @@ -281,7 +285,7 @@ Requires: openssl-perl Requires: iproute Requires: python%{python3_pkgversion} Requires: python%{python3_pkgversion}-pytest -Requires: python%{python3_pkgversion}-pyldap +Requires: python%{python3_pkgversion}-ldap Requires: python%{python3_pkgversion}-six Requires: python%{python3_pkgversion}-pyasn1 Requires: python%{python3_pkgversion}-pyasn1-modules @@ -387,6 +391,12 @@ make setup.py pushd ./src/lib389 %py3_build popd +# argparse-manpage dynamic man pages have hardcoded man v1 in header, +# need to change it to v8 +sed -i "1s/\"1\"/\"8\"/" %{_builddir}/%{name}-%{version}%{?prerel}/man/man8/dsconf.8 +sed -i "1s/\"1\"/\"8\"/" %{_builddir}/%{name}-%{version}%{?prerel}/man/man8/dsctl.8 +sed -i "1s/\"1\"/\"8\"/" %{_builddir}/%{name}-%{version}%{?prerel}/man/man8/dsidm.8 +sed -i "1s/\"1\"/\"8\"/" %{_builddir}/%{name}-%{version}%{?prerel}/man/man8/dscreate.8 # tests %py3_build @@ -468,6 +478,7 @@ else output=/dev/null output2=/dev/null fi + # reload to pick up any changes to systemd files /bin/systemctl daemon-reload >$output 2>&1 || : # reload to pick up any shared lib changes @@ -623,9 +634,13 @@ exit 0 %{_mandir}/man8/ns-slapd.8.gz %if 0%{?rhel} > 7 || 0%{?fedora} %{_sbindir}/dsconf +%{_mandir}/man8/dsconf.8.gz %{_sbindir}/dscreate +%{_mandir}/man8/dscreate.8.gz %{_sbindir}/dsctl +%{_mandir}/man8/dsctl.8.gz %{_sbindir}/dsidm +%{_mandir}/man8/dsidm.8.gz %endif %{_libexecdir}/%{pkgname}/ds_selinux_enabled %{_libexecdir}/%{pkgname}/ds_selinux_port_query @@ -654,10 +669,17 @@ exit 0 %{_mandir}/man8/upgradedb.8.gz %{_sbindir}/vlvindex %{_mandir}/man8/vlvindex.8.gz +%{_mandir}/man5/99user.ldif.5.gz +%{_mandir}/man5/certmap.conf.5.gz +%{_mandir}/man5/template-initconfig.5.gz +%{_mandir}/man5/slapd-collations.conf.5.gz +%{_mandir}/man5/dirsrv.5.gz +%{_mandir}/man5/dirsrv.systemd.5.gz + %{_libdir}/%{pkgname}/python %dir %{_libdir}/%{pkgname}/plugins %{_libdir}/%{pkgname}/plugins/*.so -# THis has to be hardcoded to /lib - $libdir changes between lib/lib64, but +# This has to be hardcoded to /lib - $libdir changes between lib/lib64, but # sysctl.d is always in /lib. %{_prefix}/lib/sysctl.d/* %dir %{_localstatedir}/lib/%{pkgname} @@ -743,9 +765,11 @@ exit 0 %{_bindir}/repl-monitor %{_mandir}/man1/repl-monitor.1.gz %{_bindir}/repl-monitor.pl +%{_mandir}/man1/repl-monitor.pl.1.gz %{_bindir}/cl-dump %{_mandir}/man1/cl-dump.1.gz %{_bindir}/cl-dump.pl +%{_mandir}/man1/cl-dump.pl.1.gz %{_bindir}/dbgen.pl %{_mandir}/man8/bak2db.pl.8.gz %{_sbindir}/bak2db.pl diff --git a/src/lib389/cli/dsconf b/src/lib389/cli/dsconf index 2748e31..2dd7fa8 100755 --- a/src/lib389/cli/dsconf +++ b/src/lib389/cli/dsconf @@ -39,56 +39,52 @@ from lib389.cli_base.dsrc import dsrc_to_ldap, dsrc_arg_concat from lib389.cli_base import reset_get_logger +parser = argparse.ArgumentParser(allow_abbrev=True) +parser.add_argument('instance', + help="The instance name OR the LDAP url to connect to, IE localhost, ldap://mai.example.com:389", + ) +parser.add_argument('-v', '--verbose', + help="Display verbose operation tracing during command execution", + action='store_true', default=False + ) +parser.add_argument('-D', '--binddn', + help="The account to bind as for executing operations", + default=None + ) +parser.add_argument('-b', '--basedn', + help="Basedn (root naming context) of the instance to manage", + default=None + ) +parser.add_argument('-Z', '--starttls', + help="Connect with StartTLS", + default=False, action='store_true' + ) +parser.add_argument('-j', '--json', + help="Return result in JSON object", + default=False, action='store_true' + ) + +subparsers = parser.add_subparsers(help="resources to act upon") + +cli_config.create_parser(subparsers) +cli_backend.create_parser(subparsers) +cli_directory_manager.create_parsers(subparsers) +cli_schema.create_parser(subparsers) +cli_health.create_parser(subparsers) +cli_plugin.create_parser(subparsers) +cli_memberof.create_parser(subparsers) +cli_usn.create_parser(subparsers) +cli_rootdn_ac.create_parser(subparsers) +cli_whoami.create_parser(subparsers) +cli_referint.create_parser(subparsers) +cli_automember.create_parser(subparsers) +argcomplete.autocomplete(parser) + + if __name__ == '__main__': defbase = ldap.get_option(ldap.OPT_DEFBASE) - - parser = argparse.ArgumentParser(allow_abbrev=True) - # Build the base ldap options, this keeps in unified. - - # Can we get default options for these from .rc file? - - parser.add_argument('instance', - help="The instance name OR the LDAP url to connect to, IE localhost, ldap://mai.example.com:389", - ) - parser.add_argument('-v', '--verbose', - help="Display verbose operation tracing during command execution", - action='store_true', default=False - ) - parser.add_argument('-D', '--binddn', - help="The account to bind as for executing operations", - default=None - ) - parser.add_argument('-b', '--basedn', - help="Basedn (root naming context) of the instance to manage", - default=None - ) - parser.add_argument('-Z', '--starttls', - help="Connect with StartTLS", - default=False, action='store_true' - ) - parser.add_argument('-j', '--json', - help="Return result in JSON object", - default=False, action='store_true' - ) - - subparsers = parser.add_subparsers(help="resources to act upon") - - cli_config.create_parser(subparsers) - cli_backend.create_parser(subparsers) - cli_directory_manager.create_parsers(subparsers) - cli_schema.create_parser(subparsers) - cli_health.create_parser(subparsers) - cli_plugin.create_parser(subparsers) - cli_memberof.create_parser(subparsers) - cli_usn.create_parser(subparsers) - cli_rootdn_ac.create_parser(subparsers) - cli_whoami.create_parser(subparsers) - cli_referint.create_parser(subparsers) - cli_automember.create_parser(subparsers) - argcomplete.autocomplete(parser) args = parser.parse_args() - log = reset_get_logger('dsconf', args.verbose) log.debug("The 389 Directory Server Configuration Tool") diff --git a/src/lib389/cli/dscreate b/src/lib389/cli/dscreate index 1535cc5..3591dba 100755 --- a/src/lib389/cli/dscreate +++ b/src/lib389/cli/dscreate @@ -18,35 +18,31 @@ from lib389 import DirSrv from lib389.cli_ctl import instance as cli_instance from lib389.cli_base import reset_get_logger -if __name__ == '__main__': - - parser = argparse.ArgumentParser() - - parser.add_argument('-v', '--verbose', - help="Display verbose operation tracing during command execution", - action='store_true', default=False, dest='verbose' - ) - - subparsers = parser.add_subparsers(help="action") - - install_parser = subparsers.add_parser('install', help="Create an instance of Directory Server from an inf answer file") - install_parser.add_argument('file', help="Inf file to use with prepared answers. You can generate an example of this with 'dscreate create-template'") - install_parser.add_argument('-n', '--dryrun', help="Validate system and configurations only. Do not alter the system.", - action='store_true', default=False) - install_parser.add_argument('--IsolemnlyswearthatIamuptonogood', dest="ack", - help="""You are here likely here by mistake! You want setup-ds.pl! +parser = argparse.ArgumentParser() +parser.add_argument('-v', '--verbose', + help="Display verbose operation tracing during command execution", + action='store_true', default=False, dest='verbose' + ) +subparsers = parser.add_subparsers(help="action") +install_parser = subparsers.add_parser('install', help="Create an instance of Directory Server from an inf answer file") +install_parser.add_argument('file', help="Inf file to use with prepared answers. You can generate an example of this with 'dscreate create-template'") +install_parser.add_argument('-n', '--dryrun', help="Validate system and configurations only. Do not alter the system.", + action='store_true', default=False) +install_parser.add_argument('--IsolemnlyswearthatIamuptonogood', dest="ack", + help="""You are here likely here by mistake! You want setup-ds.pl! By setting this value you acknowledge and take responsibility for the fact this command is UNTESTED and NOT READY. You are ON YOUR OWN! """, - action='store_true', default=False) - install_parser.add_argument('-c', '--containerised', help="Indicate to the installer that this is running in a container. Used to disable systemd native components, even if they are installed.", - action='store_true', default=False) - install_parser.set_defaults(func=cli_instance.instance_create) + action='store_true', default=False) +install_parser.add_argument('-c', '--containerised', help="Indicate to the installer that this is running in a container. Used to disable systemd native components, even if they are installed.", + action='store_true', default=False) +install_parser.set_defaults(func=cli_instance.instance_create) +template_parser = subparsers.add_parser('create-template', help="Display an example inf answer file, or provide a file name to write it to disk.") +template_parser.add_argument('template_file', nargs="?", default=None, help="Write example template to this file") +template_parser.set_defaults(func=cli_instance.instance_example) +argcomplete.autocomplete(parser) - template_parser = subparsers.add_parser('create-template', help="Display an example inf answer file, or provide a file name to write it to disk.") - template_parser.add_argument('template_file', nargs="?", default=None, help="Write example template to this file") - template_parser.set_defaults(func=cli_instance.instance_example) - argcomplete.autocomplete(parser) +if __name__ == '__main__': args = parser.parse_args() log = reset_get_logger("dscreate", args.verbose) diff --git a/src/lib389/cli/dsctl b/src/lib389/cli/dsctl index f9853d9..a22a69c 100755 --- a/src/lib389/cli/dsctl +++ b/src/lib389/cli/dsctl @@ -23,31 +23,26 @@ from lib389.cli_ctl import instance as cli_instance from lib389.cli_ctl import dbtasks as cli_dbtasks from lib389.cli_base import disconnect_instance, reset_get_logger -if __name__ == '__main__': - - parser = argparse.ArgumentParser() - - parser.add_argument('-v', '--verbose', - help="Display verbose operation tracing during command execution", - action='store_true', default=False - ) - parser.add_argument('instance', - help="The name of the instance to act upon", - ) - parser.add_argument('-j', '--json', - help="Return result in JSON object", - default=False, action='store_true' - ) - subparsers = parser.add_subparsers(help="action") - argcomplete.autocomplete(parser) +parser = argparse.ArgumentParser() +parser.add_argument('-v', '--verbose', + help="Display verbose operation tracing during command execution", + action='store_true', default=False + ) +parser.add_argument('instance', + help="The name of the instance to act upon", + ) +parser.add_argument('-j', '--json', + help="Return result in JSON object", + default=False, action='store_true' + ) +subparsers = parser.add_subparsers(help="action") +argcomplete.autocomplete(parser) +# We stack our needed options in via submodules. +cli_instance.create_parser(subparsers) +cli_dbtasks.create_parser(subparsers) - # We stack our needed options in via submodules. - - cli_instance.create_parser(subparsers) - cli_dbtasks.create_parser(subparsers) - - # Then we tell it to execute. +if __name__ == '__main__': args = parser.parse_args() log = reset_get_logger('dsctl', args.verbose) diff --git a/src/lib389/cli/dsidm b/src/lib389/cli/dsidm index faba91b..4ef1141 100755 --- a/src/lib389/cli/dsidm +++ b/src/lib389/cli/dsidm @@ -30,48 +30,47 @@ from lib389.cli_base import connect_instance, disconnect_instance, reset_get_log from lib389.cli_base.dsrc import dsrc_to_ldap, dsrc_arg_concat +parser = argparse.ArgumentParser(allow_abbrev=True) +# First, add the LDAP options +parser.add_argument('instance', + help="The instance name OR the LDAP url to connect to, IE localhost, ldap://mai.example.com:389", + ) +parser.add_argument('-b', '--basedn', + help="Basedn (root naming context) of the instance to manage", + default=None + ) +parser.add_argument('-v', '--verbose', + help="Display verbose operation tracing during command execution", + action='store_true', default=False + ) +parser.add_argument('-D', '--binddn', + help="The account to bind as for executing operations", + default=None + ) +parser.add_argument('-Z', '--starttls', + help="Connect with StartTLS", + default=False, action='store_true' + ) +parser.add_argument('-j', '--json', + help="Return result in JSON object", + default=False, action='store_true' + ) +subparsers = parser.add_subparsers(help="resources to act upon") +# Call all the other cli modules to register their bits +cli_account.create_parser(subparsers) +cli_group.create_parser(subparsers) +cli_init.create_parser(subparsers) +cli_ou.create_parser(subparsers) +cli_posixgroup.create_parser(subparsers) +cli_user.create_parser(subparsers) +argcomplete.autocomplete(parser) + + if __name__ == '__main__': defbase = ldap.get_option(ldap.OPT_DEFBASE) - parser = argparse.ArgumentParser(allow_abbrev=True) - # First, add the LDAP options - - parser.add_argument('instance', - help="The instance name OR the LDAP url to connect to, IE localhost, ldap://mai.example.com:389", - ) - parser.add_argument('-b', '--basedn', - help="Basedn (root naming context) of the instance to manage", - default=None - ) - parser.add_argument('-v', '--verbose', - help="Display verbose operation tracing during command execution", - action='store_true', default=False - ) - parser.add_argument('-D', '--binddn', - help="The account to bind as for executing operations", - default=None - ) - parser.add_argument('-Z', '--starttls', - help="Connect with StartTLS", - default=False, action='store_true' - ) - parser.add_argument('-j', '--json', - help="Return result in JSON object", - default=False, action='store_true' - ) - - subparsers = parser.add_subparsers(help="resources to act upon") - - # Call all the other cli modules to register their bits - - cli_account.create_parser(subparsers) - cli_group.create_parser(subparsers) - cli_init.create_parser(subparsers) - cli_ou.create_parser(subparsers) - cli_posixgroup.create_parser(subparsers) - cli_user.create_parser(subparsers) - argcomplete.autocomplete(parser) + args = parser.parse_args() diff --git a/src/lib389/python-lib389.spec b/src/lib389/python-lib389.spec index 88901c9..677798d 100644 --- a/src/lib389/python-lib389.spec +++ b/src/lib389/python-lib389.spec @@ -12,7 +12,7 @@ Source0: http://www.port389.org/binaries/%{name}-%{tarver}.tar.bz2 License: GPLv3+ Group: Development/Libraries BuildArch: noarch -Url: http://port389.org/docs/389ds/FAQ/upstream-test-framework.html +Url: http://www.port389.org/ %if 0%{?rhel} >= 8 || 0%{?fedora} BuildRequires: python2-devel BuildRequires: python2-setuptools @@ -23,7 +23,7 @@ BuildRequires: python-devel BuildRequires: python-setuptools %endif %description -This module contains tools and libraries for accessing, testing, +This module contains tools and libraries for accessing, testing, and configuring the 389 Directory Server. @@ -53,10 +53,10 @@ Requires: python-dateutil %endif %{?python_provide:%python_provide python2-%{srcname}} %description -n python2-%{srcname} -This module contains tools and libraries for accessing, testing, +This module contains tools and libraries for accessing, testing, and configuring the 389 Directory Server. -# Can't build on EL7! Python3 tooling is too broken :( +# Can't build on EL7! Python3 tooling is too broken :( # We have to use >= 8, because <= 7 doesn't work .... %if 0%{?rhel} >= 8 || 0%{?fedora} %package -n python%{python3_pkgversion}-%{srcname} @@ -74,7 +74,7 @@ Requires: python%{python3_pkgversion}-pyasn1-modules Requires: python%{python3_pkgversion}-dateutil %{?python_provide:%python_provide python%{python3_pkgversion}-%{srcname}} %description -n python%{python3_pkgversion}-%{srcname} -This module contains tools and libraries for accessing, testing, +This module contains tools and libraries for accessing, testing, and configuring the 389 Directory Server. %endif @@ -230,7 +230,7 @@ and configuring the 389 Directory Server. * Mon Dec 7 2015 Mark Reynolds - 1.0.1-1 - Removed downloaded dependencies, and added python_provide macro - Fixed Source0 URL in spec file - + * Fri Dec 4 2015 Mark Reynolds - 1.0.1-1 - Renamed package to python-lib389, and simplified the spec file diff --git a/src/lib389/requirements.txt b/src/lib389/requirements.txt index 9a96216..842bdc4 100644 --- a/src/lib389/requirements.txt +++ b/src/lib389/requirements.txt @@ -3,6 +3,6 @@ pyasn1-modules pytest python-dateutil six -enum34;python_version=="2.7" -python-ldap;python_version=="2.7" -pyldap;python_version>="3.4" +argcomplete +argparse-manpage +python3-ldap diff --git a/src/lib389/setup.cfg b/src/lib389/setup.cfg new file mode 100644 index 0000000..a447461 --- /dev/null +++ b/src/lib389/setup.cfg @@ -0,0 +1,7 @@ +[build_manpages] +manpages = + ../../man/man8/dsconf.8:object=parser:pyfile=cli/dsconf + ../../man/man8/dsctl.8:object=parser:pyfile=cli/dsctl + ../../man/man8/dsidm.8:object=parser:pyfile=cli/dsidm + ../../man/man8/dscreate.8:object=parser:pyfile=cli/dscreate + diff --git a/src/lib389/setup.py b/src/lib389/setup.py index 0765f62..a14e806 100644 --- a/src/lib389/setup.py +++ b/src/lib389/setup.py @@ -1,7 +1,7 @@ -#!/usr/bin/env python +#!/usr/bin/python3 # --- BEGIN COPYRIGHT BLOCK --- -# Copyright (C) 2015 Red Hat, Inc. +# Copyright (C) 2018 Red Hat, Inc. # All rights reserved. # # License: GPL (version 3 or any later version). @@ -14,6 +14,9 @@ from setuptools import setup, find_packages from os import path +from build_manpages import build_manpages +from setuptools.command.build_py import build_py +from setuptools.command.install import install here = path.abspath(path.dirname(__file__)) @@ -33,7 +36,7 @@ setup( description='A library for accessing and configuring the 389 Directory ' + 'Server', long_description=long_description, - url='http://port389.org/wiki/Upstream_test_framework', + url='http://www.port389.org/docs/389ds/FAQ/upstream-test-framework.html', author='Red Hat Inc.', author_email='389-devel@lists.fedoraproject.org', @@ -58,7 +61,6 @@ setup( # find lib389/clitools -name ds\* -exec echo \''{}'\', \; data_files=[ ('/usr/sbin/', [ - # 'lib389/clitools/ds_setup', 'cli/dsctl', 'cli/dsconf', 'cli/dscreate', @@ -72,8 +74,15 @@ setup( 'pytest', 'python-dateutil', 'six', - 'enum34;python_version=="2.7"', - 'python-ldap;python_version=="2.7"', - 'pyldap;python_version>="3.4"', + 'argcomplete', + 'argparse-manpage', + 'python3-ldap', ], + + cmdclass={ + # Dynamically build man pages for cli tools + 'build_manpages': build_manpages.build_manpages, + 'build_py': build_manpages.get_build_py_cmd(build_py), + } + )