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