Server IP : 195.201.23.43 / Your IP : 3.129.194.144 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/webmin/init/ |
Upload File : |
#!/usr/bin/perl # atboot.pl # Called by setup.sh to have webmin started at boot time $no_acl_check++; require './init-lib.pl'; $product = $ARGV[0] || "webmin"; $ucproduct = ucfirst($product); $< == 0 || die "atboot.pl must be run as root"; my $kill = &has_command("kill"); if ($init_mode eq "osx") { # Darwin System &enable_at_boot($product, "Webmin administration server", "$config_directory/.start-init >/dev/null 2>&1 </dev/null", "$config_directory/.stop-init"); } elsif ($init_mode eq "local") { # Add to the boot time rc script $lref = &read_file_lines($config{'local_script'}); for($i=0; $i<@$lref && $lref->[$i] !~ /^exit\s/; $i++) { } splice(@$lref, $i, 0, "$config_directory/.start-init >/dev/null 2>&1 </dev/null # Start $ucproduct"); &flush_file_lines(); } elsif ($init_mode eq "init") { # Create a bootup action, if missing @start = &get_start_runlevels(); $fn = &action_filename($product); if (!-r $fn) { &open_tempfile(ACTION,">$fn"); $desc = "Start/stop $ucproduct"; &print_tempfile(ACTION, "#!/bin/sh\n"); $start_order = "9" x $config{'order_digits'}; $stop_order = "9" x $config{'order_digits'}; if ($config{'chkconfig'}) { # Redhat-style description: and chkconfig: lines &print_tempfile(ACTION, "# description: $desc\n"); &print_tempfile(ACTION, "# chkconfig: $config{'chkconfig'} ", "$start_order $stop_order\n"); } elsif ($config{'init_info'}) { # Suse-style init info section &print_tempfile(ACTION, "### BEGIN INIT INFO\n", "# Provides: $product\n", "# Required-Start: \$network \$syslog\n", "# Required-Stop: \$network\n", "# Default-Start: ",join(" ", @start),"\n", "# Default-Stop:\n", "# Description: $desc\n", "### END INIT INFO\n"); } else { # Just description in a comment &print_tempfile(ACTION, "# $desc\n"); } &print_tempfile(ACTION, "\n"); &print_tempfile(ACTION, "case \"\$1\" in\n"); &print_tempfile(ACTION, "'start')\n"); &print_tempfile(ACTION, "\t$config_directory/.start-init >/dev/null 2>&1 </dev/null\n"); &print_tempfile(ACTION, "\tRETVAL=\$?\n"); if ($config{'subsys'}) { &print_tempfile(ACTION, "\tif [ \"\$RETVAL\" = \"0\" ]; then\n"); &print_tempfile(ACTION, "\t\ttouch $config{'subsys'}/$product\n"); &print_tempfile(ACTION, "\tfi\n"); } &print_tempfile(ACTION, "\t;;\n"); &print_tempfile(ACTION, "'stop')\n"); &print_tempfile(ACTION, "\t$config_directory/.stop-init\n"); &print_tempfile(ACTION, "\tRETVAL=\$?\n"); if ($config{'subsys'}) { &print_tempfile(ACTION, "\tif [ \"\$RETVAL\" = \"0\" ]; then\n"); &print_tempfile(ACTION, "\t\trm -f $config{'subsys'}/$product\n"); &print_tempfile(ACTION, "\tfi\n"); } &print_tempfile(ACTION, "\t;;\n"); &print_tempfile(ACTION, "'status')\n"); &print_tempfile(ACTION, "\tpidfile=`grep \"^pidfile=\" $config_directory/miniserv.conf | sed -e 's/pidfile=//g'`\n"); &print_tempfile(ACTION, "\tif [ -s \$pidfile ]; then\n"); &print_tempfile(ACTION, "\t\tpid=`cat \$pidfile`\n"); &print_tempfile(ACTION, "\t\t$kill -0 \$pid >/dev/null 2>&1\n"); &print_tempfile(ACTION, "\t\tif [ \"\$?\" = \"0\" ]; then\n"); &print_tempfile(ACTION, "\t\t\techo \"$product (pid \$pid) is running\"\n"); &print_tempfile(ACTION, "\t\t\tRETVAL=0\n"); &print_tempfile(ACTION, "\t\telse\n"); &print_tempfile(ACTION, "\t\t\techo \"$product is stopped\"\n"); &print_tempfile(ACTION, "\t\t\tRETVAL=1\n"); &print_tempfile(ACTION, "\t\tfi\n"); &print_tempfile(ACTION, "\telse\n"); &print_tempfile(ACTION, "\t\techo \"$product is stopped\"\n"); &print_tempfile(ACTION, "\t\tRETVAL=1\n"); &print_tempfile(ACTION, "\tfi\n"); &print_tempfile(ACTION, "\t;;\n"); &print_tempfile(ACTION, "'restart')\n"); &print_tempfile(ACTION, "\t$config_directory/.stop-init ; $config_directory/.start-init\n"); &print_tempfile(ACTION, "\tRETVAL=\$?\n"); &print_tempfile(ACTION, "\t;;\n"); &print_tempfile(ACTION, "*)\n"); &print_tempfile(ACTION, "\techo \"Usage: \$0 { start | stop }\"\n"); &print_tempfile(ACTION, "\tRETVAL=1\n"); &print_tempfile(ACTION, "\t;;\n"); &print_tempfile(ACTION, "esac\n"); &print_tempfile(ACTION, "exit \$RETVAL\n"); &close_tempfile(ACTION); chmod(0755, $fn); } # Add whatever links are needed to start at boot &enable_at_boot($product); print STDERR "Created init script $fn\n"; } elsif ($init_mode eq "win32") { # Create win32 service $perl_path = &get_perl_path(); &enable_at_boot($product, $ucproduct, $perl_path." "."e_path("$root_directory/miniserv.pl")." "."e_path("$config_directory/miniserv.conf")); } elsif ($init_mode eq "systemd") { # Create systemd &enable_at_boot( $product, "$ucproduct server daemon", "$root_directory/miniserv.pl $config_directory/miniserv.conf", "$kill \$MAINPID", undef, { 'pidfile' => "$var_directory/miniserv.pid", 'opts' => { 'env' => '"PERLLIB=' . $root_directory . '"', 'stop' => "$kill \$MAINPID", 'reload' => "$kill -HUP \$MAINPID", 'type' => 'forking', 'restart' => 'always', 'restartsec' => '2s', 'timeout' => '15s', 'timeoutstopsec' => '300s', }}, ); } elsif ($init_mode eq "rc" || $init_mode eq "upstart") { # Create RC or upstart script &enable_at_boot($product, $ucproduct, "$config_directory/.start-init", "$config_directory/.stop-init", undef, { 'fork' => 1, 'pidfile' => $var_directory."/miniserv.pid" }); } elsif ($init_mode eq "launchd") { # Create launchd script &create_launchd_agent(&launchd_name($product), "$config_directory/.start-init --nofork", 1); } $config{'atboot_product'} = $product; &save_module_config();Private