mirror of
https://github.com/webmin/webmin.git
synced 2025-07-21 23:40:34 +00:00
82 lines
2.2 KiB
Perl
Executable File
82 lines
2.2 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# Create, update or delete an upstart service
|
|
|
|
require './init-lib.pl';
|
|
&error_setup($text{'upstart_err'});
|
|
$access{'bootup'} || &error($text{'edit_ecannot'});
|
|
&ReadParse();
|
|
@upstarts = &list_upstart_services();
|
|
$cfile = "/etc/init/$in{'name'}.conf";
|
|
|
|
# Get the service
|
|
if (!$in{'new'}) {
|
|
($u) = grep { $_->{'name'} eq $in{'name'} } @upstarts;
|
|
$u || &error($text{'upstart_egone'});
|
|
$u->{'legacy'} && &error($text{'upstart_elegacy'});
|
|
}
|
|
|
|
if ($in{'start'} || $in{'stop'}) {
|
|
# Just redirect to the start page
|
|
&redirect("mass_upstarts.cgi?d=".&urlize($in{'name'})."&".
|
|
($in{'start'} ? "start=1" : "stop=1").
|
|
"&return=".&urlize($in{'name'}));
|
|
exit;
|
|
}
|
|
|
|
if ($in{'delete'}) {
|
|
# Delete the service
|
|
&disable_at_boot($in{'name'});
|
|
&stop_upstart_service($in{'name'});
|
|
&delete_upstart_service($in{'name'});
|
|
&webmin_log("delete", "upstart", $in{'name'});
|
|
}
|
|
elsif ($in{'new'}) {
|
|
# Validate inputs and check for clash
|
|
$in{'name'} =~ /^[a-z0-9\.\_\-]+$/i ||
|
|
&error($text{'upstart_ename'});
|
|
($clash) = grep { $_->{'name'} eq $in{'name'} } @upstarts;
|
|
$clash && &error($text{'upstart_eclash'});
|
|
$in{'desc'} || &error($text{'upstart_edesc'});
|
|
$in{'server'} =~ /\S/ || &error($text{'upstart_eserver'});
|
|
($bin, $args) = split(/\s+/, $in{'server'});
|
|
&has_command($bin) || &error($text{'upstart_eserver2'});
|
|
$in{'server'} =~ /;|\&\&|\|\|/ && &error($text{'upstart_eserver3'});
|
|
$in{'prestart'} =~ s/\r//g;
|
|
|
|
# Create the config file
|
|
&create_upstart_service($in{'name'}, $in{'desc'}, $in{'server'},
|
|
$in{'prestart'}, $in{'fork'});
|
|
|
|
# Enable at boot if selected
|
|
if ($in{'boot'} == 0) {
|
|
&disable_at_boot($in{'name'});
|
|
}
|
|
else {
|
|
&enable_at_boot($in{'name'});
|
|
}
|
|
|
|
&webmin_log("create", "upstart", $in{'name'});
|
|
}
|
|
else {
|
|
# Just save the config file
|
|
$in{'conf'} =~ /\S/ || &error($text{'upstart_econf'});
|
|
$in{'conf'} =~ s/\r//g;
|
|
&open_lock_tempfile(CONF, ">$cfile");
|
|
&print_tempfile(CONF, $in{'conf'});
|
|
&close_tempfile(CONF);
|
|
|
|
# Enable or disable
|
|
if (defined($in{'boot'})) {
|
|
if ($in{'boot'} == 0) {
|
|
&disable_at_boot($in{'name'});
|
|
}
|
|
else {
|
|
&enable_at_boot($in{'name'});
|
|
}
|
|
}
|
|
|
|
&webmin_log("modify", "upstart", $in{'name'});
|
|
}
|
|
&redirect("");
|
|
|