$ENV{"QUERY_STRING"} = $querystring;
$ENV{"MINISERV_CONFIG"} = $config_file;
$ENV{"HTTPS"} = "ON" if ($use_ssl || $config{'inetd_ssl'});
+ $ENV{"MINISERV_PID"} = $miniserv_main_pid;
$ENV{"SESSION_ID"} = $session_id if ($session_id);
$ENV{"LOCAL_USER"} = $localauth_user if ($localauth_user);
$ENV{"MINISERV_INTERNAL"} = $miniserv_internal if ($miniserv_internal);
open(PIDFILE, ">$config{'pidfile'}");
printf PIDFILE "%d\n", getpid();
close(PIDFILE);
+$miniserv_main_pid = getpid();
}
# lock_user_password(user)
$ENV{"DOCUMENT_REALROOT"} = $root0;
$ENV{"MINISERV_CONFIG"} = $config_file;
$ENV{"HTTPS"} = "ON" if ($use_ssl);
+ $ENV{"MINISERV_PID"} = $miniserv_main_pid;
$ENV{"SCRIPT_FILENAME"} = $config{'webmincron_wrapper'};
if ($ENV{"SCRIPT_FILENAME"} =~ /^\Q$root0\E(\/.*)$/) {
$ENV{"SCRIPT_NAME"} = $1;
};
# Run the wrapper script by evaling it
- $pkg = "webmincron"; # XXX
+ $pkg = "webmincron";
$0 = $config{'webmincron_wrapper'};
@ARGV = ( $cron );
$main_process_id = $$;
my ($pid, $addr, $i);
$miniserv{'inetd'} && return;
my @oldst = stat($miniserv{'pidfile'});
- open(PID, $miniserv{'pidfile'}) || &error("Failed to open PID file");
- chop($pid = <PID>);
- close(PID);
- if (!$pid) { &error("Invalid PID file"); }
+ $pid = $ENV{'MINISERV_PID'};
+ if (!$pid) {
+ open(PID, $miniserv{'pidfile'}) ||
+ &error("Failed to open PID file $miniserv{'pidfile'}");
+ chop($pid = <PID>);
+ close(PID);
+ $pid || &error("Invalid PID file $miniserv{'pidfile'}");
+ }
# Just signal miniserv to restart
&kill_logged('HUP', $pid) || &error("Incorrect Webmin PID $pid");
# Send a USR1 signal to re-read the config
my ($pid, $addr, $i);
$miniserv{'inetd'} && return;
- open(PID, $miniserv{'pidfile'}) || &error("Failed to open PID file");
- chop($pid = <PID>);
- close(PID);
- if (!$pid) { &error("Invalid PID file"); }
+ $pid = $ENV{'MINISERV_PID'};
+ if (!$pid) {
+ open(PID, $miniserv{'pidfile'}) ||
+ &error("Failed to open PID file $miniserv{'pidfile'}");
+ chop($pid = <PID>);
+ close(PID);
+ $pid || &error("Invalid PID file $miniserv{'pidfile'}");
+ }
&kill_logged('USR1', $pid) || &error("Incorrect Webmin PID $pid");
# Make sure this didn't kill Webmin!
'MINISERV_CONFIG', 'SCRIPT_NAME', 'SERVER_ADMIN', 'CONTENT_LENGTH',
'HTTPS', 'FOREIGN_MODULE_NAME', 'FOREIGN_ROOT_DIRECTORY',
'SCRIPT_FILENAME', 'PATH_TRANSLATED', 'BASE_REMOTE_USER',
- 'DOCUMENT_REALROOT', 'MINISERV_CONFIG', 'MYSQL_PWD') {
+ 'DOCUMENT_REALROOT', 'MINISERV_CONFIG', 'MYSQL_PWD',
+ 'MINISERV_PID') {
delete($ENV{$e});
}
}