Handle hostnames with upper-case letters
[webmin.git] / xinetd / mass_enable.cgi
1 #!/usr/local/bin/perl
2 # Enable or disable a bunch of services
3 # XXX what about line changes due to modifications??
4 # XXX changelog / ideas
5
6 require './xinetd-lib.pl';
7 &ReadParse();
8
9 @conf = &get_xinetd_config();
10 @ids = split(/\0/, $in{'serv'});
11 ($defs) = grep { $_->{'name'} eq 'defaults' } @conf;
12 foreach $m (@{$defs->{'members'}}) {
13         $ddisable{$m->{'value'}} = $m if ($m->{'name'} eq 'disabled');
14         }
15
16 &lock_file($config{'xinetd_conf'});
17 if ($in{'enable'}) {
18         # Enable all selected
19         foreach $id (@ids) {
20                 @conf = &get_xinetd_config();
21                 $xinet = $conf[$id];
22                 &lock_file($xinet->{'file'});
23                 $q = $xinet->{'quick'};
24                 $dis = $q->{'disable'}->[0] eq 'yes' || $ddisable{$id};
25                 if ($dis) {
26                         &set_member_value($xinet, 'disable', 'no');
27                         &modify_xinet($xinet);
28                         if ($ddisable{$oldid}) {
29                                 # Take out old global disabled
30                                 &delete_xinet($ddisable{$oldid});
31                                 }
32                         push(@servs, $xinet->{'value'});
33                         }
34                 }
35         }
36 else {
37         # Disable all selected
38         foreach $id (@ids) {
39                 @conf = &get_xinetd_config();
40                 $xinet = $conf[$id];
41                 &lock_file($xinet->{'file'});
42                 $q = $xinet->{'quick'};
43                 $dis = $q->{'disable'}->[0] eq 'yes' || $ddisable{$id};
44                 if (!$dis) {
45                         &set_member_value($xinet, 'disable', 'yes');
46                         &modify_xinet($xinet);
47                         push(@servs, $xinet->{'value'});
48                         }
49                 }
50         }
51
52 &unlock_all_files();
53 &webmin_log($in{'enable'} ? "enable" : "disable", undef, scalar(@ids),
54             { 'servs' => \@servs });
55 &redirect("");
56