X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=web%2Fupdate.cgi;fp=web%2Fupdate.cgi;h=0000000000000000000000000000000000000000;hb=a580939d3d1f6dfb9b4a7aa2b75ed814e3f13cca;hp=4ad5b88ea1afb931bc8999ba6ac962d3a392d227;hpb=7e7c324ba0da291d664cca076c60f8cab215fc54;p=mirror%2Fuserdir-ldap.git diff --git a/web/update.cgi b/web/update.cgi deleted file mode 100755 index 4ad5b88..0000000 --- a/web/update.cgi +++ /dev/null @@ -1,146 +0,0 @@ -#!/usr/bin/perl - -# $Id: update.cgi,v 1.9 2003/03/13 04:25:56 rmurray Exp $ -# (c) 1999 Randolph Chung. Licensed under the GPL. - -use lib '.'; -use strict vars; -#use Apache::Registry; -use CGI; -use Util; -use URI::Escape; -use Net::LDAP qw(:all); - -my %config = &Util::ReadConfigFile; - -my $query = new CGI; -my $proto = ($ENV{HTTPS} ? "https" : "http"); - -my $id = $query->param('id'); -my $authtoken = $query->param('authtoken'); -my $password = &Util::CheckAuthToken($authtoken); -my $editdn = $query->param('editdn'); - -if (!($id && $password)) { - print "Location: $proto://$ENV{SERVER_NAME}/$config{webloginurl}\n\n"; - exit; -} - -my $ldap; - -sub DieHandler { - $ldap->unbind if (defined($ldap)); -} - -$SIG{__DIE__} = \&DieHandler; - -$ldap = Net::LDAP->new($config{ldaphost}); -my $auth = 0; -my $mesg; -$mesg = $ldap->bind($editdn, password => $password); -$mesg->sync; -$auth = ($mesg->code == LDAP_SUCCESS); - -if (!$auth) { - $ldap->unbind; - &Util::HTMLError("You have not been authenticated. Please Login"); -} - -# Authenticated.... -# Get our entry... -$mesg = $ldap->search(base => $editdn, - filter => "uid=*"); -$mesg->code && &Util::HTMLError($mesg->error); - -my $entries = $mesg->as_struct; -if ($mesg->count != 1) { - # complain and quit -} - -my @dns = keys(%$entries); -my $entry = $entries->{$dns[0]}; - -if (!($query->param('doupdate'))) { - # Not yet update, just fill in the form with the current values - my %data; - - # Fill in %data - # First do the easy stuff - this catches most of the cases - foreach (keys(%$entry)) { - $data{$_} = $entry->{$_}->[0]; - } - - # Now we have to fill in the rest that needs some processing... - $data{id} = $id; - $data{authtoken} = $authtoken; - $data{editdn} = $editdn; - $data{staddress} = $entry->{postaladdress}->[0]; - $data{staddress} =~ s/\$/\n/; - $data{countryname} = &Util::LookupCountry($data{c}); - - $data{email} = join(", ", @{$entry->{emailforward}}); - - # finally we can send output... - my ($sub, $substr); - &Util::HTMLSendHeader; - open (F, "<$config{webupdatehtml}") || &Util::HTMLError($!); - while () { - s/~(.+?)~/$data{$1}/g; - print; - } - close F; - -} else { - # Actually update stuff... - my ($newpassword, $newstaddress); - - &Util::FixParams($query); - - if (($query->param('labeledurl')) && - ($query->param('labeledurl') !~ /^https?:\/\//i)) { - &Util::HTMLError("Your homepage URL is invalid"); - } - - if ($query->param('newpass') && $query->param('newpassvrfy')) { - if ($query->param('newpass') ne $query->param('newpassvrfy')) { - # passwords don't match... - &Util::HTMLError("The passwords you specified do not match. Please go back and try again."); - } - # create a md5 crypted password - $newpassword = '{crypt}'.crypt($query->param('newpass'), &Util::CreateCryptSalt(1)); - - &Util::LDAPUpdate($ldap, $editdn, 'userPassword', $newpassword); - &Util::UpdateAuthToken($authtoken, $query->param('newpass')); - } - - $newstaddress = $query->param('staddress'); - $newstaddress =~ s/\n/\$/m; - - my ($lat, $long); - ($lat, $long) = &Util::CheckLatLong($query->param('latitude'), - $query->param('longitude')); - - &Util::LDAPUpdate($ldap, $editdn, 'postalAddress', $newstaddress); - &Util::LDAPUpdate($ldap, $editdn, 'l', $query->param('l')); - &Util::LDAPUpdate($ldap, $editdn, 'latitude', $lat); - &Util::LDAPUpdate($ldap, $editdn, 'longitude', $long); - &Util::LDAPUpdate($ldap, $editdn, 'c', $query->param('country')); - &Util::LDAPUpdate($ldap, $editdn, 'postalcode', $query->param('postalcode')); - &Util::LDAPUpdate($ldap, $editdn, 'telephoneNumber', $query->param('telephonenumber')); - &Util::LDAPUpdate($ldap, $editdn, 'facsimileTelephoneNumber', $query->param('facsimiletelephonenumber')); - &Util::LDAPUpdate($ldap, $editdn, 'loginShell', $query->param('loginshell')); - &Util::LDAPUpdate($ldap, $editdn, 'emailForward', $query->param('email')); - &Util::LDAPUpdate($ldap, $editdn, 'privatesub', $query->param('privatesub')); - &Util::LDAPUpdate($ldap, $editdn, 'ircNick', $query->param('ircnick')); - &Util::LDAPUpdate($ldap, $editdn, 'icquin', $query->param('icquin')); - &Util::LDAPUpdate($ldap, $editdn, 'labeledUrl', $query->param('labeledurl')); - &Util::LDAPUpdate($ldap, $editdn, 'onvacation', $query->param('onvacation')); - - # when we are done, reload the page with the updated details. - my $url = "$proto://$ENV{SERVER_NAME}/$config{webupdateurl}?id=$id&authtoken=$authtoken&editdn="; - $url .= uri_escape($editdn, "\x00-\x40\x7f-\xff"); - print "Location: $url\n\n"; -} - -$ldap->unbind; -