Handle hostnames with upper-case letters
[webmin.git] / apache / perchild.pl
1 # perchild.pl
2 # Defines editors for the per-child UID module in apache 2.0
3 # The actual functions for most of these are still in core.pl
4
5 sub perchild_directives
6 {
7 local $rv;
8 $rv = [ [ 'AssignUserId', 0, 8, 'virtual virtualonly', 2.0 ],
9         [ 'ChildPerUserId', 1, 8, 'global', 2.0 ],
10         [ 'CoreDumpDirectory', 0, 9, 'global', 2.0 ],
11         [ 'BindAddress Listen Port', 1, 1, 'global', 2.0, 10 ],
12         [ 'ListenBacklog', 0, 1, 'global', 2.0 ],
13         [ 'LockFile', 0, 9, 'global', 2.0 ],
14         [ 'MaxRequestsPerChild', 0, 0, 'global', 2.0 ],
15         [ 'MinSpareThreads', 0, 0, 'global', 2.0 ],
16         [ 'MaxSpareThreads', 0, 0, 'global', 2.0 ],
17         [ 'MaxThreadsPerChild', 0, 0, 'global', 2.0 ],
18         [ 'NumServers', 0, 0, 'global', 2.0 ],
19         [ 'PidFile', 0, 9, 'global', 2.0 ],
20         [ 'ScoreBoardFile', 0, 9, 'global', 2.0 ],
21         [ 'SendBufferSize', 0, 1, 'global', 2.0 ],
22         [ 'StartThreads', 0, 0, 'global', 2.0 ],
23         [ 'Group', 0, 8, 'global', 2.0, 9 ],
24         [ 'User', 0, 8, 'global', 2.0, 10 ] ];
25 return &make_directives($rv, $_[0], "perchild");
26 }
27
28 sub edit_AssignUserId
29 {
30 local $rv;
31 $rv .= sprintf "<input type=radio name=AssignUserId_def value=1 %s> %s\n",
32                 $_[0] ? "" : "checked", $text{'core_none'};
33 $rv .= sprintf "<input type=radio name=AssignUserId_def value=0 %s>\n",
34                 $_[0] ? "checked" : "";
35 $rv .= &text('perchild_assignug',
36         "<input name=AssignUserId_uid size=8 value='$_[0]->{'words'}->[0]'>",
37         "<input name=AssignUserId_gid size=8 value='$_[0]->{'words'}->[1]'>");
38 return (2, $text{'perchild_assign'}, $rv);
39 }
40 sub save_AssignUserId
41 {
42 if ($in{'AssignUserId_def'}) {
43         return ( [ ] );
44         }
45 else {
46         $in{'AssignUserId_uid'} =~ /^-?\d+$/ || &error($text{'perchild_euid'});
47         $in{'AssignUserId_gid'} =~ /^-?\d+$/ || &error($text{'perchild_egid'});
48         return ( [ "$in{'AssignUserId_uid'} $in{'AssignUserId_gid'}" ] );
49         }
50 }
51
52 sub edit_ChildPerUserId
53 {
54 local $rv = "<table border>\n".
55             "<tr $tb> <td><b>$text{'perchild_num'}</b></td>\n".
56             "<td><b>$text{'perchild_uid'}</b></td>\n".
57             "<td><b>$text{'perchild_gid'}</b></td> </tr>\n";
58 local ($c, $i = 0);
59 foreach $c (@{$_[0]}, undef) {
60         local @v = $c ? @{$c->{'words'}} : ();
61         $rv .= "<tr $cb>\n";
62         $rv .= "<td><input name=ChildPerUserId_n_$i size=5 value='$v[2]'></td>\n";
63         $rv .= "<td><input name=ChildPerUserId_u_$i size=8 value='$v[0]'></td>\n";
64         $rv .= "<td><input name=ChildPerUserId_g_$i size=8 value='$v[1]'></td>\n";
65         $rv .= "</tr>\n";
66         $i++;
67         }
68 $rv .= "</table>\n";
69 return (2, $text{'perchild_child'}, $rv);
70 }
71 sub save_ChildPerUserId
72 {
73 local (@rv, $i);
74 for($i=0; defined($in{"ChildPerUserId_n_$i"}); $i++) {
75         next if (!$in{"ChildPerUserId_n_$i"});
76         $in{"ChildPerUserId_n_$i"} =~ /^[1-9]\d*$/ ||
77                 &error($text{'perchild_enum'});
78         $in{"ChildPerUserId_u_$i"} =~ /^-?\d+$/ ||
79                 &error($text{'perchild_euid'});
80         $in{"ChildPerUserId_g_$i"} =~ /^-?\d+$/ ||
81                 &error($text{'perchild_egid'});
82         push(@rv, $in{"ChildPerUserId_u_$i"}." ".$in{"ChildPerUserId_g_$i"}." ".
83                   $in{"ChildPerUserId_n_$i"});
84         }
85 return ( \@rv );
86 }
87
88 sub edit_MinSpareThreads
89 {
90 return (1,
91         $text{'worker_minspare'},
92         &opt_input($_[0]->{'value'},"MinSpareThreads",$text{'default'}, 4));
93 }
94 sub save_MinSpareThreads
95 {
96 return &parse_opt("MinSpareThreads", '^\d+$',
97                   $text{'worker_eminspare'});
98 }
99
100 sub edit_MaxSpareThreads
101 {
102 return (1,
103         $text{'worker_maxspare'},
104         &opt_input($_[0]->{'value'},"MaxSpareThreads",$text{'default'}, 4));
105 }
106 sub save_MaxSpareThreads
107 {
108 return &parse_opt("MaxSpareThreads", '^\d+$',
109                   $text{'worker_emaxspare'});
110 }
111
112 sub edit_StartThreads
113 {
114 return (1,
115         $text{'perchild_sthreads'},
116         &opt_input($_[0]->{'value'},"StartThreads",$text{'default'}, 4));
117 }
118 sub save_StartThreads
119 {
120 return &parse_opt("StartThreads", '^\d+$',
121                   $text{'perchild_esthreads'});
122 }
123
124 sub edit_NumServers
125 {
126 return (1,
127         $text{'perchild_numservers'},
128         &opt_input($_[0]->{'value'},"NumServers",$text{'default'}, 4));
129 }
130 sub save_NumServers
131 {
132 return &parse_opt("NumServers", '^\d+$',
133                   $text{'perchild_enumservers'});
134 }
135
136 sub edit_MaxThreadsPerChild
137 {
138 return (1,
139         $text{'perchild_maxthreads'},
140         &opt_input($_[0]->{'value'},"MaxThreadsPerChild",$text{'default'}, 4));
141 }
142 sub save_MaxThreadsPerChild
143 {
144 return &parse_opt("MaxThreadsPerChild", '^\d+$',
145                   $text{'perchild_emaxthreads'});
146 }