summaryrefslogtreecommitdiffstats
path: root/ldap/admin/src/migratePwdFile
diff options
context:
space:
mode:
authorcvsadm <cvsadm>2005-01-21 00:44:34 +0000
committercvsadm <cvsadm>2005-01-21 00:44:34 +0000
commitb2093e3016027d6b5cf06b3f91f30769bfc099e2 (patch)
treecf58939393a9032182c4fbc4441164a9456e82f8 /ldap/admin/src/migratePwdFile
downloadds-ldapserver7x.tar.gz
ds-ldapserver7x.tar.xz
ds-ldapserver7x.zip
Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)ldapserver7x
Diffstat (limited to 'ldap/admin/src/migratePwdFile')
-rw-r--r--ldap/admin/src/migratePwdFile90
1 files changed, 90 insertions, 0 deletions
diff --git a/ldap/admin/src/migratePwdFile b/ldap/admin/src/migratePwdFile
new file mode 100644
index 00000000..45b90629
--- /dev/null
+++ b/ldap/admin/src/migratePwdFile
@@ -0,0 +1,90 @@
+#!perl
+#
+# BEGIN COPYRIGHT BLOCK
+# Copyright 2001 Sun Microsystems, Inc.
+# Portions copyright 1999, 2001-2003 Netscape Communications Corporation.
+# All rights reserved.
+# END COPYRIGHT BLOCK
+#
+#
+# Convert an old password.txt file into the new pin.txt format
+# This script requires a single argument which is the directory and
+# server instance prefix of the two files (e.g. /servers/alias/slapd-foo)
+#
+# ISSUES:
+# This code sets the mode of the created file to 660 (allows suitespot
+# group access. Should it also set the user and group values? Where
+# should they come from?
+#
+BEGIN {
+ $isNT = -d "\\";
+ $PS = $isNT ? "\\" : "/";
+}
+
+$sroot = $ARGV[0];
+$prefix = $ARGV[1];
+
+#
+# create the names for the old (password) and new (pin) files
+#
+$pwdfile = "${prefix}-password.txt";
+$pinfile = "${prefix}-pin.txt";
+
+if (-f $pwdfile && ! -f $pinfile) {
+ open(PWDFILE, $pwdfile) || die "Cannot open password file: $pwdfile\n";
+
+ my $count = 0;
+ my $pin;
+ while(<PWDFILE>) {
+ chomp; # trim new line
+
+ if ($count == 0) {
+ $pin = $_;
+ }
+
+ $count = $count+1;
+ }
+ close PWDFILE;
+
+ if ($count == 0) {
+ die "No password found in password file\n";
+ } elsif ($count != 1) {
+ print "Extra lines found in password file\n";
+ }
+
+ open(PINFILE, ">$pinfile") || die "Cannot create pin file: $pinfile\n";
+ print PINFILE "Software (Internal) Token:$pin\n";
+ close PINFILE;
+ chmod 0660, $pinfile;
+
+ # set the ownership of the file; should be the same as the slapd user id
+ if (! $isNT) {
+ $confFile = "$sroot${PS}$prefix${PS}config${PS}slapd.conf";
+ open(CONF, $confFile) or die "Error: cannot open $confFile: $!";
+ while (<CONF>) {
+ if (/^localuser\s+/i) {
+ chomp($newuser = $');
+ last;
+ }
+ }
+ close(CONF);
+ if (!$newuser) {
+ $confFile = "$sroot${PS}shared${PS}config${PS}ssusers.conf";
+ open(SSUSERS, $confFile) or
+ die "Error: could not open $confFile: $!";
+ while (<SSUSERS>) {
+ chop;
+ if (/^SuiteSpotUser\s+/i) {
+ $newuser = $';
+ last;
+ }
+ }
+ close(SSUSERS);
+ }
+ if ($newuser) {
+ chown $newuser, $pinfile;
+ }
+ }
+}
+
+exit 0;