summaryrefslogtreecommitdiffstats
path: root/ldap/admin/src/getConfigInfo
diff options
context:
space:
mode:
Diffstat (limited to 'ldap/admin/src/getConfigInfo')
-rw-r--r--ldap/admin/src/getConfigInfo134
1 files changed, 134 insertions, 0 deletions
diff --git a/ldap/admin/src/getConfigInfo b/ldap/admin/src/getConfigInfo
new file mode 100644
index 00000000..5ba1d20d
--- /dev/null
+++ b/ldap/admin/src/getConfigInfo
@@ -0,0 +1,134 @@
+#!perl
+#
+# BEGIN COPYRIGHT BLOCK
+# Copyright 2001 Sun Microsystems, Inc.
+# Portions copyright 1999, 2001-2003 Netscape Communications Corporation.
+# All rights reserved.
+# END COPYRIGHT BLOCK
+#
+
+# Get some configuration information from an instance
+
+BEGIN {
+ $| = 1;
+ # print CGI header
+ print "Content-type: text/plain\n\n";
+
+ $isNT = -d '\\';
+ $PATHSEP = $isNT ? "\\" : "/";
+ # get the server root directory
+ $sroot = $ENV{'NETSITE_ROOT'};
+ @INC = ( '.', '../../../admin/admin/bin' );
+ grep { s@/@\\@g } @INC if $isNT;
+}
+
+sub sigDieHandler {
+ print @_, "\n";
+ print "NMC_STATUS: ", $!+0, "\n";
+ exit $!;
+}
+
+$SIG{__DIE__} = 'sigDieHandler';
+
+# process the CGI input
+use Cgi;
+
+$oldSlapdConf = $cgiVars{'oldServerRoot'} . $PATHSEP . 'slapd-' .
+ $cgiVars{'oldServerName'} . $PATHSEP . 'config' . $PATHSEP .
+ 'slapd.conf';
+
+$foundLocalUser = 0;
+
+open(OLDSLAPDCONF, $oldSlapdConf) or
+ die "Error: could not open old config file $oldSlapdConf: $!";
+while ($line = <OLDSLAPDCONF>) {
+ chop $line;
+ foreach $key (keys %cgiVars) {
+ $param = $cgiVars{$key};
+ if ($line =~ /^$param\s+/i) {
+ ($value = $') =~ s/^[\"]//;
+ # remove leading "
+ $value =~ s/[\"]$//;
+ # remove trailing "
+ print $key, ':', $value, "\n";
+ if (lc($param) eq 'localuser') {
+ $foundLocalUser = 1;
+ }
+ }
+ }
+ if ($line =~ /^directory\s+/i) { $dbdir = $';}
+ # the user may have given us a network mounted old home directory, but in the
+ # old instance's config files, the root directory referred to is usually
+ # a local directory. For example, suppose there is an automounter map for
+ # hosts which maps onto /h e.g. /h/oldhost would contain all directories
+ # exported via NFS. Similarly, for NT, you could do \\oldhost\c to look
+ # at the C: drive on the old host. Or the user may have network mounted
+ # the old server root some other way. Anyway, we need to determine what
+ # the old server root was local to the original host because that is what
+ # will be referred to it the old config files. So, we look at the errorlog
+ # directive in slapd.conf and use whatever comes before the slapd-oldname
+ elsif ($line =~ /\werrorlog\s+(.*)slapd-$cgiVars{'oldServerName'}/i) {
+ $realOldDir = $1;
+ }
+ elsif ($line =~ /^security\s+/i) {
+ if (lc($') eq 'on') {
+ $security = 1;
+ }
+ }
+ elsif ($line =~ /^encryption-alias\s+/i) {
+ $encryptionalias = $';
+ }
+}
+close(OLDSLAPDCONF);
+
+if (! $realOldDir) {
+ $realOldDir = $cgiVars{'oldServerRoot'};
+}
+
+# if security is enabled, see if there is a cert and key db
+if ($security && $encryptionalias) {
+ $secDir = $cgiVars{'oldServerRoot'} . $PATHSEP . 'alias';
+ opendir(SECDIR, $secDir) or
+ die "Error: could not open alias dir $secDir : $!";
+ foreach (readdir(SECDIR)) {
+ if (! /[.][.]?/) {
+ if (/^$encryptionalias/i) {
+ print 'needSecPwd:true', "\n";
+ last;
+ }
+ }
+ }
+ closedir(SECDIR);
+}
+
+# the dbdir is stored as a local dir, but we may need a network dir
+($networkDbDir = $dbdir) =~ s/^$realOldDir/$cgiVars{'oldServerRoot'}/ig;
+
+if (! $isNT && $cgiVars{'oldlocaluser'} && ! $foundLocalUser) {
+ # get the local user by doing a stat of the db directory
+ $olduid = (stat($networkDbDir))[4];
+ # convert the numeric uid to string name
+ setpwent;
+ while (@ent = getpwent) {
+ if ($ent[2] == $olduid) {
+ print 'oldlocaluser:', $ent[0], "\n";
+ last;
+ }
+ }
+ endpwent;
+}
+
+if (! $isNT && $cgiVars{'newlocaluser'}) {
+ open(SSUSERS, "$sroot${PATHSEP}shared${PATHSEP}config${PATHSEP}ssusers.conf") or
+ die "Error: could not open $sroot${PATHSEP}shared${PATHSEP}config${PATHSEP}ssusers.conf: $!";
+ while (<SSUSERS>) {
+ chop;
+ if (/^SuiteSpotUser\s+/i) {
+ print 'newlocaluser:', $', "\n";
+ }
+ }
+ close(SSUSERS);
+}
+
+print "NMC_STATUS: 0\n";
+exit 0;