]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - html/cgi-bin/samba.cgi
05be43f203dc2d2c8508685767929506d5a05404
[people/pmueller/ipfire-2.x.git] / html / cgi-bin / samba.cgi
1 #!/usr/bin/perl
2 #
3 # IPFire CGIs
4 #
5 # This code is distributed under the terms of the GPL
6 #
7 # (c) The IPFire Team
8 #
9
10 use strict;
11 # enable only the following on debugging purpose
12 use warnings;
13 use CGI::Carp 'fatalsToBrowser';
14
15 require '/var/ipfire/general-functions.pl';
16 require "${General::swroot}/lang.pl";
17 require "${General::swroot}/header.pl";
18
19 my %sambasettings = ();
20 my %checked = ();
21 my %netsettings = ();
22 my %ovpnsettings = ();
23 my $message = "";
24 my $errormessage = "";
25 my $shareentry = "";
26 my @shares = ();
27 my @shareline = ();
28 my $shareconfigentry = "";
29 my @sharesconfig = ();
30 my @shareconfigline = ();
31 my $userentry = "";
32 my @user = ();
33 my @userline = ();
34 my @proto = ();
35 my %selected= () ;
36 my $sharefile = "/var/ipfire/samba/shares";
37 my $userfile = "/var/ipfire/samba/private/smbpasswd";
38 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
39 &General::readhash("${General::swroot}/ovpn/settings", \%ovpnsettings);
40
41 my %servicenames =
42 (
43 'SMB Daemon' => 'smbd',
44 'NetBIOS Nameserver' => 'nmbd',
45 'Winbind Daemon' => 'winbindd'
46 );
47
48 &Header::showhttpheaders();
49
50 $sambasettings{'WORKGRP'} = 'homeip.net';
51 $sambasettings{'NETBIOSNAME'} = 'IPFIRE';
52 $sambasettings{'SRVSTRING'} = 'Samba Server running on IPFire 2.0';
53 $sambasettings{'INTERFACES'} = '';
54 $sambasettings{'SECURITY'} = 'share';
55 $sambasettings{'OSLEVEL'} = '65';
56 $sambasettings{'GREEN'} = 'on';
57 $sambasettings{'BLUE'} = 'off';
58 $sambasettings{'ORANGE'} = 'off';
59 $sambasettings{'VPN'} = 'off';
60 $sambasettings{'WINSSRV'} = "$netsettings{'GREEN_NETADDRESS'}";
61 $sambasettings{'WINSSUPPORT'} = 'off';
62 $sambasettings{'OTHERINTERFACES'} = '';
63 $sambasettings{'GUESTACCOUNT'} = 'samba';
64 $sambasettings{'MAPTOGUEST'} = 'Never';
65 $sambasettings{'BINDINTERFACESONLY'} = 'True';
66 ### Values that have to be initialized
67 $sambasettings{'ACTION'} = '';
68
69 &General::readhash("${General::swroot}/samba/settings", \%sambasettings);
70 &Header::getcgihash(\%sambasettings);
71
72 &Header::openpage('Samba', 1, '');
73 &Header::openbigbox('100%', 'left', '', $errormessage);
74
75 ############################################################################################################################
76 ############################################################################################################################
77
78 if ($sambasettings{'ACTION'} eq 'smbuserdisable'){system('/usr/local/bin/sambactrl 1 $sambasettings{"NAME"}');}
79 if ($sambasettings{'ACTION'} eq 'smbuserenable'){system('/usr/local/bin/sambactrl 2 $sambasettings{"NAME"}');}
80 if ($sambasettings{'ACTION'} eq 'smbuserdelete'){system('/usr/local/bin/sambactrl 3 $sambasettings{"NAME"}');}
81 if ($sambasettings{'ACTION'} eq 'smbuseradd'){system('/usr/local/bin/sambactrl 4 $username $password');}
82 if ($sambasettings{'ACTION'} eq 'smbchangepw'){system('/usr/local/bin/sambactrl 5 $username $password');}
83 if ($sambasettings{'ACTION'} eq 'smbsharechange'){system('/usr/local/bin/sambactrl 7 $sambasettings{"SHARENAME"} $sambasettings{"SHAREOPTION"}');}
84 if ($sambasettings{'ACTION'} eq 'smbstart'){system('/usr/local/bin/sambactrl 8');}
85 if ($sambasettings{'ACTION'} eq 'smbstop'){system('/usr/local/bin/sambactrl 9');}
86
87 ############################################################################################################################
88 ############################################## Samba Share neu anlegen #####################################################
89
90 if ($sambasettings{'ACTION'} eq 'smbshareadd')
91 {
92 my $emptyline= "";
93 system('/usr/local/bin/sambactrl 6');
94 open (FILE, ">>${General::swroot}/samba/shares") or die "Can't save the shares settings: $!";
95 flock (FILE, 2);
96
97 print FILE <<END
98 $sambasettings{'SHAREOPTION'}
99 $emptyline
100 END
101 ;
102 close FILE;
103 }
104
105 ############################################################################################################################
106 ############################################################################################################################
107
108 if ($sambasettings{'ACTION'} eq $Lang::tr{'save'})
109 {
110 $sambasettings{'INTERFACES'} = '';
111 if ($checked{'GREEN'}){ $sambasettings{'INTERFACES'} = "$sambasettings{'INTERFACES'} $netsettings{'GREEN_DEV'}";}
112 if ($checked{'BLUE'}){ $sambasettings{'INTERFACES'} = "$sambasettings{'INTERFACES'} $netsettings{'BLUE_DEV'}";}
113 if ($checked{'ORANGE'}){ $sambasettings{'INTERFACES'} = "$sambasettings{'INTERFACES'} $netsettings{'ORANGE_DEV'}";}
114 if ($checked{'VPN'}){ $sambasettings{'INTERFACES'} = "$sambasettings{'INTERFACES'} $ovpnsettings{'DDEVICE'}";}
115 if ($sambasettings{'OTHERINTERFACES'} ne ''){ $sambasettings{'INTERFACES'} = "$sambasettings{'INTERFACES'} $sambasettings{'OTHERINTERFACES'}";}
116
117 ############################################################################################################################
118 ############################################################################################################################
119
120 &General::writehash("${General::swroot}/samba/settings", \%sambasettings);
121
122 open (FILE, ">${General::swroot}/samba/global") or die "Can't save the global settings: $!";
123 flock (FILE, 2);
124
125 print FILE <<END
126 # global.settings by IPFire Project
127
128 [global]
129 netbios name = $sambasettings{'NETBIOSNAME'}
130 server string = $sambasettings{'SRVSTRING'}
131 workgroup = $sambasettings{'WORKGRP'}
132
133 keep alive = 30
134 os level = $sambasettings{'OSLEVEL'}
135 fstype = NTFS
136
137 preferred master = yes
138 domain master = yes
139 local master = yes
140
141 kernel oplocks = false
142 map to guest = $sambasettings{'MAPTOGUEST'}
143 smb ports = 445 139
144 unix charset = CP850
145
146 security = $sambasettings{'SECURITY'}
147 encrypt passwords = yes
148 guest account = $sambasettings{'GUESTACCOUNT'}
149 unix password sync = no
150 null passwords = yes
151
152 bind interfaces only = $sambasettings{'BINDINTERFACESONLY'}
153 interfaces = $sambasettings{'INTERFACES'}
154 socket options = TCP_NODELAY IPTOS_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE
155
156 username level = 1
157 wins support = $sambasettings{'WINSSUPPORT'}
158 local master = yes
159
160 log file = /var/log/samba/samba-log.%m
161 lock directory = /var/lock/samba
162 pid directory = /var/run/
163
164 END
165 ;
166 close FILE;
167 }
168 &General::readhash("${General::swroot}/samba/settings", \%sambasettings);
169
170 if ($errormessage) {
171 &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
172 print "<class name='base'>$errormessage\n";
173 print "&nbsp;</class>\n";
174 &Header::closebox();
175 }
176
177 $checked{'WINSSUPPORT'}{$sambasettings{'WINSSUPPORT'}} = "checked='checked' ";
178 $checked{'GREEN'}{$sambasettings{'GREEN'}} = "checked='checked' ";
179 $checked{'BLUE'}{$sambasettings{'BLUE'}} = "checked='checked' ";
180 $checked{'ORANGE'}{$sambasettings{'ORANGE'}} = "checked='checked' ";
181 $checked{'VPN'}{$sambasettings{'VPN'}} = "checked='checked' ";
182
183 $selected{'MAPTOGUEST'}{$sambasettings{'MAPTOGUEST'}} = "selected='selected'";
184 $selected{'SECURITY'}{$sambasettings{'SECURITY'}} = "selected='selected'";
185
186 ############################################################################################################################
187 ############################################################################################################################
188
189 &Header::openbox('100%', 'center', 'Samba');
190 print <<END
191 <hr>
192 <table width='500px' cellspacing='0'><br>
193 END
194 ;
195 if ( $message ne "" ) {
196 print "<tr><td colspan='2' align='left'><font color='red'>$message</font>";
197 }
198 print <<END
199 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Alle Dienste</b></td></tr>
200 </table><table width='500px' cellspacing='0'>
201 END
202 ;
203 my $key = '';
204 foreach $key (sort keys %servicenames)
205 {
206 print "<tr><td align='left'>$key";
207 my $shortname = $servicenames{$key};
208 my $status = &isrunning($shortname);
209 print "$status</td>";
210 print <<END
211 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
212 <input type='hidden' name='ACTION' value='restart $shortname'>
213 <input type='image' src='/images/reload.gif'>
214 </form></td>
215 END
216 ;
217 }
218 print <<END
219 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
220 <table width='500px' cellspacing='0'><br>
221 <tr><td colspan='2' align='center'>
222 <input type='submit' name='ACTION' value='Start' />
223 <input type='submit' name='ACTION' value='Stop' />
224 <input type='submit' name='ACTION' value='$Lang::tr{'restart'}' />
225 </td></tr></form></table>
226
227 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
228 <table width='500px' cellspacing='0'><br>
229 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Basisoptionen</b></td></tr>
230 <tr><td align='left'>Workgroup:</td><td><input type='text' name='WORKGRP' value='$sambasettings{'WORKGRP'}' size="30"></td></tr>
231 <tr><td align='left'>NetBIOS-Name:</td><td><input type='text' name='NETBIOSNAME' value='$sambasettings{'NETBIOSNAME'}' size="30"></td></tr>
232 <tr><td align='left'>Server-String:</td><td><input type='text' name='SRVSTRING' value='$sambasettings{'SRVSTRING'}' size="30"></td></tr>
233 <tr><td align='left'>Interfaces:</td><td><input type='checkbox' name='VPN' $checked{'VPN'}{'on'}><font size='2' color='$Header::colourovpn'><b> OpenVpn - $ovpnsettings{'DDEVICE'}</td></tr>
234 <tr><td align='left'></td><td><input type='checkbox' name='GREEN' $checked{'GREEN'}{'on'}><font size='2' color='$Header::colourgreen'><b> $Lang::tr{'green'} - $netsettings{'GREEN_DEV'}</td></tr>
235 END
236 ;
237 if (&Header::blue_used()){
238 print <<END
239 <tr><td align='left'></td><td><input type='checkbox' name='BLUE' $checked{'BLUE'}{'on'}><font size='2' color='$Header::colourblue'><b> $Lang::tr{'wireless'} - $netsettings{'BLUE_DEV'}</td></tr>
240 END
241 ;
242 }
243 if (&Header::orange_used()){
244 print <<END
245 <tr><td align='left'></td><td><input type='checkbox' name='ORANGE' $checked{'ORANGE'}{'on'}><font size='2' color='$Header::colourorange'><b> $Lang::tr{'dmz'} - $netsettings{'ORANGE_DEV'}</td></tr>
246 END
247 ;
248 }
249 print <<END
250 <tr><td align='center'>weitere</td><td><input type='text' name='OTHERINTERFACES' value='$sambasettings{'OTHERINTERFACES'}' size="30"></td></tr>
251 <tr><td align='left'><br></td><td></td></tr>
252 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Sicherheitsoptionen</b></td></tr>
253 <tr><td align='left'>Security:</td><td><select name='SECURITY'>
254 <option value='share' $selected{'SECURITY'}{'share'}>Share</option>
255 <option value='user' $selected{'SECURITY'}{'user'}>User</option>
256 <option value='domain' $selected{'SECURITY'}{'domain'}>Domain</option>
257 <option value='ADS' $selected{'SECURITY'}{'ADS'}>ADS</option>
258 <option value='server' $selected{'SECURITY'}{'server'}>Server</option>
259
260 </select></td></tr>
261 <tr><td align='left'>Map to guest:</td><td><select name='MAPTOGUEST'>
262 <option value='Never' $selected{'MAPTOGUEST'}{'Never'}>Never</option>
263 <option value='Bad User' $selected{'MAPTOGUEST'}{'Bad User'}>Bad User</option>
264 <option value='Bad Password' $selected{'MAPTOGUEST'}{'Bad Password'}>Bad Password</option>
265 </select></td></tr>
266 <tr><td align='left'><br></td><td></td></tr>
267 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Browsingoptionen</b></td></tr>
268 <tr><td align='left'>OS Level:</td><td><input type='text' name='OSLEVEL' value='$sambasettings{'OSLEVEL'}' size="30"></td></tr>
269 <tr><td align='left'><br></td><td></td></tr>
270 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>WINS-Optionen</b></td></tr>
271 <tr><td align='left'>WINS-Server:</td><td><input type='text' name='WINSSRV' value='$sambasettings{'WINSSRV'}' size="30"></td></tr>
272 <tr><td align='left'>WINS-Support:</td><td>on <input type='radio' name='WINSSUPPORT' value='on' $checked{'WINSSUPPORT'}{'on'}>/
273 <input type='radio' name='WINSSUPPORT' value='off' $checked{'WINSSUPPORT'}{'off'}> off</td></tr>
274 <tr><td colspan='2' align='center'><input type='submit' name='ACTION' value=$Lang::tr{'save'}></td></tr>
275 </table>
276 </form>
277 END
278 ;
279 &Header::closebox();
280
281 if ($sambasettings{'SECURITY'} eq 'user')
282 {
283 &Header::openbox('100%', 'center', 'accounting - user Security');
284
285 print <<END
286 <hr>
287 <table width='500px' cellspacing='0'><br>
288 <tr><td colspan='6' align='left'>
289 <tr><td bgcolor='${Header::table1colour}' colspan='6' align='left'><b>Benutzerverwaltung</b>
290 <tr><td><u>Benutzername</u></td><td><u>Passwort</u></td><td><u>Status</u></td><td colspan='3' width="5"><u>Optionen</u></td></tr>
291 END
292 ;
293 open( FILE, "< $userfile") or die "Can't read user file: $!";
294 @user = <FILE>;
295 close(FILE);
296 foreach $userentry (sort @user)
297 {
298 @userline = split( /\:/, $userentry );
299 print <<END
300 <tr><td align='left'>$userline[0]</td><td>
301 END
302 ;
303 if ($userline[2] =~ m/N/){
304 print <<END
305 nicht gesetzt</td><td>
306 END
307 ;
308 }else{
309 print <<END
310 gesetzt</td><td>
311 END
312 ;
313 }
314 if ($userline[2] =~ m/D/){
315 print <<END
316 aktiv</td>
317 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
318 <input type='hidden' name='NAME' value='$userline[0]'>
319 <input type='hidden' name='ACTION' value='userdisable'>
320 <input type='image' alt='Deaktivieren' src='/images/off.gif'>
321 </form></td>
322 END
323 ;
324 }else{
325 print <<END
326 inaktiv</td>
327 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
328 <input type='hidden' name='NAME' value='$userline[0]'>
329 <input type='hidden' name='ACTION' value='userenable'>
330 <input type='image' alt='Aktivieren' src='/images/on.gif'>
331 </form></td>
332 END
333 ;
334 }
335 print <<END
336 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
337 <input type='hidden' name='NAME' value='$userline[0]'>
338 <input type='hidden' name='ACTION' value='userchangepw'>
339 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
340 </form></td>
341 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
342 <input type='hidden' name='NAME' value='$userline[0]'>
343 <input type='hidden' name='ACTION' value='userdelete'>
344 <input type='image' alt='Loeschen' src='/images/delete.gif'>
345 </form></td>
346 </td></tr>
347 END
348 ;
349 }
350 print <<END
351 </table>
352 <table width='50px' cellspacing='0'><br>
353 <tr><td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
354 <input type='hidden' name='ACTION' value='useradd'>
355 <input type='image' alt='Benutzer anlegen' src='/images/add.gif'></form></td>
356 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
357 <input type='hidden' name='ACTION' value='usercaption'>
358 <input type='image' alt='Legende' src='/images/info.gif'></form>
359 </td><tr>
360 </table>
361 END
362 ;
363 if ($sambasettings{'ACTION'} eq 'usercaption')
364 {
365 print <<END
366 <table width='500px' cellspacing='0'><br>
367 <tr><td><b>Legende:</b></td></tr>
368 <tr><td><img src='/images/add.gif'>Benutzer neu anlegen</td></tr>
369 <tr><td><img src='/images/on.gif'>Benutzer aktivieren</td></tr>
370 <tr><td><img src='/images/off.gif'>Benutzer deaktivieren</td></tr>
371 <tr><td><img src='/images/edit.gif'>Passwort wechseln</td></tr>
372 <tr><td><img src='/images/delete.gif'>Benutzer loeschen</td></tr>
373 </table>
374 END
375 ;
376 }
377
378 if ($sambasettings{'ACTION'} eq 'userchangepw')
379 {
380 my $username = "$sambasettings{'NAME'}";
381 my $password = 'samba';
382 print <<END
383 <hr>
384 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
385 <table width='500px' cellspacing='0'><br>
386 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Passwort wechseln</b></td></tr>
387 <tr><td align='left'>Benutzername</td><td><input type='text' name='USERNAME' value='$username' size="30"></td></tr>
388 <tr><td align='left'>Passwort</td><td><input type='password' name='PASSWORD' value='$password' size="30"></td></tr>
389 <tr><td colspan='2' align='center'><input type='submit' name='ACTION' value='smbchangepw'></td></tr></form>
390 </table>
391 END
392 ;
393 }
394 if ($sambasettings{'ACTION'} eq 'useradd')
395 {
396 my $username = "User";
397 my $password = 'samba';
398 print <<END
399 <hr>
400 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
401 <table width='500px' cellspacing='0'><br>
402 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Benutzer neu anlegen</b></td></tr>
403 <tr><td align='left'>Benutzername</td><td><input type='text' name='USERNAME' value='$username' size="30"></td></tr>
404 <tr><td align='left'>Passwort</td><td><input type='password' name='PASSWORD' value='$password' size="30"></td></tr>
405 <tr><td colspan='2' align='center'><input type='submit' name='ACTION' value='smbuseradd'></td></tr></form>
406 </table>
407 END
408 ;
409 }
410
411 &Header::closebox();
412 }
413
414 &Header::openbox('100%', 'center', 'Shares');
415
416 print <<END
417 <hr>
418 <table width='500px' cellspacing='0'><br>
419 <tr><td bgcolor='${Header::table1colour}' colspan='3' align='left'><b>Shareverwaltung</b>
420 <tr><td><u>Names des Shares</u></td><td colspan='2' width="5"><u>Optionen</u></td></tr>
421 END
422 ;
423 my @Zeilen;
424 my @Shares;
425 @shares = `grep -n '^\\[' $sharefile`;
426 foreach $shareentry (@shares)
427 {
428 @shareline = split( /\:/, $shareentry );
429 push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]);
430 }
431
432 foreach $shareentry (sort @Shares)
433 {
434 print <<END
435 <tr><td align='left'>$shareentry</td>
436 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
437 <input type='hidden' name='NAME' value='$shareentry'>
438 <input type='hidden' name='ACTION' value='sharechange'>
439 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
440 </td></form>
441 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
442 <input type='hidden' name='NAME' value='$shareentry'>
443 <input type='hidden' name='ACTION' value='Loeschen'>
444 <input type='image' alt='Loeschen' src='/images/delete.gif'>
445 </td></form><tr>
446 END
447 ;
448 }
449 print <<END
450 </table>
451
452 <table width='50px' cellspacing='0'><br>
453 <tr><td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
454 <input type='hidden' name='ACTION' value='shareadd'>
455 <input type='image' alt='neuen Share anlegen' src='/images/add.gif'></form></td>
456 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
457 <input type='hidden' name='ACTION' value='sharecaption'>
458 <input type='image' alt='Legende' src='/images/info.gif'></form>
459 </td><tr>
460 </table>
461 END
462 ;
463 if ($sambasettings{'ACTION'} eq 'sharecaption')
464 {
465 print <<END
466 <table width='500px' cellspacing='0'><br>
467 <tr><td><b>Legende:</b></td></tr>
468 <tr><td><img src='/images/add.gif'>Share neu anlegen</td></tr>
469 <tr><td><img src='/images/edit.gif'>Share bearbeiten</td></tr>
470 <tr><td><img src='/images/delete.gif'>Share loeschen</td></tr>
471 </table>
472 END
473 ;
474 }
475
476 if ($sambasettings{'ACTION'} eq 'shareadd' || $sambasettings{'ACTION'} eq 'optioncaption' )
477 {
478
479 my $defaultoption= "[Share]\npath = /shares/share1\ncomment = Share - Public Access\nbrowseable = yes\nwriteable = yes\ncreate mask = 0777\ndirectory mask = 0777\nguest ok = yes\npublic = yes\nforce user = samba";
480
481 print <<END
482 <hr>
483 <table width='500px' cellspacing='0'><br>
484 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>neuen Share anlegen</b></td></tr>
485 <tr><td colspan='2' align='center'></td></tr>
486 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
487 <tr><td colspan='2' align='center'>Anzeige der Optionen fuer Shares<input type='hidden' name='ACTION' value='optioncaption'>
488 <input type='image' alt='Legende' src='/images/info.gif'></td></tr></form>
489 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
490 <tr><td colspan='2' align='center'><textarea name="SHAREOPTION" cols="50" rows="15" Wrap="off">$defaultoption</textarea></td></tr>
491 </table>
492 <table width='50px' cellspacing='0'><br>
493 <tr><td align='center'><input type='submit' name='ACTION' value='smbshareadd'></td></tr></form>
494 </table>
495 END
496 ;
497 }
498
499 if ($sambasettings{'ACTION'} eq 'sharechange' || $sambasettings{'ACTION'} eq 'optioncaption2' )
500 {
501 my $sharename = "$sambasettings{'NAME'}";
502 my $shareoption = '';
503 chomp $sharename;
504 $sharename=~s/\s//g;
505
506 for(my $i = 0; $i <= $#Shares; $i++)
507 {
508 chomp $Shares[$i];
509 $Shares[$i]=~s/\s//g;
510 if ( "$Shares[$i]" eq "$sharename" )
511 {
512 my $Zeilenbegin = $Zeilen[$i+1]-2;
513 my $Zeilenende = $Zeilen[$i+1]-$Zeilen[$i];
514 my $EOF = qx(cat $sharefile | wc -l);
515 if ( $Zeilen[$i] eq $Zeilen[$#Shares] )
516 {$Zeilenende = $EOF-$Zeilen[$#Shares]+1;$Zeilenbegin = $EOF-$Zeilen[$#Shares]; $shareoption = qx(tail -$Zeilenende $sharefile | head -$Zeilenbegin);}
517 else{$shareoption = qx(head -$Zeilenbegin $sharefile | tail -$Zeilenende);}
518 }
519 }
520
521 print <<END
522 <hr>
523 <table width='500px' cellspacing='0'><br>
524 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Share bearbeiten</b></td></tr>
525 <tr><td colspan='2' align='center'></td></tr>
526 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
527 <tr><td colspan='2' align='center'>Anzeige der Optionen fuer Shares<input type='hidden' name='ACTION' value='optioncaption2'>
528 <input type='image' alt='Legende' src='/images/info.gif'></td></tr></form>
529 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
530 <tr><td colspan='2' align='center'><textarea name="SHAREOPTION" cols="50" rows="15" Wrap="off">$shareoption</textarea></td></tr>
531 </table>
532 <table width='50px' cellspacing='0'><br>
533 <tr><td align='center'><input type='submit' name='ACTION' value='smbsharechange'></td></tr></form>
534 </table>
535 END
536 ;
537 }
538
539 if ($sambasettings{'ACTION'} eq 'optioncaption' || $sambasettings{'ACTION'} eq 'optioncaption2')
540 {
541 print <<END
542 <table width='500px' cellspacing='0'><br>
543 <tr><td><b>Legende:</b></td></tr>
544 <tr><td><u>Option</u></td><td><u>Bedeutung</u> / <u>Beispiel</u></td></tr>
545 <tr><td>comment</td><td>Kommentar</td></tr>
546 <tr><td></td><td>comment = Mein neues Share</td></tr>
547 <tr><td><br></td><td></td></tr>
548 <tr><td>path</td><td>Pfad zum Verzeichnis</td></tr>
549 <tr><td></td><td>path = /share/neu</td></tr>
550 <tr><td><br></td><td></td></tr>
551 <tr><td>writeable</td><td>Verzeichnis schreibbar</td></tr>
552 <tr><td></td><td>writeable = yes</td></tr>
553 <tr><td><br></td><td></td></tr>
554 <tr><td>browseable</td><td>sichtbar in Verzeichnisliste</td></tr>
555 <tr><td></td><td>browsable = yes</td></tr>
556 <tr><td><br></td><td></td></tr>
557 <tr><td>user</td><td>Besitzer der Freigabe</td></tr>
558 <tr><td></td><td>user = samba</td></tr>
559 <tr><td><br></td><td></td></tr>
560 <tr><td>valid users</td><td>Liste der Zugriffsberechtigten</td></tr>
561 <tr><td></td><td>valid users = samba, user1</td></tr>
562 <tr><td><br></td><td></td></tr>
563 <tr><td>write list</td><td>Liste der Schreibberechtigten</td></tr>
564 <tr><td></td><td>write list = samba</td></tr>
565 <tr><td><br></td><td></td></tr>
566 <tr><td>read list</td><td>Liste der nur Leseberechtigten</td></tr>
567 <tr><td></td><td>read list = user1</td></tr>
568 <tr><td><br></td><td></td></tr>
569 <tr><td>admin users</td><td>Liste der Benutzer mit SuperUser Rechten</td></tr>
570 <tr><td></td><td>admin users = user1</td></tr>
571 <tr><td><br></td><td></td></tr>
572 <tr><td>invalid users</td><td>Liste der Benutzer denen der Zugriff verweigert wird</td></tr>
573 <tr><td></td><td>invalid users = user2</td></tr>
574 <tr><td><br></td><td></td></tr>
575 <tr><td>force user</td><td>Standartbenutzer fuer alle Dateien</td></tr>
576 <tr><td></td><td>force user = samba</td></tr>
577 <tr><td><br></td><td></td></tr>
578 <tr><td>directory mask</td><td>UNIX Verzeichnisberchtigung beim Erzeugen</td></tr>
579 <tr><td></td><td>directory mask = 0777</td></tr>
580 <tr><td><br></td><td></td></tr>
581 <tr><td>create mask</td><td>UNIX Dateiberchtigung beim Erzeugen</td></tr>
582 <tr><td></td><td>create mask = 0777</td></tr>
583 <tr><td><br></td><td></td></tr>
584 <tr><td>guest ok</td><td>Annonymer Zugriff</td></tr>
585 <tr><td></td><td>guest ok = yes</td></tr>
586 </table>
587 END
588 ;
589 }
590
591 &Header::closebox();
592 &Header::closebigbox();
593 &Header::closepage();
594
595 ############################################################################################################################
596 ############################################################################################################################
597
598 sub isrunning
599 {
600 my $cmd = $_[0];
601 my $status = "<td align='center' bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td>";
602 my $pid = '';
603 my $testcmd = '';
604 my $exename;
605
606 $cmd =~ /(^[a-z]+)/;
607 $exename = $1;
608
609 if (open(FILE, "/var/run/${cmd}.pid"))
610 {
611 $pid = <FILE>; chomp $pid;
612 close FILE;
613 if (open(FILE, "/proc/${pid}/status"))
614 {
615 while (<FILE>)
616 {
617 if (/^Name:\W+(.*)/) {
618 $testcmd = $1; }
619 }
620 close FILE;
621 if ($testcmd =~ /$exename/)
622 {
623 $status = "<td align='center' bgcolor='${Header::colourgreen}'><font color='white'><b>$Lang::tr{'running'}</b></font></td>";
624 }
625 }
626 }
627
628 return $status;
629 }