DTA-CAB
view release on metacpan or search on metacpan
CAB/Server/HTTP/UNIX.pm view on Meta::CPAN
##-- setup socket ownership
my $sockuid = (($srv->{socketUser}//'') =~ /^[0-9]+$/
? $srv->{socketUser}
: getpwnam($srv->{socketUser}//''));
my $sockgid = (($srv->{socketGroup}//'') =~ /^[0-9]+$/
? $srv->{socketGroup}
: getgrnam($srv->{socketGroup}//''));
if (defined($sockuid) || defined($sockgid)) {
$sockuid //= $>;
$sockgid //= $);
$srv->vlog('info', "setting socket ownership (".scalar(getpwuid $sockuid).".".scalar(getgrgid $sockgid).") on $sockpath");
chown($sockuid, $sockgid, $sockpath)
or $srv->logconfess("prepareLocal(): failed to set ownership for socket '$sockpath': $!");
foreach my $dir (reverse @{$srv->{_socketDirs}||[]}) {
$srv->vlog('info', "setting directory ownership (".scalar(getpwuid $sockuid).".".scalar(getgrgid $sockgid).") on $dir");
chown($sockuid, $sockgid, $dir)
or $srv->logconfess("prepareLocal(): failed to set ownership for directory '$dir': $!");
}
}
##-- setup socket permissions
if ( ($srv->{socketPerms}//'') ne '' ) {
my $sockperms = oct($srv->{socketPerms});
$srv->vlog('info', sprintf("setting socket permissions (0%03o) on %s", $sockperms, $sockpath));
chmod($sockperms, $sockpath)
CAB/Server/HTTP/UNIX.pm view on Meta::CPAN
${*$sock}{'peerenv'} = \%env;
}
## $str = $sock->peerstr()
## $str = $sock->peerstr($uid,$gid,$pid)
## + returns stringified unix peer credentials: "${USER}.${GROUP}[${PID}]"
sub peerstr {
my ($sock,$pid,$uid,$gid) = @_;
($pid,$uid,$gid) = $sock->peercred() if (@_ < 4);
return (
(defined($uid) ? (getpwuid($uid)//'?') : '?')
.'.'
.(defined($gid) ? (getgrgid($gid)//'?') : '?')
.':'
.(defined($pid) ? (basename(pid_cmd($pid)//'?')."[$pid]") : '?[?]')
);
}
## $host = peerhost()
## + for relayed connections, gets underlying TCP peer via socat environment
## + for unix connections, returns UNIX credentials as as for peerstr()
( run in 0.359 second using v1.01-cache-2.11-cpan-8d75d55dd25 )