|  | #!/usr/bin/perl -w | 
|  | use strict; | 
|  |  | 
|  | # This is public domain code.  Do whatever you want with it. | 
|  | # It was originally included in Clinton Wong's Apache 1.3.6 SHA1/ldif | 
|  | # patch distribution as sample code for converting accounts from | 
|  | # ldif format (as used by Netscape web servers) to Apache password format. | 
|  |  | 
|  | my $uid=''; | 
|  | my $passwd=''; | 
|  |  | 
|  | while (my $line = <>) { | 
|  | chomp $line; | 
|  | if ( $line =~ /uid:\s*(.+)/) { $uid = $1 } | 
|  | if ( $line =~ /userpassword:\s*(\{\w+\}.+)/) { | 
|  | $passwd = $1; | 
|  | $passwd =~ s/^\{crypt\}//i;  # Apache stores crypt without a magic string | 
|  | } | 
|  |  | 
|  | if (length($line)==0) { | 
|  |  | 
|  | if (length $uid and length $passwd) { | 
|  | print $uid, ':', $passwd, "\n"; | 
|  | } # output if we have something to print | 
|  |  | 
|  | $uid = ''; | 
|  | $passwd = ''; | 
|  |  | 
|  | } # if newline | 
|  | } # while something to read | 
|  |  | 
|  | # handle last entry if there isn't a newline before EOF | 
|  | if (length $uid and length $passwd) { | 
|  | print $uid, ':', $passwd, "\n"; | 
|  | } | 
|  |  |