%PDF- %PDF-
Direktori : /usr/share/webmin/init/ |
Current File : //usr/share/webmin/init/save_launchd.cgi |
#!/usr/bin/perl # Create, update or delete a launchd service require './init-lib.pl'; &error_setup($text{'launchd_err'}); $access{'bootup'} || &error($text{'edit_ecannot'}); &ReadParse(); @launchds = &list_launchd_agents(); # Get the service if (!$in{'new'}) { ($u) = grep { $_->{'name'} eq $in{'name'} } @launchds; $u || &error($text{'launchd_egone'}); } if ($in{'start'} || $in{'stop'} || $in{'restart'}) { # Just redirect to the start page &redirect("mass_launchd.cgi?d=".&urlize($in{'name'})."&". ($in{'start'} ? "start=1" : $in{'restart'} ? "restart=1" : "stop=1"). "&return=".&urlize($in{'name'})); exit; } if ($in{'delete'}) { # Delete the service &delete_launchd_agent($in{'name'}); &webmin_log("delete", "launchd", $in{'name'}); } elsif ($in{'reload'}) { # Re-load the service from its config file &system_logged("launchctl unload ".quotemeta($u->{'file'})." 2>&1"); &system_logged("launchctl load ".quotemeta($u->{'file'})." 2>&1"); &webmin_log("reload", "launchd", $in{'name'}); } elsif ($in{'new'}) { # Validate inputs and check for clash $in{'name'} =~ /^[a-z0-9\.\_\-]+$/i || &error($text{'launchd_ename'}); ($clash) = grep { $_->{'name'} eq $in{'name'} } @launchds; $clash && &error($text{'launchd_eclash'}); $in{'atstart'} =~ /\S/ || &error($text{'launchd_estart'}); # Create the config file &create_launchd_agent($in{'name'}, $in{'atstart'}, $in{'boot'}); &webmin_log("create", "launchd", $in{'name'}); } else { # Just save the config file $in{'conf'} =~ /\S/ || &error($text{'launchd_econf'}); $in{'conf'} =~ s/\r//g; &open_lock_tempfile(CONF, ">$u->{'file'}"); &print_tempfile(CONF, $in{'conf'}); &close_tempfile(CONF); &webmin_log("modify", "launchd", $in{'name'}); } &redirect("");