added email attribute
[mirror/userdir-ldap.git] / ud-fingerserv
index 7060fa4..c581b3d 100755 (executable)
@@ -1,9 +1,9 @@
 #!/usr/bin/perl
-# $Id: ud-fingerserv,v 1.4 1999/10/16 21:44:30 tausq Exp $
+# $Id: ud-fingerserv,v 1.8 1999/10/17 02:01:28 tausq Exp $
 
 # (c) 1999 Randolph Chung. Licensed under the GPL. <tausq@debian.org>
 
-#use lib '/home/randolph/projects/userdir-ldap/web';
+use lib '/var/www/userdir-ldap/';
 use strict vars;
 #use Apache::Registry;
 use IO::Handle;
@@ -16,7 +16,7 @@ use Net::LDAP qw(:all);
 # Global settings...
 my %config = &Util::ReadConfigFile;
 my %opts;
-getopt("iqh", \%opts);
+getopts("iqhv", \%opts);
 my $use_inetd = $config{use_inetd} || $opts{i}; 
 $| = 1;
 
@@ -24,12 +24,13 @@ my %attrs = (
   'cn' => 'First name',
   'mn' => 'Middle name',
   'sn' => 'Last name',
+  'email' => 'Email',
   'keyfingerprint' => 'Fingerprint',
   'key' => 'Key block',
   'ircnick' => 'IRC nickname'
 );
 
-my @summarykeys = ('cn', 'mn', 'sn', 'ircnick', 'keyfingerprint', 'key');
+my @summarykeys = ('cn', 'mn', 'sn', 'email', 'ircnick', 'keyfingerprint', 'key');
 
 $SIG{__DIE__} = \&DieHandler;
 $SIG{INT} = \&DieHandler;
@@ -42,7 +43,7 @@ $SIG{CHLD} = \&Reaper;
 my $ldap = Net::LDAP->new($config{ldaphost}) || die $1; 
 $ldap->bind;
 
-if ($use_inetd == 0) {
+if (!$use_inetd) {
   &log("Binding to port 79") if (defined($opts{v}));
   my $server = IO::Socket::INET->new(Proto => 'tcp', 
                                      LocalPort => 'finger(79)',
@@ -71,7 +72,6 @@ if ($use_inetd == 0) {
     $client->close;
   }
 } else { # inetd
-  $opts{q} = 1; # Temp, until i figure out wth tcpd doesn't pass parameters to this program properly
   &log("inetd mode");
   my $sockaddr = getpeername(STDIN);
   my ($port, $addr) = unpack_sockaddr_in(getpeername(STDIN));
@@ -115,6 +115,12 @@ sub ProcessQuery {
     foreach (@{$data->{keyfingerprint}}) {
       push (@{$data->{key}}, "\n".&Util::FetchKey($_));
     }
+    
+    $data->{email}->[0] = sprintf("%s %s %s <%s>", $data->{cn}->[0],
+                                  $data->{mn}->[0], $data->{sn}->[0],
+                                 $data->{uid}->[0]."\@$config{emailappend}");
+                                 
+    $data->{email}->[0] =~ s/\s+/ /g;                            
  
     print $client "$dn\n";
     if (!$fields) {