diff options
author | cvsadm <cvsadm> | 2005-01-21 00:44:34 +0000 |
---|---|---|
committer | cvsadm <cvsadm> | 2005-01-21 00:44:34 +0000 |
commit | b2093e3016027d6b5cf06b3f91f30769bfc099e2 (patch) | |
tree | cf58939393a9032182c4fbc4441164a9456e82f8 /ldap/admin/src/migratePwdFile | |
download | ds-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/migratePwdFile | 90 |
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; |