Current File : //usr/share/webmin/init/updateboot.pl |
#!/usr/bin/perl
# updateboot.pl
# Called by setup.sh to update boot script
$no_acl_check++;
require './init-lib.pl';
$product = $ARGV[0];
$< == 0 || die "updateboot.pl must be run as root";
# Update boot script
if ($product) {
if ($init_mode eq "systemd") {
my $reload_daemon = sub {
system("systemctl daemon-reload >/dev/null 2>&1");
sleep(2);
};
# Save status of service
my $status = &backquote_logged("systemctl is-enabled ".
quotemeta($product).".service 2>&1");
$status = &trim($status) if ($status);
# Delete all possible service files
my $systemd_root = &get_systemd_root(undef, 1);
foreach my $p (
"/etc/systemd/system",
"/usr/lib/systemd/system",
"/lib/systemd/system") {
unlink("$p/$product.service");
unlink("$p/$product");
}
$reload_daemon->();
my $temp = &transname();
my $killcmd = &has_command('kill');
$ENV{'WEBMIN_KILLCMD'} = $killcmd;
©_source_dest("$root_directory/webmin-systemd", "$temp");
my $lref = &read_file_lines($temp);
foreach my $l (@{$lref}) {
$l =~ s/(WEBMIN_[A-Z]+)/$ENV{$1}/g;
}
&flush_file_lines($temp);
copy_source_dest($temp, "$systemd_root/$product.service");
$reload_daemon->();
if ($status eq "disabled") {
system("systemctl disable ".
quotemeta($product).".service >/dev/null 2>&1");
}
elsif ($status eq "masked") {
system("systemctl mask ".
quotemeta($product).".service >/dev/null 2>&1");
}
else {
system("systemctl enable ".
quotemeta($product).".service >/dev/null 2>&1");
}
}
elsif (-d "/etc/init.d") {
copy_source_dest("$root_directory/webmin-init", "/etc/init.d/$product");
system("chkconfig --add $product >/dev/null 2>&1");
}
}