Handle hostnames with upper-case letters
[webmin.git] / proftpd / mod_ldap.pl
1 # mod_ldap.pl
2 use Data::Dumper;
3 sub mod_ldap_directives
4 {
5 local $rv = [
6         [ 'LDAPServer', 0, 4, 'root', 1.15 ],
7         [ 'LDAPDoAuth', 0, 4, 'root', 1.15 ],
8         [ 'LDAPDNInfo', 0, 4, 'root', 1.15 ],
9         [ 'LDAPDoUIDLookups', 0, 4, 'root', 1.15 ],
10         [ 'LDAPDoGIDLookups', 0, 4, 'root', 1.15 ],
11         [ 'LDAPAuthBinds', 0, 4, 'root', 1.15 ],
12         [ 'LDAPDefaultUID', 0, 4, 'root', 1.15 ],
13         [ 'LDAPDefaultGID', 0, 4, 'root', 1.15 ],
14         [ 'LDAPHomedirOnDemand', 0, 4, 'root', 1.15 ],
15         [ 'LDAPNegativeCache', 0, 4, 'root', 1.15 ],
16         [ 'LDAPQueryTimeout', 0, 4, 'root', 1.15 ],
17         [ 'LDAPDefaultAuthScheme', 0, 4, 'root', 1.15 ],
18
19                 ];
20 return &make_directives($rv, $_[0], "mod_ldap");
21 }
22
23 sub edit_LDAPServer {
24 local ($rv);
25 my $param = $_[0]->{'value'};
26 $name="LDAPServerp";
27 $namep=$name.'_m';
28 my ($port) =$param =~ /.+:(.+)/;
29  (my $serveur,my $port)=$param =~ /([^:]+):?(.*)/;
30 $rv=sprintf "<b>Server:</b> <input name=LDAPServer size=20 value='%s'>\n",
31          $serveur;
32 $rv .= sprintf "<b> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Port:</b><input type=radio
33   name=$namep value=0 %s> %s\n",
34                 !$port  ? "checked" : "", $text{'default'};
35 $rv .= sprintf "<input type=radio name=$namep value=1 %s> \n",
36                 $port ? "checked" : "" ;
37 $rv .= sprintf "<input name=$name size=6 value='%s'><br>\n",
38                 $port ? $port: "";
39
40 return (2, "LDAP  Server info",$rv);
41
42
43 }
44
45 sub edit_LDAPQueryTimeout {
46 local ($rv);
47 my $param = $_[0]->{'value'};
48 $name="LDAPQueryTimeout";
49 $namep=$name.'_m';
50 $rv = sprintf "<input type=radio
51   name=$namep value=0 %s> %s\n",
52                 !$param  ? "checked" : "", $text{'default'};
53 $rv .= sprintf "<input type=radio name=$namep value=1 %s> \n",
54                 $param ? "checked" : "" ;
55 $rv .= sprintf "<input name=$name size=6 value='%s'><br>\n",
56                 $param ? $param: "";
57
58 return (2, "LDAP  Query timeout",$rv);
59
60
61 }
62
63
64
65 sub edit_LDAPDoAuth {
66
67 local ($rv);
68 my @tab =@_;
69 my $name ='LDAPDoAuthp';
70 my $param = $tab[0]->{'value'};
71 my $option = $tab[0]->{'words'}->[0];
72 my $dn = $tab[0]->{'words'}->[1];
73
74 $namep=$name.'_m';
75
76 $rv = sprintf "<input type=radio  name=$namep value=0 %s> %s\n",
77                 !$option  ? "checked" : "", $text{'default'};
78 $rv .= sprintf "<input type=radio name=$namep value=1 %s> %s\n",
79                 $option =~/off/i ? "checked" : "" ,"Off";
80 $rv .= sprintf "<input type=radio name=$namep value=2 %s> %s \n",
81                 $option =~/on/i ? "checked" : "" ,"On";
82
83
84 $rv .= sprintf "<input name=$name size=40 value='%s'> %s\n",
85                 $dn ? $dn: "","<b>auth base prefix</b><br>";
86
87 return (2,"LDAP Do authentification",$rv);
88
89
90 }
91 sub edit_LDAPDefaultUID {
92
93 local ($rv);
94 my @tab =@_;
95 my $name ='LDAPDefaultUID';
96 my $param = $tab[0]->{'value'};
97
98 $rv = sprintf "<input name=$name size=6 value='%s'> %s\n",
99                 $param ? $param: "","<br>";
100
101 return (1,"LDAP Default UID",$rv);
102
103
104 }
105 sub edit_LDAPHomedirOnDemand {
106
107 local ($rv);
108 my @tab =@_;
109 my $name ='LDAPHomedirOnDemand';
110 my $param = $tab[0]->{'value'};
111
112 $namep=$name.'_m';
113
114 $rv = sprintf "<input type=radio  name=$namep value=0 %s> %s\n",
115                 !$param  ? "checked" : "", $text{'default'};
116 $rv .= sprintf "<input type=radio name=$namep value=1 %s> %s\n",
117                 $param =~/off/i ? "checked" : "" ,"Off";
118 $rv .= sprintf "<input type=radio name=$namep value=2 %s> %s \n",
119                 $param =~/on/i ? "checked" : "" ,"On";
120
121 return (1,"LDAP Homedir on demand",$rv);
122
123
124 }
125 sub edit_LDAPNegativeCache {
126
127 local ($rv);
128 my @tab =@_;
129 my $name ='LDAPNegativeCache';
130 my $param = $tab[0]->{'value'};
131
132 $namep=$name.'_m';
133
134 $rv = sprintf "<input type=radio  name=$namep value=0 %s> %s\n",
135                 !$param  ? "checked" : "", $text{'default'};
136 $rv .= sprintf "<input type=radio name=$namep value=1 %s> %s\n",
137                 $param =~/off/i ? "checked" : "" ,"Off";
138 $rv .= sprintf "<input type=radio name=$namep value=2 %s> %s \n",
139                 $param =~/on/i ? "checked" : "" ,"On";
140
141 return (1,"LDAP negative cache",$rv);
142
143
144 }
145
146
147
148 sub edit_LDAPDefaultGID {
149
150 local ($rv);
151 my @tab =@_;
152 my $name ='LDAPDefaultGID';
153 my $param = $tab[0]->{'value'};
154
155 $rv = sprintf "<input name=$name size=6 value='%s'> %s\n",
156                 $param ? $param: "","<br>";
157
158 return (1,"LDAP Default GID",$rv);
159
160
161 }
162
163 sub edit_LDAPDoUIDLookups {
164
165 local ($rv);
166 my @tab =@_;
167 my $name ='LDAPDoUIDLookups';
168 my $param = $tab[0]->{'value'};
169 my $option = $tab[0]->{'words'}->[0];
170 my $dn = $tab[0]->{'words'}->[1];
171
172 $namep=$name.'_m';
173
174 $rv = sprintf "<input type=radio  name=$namep value=0 %s> %s\n",
175                 !$option  ? "checked" : "", $text{'default'};
176 $rv .= sprintf "<input type=radio name=$namep value=1 %s> %s\n",
177                 $option =~/off/i ? "checked" : "" ,"Off";
178 $rv .= sprintf "<input type=radio name=$namep value=2 %s> %s \n",
179                 $option =~/on/i ? "checked" : "" ,"On";
180
181
182 $rv .= sprintf "<input name=$name size=40 value='%s'> %s\n",
183                 $dn ? $dn: "","<b>uid base prefix</b><br>";
184
185 return (2,"LDAP Do UID Lookups",$rv);
186
187
188 }
189
190 sub edit_LDAPDoGIDLookups {
191
192 local ($rv);
193 my @tab =@_;
194 my $name ='LDAPDoGIDLookups';
195 my $param = $tab[0]->{'value'};
196 my $option = $tab[0]->{'words'}->[0];
197 my $dn = $tab[0]->{'words'}->[1];
198
199 $namep=$name.'_m';
200
201 $rv = sprintf "<input type=radio  name=$namep value=0 %s> %s\n",
202                 !$option  ? "checked" : "", $text{'default'};
203 $rv .= sprintf "<input type=radio name=$namep value=1 %s> %s\n",
204                 $option =~/off/i ? "checked" : "" ,"Off";
205 $rv .= sprintf "<input type=radio name=$namep value=2 %s> %s \n",
206                 $option =~/on/i ? "checked" : "" ,"On";
207
208
209 $rv .= sprintf "<input name=$name size=40 value='%s'> %s\n",
210                 $dn ? $dn: "","<b>gid base prefix</b><br>";
211
212 return (2,"LDAP Do GID Lookups",$rv);
213
214
215 }
216
217 #sub edit_LDAPXort {
218 #local ($rv);
219 #return (1, "LDAPPort",
220 #sprintf "<input name=LDAPXPort size=6 value='%s'>\n",
221 #        $_[0]->{'value'});
222 #}
223
224
225 sub edit_LDAPDNInfo {
226
227 local ($rv);
228 #return (2, "LDAPDNinfo",
229 $rv =sprintf "<b>BindDN:</b><input name=LDAPDNinfodn size=30 value='%s'>\n",
230          $_[0]->{'words'}->[0];
231 $rv .=sprintf "<b>&nbsp&nbsp&nbsp&nbsp PasswordDN</b><input name=LDAPDNinfopasswd size=20 value='%s'>\n",
232          $_[0]->{'words'}->[1];
233
234 return(2,"LDAP DN info",$rv);
235 }
236 sub edit_LDAPAuthBinds {
237 local ($rv);
238 my @tab =@_;
239 my $name ='LDAPAuthBinds';
240 my $option = $tab[0]->{'value'};
241 #my $dn = $tab[0]->{'words'}->[1];
242 $rv = sprintf "<br><input type=radio  name=$name value=0 %s> %s\n",
243                 !$option  ? "checked" : "", $text{'default'};
244 $rv .= sprintf "<input type=radio name=$name value=1 %s> %s\n",
245                 $option =~/off/i ? "checked" : "" ,"Off";
246 $rv .= sprintf "<input type=radio name=$name value=2 %s> %s \n",
247                 $option =~/on/i ? "checked" : "" ,"On";
248
249
250 return (2,"LDAP auth bind ",$rv);
251
252
253 }
254 sub edit_LDAPDefaultAuthScheme {
255 local ($rv);
256 my @tab =@_;
257 my $name ='LDAPDefaultAuthScheme';
258 my $option = $tab[0]->{'value'};
259 #my $dn = $tab[0]->{'words'}->[1];
260 $rv = sprintf "<br><input type=radio  name=$name value=0 %s> %s\n",
261                 !$option  ? "checked" : "", $text{'default'};
262 $rv .= sprintf "<input type=radio name=$name value=1 %s> %s\n",
263                 $option =~/crypt/i ? "checked" : "" ,"crypt";
264 $rv .= sprintf "<input type=radio name=$name value=2 %s> %s \n",
265                 $option =~/clear/i ? "checked" : "" ,"clear";
266
267
268 return (2,"LDAP default auth scheme ",$rv);
269
270
271 }
272
273 sub save_LDAPAuthBinds{
274 my $option =$in{'LDAPAuthBinds'};
275
276 return ([ ]) unless $option;
277
278 return (['off']) if $option==1;
279 return (['on']) if $option==2;;
280 return ([ ]);
281 }
282 sub save_LDAPDefaultUID{
283 my $option =$in{'LDAPDefaultUID'};
284
285 return ([ ]) unless $option;
286
287 return (["$option"]) if $option;
288 }
289 sub save_LDAPDefaultGID{
290 my $option =$in{'LDAPDefaultGID'};
291
292 return ([ ]) unless $option;
293
294 return (["$option"]) if $option;
295 }
296
297
298
299 sub save_LDAPServer {
300 my $param =$in{'LDAPServer'};
301 if (($in{'LDAPServerp_m'} == 1) &&  ($in{'LDAPServerp'})){
302 $param.=":". $in{'LDAPServerp'};
303 }
304 return ( [ $param ] ) if $param;
305 return ( [ ] ) unless $param;
306 }
307 sub save_LDAPQueryTimeout {
308 my $param =$in{'LDAPQueryTimeout'};
309 if (($in{'LDAPQueryTimeout_m'} == 1) &&  ($in{'LDAPQueryTimeout'})){
310 $param= $in{'LDAPQueryTimeout'};
311 } else {undef $param} ;
312 return ( [ $param ] ) if $param;
313 return ( [ ] ) unless $param;
314 }
315
316 sub save_LDAPDNInfo {
317 my $dn = $in{'LDAPDNinfodn'} ;
318 my $dnp = $in{'LDAPDNinfopasswd'} ;
319
320 return([ "\"$dn\" \"$dnp\""]) if $dn;
321 return ([ ]) unless $dn;
322 }
323 sub save_LDAPDoAuth {
324
325
326 my $option = $in{'LDAPDoAuthp_m'} ;
327 return ([ ]) unless $option;
328 return (['off']) if $option==1;
329 my $dn=$in{'LDAPDoAuthp'}; 
330 return([ "on \"$dn\""]) if $dn;
331 return ([ ]);
332 }
333 sub save_LDAPHomedirOnDemand {
334
335
336 my $option = $in{'LDAPHomedirOnDemand_m'} ;
337 return ([ ]) unless $option;
338 return (['off']) if $option==1;
339 return(['on']) if  $option==2;
340
341 }
342 sub save_LDAPDefaultAuthScheme {
343
344
345 my $option = $in{'LDAPDefaultAuthScheme'} ;
346 return ([ ]) unless $option;
347 return ([ ]) if  $option==0;
348 return (['"crypt"']) if $option==1;
349 return(['"clear"']) if  $option==2;
350
351 }
352
353 sub save_LDAPNegativeCache {
354
355
356 my $option = $in{'LDAPNegativeCache_m'} ;
357 return ([ ]) unless $option;
358 return (['off']) if $option==1;
359 return(['on']) if  $option==2;
360
361 }
362
363
364
365 sub save_LDAPDoUIDLookups {
366
367
368
369 my $option = $in{'LDAPDoUIDLookups_m'} ;
370 return ([ ]) unless $option;
371 return (['off']) if $option==1;
372 my $dn=$in{'LDAPDoUIDLookups'}; 
373 return([ "on \"$dn\""]) if $dn;
374 return ([ ]);
375 }
376 sub save_LDAPDoGIDLookups {
377
378
379
380 my $option = $in{'LDAPDoGIDLookups_m'} ;
381 return ([ ]) unless $option;
382 return (['off']) if $option==1;
383 my $dn=$in{'LDAPDoGIDLookups'}; 
384 return([ "on \"$dn\""]) if $dn;
385 return ([ ]);
386 }
387