mirror of
https://github.com/webmin/webmin.git
synced 2025-08-16 14:51:18 +00:00
57 lines
1.4 KiB
Perl
Executable File
57 lines
1.4 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# Enable or disable a bunch of services
|
|
# XXX what about line changes due to modifications??
|
|
# XXX changelog / ideas
|
|
|
|
require './xinetd-lib.pl';
|
|
&ReadParse();
|
|
|
|
@conf = &get_xinetd_config();
|
|
@ids = split(/\0/, $in{'serv'});
|
|
($defs) = grep { $_->{'name'} eq 'defaults' } @conf;
|
|
foreach $m (@{$defs->{'members'}}) {
|
|
$ddisable{$m->{'value'}} = $m if ($m->{'name'} eq 'disabled');
|
|
}
|
|
|
|
&lock_file($config{'xinetd_conf'});
|
|
if ($in{'enable'}) {
|
|
# Enable all selected
|
|
foreach $id (@ids) {
|
|
@conf = &get_xinetd_config();
|
|
$xinet = $conf[$id];
|
|
&lock_file($xinet->{'file'});
|
|
$q = $xinet->{'quick'};
|
|
$dis = $q->{'disable'}->[0] eq 'yes' || $ddisable{$id};
|
|
if ($dis) {
|
|
&set_member_value($xinet, 'disable', 'no');
|
|
&modify_xinet($xinet);
|
|
if ($ddisable{$oldid}) {
|
|
# Take out old global disabled
|
|
&delete_xinet($ddisable{$oldid});
|
|
}
|
|
push(@servs, $xinet->{'value'});
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
# Disable all selected
|
|
foreach $id (@ids) {
|
|
@conf = &get_xinetd_config();
|
|
$xinet = $conf[$id];
|
|
&lock_file($xinet->{'file'});
|
|
$q = $xinet->{'quick'};
|
|
$dis = $q->{'disable'}->[0] eq 'yes' || $ddisable{$id};
|
|
if (!$dis) {
|
|
&set_member_value($xinet, 'disable', 'yes');
|
|
&modify_xinet($xinet);
|
|
push(@servs, $xinet->{'value'});
|
|
}
|
|
}
|
|
}
|
|
|
|
&unlock_all_files();
|
|
&webmin_log($in{'enable'} ? "enable" : "disable", undef, scalar(@ids),
|
|
{ 'servs' => \@servs });
|
|
&redirect("");
|
|
|