'unblock' => 'unblock',
'flush' => 'flush',
'reload' => 'reload',
+ 'reload-ignore-list' => 'reload-ignore-list',
'logrotate' => 'logrotate',
);
## mechanism for guardian. The server function creates an UNIX
## socket.
#
-sub Server () {
+sub Server ($) {
+ my $socket_owner = shift;
+
# If the path for the socketfile does not exist, try to
# create it.
unless (-d "$socketpath") {
- mkdir("$socketpath") or die "Could not create $socketpath: $!\n";
+ mkdir("$socketpath") or die "Could not create $socketpath: $!";
}
# Delete an existing socket file.
if (-e "$socketfile") {
unlink $socketfile
- or die "Could not release existing socket file: $!\n";
+ or die "Could not release existing socket file: $!";
}
# Create a new UNIX socket.
Local => $socketfile,
Listen => SOMAXCONN,
Type => SOCK_STREAM,
- ) or die "Could not create socket: $!\n";
+ ) or die "Could not create socket: $!";
+
+
+ # Translate the given user/group name into ID values.
+ if (defined ($socket_owner)) {
+ # Splitt provided user/group into single arguments.
+ my ($username, $groupname) = split(/:/, $socket_owner);
+
+ # Get the ID for the given user name.
+ my $uid = getpwnam($username) or die "Could not get an UID for $username: $!";
+
+ # Get the ID for given group name.
+ my $gid = getgrnam($groupname) or die "Could not get a GID for $groupname: $!";
+
+ # Set new ownership for the socket file.
+ chown($uid, $gid, "$socketfile") or die "Could not change ownership to ($uid:$gid) for $socketfile: $!";
+ }
# Return the server object.
return $server;
if ($optarg) {
# The message is valid, return the event and
# the optional argument.
- return "$supported_commands{$command} $optarg";
+ return "$supported_commands{$command} $optarg Socket User-requested action.";
} else {
# Only return the event for the recieved command.
return "$supported_commands{$command}";