Revert "drop overrids - LDAP has it on its own"
[mirror/userdir-ldap-cgi.git] / search.cgi
index e3eb882..fade2a7 100755 (executable)
@@ -11,17 +11,17 @@ use strict vars;
 use CGI;
 use Util;
 use URI::Escape;
-use Net::LDAP qw(:all);
+use Net::LDAP qw(LDAP_SUCCESS LDAP_PROTOCOL_ERROR);
 
 # Global settings...
 my %config = &Util::ReadConfigFile;
 
 my $query = new CGI;
-my $id = $query->param('id');
+my $id = uri_escape($query->param('id'));
 my $authtoken = $query->param('authtoken');
 my $password = &Util::CheckAuthToken($authtoken);
-my $dosearch = $query->param('dosearch');
-my $searchdn = $query->param('searchdn');
+my $dosearch = uri_escape($query->param('dosearch'));
+my $searchdn = uri_escape($query->param('searchdn'));
 my $ldap = undef;
 
 my $proto = ($ENV{HTTPS} ? "https" : "http");
@@ -30,7 +30,7 @@ sub DieHandler {
   $ldap->unbind if (defined($ldap));
 }
 
-$SIG{__DIE__} = \&DieHandler;
+#$SIG{__DIE__} = \&DieHandler;
 
 if (!$dosearch) {
   # No action yet, send back the search form...
@@ -117,14 +117,18 @@ if (!$dosearch) {
   # Format the output....
   foreach $dn (sort {$entries->{$a}->{sn}->[0] <=> $entries->{$b}->{sn}->[0]} keys(%$entries)) {
     my $ok = 0;
+    # These are local variables.. i have enough global vars as it is... <sigh>
+    my ($ufdn, $login, $name, $icquin, $jabberjid, $email, $fingerprint,
+       $address, $latlong, $vacation, $created, $modified, $lastseen, $gender) = undef;
+
+    # Last seen information (Echelon)
+    $lastseen = &Util::FormatLastSeen($entries->{$dn}->{"activity-pgp"}->[0],
+                                      $entries->{$dn}->{"activity-from"}->[0]);
+
     $data = $entries->{$dn};
     for my $key (keys %{$data}) {
       @{$data->{$key}} = map { CGI::escapeHTML($_); } @{$data->{$key}};
     }
-
-    # These are local variables.. i have enough global vars as it is... <sigh>
-    my ($ufdn, $login, $name, $icquin, $jabberjid, $email, $fingerprint,
-       $address, $latlong, $vacation, $created, $modified, $lastseen, $gender) = undef;
     
     $ufdn = $dn; # Net::LDAP does not have a dn2ufn function, but this is close enough :)
     
@@ -179,10 +183,6 @@ if (!$dosearch) {
     $modified = &Util::FormatTimestamp($data->{modifytimestamp}->[0]);
     $created =  &Util::FormatTimestamp($data->{createtimestamp}->[0]);
 
-    # Last seen information (Echelon)
-    $lastseen = &Util::FormatLastSeen($data->{"activity-pgp"}->[0],
-                                      $data->{"activity-from"}->[0]);
-
     # Link in the debian login id 
     $login = $data->{uid}->[0];
     $login = "$login";
@@ -191,7 +191,7 @@ if (!$dosearch) {
     $vacation = $data->{onvacation}->[0] if ($authtoken && $id);
 
     # OK, now generate output... (i.e. put the output into the buffer )
-    $outsub{searchresults} .= '<table border=2 cellpadding=2 cellspacing=0 bgcolor="#DDDDDD" width="80%">';
+    $outsub{searchresults} .= '<table class="debform" border=2 cellpadding=2 cellspacing=0 bgcolor="#DDDDDD" width="80%">';
     $outsub{searchresults} .= '<tr><th bgcolor="#44CCCC" colspan=2><font size=+1>'."$name</font> ";
     $outsub{searchresults} .= "($ufdn)</th></tr>\n";