diff options
| author | Guilhem Moulin <guilhem@fripost.org> | 2017-06-28 22:33:37 +0200 | 
|---|---|---|
| committer | Guilhem Moulin <guilhem@fripost.org> | 2017-06-28 22:33:37 +0200 | 
| commit | 4a730d372818f86ae42dbe1d89ec63fc67c9f462 (patch) | |
| tree | f98bf6e24a4e0284472703b2e60c449037c24b9d /webserver | |
| parent | 871aa1f53d428f31902b4428f8bae11ccea8c5f7 (diff) | |
| parent | 99902d8737cd01b2788ec51b06d314a36135be2c (diff) | |
Merge branch 'master' into debian
Diffstat (limited to 'webserver')
| -rwxr-xr-x | webserver | 26 | 
1 files changed, 16 insertions, 10 deletions
| @@ -38,12 +38,9 @@ use warnings;  # not a problem since FD can be bound as root prior to the execve(2).  use Errno 'EINTR'; -use Socket qw/AF_INET AF_INET6/; +use Socket qw/AF_UNIX AF_INET AF_INET6/;  # Untaint and fdopen(3) the listening socket -# TODO: we could even take multiple file descriptors and select(2) -# between them; this could be useful to listen on two sockets, one for -# INET and one for INET6  (shift @ARGV // die) =~ /\A(\d+)\z/ or die;  open my $S, '+<&=', $1 or die "fdopen $1: $!";  my $ROOT = '/.well-known/acme-challenge'; @@ -57,13 +54,22 @@ sub info($$$) {      # get a string representation of the peer's address      my $fam = Socket::sockaddr_family($sockaddr); -    my (undef, $ip) = -        $fam == AF_INET  ? Socket::unpack_sockaddr_in($sockaddr)  : -        $fam == AF_INET6 ? Socket::unpack_sockaddr_in6($sockaddr) : -        die; -    my $addr = Socket::inet_ntop($fam, $ip); +    my $peer; -    print STDERR $msg." from [$addr]".(defined $req ? ": $req" : "")."\n"; +    if ($fam == AF_UNIX) { +        $peer = Socket::unpack_sockaddr_un($sockaddr); +    } else { +        my (undef, $ip) = +            $fam == AF_INET  ? Socket::unpack_sockaddr_in($sockaddr)  : +            $fam == AF_INET6 ? Socket::unpack_sockaddr_in6($sockaddr) : +            die; +        $peer = Socket::inet_ntop($fam, $ip); +    } + +    $msg .= " from [$peer]" if defined $peer and $peer ne ''; +    $msg .= ": $req"        if defined $req; + +    print STDERR $msg, "\n";  }  while (1) { | 
