remove code duplication
authorMartin Zobel-Helas <zobel@debian.org>
Fri, 9 Mar 2012 18:51:32 +0000 (19:51 +0100)
committerMartin Zobel-Helas <zobel@debian.org>
Fri, 9 Mar 2012 18:51:32 +0000 (19:51 +0100)
Util.pm
update.cgi

diff --git a/Util.pm b/Util.pm
index f6be1ed..2b230ab 100644 (file)
--- a/Util.pm
+++ b/Util.pm
@@ -34,28 +34,16 @@ sub CreateKey {
 
 sub CreateCryptSalt {
   # this can create either a DES type salt or a MD5 salt
-  my $md5 = shift; # do we want a MD5 salt?
+  # 0 for DES, 1 for MD5 salt and 2 for apache MD5 salt
+  my $type = shift;
   my $validstr = './0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
   my @valid = split(//,$validstr);
   my ($in, $out);
   
-  my $cryptsaltlen = ($md5 ? 8 : 2);
-  
-  open (F, "</dev/urandom") || die &HTMLError("No /dev/urandom found!");
-  foreach (1..$cryptsaltlen) {
-    read(F, $in, 1);
-    $out .= $valid[ord($in) % ($#valid + 1)];
+  my $cryptsaltlen = 2;
+  if (($type == 1)||($type == 2)) {
+    $cryptsaltlen = 8;
   }
-  close F;
-  return ($md5 ? "\$1\$$out\$" : $out);
-}
-
-sub CreateMD5Salt {
-  my $validstr = './0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
-  my @valid = split(//,$validstr);
-  my ($in, $out);
-  
-  my $cryptsaltlen = 8;
   
   open (F, "</dev/urandom") || die &HTMLError("No /dev/urandom found!");
   foreach (1..$cryptsaltlen) {
@@ -63,7 +51,9 @@ sub CreateMD5Salt {
     $out .= $valid[ord($in) % ($#valid + 1)];
   }
   close F;
-  return $out;
+  my $md5 = $out;
+  if ($type == 1) { $md5 = "\$1\$$out\$"; }
+  return $md5
 }
 
 sub Encrypt { 
index c7caafd..02d3a5b 100755 (executable)
@@ -249,7 +249,7 @@ if (!($query->param('doupdate'))) {
     }
 
     # create a md5 crypted password
-    $newwebpassword = apache_md5_crypt($query->param('newwebpass'), &Util::CreateMD5Salt());
+    $newwebpassword = apache_md5_crypt($query->param('newwebpass'), &Util::CreateCryptSalt(2));
     
     &Util::LDAPUpdate($ldap, $editdn, 'webPassword', $newwebpassword);
   }