X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=web%2Flogin.cgi;h=0058aa9f9c25f68e98cdcad310c0f9dc48bc68e5;hb=4cdbd261b99eb273c7edf84471ff840f5426c3ef;hp=243c4273fb928ed7a21249ba9304ae895e6afea7;hpb=ce6aaa8a27251ca8fa9f1658711f9da4c620015d;p=mirror%2Fuserdir-ldap.git diff --git a/web/login.cgi b/web/login.cgi index 243c427..0058aa9 100755 --- a/web/login.cgi +++ b/web/login.cgi @@ -1,6 +1,6 @@ #!/usr/bin/perl -# $Id: login.cgi,v 1.5 1999/12/13 05:03:47 tausq Exp $ +# $Id: login.cgi,v 1.8 2003/03/13 04:25:56 rmurray Exp $ # (c) 1999 Randolph Chung. Licensed under the GPL. use lib '.'; @@ -17,8 +17,8 @@ my %config = &Util::ReadConfigFile; my $query = new CGI; my $proto = ($ENV{HTTPS} ? "https" : "http"); -if (!($query->param('username')) || !($query->param('password'))) { - print "Location: $proto://$ENV{SERVER_NAME}/$config{webloginurl}\n\n"; +if ($proto eq "http" || !($query->param('username')) || !($query->param('password'))) { + print "Location: https://$ENV{SERVER_NAME}/$config{webloginurl}\n\n"; exit; } @@ -36,6 +36,25 @@ my $mesg = $ldap->bind($binddn, password => $password); $mesg->sync; if ($mesg->code == LDAP_SUCCESS) { + # HACK HACK HACK + # Check for md5 password, and update as necessary + $mesg = $ldap->search(base => $config{basedn}, + filter => "(uid=$username)"); + $mesg->code && &Util::HTMLError($mesg->error); + my $entries = $mesg->as_struct; + my $dn = (keys %$entries)[0]; + my $oldpassword = $entries->{$dn}->{userpassword}->[0]; + if ($oldpassword !~ /^{crypt}\$1\$/) { + # Update their password to md5 + open (LOG, ">>$config{weblogfile}"); + print LOG scalar(localtime); + print LOG ": Updating MD5 password for $dn\n"; + close LOG; + my $newpassword = '{crypt}'.crypt($password, &Util::CreateCryptSalt(1)); + &Util::LDAPUpdate($ldap, $dn, 'userPassword', $newpassword); + } + ## END HACK HACK HACK + my $cryptid = &Util::SavePasswordToFile($username, $password, $cipher); if ($query->param('update')) {