X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=ud-fingerserv;h=14444a7f13b2ba461981a1feff25dd84eb3b6305;hb=refs%2Fheads%2Fsalsa;hp=1c977d8c4049567cca88f312eebf2dbfc6351f1d;hpb=25237fb08bb0b71e7d9d158068daf35438ade274;p=mirror%2Fuserdir-ldap.git diff --git a/ud-fingerserv b/ud-fingerserv index 1c977d8..14444a7 100755 --- a/ud-fingerserv +++ b/ud-fingerserv @@ -3,16 +3,18 @@ # (c) 1999 Randolph Chung. Licensed under the GPL. # (c) 2004 Martin Schulze. Licensed under the GPL. +# Copyright (c) 2008 Peter Palfrader use lib '/var/www/userdir-ldap/'; #use lib '/home/randolph/projects/userdir-ldap/web'; use strict vars; use IO::Handle; use IO::Socket; +use Socket qw(:addrinfo); use POSIX qw(:sys_wait_h); use Getopt::Std; use Util; -use Net::LDAP qw(:all); +use Net::LDAP; # Global settings... my %config = &Util::ReadConfigFile; @@ -43,9 +45,9 @@ $SIG{CHLD} = \&Reaper; &help if (defined($opts{h})); my $logfh; -unless ($opt{i} || $opt{f}) { - die "Need logfile unless running foreground\n" unless (defined($opt{l})); - open ($logfh, $opt{l}) or die "Can't open logfile: $!\n"; +unless ($opts{i} || $opts{f}) { + die "Need logfile unless running foreground\n" unless (defined($opts{l})); + open ($logfh, $opts{l}) or die "Can't open logfile: $!\n"; } else { $logfh = \*STDOUT; } @@ -76,7 +78,7 @@ if (!$use_inetd) { Listen => SOMAXCONN, Reuse => 1); - mydie "Cannot listen on finger port" unless $server; + mydie("Cannot listen on finger port") unless $server; &log("[Server listening for connections]"); my ($pid, $client, $hostinfo); @@ -84,7 +86,7 @@ if (!$use_inetd) { while ($client = $server->accept()) { &log("Forking to handle client request") if (defined($opts{v})); next if $pid = fork; # parent - mydie "fork: $!" unless defined $pid; + mydie("fork: $!") unless defined $pid; # child $client->autoflush(1); @@ -101,8 +103,8 @@ if (!$use_inetd) { &log("inetd mode"); my $sockaddr = getpeername(STDIN); if ($sockaddr) { - my ($port, $addr) = unpack_sockaddr_in(getpeername(STDIN)); - &log(sprintf("[Connect from %s (%s)]", gethostbyaddr($addr, AF_INET), inet_ntoa($addr))); + my ($err, $hostname, $servicename) = getnameinfo($sockaddr, NI_NUMERICHOST|NI_NUMERICSERV); + &log(sprintf("[Connect from %s:%s]", $hostname, $servicename)); } else { &log("[Connect via terminal]"); }