]>
git.ipfire.org Git - ipfire-2.x.git/blob - html/cgi-bin/samba.cgi
5 # This code is distributed under the terms of the GPL
10 # enable only the following on debugging purpose
12 use CGI
::Carp
'fatalsToBrowser';
14 require '/var/ipfire/general-functions.pl';
15 require "${General::swroot}/lang.pl";
16 require "${General::swroot}/header.pl";
18 my %sambasettings = ();
22 my %ovpnsettings = ();
24 my $errormessage = "";
25 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";
31 my $userfile = "/var/ipfire/samba/private/smbpasswd";
32 &General
::readhash
("${General::swroot}/ethernet/settings", \
%netsettings);
33 &General
::readhash
("${General::swroot}/ovpn/settings", \
%ovpnsettings);
35 ############################################################################################################################
36 ############################################# Samba Dienste für Statusüberprüfung ##########################################
40 'SMB Daemon' => 'smbd',
41 'NetBIOS Nameserver' => 'nmbd',
42 'Winbind Daemon' => 'winbindd'
45 &Header
::showhttpheaders
();
47 ############################################################################################################################
48 #################################### Initialisierung von Samba Sharess für die Verarbeitung ################################
53 my $shareconfigentry = "";
54 my @shareconfigline = ();
58 my $sharefile = "/var/ipfire/samba/shares";
59 my $EOF = qx(cat
$sharefile | wc
-l
);
61 @shares = `grep -n '^\\[' $sharefile`;
62 foreach $shareentry (@shares)
64 @shareline = split( /\:/, $shareentry );
65 push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]);
68 ############################################################################################################################
69 #################################### Initialisierung von Samba Variablen für global Settings ###############################
71 $sambasettings{'WORKGRP'} = 'homeip.net';
72 $sambasettings{'NETBIOSNAME'} = 'IPFIRE';
73 $sambasettings{'SRVSTRING'} = 'Samba Server running on IPFire 2.0';
74 $sambasettings{'INTERFACES'} = '';
75 $sambasettings{'SECURITY'} = 'share';
76 $sambasettings{'OSLEVEL'} = '65';
77 $sambasettings{'GREEN'} = 'on';
78 $sambasettings{'BLUE'} = 'off';
79 $sambasettings{'ORANGE'} = 'off';
80 $sambasettings{'VPN'} = 'off';
81 $sambasettings{'WINSSRV'} = "$netsettings{'GREEN_NETADDRESS'}";
82 $sambasettings{'WINSSUPPORT'} = 'off';
83 $sambasettings{'OTHERINTERFACES'} = '';
84 $sambasettings{'GUESTACCOUNT'} = 'samba';
85 $sambasettings{'MAPTOGUEST'} = 'Never';
86 $sambasettings{'BINDINTERFACESONLY'} = 'True';
87 ### Values that have to be initialized
88 $cgisettings{'ACTION'} = '';
90 &General
::readhash
("${General::swroot}/samba/settings", \
%sambasettings);
91 &Header
::getcgihash
(\
%sambasettings);
93 &Header
::openpage
('Samba', 1, '');
94 &Header
::openbigbox
('100%', 'left', '', $errormessage);
96 ############################################################################################################################
97 ############################################# Samba Rootskript aufrufe für SU-Actions ######################################
99 if ($sambasettings{'ACTION'} eq 'smbuserdisable'){system("/usr/local/bin/sambactrl smbuserdisable $sambasettings{'NAME'}");}
100 if ($sambasettings{'ACTION'} eq 'smbuserenable'){system("/usr/local/bin/sambactrl smbuserenable $sambasettings{'NAME'}");}
101 if ($sambasettings{'ACTION'} eq 'smbuserdelete'){system("/usr/local/bin/sambactrl smbuserdelete $sambasettings{'NAME'}");}
102 if ($sambasettings{'ACTION'} eq 'smbuseradd'){system("/usr/local/bin/sambactrl smbuseradd $sambasettings{'USERNAME'} $sambasettings{'PASSWORD'}");}
103 if ($sambasettings{'ACTION'} eq 'smbchangepw'){system("/usr/local/bin/sambactrl smbchangepw $sambasettings{'USERNAME'} $sambasettings{'PASSWORD'}");}
104 if ($sambasettings{'ACTION'} eq 'smbrestart'){system("/usr/local/bin/sambactrl smbrestart");}
105 if ($sambasettings{'ACTION'} eq 'smbstart'){system("/usr/local/bin/sambactrl smbstart");}
106 if ($sambasettings{'ACTION'} eq 'smbstop'){system("/usr/local/bin/sambactrl smbstop");}
107 if ($sambasettings{'ACTION'} eq 'smbstop'){system("/usr/local/bin/sambactrl smbstop");}
108 if ($sambasettings{'ACTION'} eq 'globalreset'){system("/usr/local/bin/sambactrl smbglobalreset");}
110 # smbsafeconf is directly called by the if clause
112 if ($sambasettings{'ACTION'} eq 'sharesreset')
114 system('/usr/local/bin/sambactrl smbsharesreset');
120 $EOF = qx(cat
$sharefile | wc
-l
);
122 @shares = `grep -n '^\\[' $sharefile`;
123 foreach $shareentry (@shares)
125 @shareline = split( /\:/, $shareentry );
126 push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]);
130 ############################################################################################################################
131 ############################################## Samba Share neu anlegen #####################################################
133 if ($sambasettings{'ACTION'} eq 'smbshareadd')
136 open (FILE
, ">>${General::swroot}/samba/shares") or die "Can't save the shares settings: $!";
140 $sambasettings{'SHAREOPTION'}
145 system("/usr/local/bin/sambactrl smbsafeconf");
152 $EOF = qx(cat
$sharefile | wc
-l
);
154 @shares = `grep -n '^\\[' $sharefile`;
155 foreach $shareentry (@shares)
157 @shareline = split( /\:/, $shareentry );
158 push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]);
162 ############################################################################################################################
163 ################################################## Samba Share löschen #####################################################
165 if ($sambasettings{'ACTION'} eq 'smbsharedel')
170 my $sharename = "$sambasettings{'NAME'}";
174 for(my $i = 0; $i <= $#Shares; $i++)
177 $Shares[$i]=~s/\s//g;
178 if ( "$Shares[$i]" eq "$sharename" )
180 my $Zeilenbegin = $Zeilen[$i]-2;
181 my $Zeilenende = $EOF-$Zeilen[$i+1]+1;
182 my $Zeilenende2 = $Zeilenende-1;
184 if ( $Zeilen[$i] eq $Zeilen[$#Shares] )
186 $sharehead = qx(head
-$Zeilenbegin $sharefile);
187 $sharetext = $sharehead;
189 elsif ($Zeilen[$i] eq 1 )
191 $sharehead = qx(tail
-$Zeilenende $sharefile | head
-$Zeilenende2);
192 $sharetext = $sharehead;
196 $sharehead = qx(head
-$Zeilenbegin $sharefile);$sharebody = qx(tail
-$Zeilenende $sharefile | head
-$Zeilenende2);
197 $sharetext = "$sharehead\n$sharebody";
202 open (FILE
, ">${General::swroot}/samba/shares") or die "Can't delete the share settings: $!";
209 system("/usr/local/bin/sambactrl smbsafeconf");
216 $EOF = qx(cat
$sharefile | wc
-l
);
218 @shares = `grep -n '^\\[' $sharefile`;
219 foreach $shareentry (@shares)
221 @shareline = split( /\:/, $shareentry );
222 push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]);
225 ############################################################################################################################
226 ################################################## Sambashare ändern #######################################################
228 if ($sambasettings{'ACTION'} eq 'smbsharechange')
232 my $sharename = "$sambasettings{'NAME'}";
236 for(my $i = 0; $i <= $#Shares; $i++)
239 $Shares[$i]=~s/\s//g;
240 if ( "$Shares[$i]" eq "$sharename" )
242 my $Zeilenbegin = $Zeilen[$i]-2;
243 my $Zeilenende = $EOF-$Zeilen[$i+1]+1;
244 my $Zeilenende2 = $Zeilenende-1;
246 if ( $Zeilen[$i] eq $Zeilen[$#Shares] )
248 $sharehead = qx(head
-$Zeilenbegin $sharefile);
249 $sharetext = $sharehead;
251 elsif ($Zeilen[$i] eq 1 )
253 $sharehead = qx(tail
-$Zeilenende $sharefile | head
-$Zeilenende2);
254 $sharetext = $sharehead;
258 $sharehead = qx(head
-$Zeilenbegin $sharefile);$sharebody = qx(tail
-$Zeilenende $sharefile | head
-$Zeilenende2);
259 $sharetext = "$sharehead\n$sharebody";
264 open (FILE
, ">${General::swroot}/samba/shares") or die "Can't delete the share settings: $!";
268 $sambasettings{'SHAREOPTION'}
272 system("/usr/local/bin/sambactrl smbsafeconf");
276 @shares = `grep -n '^\\[' $sharefile`;
277 foreach $shareentry (@shares)
279 @shareline = split( /\:/, $shareentry );
280 push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]);
284 ############################################################################################################################
285 ##################################### Umsetzen der Werte von Checkboxen und Dropdowns ######################################
287 if ($sambasettings{'ACTION'} eq $Lang::tr
{'save'})
289 $sambasettings{'INTERFACES'} = '';
290 if ($sambasettings{'GREEN'} eq 'on'){ $sambasettings{'INTERFACES'} .= " $netsettings{'GREEN_DEV'}";}
291 if ($sambasettings{'BLUE'} eq 'on'){ $sambasettings{'INTERFACES'} .= " $netsettings{'BLUE_DEV'}";}
292 if ($sambasettings{'ORANGE'} eq 'on'){ $sambasettings{'INTERFACES'} .= " $netsettings{'ORANGE_DEV'}";}
293 if ($sambasettings{'VPN'} eq 'on'){ $sambasettings{'INTERFACES'} .= " $ovpnsettings{'DDEVICE'}";}
294 if ($sambasettings{'OTHERINTERFACES'} ne ''){ $sambasettings{'INTERFACES'} .= " $sambasettings{'OTHERINTERFACES'}";}
296 ############################################################################################################################
297 ############################################# Schreiben der Samba globals ##################################################
299 &General
::writehash
("${General::swroot}/samba/settings", \
%sambasettings);
301 open (FILE
, ">${General::swroot}/samba/global") or die "Can't save the global settings: $!";
305 # global.settings by IPFire Project
308 netbios name = $sambasettings{'NETBIOSNAME'}
309 server string = $sambasettings{'SRVSTRING'}
310 workgroup = $sambasettings{'WORKGRP'}
313 os level = $sambasettings{'OSLEVEL'}
316 preferred master = yes
320 kernel oplocks = false
321 map to guest = $sambasettings{'MAPTOGUEST'}
325 security = $sambasettings{'SECURITY'}
326 encrypt passwords = yes
327 guest account = $sambasettings{'GUESTACCOUNT'}
328 unix password sync = no
331 bind interfaces only = $sambasettings{'BINDINTERFACESONLY'}
332 interfaces = $sambasettings{'INTERFACES'}
333 socket options = TCP_NODELAY IPTOS_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE
336 wins support = $sambasettings{'WINSSUPPORT'}
339 log file = /var/log/samba/samba-log.%m
340 lock directory = /var/lock/samba
341 pid directory = /var/run/
346 system('/usr/local/bin/sambactrl smbsharechange');
348 &General
::readhash
("${General::swroot}/samba/settings", \
%sambasettings);
351 &Header
::openbox
('100%', 'left', $Lang::tr
{'error messages'});
352 print "<class name='base'>$errormessage\n";
353 print " </class>\n";
357 ############################################################################################################################
358 ########################################## Aktivieren von Checkboxen und Dropdowns #########################################
360 $checked{'WINSSUPPORT'}{'off'} = '';
361 $checked{'WINSSUPPORT'}{'on'} = '';
362 $checked{'WINSSUPPORT'}{$sambasettings{'WINSSUPPORT'}} = "checked='checked'";
363 $checked{'GREEN'}{'off'} = '';
364 $checked{'GREEN'}{'on'} = '';
365 $checked{'GREEN'}{$sambasettings{'GREEN'}} = "checked='checked'";
366 $checked{'BLUE'}{'off'} = '';
367 $checked{'BLUE'}{'on'} = '';
368 $checked{'BLUE'}{$sambasettings{'BLUE'}} = "checked='checked'";
369 $checked{'ORANGE'}{'off'} = '';
370 $checked{'ORANGE'}{'on'} = '';
371 $checked{'ORANGE'}{$sambasettings{'ORANGE'}} = "checked='checked'";
372 $checked{'VPN'}{'off'} = '';
373 $checked{'VPN'}{'on'} = '';
374 $checked{'VPN'}{$sambasettings{'VPN'}} = "checked='checked'";
376 $selected{'MAPTOGUEST'}{$sambasettings{'MAPTOGUEST'}} = "selected='selected'";
377 $selected{'SECURITY'}{$sambasettings{'SECURITY'}} = "selected='selected'";
379 ############################################################################################################################
380 ################################### Aufbau der HTML Seite für globale Sambaeinstellungen ###################################
382 &Header
::openbox
('100%', 'center', 'Samba');
385 <table width='500px' cellspacing='0'><br>
388 if ( $message ne "" ) {
389 print "<tr><td colspan='2' align='left'><font color='red'>$message</font>";
392 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Alle Dienste</b></td></tr>
393 </table><table width='500px' cellspacing='0'>
397 foreach $key (sort keys %servicenames)
399 print "<tr><td align='left'>$key";
400 my $shortname = $servicenames{$key};
401 my $status = &isrunning
($shortname);
402 print "$status</td>";
404 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
405 <input type='hidden' name='ACTION' value='restart $shortname'>
406 <input type='image' src='/images/reload.gif'>
412 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
413 <table width='500px' cellspacing='0'><br>
414 <tr><td colspan='2' align='center'>
415 <input type='submit' name='ACTION' value='Start' />
416 <input type='submit' name='ACTION' value='Stop' />
417 <input type='submit' name='ACTION' value='$Lang::tr{'restart'}' />
418 </td></tr></form></table>
420 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
421 <table width='500px' cellspacing='0'><br>
422 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Basisoptionen</b></td></tr>
423 <tr><td align='left'>Workgroup:</td><td><input type='text' name='WORKGRP' value='$sambasettings{'WORKGRP'}' size="30"></td></tr>
424 <tr><td align='left'>NetBIOS-Name:</td><td><input type='text' name='NETBIOSNAME' value='$sambasettings{'NETBIOSNAME'}' size="30"></td></tr>
425 <tr><td align='left'>Server-String:</td><td><input type='text' name='SRVSTRING' value='$sambasettings{'SRVSTRING'}' size="30"></td></tr>
426 <tr><td align='left'>Interfaces:
427 </td><td>on <input type='radio' name='VPN' value='on' $checked{'VPN'}{'on'}>/
428 <input type='radio' name='VPN' value='off' $checked{'VPN'}{'off'}> off |
429 <font size='2' color='$Header::colourovpn'><b> OpenVpn - $ovpnsettings{'DDEVICE'}</td></tr>
430 <tr><td align='left'></td><td>on <input type='radio' name='GREEN' value='on' $checked{'GREEN'}{'on'}>/
431 <input type='radio' name='GREEN' value='off' $checked{'GREEN'}{'off'}> off |
432 <font size='2' color='$Header::colourgreen'><b> $Lang::tr{'green'} - $netsettings{'GREEN_DEV'}</td></tr>
435 if (&Header
::blue_used
()){
437 <tr><td align='left'></td><td>on <input type='radio' name='BLUE' value='on' $checked{'BLUE'}{'on'}>/
438 <input type='radio' name='BLUE' value='off' $checked{'BLUE'}{'off'}> off |
439 <font size='2' color='$Header::colourblue'><b> $Lang::tr{'wireless'} - $netsettings{'BLUE_DEV'}</td></tr>
443 if (&Header
::orange_used
()){
445 <tr><td align='left'></td><td>on <input type='radio' name='ORANGE' value='on' $checked{'ORANGE'}{'on'}>/
446 <input type='radio' name='ORANGE' value='off' $checked{'ORANGE'}{'off'}> off |
447 <font size='2' color='$Header::colourorange'><b> $Lang::tr{'dmz'} - $netsettings{'ORANGE_DEV'}</td></tr>
452 <tr><td align='center'>weitere</td><td><input type='text' name='OTHERINTERFACES' value='$sambasettings{'OTHERINTERFACES'}' size="30"></td></tr>
453 <tr><td align='left'><br></td><td></td></tr>
454 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Sicherheitsoptionen</b></td></tr>
455 <tr><td align='left'>Security:</td><td><select name='SECURITY'>
456 <option value='share' $selected{'SECURITY'}{'share'}>Share</option>
457 <option value='user' $selected{'SECURITY'}{'user'}>User</option>
458 <option value='domain' $selected{'SECURITY'}{'domain'}>Domain</option>
459 <option value='ADS' $selected{'SECURITY'}{'ADS'}>ADS</option>
460 <option value='server' $selected{'SECURITY'}{'server'}>Server</option>
463 <tr><td align='left'>Map to guest:</td><td><select name='MAPTOGUEST'>
464 <option value='Never' $selected{'MAPTOGUEST'}{'Never'}>Never</option>
465 <option value='Bad User' $selected{'MAPTOGUEST'}{'Bad User'}>Bad User</option>
466 <option value='Bad Password' $selected{'MAPTOGUEST'}{'Bad Password'}>Bad Password</option>
468 <tr><td align='left'><br></td><td></td></tr>
469 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Browsingoptionen</b></td></tr>
470 <tr><td align='left'>OS Level:</td><td><input type='text' name='OSLEVEL' value='$sambasettings{'OSLEVEL'}' size="30"></td></tr>
471 <tr><td align='left'><br></td><td></td></tr>
472 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>WINS-Optionen</b></td></tr>
473 <tr><td align='left'>WINS-Server:</td><td><input type='text' name='WINSSRV' value='$sambasettings{'WINSSRV'}' size="30"></td></tr>
474 <tr><td align='left'>WINS-Support:</td><td>on <input type='radio' name='WINSSUPPORT' value='on' $checked{'WINSSUPPORT'}{'on'}>/
475 <input type='radio' name='WINSSUPPORT' value='off' $checked{'WINSSUPPORT'}{'off'}> off</td></tr>
477 <table width='50px' cellspacing='0'><br>
478 <tr><td align='center'><input type='hidden' name='ACTION' value=$Lang::tr{'save'}>
479 <input type='image' alt=$Lang::tr{'save'} src='/images/floppy.gif'></td></form>
480 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
481 <input type='hidden' name='ACTION' value='globalreset'>
482 <input type='image' alt='Reset' src='/images/reload.gif'></td></form>
483 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
484 <input type='hidden' name='ACTION' value='globalcaption'>
485 <input type='image' alt='Legende' src='/images/info.gif'></td></tr></form>
489 if ($sambasettings{'ACTION'} eq 'globalcaption')
492 <table width='500px' cellspacing='0'><br>
493 <tr><td><b>Legende:</b></td></tr>
494 <tr><td><img src='/images/floppy.gif'>Einstellungen speichern</td></tr>
495 <tr><td><img src='/images/reload.gif'>Auf default zurueck setzen</td></tr>
502 ############################################################################################################################
503 ########################################## Benutzerverwaltung für Usersecurity #############################################
505 if ($sambasettings{'SECURITY'} eq 'user')
507 &Header
::openbox
('100%', 'center', 'accounting - user Security');
511 <table width='500px' cellspacing='0'><br>
512 <tr><td colspan='6' align='left'>
513 <tr><td bgcolor='${Header::table1colour}' colspan='6' align='left'><b>Benutzerverwaltung</b>
514 <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>
518 system('/usr/local/bin/sambactrl readsmbpasswd');
519 open(FILE
, "</var/ipfire/samba/private/smbpasswd") or die "Can't read user file: $!";
522 system('/usr/local/bin/sambactrl locksmbpasswd');
523 foreach $userentry (sort @user)
525 @userline = split( /\:/, $userentry );
527 <tr><td align='left'>$userline[0]</td><td>
530 if ($userline[4] =~ /N/){
532 nicht gesetzt</td><td>
541 if ($userline[4] =~ /D/){
544 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
545 <input type='hidden' name='NAME' value='$userline[0]'>
546 <input type='hidden' name='ACTION' value='smbuserenable'>
547 <input type='image' alt='Aktivieren' src='/images/on.gif'>
554 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
555 <input type='hidden' name='NAME' value='$userline[0]'>
556 <input type='hidden' name='ACTION' value='smbuserdisable'>
557 <input type='image' alt='Deaktivieren' src='/images/off.gif'>
563 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
564 <input type='hidden' name='NAME' value='$userline[0]'>
565 <input type='hidden' name='ACTION' value='userchangepw'>
566 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
568 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
569 <input type='hidden' name='NAME' value='$userline[0]'>
570 <input type='hidden' name='ACTION' value='smbuserdelete'>
571 <input type='image' alt='Loeschen' src='/images/delete.gif'>
579 <table width='50px' cellspacing='0'><br>
580 <tr><td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
581 <input type='hidden' name='ACTION' value='useradd'>
582 <input type='image' alt='Benutzer anlegen' src='/images/add.gif'></form></td>
583 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
584 <input type='hidden' name='ACTION' value='usercaption'>
585 <input type='image' alt='Legende' src='/images/info.gif'></form>
590 if ($sambasettings{'ACTION'} eq 'usercaption')
593 <table width='500px' cellspacing='0'><br>
594 <tr><td><b>Legende:</b></td></tr>
595 <tr><td><img src='/images/add.gif'>Benutzer neu anlegen</td></tr>
596 <tr><td><img src='/images/on.gif'>Benutzer aktivieren</td></tr>
597 <tr><td><img src='/images/off.gif'>Benutzer deaktivieren</td></tr>
598 <tr><td><img src='/images/floppy.gif'>Einstellungen speichern</td></tr>
599 <tr><td><img src='/images/edit.gif'>Passwort wechseln</td></tr>
600 <tr><td><img src='/images/delete.gif'>Benutzer loeschen</td></tr>
606 if ($sambasettings{'ACTION'} eq 'userchangepw')
608 my $username = "$sambasettings{'NAME'}";
609 my $password = 'samba';
612 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
613 <table width='500px' cellspacing='0'><br>
614 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Passwort wechseln</b></td></tr>
615 <tr><td align='left'>Benutzername</td><td><input type='text' name='USERNAME' value='$username' size="30"></td></tr>
616 <tr><td align='left'>Passwort</td><td><input type='password' name='PASSWORD' value='$password' size="30"></td></tr>
617 <tr><td colspan='2' align='center'><input type='hidden' name='ACTION' value='smbchangepw'>
618 <input type='image' alt=$Lang::tr{'save'} src='/images/floppy.gif'></td></tr></form>
624 if ($sambasettings{'ACTION'} eq 'useradd')
626 my $username = "user";
627 my $password = "samba";
634 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
635 <table width='500px' cellspacing='0'><br>
636 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Benutzer neu anlegen</b></td></tr>
637 <tr><td align='left'>Benutzername</td><td><input type='text' name='USERNAME' value='$username' size="30"></td></tr>
638 <tr><td align='left'>Passwort</td><td><input type='password' name='PASSWORD' value='$password' size="30"></td></tr>
639 <tr><td colspan='2' align='center'><input type='hidden' name='ACTION' value='smbuseradd'>
640 <input type='image' alt=$Lang::tr{'save'} src='/images/floppy.gif'></td></tr></form>
649 ############################################################################################################################
650 ############################################### Verwalten von Freigaben ####################################################
652 &Header
::openbox
('100%', 'center', 'Shares');
656 <table width='500px' cellspacing='0'><br>
657 <tr><td bgcolor='${Header::table1colour}' colspan='3' align='left'><b>Shareverwaltung</b>
658 <tr><td><u>Names des Shares</u></td><td colspan='2' width="5"><u>Optionen</u></td></tr>
663 foreach $shareentry (sort @Shares)
666 <tr><td align='left'>$shareentry</td>
667 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
668 <input type='hidden' name='NAME' value='$shareentry'>
669 <input type='hidden' name='ACTION' value='sharechange'>
670 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
672 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
673 <input type='hidden' name='NAME' value='$shareentry'>
674 <input type='hidden' name='ACTION' value='smbsharedel'>
675 <input type='image' alt='Loeschen' src='/images/delete.gif'>
683 <table width='50px' cellspacing='0'><br>
684 <tr><td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
685 <input type='hidden' name='ACTION' value='shareadd'>
686 <input type='image' alt='neuen Share anlegen' src='/images/add.gif'></form></td>
687 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
688 <input type='hidden' name='ACTION' value='sharesreset'>
689 <input type='image' alt='Reset' src='/images/reload.gif'></td></form>
690 <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
691 <input type='hidden' name='ACTION' value='sharecaption'>
692 <input type='image' alt='Legende' src='/images/info.gif'></form>
697 if ($sambasettings{'ACTION'} eq 'sharecaption')
700 <table width='500px' cellspacing='0'><br>
701 <tr><td><b>Legende:</b></td></tr>
702 <tr><td><img src='/images/add.gif'>Share neu anlegen</td></tr>
703 <tr><td><img src='/images/edit.gif'>Share bearbeiten</td></tr>
704 <tr><td><img src='/images/floppy.gif'>Einstellungen speichern</td></tr>
705 <tr><td><img src='/images/reload.gif'>Shares zurueck setzen</td></tr>
706 <tr><td><img src='/images/delete.gif'>Share loeschen</td></tr>
712 if ($sambasettings{'ACTION'} eq 'shareadd' || $sambasettings{'ACTION'} eq 'optioncaption' )
716 <table width='500px' cellspacing='0'><br>
717 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>neuen Share anlegen</b></td></tr>
718 <tr><td colspan='2' align='center'></td></tr>
719 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
720 <tr><td colspan='2' align='center'>Anzeige der Optionen fuer Shares<input type='hidden' name='ACTION' value='optioncaption'>
721 <input type='image' alt='Legende' src='/images/info.gif'></td></tr></form>
722 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
723 <tr><td colspan='2' align='center'><textarea name="SHAREOPTION" cols="50" rows="15" Wrap="off">$defaultoption</textarea></td></tr>
725 <table width='50px' cellspacing='0'><br>
726 <tr><td align='center'><input type='hidden' name='ACTION' value='smbshareadd'>
727 <input type='image' alt='Share hinzufuegen' src='/images/floppy.gif'></td></tr></form>
733 if ($sambasettings{'ACTION'} eq 'sharechange' || $sambasettings{'ACTION'} eq 'optioncaption2' )
735 my $sharename = "$sambasettings{'NAME'}";
739 for(my $i = 0; $i <= $#Shares; $i++)
742 $Shares[$i]=~s/\s//g;
743 if ( "$Shares[$i]" eq "$sharename" )
745 my $Zeilenbegin = $Zeilen[$i+1]-2;
746 my $Zeilenende = $Zeilen[$i+1]-$Zeilen[$i];
747 if ( $Zeilen[$i] eq $Zeilen[$#Shares] )
748 {$Zeilenende = $EOF-$Zeilen[$#Shares]+1;$Zeilenbegin = $EOF-$Zeilen[$#Shares]; $shareoption = qx(tail
-$Zeilenende $sharefile | head
-$Zeilenbegin);}
749 else{$shareoption = qx(head
-$Zeilenbegin $sharefile | tail
-$Zeilenende);}
755 <table width='500px' cellspacing='0'><br>
756 <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Share bearbeiten</b></td></tr>
757 <tr><td colspan='2' align='center'></td></tr>
758 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
759 <tr><td colspan='2' align='center'>Anzeige der Optionen fuer Shares<input type='hidden' name='ACTION' value='optioncaption2'>
760 <input type='image' alt='Legende' src='/images/info.gif'></td></tr></form>
761 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
762 <tr><td colspan='2' align='center'><textarea name="SHAREOPTION" cols="50" rows="15" Wrap="off">$shareoption</textarea></td></tr>
764 <table width='50px' cellspacing='0'><br>
765 <tr><td align='center'>
766 <input type='hidden' name='NAME' value='$sambasettings{'NAME'}'>
767 <input type='submit' name='ACTION' value='smbsharechange'></td></tr></form>
773 if ($sambasettings{'ACTION'} eq 'optioncaption' || $sambasettings{'ACTION'} eq 'optioncaption2')
776 <table width='500px' cellspacing='0'><br>
777 <tr><td><b>Legende:</b></td></tr>
778 <tr><td><u>Option</u></td><td><u>Bedeutung</u> / <u>Beispiel</u></td></tr>
779 <tr><td>comment</td><td>Kommentar</td></tr>
780 <tr><td></td><td>comment = Mein neues Share</td></tr>
781 <tr><td><br></td><td></td></tr>
782 <tr><td>path</td><td>Pfad zum Verzeichnis</td></tr>
783 <tr><td></td><td>path = /share/neu</td></tr>
784 <tr><td><br></td><td></td></tr>
785 <tr><td>writeable</td><td>Verzeichnis schreibbar</td></tr>
786 <tr><td></td><td>writeable = yes</td></tr>
787 <tr><td><br></td><td></td></tr>
788 <tr><td>browseable</td><td>sichtbar in Verzeichnisliste</td></tr>
789 <tr><td></td><td>browsable = yes</td></tr>
790 <tr><td><br></td><td></td></tr>
791 <tr><td>user</td><td>Besitzer der Freigabe</td></tr>
792 <tr><td></td><td>user = samba</td></tr>
793 <tr><td><br></td><td></td></tr>
794 <tr><td>valid users</td><td>Liste der Zugriffsberechtigten</td></tr>
795 <tr><td></td><td>valid users = samba, user1</td></tr>
796 <tr><td><br></td><td></td></tr>
797 <tr><td>write list</td><td>Liste der Schreibberechtigten</td></tr>
798 <tr><td></td><td>write list = samba</td></tr>
799 <tr><td><br></td><td></td></tr>
800 <tr><td>read list</td><td>Liste der nur Leseberechtigten</td></tr>
801 <tr><td></td><td>read list = user1</td></tr>
802 <tr><td><br></td><td></td></tr>
803 <tr><td>admin users</td><td>Liste der Benutzer mit SuperUser Rechten</td></tr>
804 <tr><td></td><td>admin users = user1</td></tr>
805 <tr><td><br></td><td></td></tr>
806 <tr><td>invalid users</td><td>Liste der Benutzer denen der Zugriff verweigert wird</td></tr>
807 <tr><td></td><td>invalid users = user2</td></tr>
808 <tr><td><br></td><td></td></tr>
809 <tr><td>force user</td><td>Standartbenutzer fuer alle Dateien</td></tr>
810 <tr><td></td><td>force user = samba</td></tr>
811 <tr><td><br></td><td></td></tr>
812 <tr><td>directory mask</td><td>UNIX Verzeichnisberchtigung beim Erzeugen</td></tr>
813 <tr><td></td><td>directory mask = 0777</td></tr>
814 <tr><td><br></td><td></td></tr>
815 <tr><td>create mask</td><td>UNIX Dateiberchtigung beim Erzeugen</td></tr>
816 <tr><td></td><td>create mask = 0777</td></tr>
817 <tr><td><br></td><td></td></tr>
818 <tr><td>guest ok</td><td>Annonymer Zugriff</td></tr>
819 <tr><td></td><td>guest ok = yes</td></tr>
826 &Header
::closebigbox
();
827 &Header
::closepage
();
829 ############################################################################################################################
830 ############################################ Subfunktion für Sambadienste ##################################################
835 my $status = "<td align='center' bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td>";
843 if (open(FILE
, "/var/run/${cmd}.pid"))
845 $pid = <FILE
>; chomp $pid;
847 if (open(FILE
, "/proc/${pid}/status"))
851 if (/^Name:\W+(.*)/) {
855 if ($testcmd =~ /$exename/)
857 $status = "<td align='center' bgcolor='${Header::colourgreen}'><font color='white'><b>$Lang::tr{'running'}</b></font></td>";