From 65e325a0b97aa3384e4568e40eb037199efa7879 Mon Sep 17 00:00:00 2001 From: Mark Reynolds Date: Jun 05 2019 13:07:04 +0000 Subject: Ticket 50417 - Revise legacy tool scripts to work with new systemd changes Description: Since we no longer use unit files in /etc/sysconfig all the shell/perl scripts need to ifnd instances using /etc/dirsrv (@instconfigdir@) https://pagure.io/389-ds-base/issue/50417 Reviewed by: ? --- diff --git a/ldap/admin/src/scripts/DSSharedLib.in b/ldap/admin/src/scripts/DSSharedLib.in index 8317c58..e41b259 100644 --- a/ldap/admin/src/scripts/DSSharedLib.in +++ b/ldap/admin/src/scripts/DSSharedLib.in @@ -4,83 +4,37 @@ libpath_add() LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1 } -# pass in a string that ends in dirsrv-name or slapd-name, -# and convert it to just "name" +# Pass a patch to the instance, and return the server ID normalize_server_id() { servid=$1 - servid=`echo "$servid" | sed 's/^.*\///'` - servid=`echo "$servid" | sed 's/^dirsrv-//'` - servid=`echo "$servid" | sed 's/^slapd-//'` + servid=`echo "$servid" | sed 's#^@instconfigdir@/slapd-##'` echo $servid } -# look for all initconfig files in the given directory -# the initconfig files are the files used in the startup scripts -# to start each instance -# e.g. /etc/sysconfig/dirsrv-INST -# these scripts contain the pointer CONFIG_DIR to where the instance -# configuration files are to be found -# if the given directory is empty, look in @initconfigdir@ -# if not running as root, look for non-system instances in -# $HOME/.dirsrv -# ignore the dirsrv-admin admin server config file # -get_initconfig_files() +# Get all the instances +# +get_slapd_instances () { - dir=${1:-@initconfigdir@} - # convert - # uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),..... - # to - # 0 - # this is the only portable, secure way to determine the id number - userid=`id | awk -F'[=(]+' '{print $2}'` - if [ "$userid" -ne 0 ] ; then - # magic - see start-dirsrv, DSCreate.pm::get_initconfigdir, etc. - extradir=$HOME/.@package_name@ - if [ -d $extradir ] ; then - extra="$extradir/@package_name@-*" - fi - fi - # setting the env var forces the use of it and nothing else - if [ -n "$INITCONFIGDIR" ] ; then - dir=$INITCONFIGDIR - extra= - fi - retfiles= + CONFIG_DIR=$1 + instances= found=1 - for file in $dir/@package_name@-* $extra ; do - if [ ! -r "$file" ] ; then continue ; fi - case "$file" in */@package_name@-admin) continue ;; esac - if [ -z "$retfiles" ] ; then - retfiles=$file - else - retfiles="$retfiles $file" + for inst in $CONFIG_DIR/slapd-* ; do + if [[ ! $inst =~ ".removed" ]] ; then + if [ -z "$instances" ] ; then + instances=$inst + else + instances="$instances $inst" + fi + found=0 fi - found=0 done - echo $retfiles - return $found # 0 return means success - at least one found + echo $instances + return $found } -# -# get_init_file() -# -# The init file is the instance specific file under -# the @initconfig@ directory e.g. -# /etc/sysconfig/dirsrv-instance -# The presence and readability of this file means this is a -# valid instance of directory server (except @package_name@-admin) -# The CONFIG_DIR directive in this file tells us where to -# look for the main server config -# First grab all the @package_name@ init files -# Then check if a server id was provided, if not, return the -# one found if there is only one -# If a servid was provided, make sure there is an init file -# for that instance -# Return the @initconfigdir@/@package_name@-$servid file name -# -get_init_file() +get_slapd_instance () { dir=$1 servid=$2 @@ -94,14 +48,14 @@ get_init_file() servid=`normalize_server_id $servid` fi - for configfile in `get_initconfig_files $dir` + for instance in `get_slapd_instances $dir` do inst_count=`expr $inst_count + 1` - id=`normalize_server_id $configfile` + id=`normalize_server_id $instance` if [ -n "$servid" ] && [ "$id" = "$servid" ] then # found it - echo $configfile + echo $id exit 0 fi if [ $first = "yes" ] @@ -117,7 +71,7 @@ get_init_file() if [ -z "$servid" ] && [ $inst_count -eq 1 ] then # return the file - echo $configfile + echo $instances exit 0 else # Either we have an invalid name, or more than one instance is available @@ -125,8 +79,10 @@ get_init_file() echo $instances exit 1; fi + } + # # # diff --git a/ldap/admin/src/scripts/DSUtil.pm.in b/ldap/admin/src/scripts/DSUtil.pm.in index c2a9af0..197aafa 100644 --- a/ldap/admin/src/scripts/DSUtil.pm.in +++ b/ldap/admin/src/scripts/DSUtil.pm.in @@ -1288,26 +1288,9 @@ sub get_server_id { my $instance_count = 0; my $first = "yes"; my $instances = ""; - my $name; + my $confdir = ""; my $inst; my $file; - my @extra = (); - my $extradir = ""; - - if (getLogin ne 'root') { - $extradir = "$ENV{HOME}/.@package_name@"; - if (-d $extradir) { - opendir(EXTRADIR, $extradir); - @extra = map {$_ = "$extradir/$_"} readdir(EXTRADIR); - closedir(EXTRADIR); - } - } - - if (defined $ENV{INITCONFIGDIR}) { - $dir = $ENV{INITCONFIGDIR}; - @extra = (); # only use what was provided - $extradir = ""; - } # normalize the given servid if (!$servid) { @@ -1323,17 +1306,17 @@ sub get_server_id { opendir(DIR, "$dir"); my @files = map {$_ = "$dir/$_"} readdir(DIR); closedir(DIR); - push @files, @extra; + push @files; my $found = 0; foreach $file (@files){ - next if(! -r $file); # skip unreadable files - # skip admin server - if($file =~ m,/@package_name@-([^/]+)$, && $file !~ m,/@package_name@-admin$,){ - $name = $file; - $inst = $1; + next if(! -d $file); # skip non-directories + if($file =~ m,/slapd-, && $file !~ m/\.removed$/){ + $inst = $file; + $inst =~ s/$dir\/slapd-//; $instance_count++; if ($servid && ($servid eq $inst)) { $found = 1; + $confdir = $file; last; } if($first eq "yes"){ @@ -1347,7 +1330,7 @@ sub get_server_id { if ($servid && !$found) { # if we got here, did not find given serverid print (STDERR "Invalid server identifer: $servid\n"); - print (STDERR "Available instances in $dir $extradir: $instances\n"); + print (STDERR "Available instances in $dir: $instances\n"); exit (1); } @@ -1361,34 +1344,6 @@ sub get_server_id { print "Available instances: $instances\n"; exit (1); } - unless ( -e "$name" ){ - print (STDERR "Invalid server identifer: $servid\n"); - print (STDERR "Available instances in $dir $extradir: $instances\n"); - exit (1); - } - - # now grab the CONFIG_DIR from the file $name - if (!open(INSTFILE, "$name")) { - print (STDERR "Error: could not open $name: "); - exit (1); - } - - my $confdir; - while () { - if (/^CONFIG_DIR=/) { - s/^CONFIG_DIR=//; - s/ ; export CONFIG_DIR//; - $confdir = $_; - chomp($confdir); - last; - } - } - close INSTFILE; - - if (!$confdir) { - print (STDERR "Error: no CONFIG_DIR found in $name\n"); - exit (1); - } return ($inst, $confdir); } diff --git a/ldap/admin/src/scripts/bak2db.in b/ldap/admin/src/scripts/bak2db.in index 149229f..87c5366 100755 --- a/ldap/admin/src/scripts/bak2db.in +++ b/ldap/admin/src/scripts/bak2db.in @@ -65,16 +65,16 @@ then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then usage echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi -. $initfile +CONFIG_DIR="@instconfigdir@/slapd-$instance" if [ 1 = `expr $archivedir : "\/"` ] then diff --git a/ldap/admin/src/scripts/bak2db.pl.in b/ldap/admin/src/scripts/bak2db.pl.in index 0dcd304..818ad39 100644 --- a/ldap/admin/src/scripts/bak2db.pl.in +++ b/ldap/admin/src/scripts/bak2db.pl.in @@ -65,7 +65,7 @@ while ($i <= $#ARGV) { # # Gather all our config settings # -($servid, $confdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $confdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $host, $port, $rootdn); $info{rootdnpw} = DSUtil::get_password_from_file($passwd, $passwdfile); $info{protocol} = $protocol; diff --git a/ldap/admin/src/scripts/cleanallruv.pl.in b/ldap/admin/src/scripts/cleanallruv.pl.in index 81a6bb4..781d8d4 100644 --- a/ldap/admin/src/scripts/cleanallruv.pl.in +++ b/ldap/admin/src/scripts/cleanallruv.pl.in @@ -76,7 +76,7 @@ while ($i <= $#ARGV) # # Gather all our config settings # -($servid, $confdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $confdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $host, $port, $rootdn); $info{rootdnpw} = DSUtil::get_password_from_file($passwd, $passwdfile); $info{protocol} = $protocol; diff --git a/ldap/admin/src/scripts/db2bak.in b/ldap/admin/src/scripts/db2bak.in index a02484a..d7552bd 100755 --- a/ldap/admin/src/scripts/db2bak.in +++ b/ldap/admin/src/scripts/db2bak.in @@ -64,21 +64,20 @@ then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then usage echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi -servid=`normalize_server_id $initfile` -. $initfile +CONFIG_DIR="@instconfigdir@/slapd-$instance" if [ -z "$bak_dir" ] then - bak_dir=@localstatedir@/lib/@PACKAGE_NAME@/slapd-$servid/bak/$servid-`date +%Y_%m_%d_%H_%M_%S` + bak_dir=@localstatedir@/lib/@PACKAGE_NAME@/slapd-$instance/bak/$instance-`date +%Y_%m_%d_%H_%M_%S` fi echo "Back up directory: $bak_dir" diff --git a/ldap/admin/src/scripts/db2bak.pl.in b/ldap/admin/src/scripts/db2bak.pl.in index 0f74e89..ef37f81 100644 --- a/ldap/admin/src/scripts/db2bak.pl.in +++ b/ldap/admin/src/scripts/db2bak.pl.in @@ -71,7 +71,7 @@ while ($i <= $#ARGV) { # # Gather all our config settings # -($servid, $confdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $confdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $host, $port, $rootdn); $info{rootdnpw} = DSUtil::get_password_from_file($passwd, $passwdfile); $info{protocol} = $protocol; diff --git a/ldap/admin/src/scripts/db2index.in b/ldap/admin/src/scripts/db2index.in index 3fc4c2c..a6e585f 100755 --- a/ldap/admin/src/scripts/db2index.in +++ b/ldap/admin/src/scripts/db2index.in @@ -62,12 +62,12 @@ then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then usage echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi @@ -88,12 +88,11 @@ elif [ -n "$servid" ] && [ $argnum -eq 4 ]; then idxall=1 fi -servid=`normalize_server_id $initfile` -. $initfile +CONFIG_DIR="@instconfigdir@/slapd-$instance" if [ $idxall -eq 1 ] then - bak_dir=@localstatedir@/lib/@PACKAGE_NAME@/slapd-$servid/bak/reindex_`date +%Y_%m_%d_%H_%M_%S` + bak_dir=@localstatedir@/lib/@PACKAGE_NAME@/slapd-$instance/bak/reindex_`date +%Y_%m_%d_%H_%M_%S` @sbindir@/ns-slapd upgradedb -D $CONFIG_DIR -a "$bak_dir" -f |& egrep -v "util_info_sys_page|check_and_set_import_cache|WARNING|Backing up" | sed -e "s/upgrade DB/Reindex/" | sed -e "s/upgradedb/reindexing/" elif [ $print_usage -eq 1 ] then diff --git a/ldap/admin/src/scripts/db2index.pl.in b/ldap/admin/src/scripts/db2index.pl.in index af426e9..f53a32c 100644 --- a/ldap/admin/src/scripts/db2index.pl.in +++ b/ldap/admin/src/scripts/db2index.pl.in @@ -74,7 +74,7 @@ while ($i <= $#ARGV) { # # Gather all our config settings # -($servid, $confdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $confdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $host, $port, $rootdn); $info{rootdnpw} = DSUtil::get_password_from_file($passwd, $passwdfile); $info{protocol} = $protocol; diff --git a/ldap/admin/src/scripts/db2ldif.in b/ldap/admin/src/scripts/db2ldif.in index fb94483..f1b0826 100755 --- a/ldap/admin/src/scripts/db2ldif.in +++ b/ldap/admin/src/scripts/db2ldif.in @@ -148,17 +148,16 @@ then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then usage echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi -servid=`normalize_server_id $initfile` -. $initfile +CONFIG_DIR="@instconfigdir@/slapd-$instance" ldif_file=`make_ldiffile $ARGS` rn=$? diff --git a/ldap/admin/src/scripts/db2ldif.pl.in b/ldap/admin/src/scripts/db2ldif.pl.in index cb1ef1a..10ecc63 100644 --- a/ldap/admin/src/scripts/db2ldif.pl.in +++ b/ldap/admin/src/scripts/db2ldif.pl.in @@ -159,7 +159,7 @@ while ($i <= $#ARGV) { # # Gather all our config settings # -($servid, $confdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $confdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $host, $port, $rootdn); $ldifdir = "@localstatedir@/lib/@PACKAGE_NAME@/slapd-$servid/ldif"; $info{rootdnpw} = DSUtil::get_password_from_file($passwd, $passwdfile); diff --git a/ldap/admin/src/scripts/dbmon.sh.in b/ldap/admin/src/scripts/dbmon.sh.in index 55aaff5..be98646 100644 --- a/ldap/admin/src/scripts/dbmon.sh.in +++ b/ldap/admin/src/scripts/dbmon.sh.in @@ -206,15 +206,15 @@ parseldif() { } dodbmon() { - initfile=$(get_init_file "@initconfigdir@" $SERVID) + instance=$(get_slapd_instance "@instconfigdir@" $SERVID) if [ $? -eq 1 ] then echo "You must supply a valid server instance identifier (via SERVID)." - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi - . $initfile + CONFIG_DIR="@instconfigdir@/slapd-$instance process_dse $CONFIG_DIR $$ file="/tmp/DSSharedLib.$$" diff --git a/ldap/admin/src/scripts/dbverify.in b/ldap/admin/src/scripts/dbverify.in index 601f726..ecbbc1d 100755 --- a/ldap/admin/src/scripts/dbverify.in +++ b/ldap/admin/src/scripts/dbverify.in @@ -55,16 +55,16 @@ then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then usage echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi -. $initfile +CONFIG_DIR="@instconfigdir@/slapd-$instance eval @sbindir@/ns-slapd dbverify -D $CONFIG_DIR $args if [ $display_version = "yes" ]; then diff --git a/ldap/admin/src/scripts/dn2rdn.in b/ldap/admin/src/scripts/dn2rdn.in index 53efd21..3974b00 100755 --- a/ldap/admin/src/scripts/dn2rdn.in +++ b/ldap/admin/src/scripts/dn2rdn.in @@ -46,20 +46,19 @@ then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then usage echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi -servid=`normalize_server_id $initfile` -. $initfile +CONFIG_DIR="@instconfigdir@/slapd-$instance" if [ "$archive" != "provided" ]; then - bak_dir=@localstatedir@/lib/@PACKAGE_NAME@/slapd-$servid/bak/reindex_`date +%Y_%m_%d_%H_%M_%S` + bak_dir=@localstatedir@/lib/@PACKAGE_NAME@/slapd-$instance/bak/reindex_`date +%Y_%m_%d_%H_%M_%S` args=$args"-a $bak_dir" fi diff --git a/ldap/admin/src/scripts/fixup-linkedattrs.pl.in b/ldap/admin/src/scripts/fixup-linkedattrs.pl.in index fa76e27..599e640 100644 --- a/ldap/admin/src/scripts/fixup-linkedattrs.pl.in +++ b/ldap/admin/src/scripts/fixup-linkedattrs.pl.in @@ -70,7 +70,7 @@ while ($i <= $#ARGV) # # Gather all our config settings # -($servid, $confdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $confdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $host, $port, $rootdn); $info{rootdnpw} = DSUtil::get_password_from_file($passwd, $passwdfile); $info{protocol} = $protocol; diff --git a/ldap/admin/src/scripts/fixup-memberof.pl.in b/ldap/admin/src/scripts/fixup-memberof.pl.in index 9ae41f8..aeec957 100644 --- a/ldap/admin/src/scripts/fixup-memberof.pl.in +++ b/ldap/admin/src/scripts/fixup-memberof.pl.in @@ -74,7 +74,7 @@ while ($i <= $#ARGV) # # Gather all our config settings # -($servid, $confdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $confdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $host, $port, $rootdn); $info{rootdnpw} = DSUtil::get_password_from_file($passwd, $passwdfile); $info{protocol} = $protocol; diff --git a/ldap/admin/src/scripts/ldif2db.in b/ldap/admin/src/scripts/ldif2db.in index 06a1192..e5ba43d 100755 --- a/ldap/admin/src/scripts/ldif2db.in +++ b/ldap/admin/src/scripts/ldif2db.in @@ -98,16 +98,16 @@ then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then usage echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi -. $initfile +CONFIG_DIR="@instconfigdir@/slapd-$instance" handleopts $ARGS quiet=$? diff --git a/ldap/admin/src/scripts/ldif2db.pl.in b/ldap/admin/src/scripts/ldif2db.pl.in index 909cfa7..144dbba 100644 --- a/ldap/admin/src/scripts/ldif2db.pl.in +++ b/ldap/admin/src/scripts/ldif2db.pl.in @@ -144,7 +144,7 @@ while ($i <= $#ARGV) { # # Gather all our config settings # -($servid, $confdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $confdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $host, $port, $rootdn); $info{rootdnpw} = DSUtil::get_password_from_file($passwd, $passwdfile); $info{protocol} = $protocol; diff --git a/ldap/admin/src/scripts/ldif2ldap.in b/ldap/admin/src/scripts/ldif2ldap.in index a2b0f1c..7c83c5e 100755 --- a/ldap/admin/src/scripts/ldif2ldap.in +++ b/ldap/admin/src/scripts/ldif2ldap.in @@ -53,16 +53,16 @@ then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then usage echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi -. $initfile +CONFIG_DIR="@instconfigdir@/slapd-$instance" process_dse $CONFIG_DIR $$ file="/tmp/DSSharedLib.$$" diff --git a/ldap/admin/src/scripts/monitor.in b/ldap/admin/src/scripts/monitor.in index 291a51e..8796342 100755 --- a/ldap/admin/src/scripts/monitor.in +++ b/ldap/admin/src/scripts/monitor.in @@ -47,12 +47,12 @@ then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then usage echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi @@ -61,7 +61,7 @@ then MDN="cn=monitor" fi -. $initfile +CONFIG_DIR="@instconfigdir@/slapd-$instance" process_dse $CONFIG_DIR $$ file="/tmp/DSSharedLib.$$" diff --git a/ldap/admin/src/scripts/ns-accountstatus.pl.in b/ldap/admin/src/scripts/ns-accountstatus.pl.in index d5d60d9..8397766 100644 --- a/ldap/admin/src/scripts/ns-accountstatus.pl.in +++ b/ldap/admin/src/scripts/ns-accountstatus.pl.in @@ -770,7 +770,7 @@ while( $arg = shift){ # # Gather all our config settings # -($servid, $confdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $confdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $host, $port, $rootdn); $info{rootdnpw} = DSUtil::get_password_from_file($rootpw, $pwfile); $info{protocol} = $protocol; diff --git a/ldap/admin/src/scripts/ns-activate.pl.in b/ldap/admin/src/scripts/ns-activate.pl.in index 99c97d6..4188d05 100644 --- a/ldap/admin/src/scripts/ns-activate.pl.in +++ b/ldap/admin/src/scripts/ns-activate.pl.in @@ -490,7 +490,7 @@ while( $arg = shift) # # Gather all our config settings # -($servid, $confdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $confdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $host, $port, $rootdn); $info{rootdnpw} = DSUtil::get_password_from_file($rootpw, $pwfile); $info{protocol} = $protocol; diff --git a/ldap/admin/src/scripts/ns-inactivate.pl.in b/ldap/admin/src/scripts/ns-inactivate.pl.in index 88c84a3..eea1228 100644 --- a/ldap/admin/src/scripts/ns-inactivate.pl.in +++ b/ldap/admin/src/scripts/ns-inactivate.pl.in @@ -363,7 +363,7 @@ while( $arg = shift) # # Gather all our config settings # -($servid, $confdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $confdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $host, $port, $rootdn); $info{rootdnpw} = DSUtil::get_password_from_file($rootpw, $pwfile); $info{protocol} = $protocol; diff --git a/ldap/admin/src/scripts/ns-newpwpolicy.pl.in b/ldap/admin/src/scripts/ns-newpwpolicy.pl.in index 87161fc..fd670c4 100755 --- a/ldap/admin/src/scripts/ns-newpwpolicy.pl.in +++ b/ldap/admin/src/scripts/ns-newpwpolicy.pl.in @@ -68,7 +68,7 @@ sub usage { { usage() if (!getopts('vD:w:j:p:P:h:U:S:Z:')); - ($opt_Z, $confdir) = DSUtil::get_server_id($opt_Z, "@initconfigdir@"); + ($opt_Z, $confdir) = DSUtil::get_server_id($opt_Z, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $opt_h, $opt_p, $opt_D); $info{rootdnpw} = $opt_w; $info{protocol} = $opt_P; diff --git a/ldap/admin/src/scripts/restart-dirsrv.in b/ldap/admin/src/scripts/restart-dirsrv.in index dfc0898..5132d5d 100644 --- a/ldap/admin/src/scripts/restart-dirsrv.in +++ b/ldap/admin/src/scripts/restart-dirsrv.in @@ -13,7 +13,7 @@ restart_instance() { SERV_ID=$1 server_already_stopped=0 - @sbindir@/stop-dirsrv -d $initconfig_dir $SERV_ID + @sbindir@/stop-dirsrv $SERV_ID status=$? if [ $status -eq 1 ] ; then return 3; @@ -22,7 +22,7 @@ restart_instance() { server_already_stopped=1 fi fi - @sbindir@/start-dirsrv -d $initconfig_dir $SERV_ID + @sbindir@/start-dirsrv $SERV_ID status=$? if [ $server_already_stopped -eq 1 ] && [ $status -eq 0 ] ; then return 2; @@ -38,34 +38,19 @@ do done shift $(($OPTIND-1)) -if [ "$initconfig_dir" = "" ]; then - initconfig_dir=@initconfigdir@ -fi - if [ "$#" -eq 0 ]; then # We're restarting all instances. ret=0 - # - # Use systemctl if available and running as root, - # - if [ -d "@systemdsystemunitdir@" ] && [ $(id -u) -eq 0 ];then - @bindir@/systemctl restart @package_name@@*.service -l - ret=$? - if [ $? -ne 0 ]; then - return 1 + instances=`get_slapd_instances @instconfigdir@` || { echo No instances found in @instconfigdir@ ; exit 1 ; } + for i in $instances; do + inst=`normalize_server_id $i` + echo Restarting instance \"$inst\" + restart_instance $inst + rv=$? + if [ "$rv" -ne 0 ]; then + ret=$rv fi - else - initfiles=`get_initconfig_files $initconfig_dir` || { echo No instances found in $initconfig_dir ; exit 1 ; } - for i in $initfiles; do - inst=`normalize_server_id $i` - echo Restarting instance \"$inst\" - restart_instance $inst - rv=$? - if [ "$rv" -ne 0 ]; then - ret=$rv - fi - done - fi + done exit $ret else # We're restarting a single instance. diff --git a/ldap/admin/src/scripts/restoreconfig.in b/ldap/admin/src/scripts/restoreconfig.in index bdb1ebd..9e122df 100755 --- a/ldap/admin/src/scripts/restoreconfig.in +++ b/ldap/admin/src/scripts/restoreconfig.in @@ -38,22 +38,21 @@ then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then usage echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi -servid=`normalize_server_id $initfile` -. $initfile +CONFIG_DIR="@instconfigdir@/slapd-$instance -conf_ldif=`ls -1t @localstatedir@/lib/@PACKAGE_NAME@/slapd-$servid/bak/$servid-*.ldif 2>/dev/null | head -1 ` +conf_ldif=`ls -1t @localstatedir@/lib/@PACKAGE_NAME@/slapd-$instance/bak/$instance-*.ldif 2>/dev/null | head -1 ` if [ -z "$conf_ldif" ] then - echo No configuration to restore in @localstatedir@/lib/@PACKAGE_NAME@/slapd-$servid/bak/ ; exit 1 + echo No configuration to restore in @localstatedir@/lib/@PACKAGE_NAME@/slapd-$instance/bak/ ; exit 1 fi echo Restoring $conf_ldif... @sbindir@/ns-slapd ldif2db -D $CONFIG_DIR -i $conf_ldif -n NetscapeRoot 2>&1 diff --git a/ldap/admin/src/scripts/saveconfig.in b/ldap/admin/src/scripts/saveconfig.in index 85334e5..67c7ac8 100755 --- a/ldap/admin/src/scripts/saveconfig.in +++ b/ldap/admin/src/scripts/saveconfig.in @@ -38,20 +38,20 @@ then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then usage echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi -servid=`normalize_server_id $initfile` -. $initfile + +CONFIG_DIR="@instconfigdir@/slapd-$instance" echo saving configuration... -conf_ldif=@localstatedir@/lib/@PACKAGE_NAME@/slapd-$servid/bak/$servid-`date +%Y_%m_%d_%H%M%S`.ldif +conf_ldif=@localstatedir@/lib/@PACKAGE_NAME@/slapd-$instance/bak/$instance-`date +%Y_%m_%d_%H%M%S`.ldif @sbindir@/ns-slapd db2ldif -N -D $CONFIG_DIR -s "o=NetscapeRoot" -a $conf_ldif -n NetscapeRoot 2>&1 if [ $? -ge 1 ] then diff --git a/ldap/admin/src/scripts/schema-reload.pl.in b/ldap/admin/src/scripts/schema-reload.pl.in index 6c260f8..abf5bea 100644 --- a/ldap/admin/src/scripts/schema-reload.pl.in +++ b/ldap/admin/src/scripts/schema-reload.pl.in @@ -69,7 +69,7 @@ while ($i <= $#ARGV) # # Gather all our config settings # -($servid, $confdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $confdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $host, $port, $rootdn); $info{rootdnpw} = DSUtil::get_password_from_file($passwd, $passwdfile); $info{protocol} = $protocol; diff --git a/ldap/admin/src/scripts/start-dirsrv.in b/ldap/admin/src/scripts/start-dirsrv.in index 4b9674b..a6d63d3 100755 --- a/ldap/admin/src/scripts/start-dirsrv.in +++ b/ldap/admin/src/scripts/start-dirsrv.in @@ -8,6 +8,8 @@ . @datadir@/@package_name@/data/DSSharedLib +RUN_DIR="@localrundir@/@PACKAGE_NAME@"; + # Starts a single instance start_instance() { # The first argument is the server ID. Anything @@ -39,16 +41,10 @@ start_instance() { return 1 fi else - initfile=`get_init_file $initconfig_dir $SERV_ID` || { echo Instance $SERV_ID not found. ; return 1 ; } + instance=`get_slapd_instance @instconfigdir@ $SERV_ID` || { echo Instance $SERV_ID not found. ; return 1 ; } - # source env. for this instance - if [ -f $initfile ] ; then - . $initfile - else - echo Instance $SERV_ID not found. - return 1 - fi - PIDFILE=$RUN_DIR/$PRODUCT_NAME-$SERV_ID.pid + CONFIG_DIR="@instconfigdir@/slapd-$instance"; + PIDFILE=$RUN_DIR/slapd-$SERV_ID.pid if test -f $PIDFILE ; then PID=`cat $PIDFILE` @@ -94,9 +90,6 @@ start_instance() { fi } -# source env. for all instances -[ -f @initconfigdir@/@package_name@ ] && . @initconfigdir@/@package_name@ - while getopts "d:" flag do case "$flag" in @@ -105,9 +98,6 @@ do done shift $(($OPTIND-1)) -if [ -z "$initconfig_dir" ]; then - initconfig_dir=@initconfigdir@ -fi found=0 if [ $# -eq 0 ]; then @@ -116,24 +106,16 @@ if [ $# -eq 0 ]; then # # Use systemctl if available and running as root, # - if [ -d "@systemdsystemunitdir@" ] && [ $(id -u) -eq 0 ];then - @bindir@/systemctl start @package_name@@*.service -l - ret=$? - if [ $? -ne 0 ]; then - return 1 + instances=`get_slapd_instances @instconfigdir@` || { echo No instances found in @instconfigdir@ ; exit 1 ; } + for i in $instances; do + inst=`normalize_server_id $i` + echo Starting instance \"$inst\" + start_instance $inst + rv=$? + if [ $rv -ne 0 ]; then + ret=$rv fi - else - initfiles=`get_initconfig_files $initconfig_dir` || { echo No instances found in $initconfig_dir ; exit 1 ; } - for i in $initfiles; do - inst=`normalize_server_id $i` - echo Starting instance \"$inst\" - start_instance $inst - rv=$? - if [ $rv -ne 0 ]; then - ret=$rv - fi - done - fi + done exit $ret else # We're starting a single instance. diff --git a/ldap/admin/src/scripts/stop-dirsrv.in b/ldap/admin/src/scripts/stop-dirsrv.in index 354ff0c..755cd8b 100755 --- a/ldap/admin/src/scripts/stop-dirsrv.in +++ b/ldap/admin/src/scripts/stop-dirsrv.in @@ -8,9 +8,18 @@ . @datadir@/@package_name@/data/DSSharedLib +RUN_DIR="@localrundir@/@PACKAGE_NAME@"; + stop_instance() { SERV_ID=$1 + PIDFILE=$RUN_DIR/slapd-$SERV_ID.pid + if test ! -f $PIDFILE ; then + echo No ns-slapd PID file found. Server is probably not running + return 2 + fi + PID=`cat $PIDFILE` + # # use systemctl if running as root # @@ -31,29 +40,15 @@ stop_instance() { kill $PID fi else - initfile=`get_init_file $initconfig_dir $SERV_ID` || { echo Instance $SERV_ID not found. ; return 1 ; } - - # source env. for this instance - if [ -f $initfile ] ; then - . $initfile - else - echo Instance $SERV_ID not found. - return 1 - fi + instance=`get_slapd_instance @instconfigdir@ $SERV_ID` || { echo Instance $SERV_ID not found. ; return 1 ; } - PIDFILE=$RUN_DIR/$PRODUCT_NAME-$SERV_ID.pid - if test ! -f $PIDFILE ; then - echo No ns-slapd PID file found. Server is probably not running - return 2 - fi - PID=`cat $PIDFILE` # see if the server is already stopped kill -s 0 $PID > /dev/null 2>&1 || { - echo Server not running - if test -f $PIDFILE ; then - rm -f $PIDFILE - fi - return 2 + echo Server not running + if test -f $PIDFILE ; then + rm -f $PIDFILE + fi + return 2 } # server is running - kill it kill $PID @@ -87,38 +82,23 @@ do done shift $(($OPTIND-1)) -if [ -z "$initconfig_dir" ]; then - initconfig_dir=@initconfigdir@ -fi - if [ $# -eq 0 ]; then # We're stopping all instances. ret=0 - # - # Use systemctl if available and running as root, - # - if [ -d "@systemdsystemunitdir@" ] && [ $(id -u) -eq 0 ];then - @bindir@/systemctl stop @package_name@@*.service -l - ret=$? - if [ $? -ne 0 ]; then - return 1 + instances=`get_slapd_instances @instconfigdir@` || { echo No instances found in @instconfigdir@ ; exit 1 ; } + for i in $instances; do + if [ ! -d "$i" ] ; then + echo No instances found in @instconfigdir@ + exit 1 fi - else - initfiles=`get_initconfig_files $initconfig_dir` || { echo No instances found in $initconfig_dir ; exit 1 ; } - for i in $initfiles; do - if [ ! -f "$i" ] ; then - echo No instances found in $initconfig_dir - exit 1 - fi - inst=`normalize_server_id $i` - echo Stopping instance \"$inst\" - stop_instance $inst - rv=$? - if [ $rv -ne 0 ]; then - ret=$rv - fi - done - fi + inst=`normalize_server_id $i` + echo Stopping instance \"$inst\" + stop_instance $inst + rv=$? + if [ $rv -ne 0 ]; then + ret=$rv + fi + done exit $ret else # We're stopping a single instance. diff --git a/ldap/admin/src/scripts/suffix2instance.in b/ldap/admin/src/scripts/suffix2instance.in index 88b031c..2de3ed7 100755 --- a/ldap/admin/src/scripts/suffix2instance.in +++ b/ldap/admin/src/scripts/suffix2instance.in @@ -52,17 +52,15 @@ then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then usage echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi -. $initfile - - +CONFIG_DIR="@instconfigdir@/slapd-$instance eval @sbindir@/ns-slapd suffix2instance -D $CONFIG_DIR $args 2>&1 diff --git a/ldap/admin/src/scripts/syntax-validate.pl.in b/ldap/admin/src/scripts/syntax-validate.pl.in index 68ce1e0..537228b 100644 --- a/ldap/admin/src/scripts/syntax-validate.pl.in +++ b/ldap/admin/src/scripts/syntax-validate.pl.in @@ -76,7 +76,7 @@ while ($i <= $#ARGV) # # Gather all our config settings # -($servid, $confdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $confdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $host, $port, $rootdn); $info{rootdnpw} = DSUtil::get_password_from_file($passwd, $passwdfile); $info{protocol} = $protocol; diff --git a/ldap/admin/src/scripts/upgradedb.in b/ldap/admin/src/scripts/upgradedb.in index 5f9ff8f..b61c227 100755 --- a/ldap/admin/src/scripts/upgradedb.in +++ b/ldap/admin/src/scripts/upgradedb.in @@ -46,20 +46,19 @@ then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi -servid=`normalize_server_id $initfile` -. $initfile +CONFIG_DIR="@instconfigdir@/slapd-$instance" if [ "$archive_provided" != "yes" ] then - bak_dir=@localstatedir@/lib/@PACKAGE_NAME@/slapd-$servid/bak/upgradedb_`date +%Y_%m_%d_%H_%M_%S` + bak_dir=@localstatedir@/lib/@PACKAGE_NAME@/slapd-$instance/bak/upgradedb_`date +%Y_%m_%d_%H_%M_%S` args=$args" -a $bak_dir" fi diff --git a/ldap/admin/src/scripts/upgradednformat.in b/ldap/admin/src/scripts/upgradednformat.in index e4f9dbe..6a92169 100755 --- a/ldap/admin/src/scripts/upgradednformat.in +++ b/ldap/admin/src/scripts/upgradednformat.in @@ -62,16 +62,16 @@ if [ -z "$be" ] || [ -z "$dir" ]; then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then usage echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi -. $initfile +CONFIG_DIR="@instconfigdir@/slapd-$instance" eval @sbindir@/ns-slapd upgradednformat -D $CONFIG_DIR $args rc=$? diff --git a/ldap/admin/src/scripts/usn-tombstone-cleanup.pl.in b/ldap/admin/src/scripts/usn-tombstone-cleanup.pl.in index c9d364a..ac62315 100644 --- a/ldap/admin/src/scripts/usn-tombstone-cleanup.pl.in +++ b/ldap/admin/src/scripts/usn-tombstone-cleanup.pl.in @@ -77,7 +77,7 @@ while ($i <= $#ARGV) # # Gather all our config settings # -($servid, $confdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $confdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); %info = DSUtil::get_info($confdir, $host, $port, $rootdn); $info{rootdnpw} = DSUtil::get_password_from_file($passwd, $passwdfile); $info{protocol} = $protocol; diff --git a/ldap/admin/src/scripts/verify-db.pl.in b/ldap/admin/src/scripts/verify-db.pl.in index fcc93d7..acdbbe7 100644 --- a/ldap/admin/src/scripts/verify-db.pl.in +++ b/ldap/admin/src/scripts/verify-db.pl.in @@ -134,7 +134,7 @@ while ($i <= $#ARGV) { $i++; } -($servid, $notused_configdir) = DSUtil::get_server_id($servid, "@initconfigdir@"); +($servid, $notused_configdir) = DSUtil::get_server_id($servid, "@instconfigdir@"); print("*****************************************************************\n"); print("verify-db: This tool should only be run if recovery start fails\n" . diff --git a/ldap/admin/src/scripts/vlvindex.in b/ldap/admin/src/scripts/vlvindex.in index 6820de4..145f13b 100755 --- a/ldap/admin/src/scripts/vlvindex.in +++ b/ldap/admin/src/scripts/vlvindex.in @@ -59,15 +59,15 @@ then exit 1 fi -initfile=$(get_init_file "@initconfigdir@" $servid) +instance=$(get_slapd_instance "@instconfigdir@" $servid) if [ $? -eq 1 ] then usage echo "You must supply a valid server instance identifier. Use -Z to specify instance name" - echo "Available instances: $initfile" + echo "Available instances: $instance" exit 1 fi -. $initfile +CONFIG_DIR="@instconfigdir@/slapd-$instance eval @sbindir@/ns-slapd db2index -D $CONFIG_DIR $args