X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=html%2Fcgi-bin%2Fsamba.cgi;h=b49c0bc990381c192989eafbd9f3a5bd0135c49d;hb=889329363f2d2adad0292008b2d223352d4bfe2a;hp=05be43f203dc2d2c8508685767929506d5a05404;hpb=1ee8bf5d7ffd66528922412c95d126e5d50812b0;p=ipfire-2.x.git diff --git a/html/cgi-bin/samba.cgi b/html/cgi-bin/samba.cgi index 05be43f203..b49c0bc990 100644 --- a/html/cgi-bin/samba.cgi +++ b/html/cgi-bin/samba.cgi @@ -5,7 +5,6 @@ # This code is distributed under the terms of the GPL # # (c) The IPFire Team -# use strict; # enable only the following on debugging purpose @@ -17,39 +16,60 @@ require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; my %sambasettings = (); +my %cgisettings = (); my %checked = (); my %netsettings = (); my %ovpnsettings = (); my $message = ""; my $errormessage = ""; -my $shareentry = ""; -my @shares = (); -my @shareline = (); -my $shareconfigentry = ""; -my @sharesconfig = (); -my @shareconfigline = (); +my @Logs = qx(ls /var/log/samba/); +my $Log =$Lang::tr{'no log selected'}; +my $defaultoption= "[Share]\npath = /var/ipfire/samba/share1\ncomment = Share - Public Access\nbrowseable = yes\nwriteable = yes\ncreate mask = 0777\ndirectory mask = 0777\npublic = yes\nforce user = samba"; my $userentry = ""; my @user = (); my @userline = (); my @proto = (); my %selected= () ; -my $sharefile = "/var/ipfire/samba/shares"; my $userfile = "/var/ipfire/samba/private/smbpasswd"; &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); &General::readhash("${General::swroot}/ovpn/settings", \%ovpnsettings); -my %servicenames = -( - 'SMB Daemon' => 'smbd', - 'NetBIOS Nameserver' => 'nmbd', - 'Winbind Daemon' => 'winbindd' -); +############################################################################################################################ +############################################# Samba Dienste fr Statusberprfung ########################################## + +my %servicenames = ('SMB Daemon' => 'smbd','NetBIOS Nameserver' => 'nmbd','Winbind Daemon' => 'winbindd'); &Header::showhttpheaders(); +############################################################################################################################ +#################################### Initialisierung von Samba Sharess fr die Verarbeitung ################################ + +my @Zeilen= (); +my @Shares= (); +my $shareentry = ""; +my $shareconfigentry = ""; +my @shareconfigline = (); +my $shareoption = ''; +my @shares = (); +my @shareline = (); +my $sharefile = "/var/ipfire/samba/shares"; +my $EOF = qx(cat $sharefile | wc -l); +my $Status = qx(/usr/local/bin/sambactrl smbstatus); +$Status=~s/\n/
/g; + +@shares = `grep -n '^\\[' $sharefile`; +foreach $shareentry (@shares) + { + @shareline = split( /\:/, $shareentry ); + push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]); + } + +############################################################################################################################ +#################################### Initialisierung von Samba Variablen fr global Settings ############################### + $sambasettings{'WORKGRP'} = 'homeip.net'; -$sambasettings{'NETBIOSNAME'} = 'IPFIRE'; -$sambasettings{'SRVSTRING'} = 'Samba Server running on IPFire 2.0'; +$sambasettings{'NETBIOSNAME'} = 'IPFire'; +$sambasettings{'SRVSTRING'} = 'Samba running on IPFire 2.0'; $sambasettings{'INTERFACES'} = ''; $sambasettings{'SECURITY'} = 'share'; $sambasettings{'OSLEVEL'} = '65'; @@ -57,14 +77,28 @@ $sambasettings{'GREEN'} = 'on'; $sambasettings{'BLUE'} = 'off'; $sambasettings{'ORANGE'} = 'off'; $sambasettings{'VPN'} = 'off'; -$sambasettings{'WINSSRV'} = "$netsettings{'GREEN_NETADDRESS'}"; -$sambasettings{'WINSSUPPORT'} = 'off'; -$sambasettings{'OTHERINTERFACES'} = ''; +$sambasettings{'WINSSRV'} = ''; +$sambasettings{'WINSSUPPORT'} = 'on'; +$sambasettings{'REMOTEANNOUNCE'} = ''; +$sambasettings{'PASSWORDSYNC'} = 'off'; +$sambasettings{'OTHERINTERFACES'} = '127.0.0.1'; $sambasettings{'GUESTACCOUNT'} = 'samba'; $sambasettings{'MAPTOGUEST'} = 'Never'; -$sambasettings{'BINDINTERFACESONLY'} = 'True'; +$sambasettings{'LOGLEVEL'} = '3 passdb:5 auth:5 winbind:2'; +$sambasettings{'SOCKETOPTIONS'} = 'TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE'; ### Values that have to be initialized $sambasettings{'ACTION'} = ''; +my $LOGLINES = '50'; + +################################################## Samba PDC Variablen ##################################################### + +$sambasettings{'LOCALMASTER'} = 'off'; +$sambasettings{'DOMAINMASTER'} = 'off'; +$sambasettings{'PREFERREDMASTER'} = 'off'; +my $PDCOPTIONS = `cat ${General::swroot}/samba/pdc`; + + +############################################################################################################################ &General::readhash("${General::swroot}/samba/settings", \%sambasettings); &Header::getcgihash(\%sambasettings); @@ -73,16 +107,112 @@ $sambasettings{'ACTION'} = ''; &Header::openbigbox('100%', 'left', '', $errormessage); ############################################################################################################################ +############################################# Samba Rootskript aufrufe fr SU-Actions ####################################### + +if ($sambasettings{'ACTION'} eq 'smbuserdisable'){system("/usr/local/bin/sambactrl smbuserdisable $sambasettings{'NAME'}");} +if ($sambasettings{'ACTION'} eq 'smbuserenable'){system("/usr/local/bin/sambactrl smbuserenable $sambasettings{'NAME'}");} +if ($sambasettings{'ACTION'} eq 'smbuseradd'){system("/usr/local/bin/sambactrl smbuseradd $sambasettings{'USERNAME'} $sambasettings{'PASSWORD'} $sambasettings{'GROUP'} $sambasettings{'SHELL'}");} +if ($sambasettings{'ACTION'} eq 'smbpcadd'){system("/usr/local/bin/sambactrl smbpcadd $sambasettings{'PCNAME'} $sambasettings{'GROUP'} $sambasettings{'SHELL'}");} +if ($sambasettings{'ACTION'} eq 'smbchangepw'){system("/usr/local/bin/sambactrl smbchangepw $sambasettings{'USERNAME'} $sambasettings{'PASSWORD'}");} +if ($sambasettings{'ACTION'} eq 'smbrestart'){system("/usr/local/bin/sambactrl smbrestart");} +if ($sambasettings{'ACTION'} eq 'smbstart'){system("/usr/local/bin/sambactrl smbstart");} +if ($sambasettings{'ACTION'} eq 'smbstop'){system("/usr/local/bin/sambactrl smbstop");} +if ($sambasettings{'ACTION'} eq 'smbreload'){system("/usr/local/bin/sambactrl smbreload");} +if ($sambasettings{'ACTION'} eq 'globalresetyes') + { + system("/usr/local/bin/sambactrl smbglobalreset"); + $sambasettings{'WORKGRP'} = 'homeip.net'; + $sambasettings{'NETBIOSNAME'} = 'IPFire'; + $sambasettings{'SRVSTRING'} = 'Samba running on IPFire 2.0'; + $sambasettings{'INTERFACES'} = ''; + $sambasettings{'SECURITY'} = 'share'; + $sambasettings{'OSLEVEL'} = '65'; + $sambasettings{'GREEN'} = 'on'; + $sambasettings{'BLUE'} = 'off'; + $sambasettings{'ORANGE'} = 'off'; + $sambasettings{'VPN'} = 'off'; + $sambasettings{'WINSSRV'} = ''; + $sambasettings{'WINSSUPPORT'} = 'on'; + $sambasettings{'REMOTEANNOUNCE'} = ''; + $sambasettings{'PASSWORDSYNC'} = 'off'; + $sambasettings{'OTHERINTERFACES'} = '127.0.0.1'; + $sambasettings{'GUESTACCOUNT'} = 'samba'; + $sambasettings{'MAPTOGUEST'} = 'Never'; + $sambasettings{'LOGLEVEL'} = '3 passdb:5 auth:5 winbind:2'; +### Values that have to be initialized + $sambasettings{'ACTION'} = ''; + $sambasettings{'LOCALMASTER'} = 'off'; + $sambasettings{'DOMAINMASTER'} = 'off'; + $sambasettings{'PREFERREDMASTER'} = 'off'; + $sambasettings{'SOCKETOPTIONS'} = 'TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE'; + $PDCOPTIONS = `cat ${General::swroot}/samba/pdc`; + system("/usr/local/bin/sambactrl smbreload"); + } + +# smbsafeconf is directly called by the if clause + +if ($sambasettings{'ACTION'} eq 'sharesresetyes') +{ +system('/usr/local/bin/sambactrl smbsharesreset'); + @Zeilen = (); + @Shares = (); + $shareentry = ""; + @shares = (); + @shareline = (); + $EOF = qx(cat $sharefile | wc -l); + + @shares = `grep -n '^\\[' $sharefile`; + foreach $shareentry (@shares) + { + @shareline = split( /\:/, $shareentry ); + push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]); + } + system("/usr/local/bin/sambactrl smbreload"); +} + +############################################################################################################################ +################################################ Sicherheitsabfrage für den Reset ########################################## + +if ($sambasettings{'ACTION'} eq 'globalreset') + { + print < + + + + +
$Lang::tr{'resetglobals'} +
+ $Lang::tr{'yes'} +
+ $Lang::tr{'no'} +
+END +; +} + +if ($sambasettings{'ACTION'} eq 'sharesreset') + { + print < + + + + +
$Lang::tr{'resetshares'} +
+ $Lang::tr{'yes'} +
+ $Lang::tr{'no'} +
+END +; + } + ############################################################################################################################ +########################################### Samba Benutzer oder PC l�chen ################################################# -if ($sambasettings{'ACTION'} eq 'smbuserdisable'){system('/usr/local/bin/sambactrl 1 $sambasettings{"NAME"}');} -if ($sambasettings{'ACTION'} eq 'smbuserenable'){system('/usr/local/bin/sambactrl 2 $sambasettings{"NAME"}');} -if ($sambasettings{'ACTION'} eq 'smbuserdelete'){system('/usr/local/bin/sambactrl 3 $sambasettings{"NAME"}');} -if ($sambasettings{'ACTION'} eq 'smbuseradd'){system('/usr/local/bin/sambactrl 4 $username $password');} -if ($sambasettings{'ACTION'} eq 'smbchangepw'){system('/usr/local/bin/sambactrl 5 $username $password');} -if ($sambasettings{'ACTION'} eq 'smbsharechange'){system('/usr/local/bin/sambactrl 7 $sambasettings{"SHARENAME"} $sambasettings{"SHAREOPTION"}');} -if ($sambasettings{'ACTION'} eq 'smbstart'){system('/usr/local/bin/sambactrl 8');} -if ($sambasettings{'ACTION'} eq 'smbstop'){system('/usr/local/bin/sambactrl 9');} +if ($sambasettings{'ACTION'} eq 'userdelete'){system("/usr/local/bin/sambactrl smbuserdelete $sambasettings{'NAME'}");} ############################################################################################################################ ############################################## Samba Share neu anlegen ##################################################### @@ -90,7 +220,6 @@ if ($sambasettings{'ACTION'} eq 'smbstop'){system('/usr/local/bin/sambactrl 9'); if ($sambasettings{'ACTION'} eq 'smbshareadd') { my $emptyline= ""; - system('/usr/local/bin/sambactrl 6'); open (FILE, ">>${General::swroot}/samba/shares") or die "Can't save the shares settings: $!"; flock (FILE, 2); @@ -100,72 +229,241 @@ $emptyline END ; close FILE; +system("/usr/local/bin/sambactrl smbsafeconf"); + + @Zeilen = (); + @Shares = (); + $shareentry = ""; + @shares = (); + @shareline = (); + $EOF = qx(cat $sharefile | wc -l); + + @shares = `grep -n '^\\[' $sharefile`; + foreach $shareentry (@shares) + { + @shareline = split( /\:/, $shareentry ); + push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]); + } +system("/usr/local/bin/sambactrl smbreload"); } ############################################################################################################################ +################################################## Samba Share l�chen ##################################################### + +if ($sambasettings{'ACTION'} eq 'smbsharedel') +{ +my $sharebody = ''; +my $sharehead = ''; +my $sharetext = ''; +my $sharename = "$sambasettings{'NAME'}"; +chomp $sharename; +$sharename=~s/\s//g; + +for(my $i = 0; $i <= $#Shares; $i++) + { + chomp $Shares[$i]; + $Shares[$i]=~s/\s//g; + if ( "$Shares[$i]" eq "$sharename" ) + { + my $Zeilenbegin = $Zeilen[$i]-2; + my $Zeilenende = $EOF-$Zeilen[$i+1]+1; + my $Zeilenende2 = $Zeilenende-1; + + if ( $Zeilen[$i] eq $Zeilen[$#Shares] ) + { + $sharehead = qx(head -$Zeilenbegin $sharefile); + $sharetext = $sharehead; + } + elsif ($Zeilen[$i] eq 1 ) + { + $sharehead = qx(tail -$Zeilenende $sharefile | head -$Zeilenende2); + $sharetext = $sharehead; + } + else + { + $sharehead = qx(head -$Zeilenbegin $sharefile);$sharebody = qx(tail -$Zeilenende $sharefile | head -$Zeilenende2); + $sharetext = "$sharehead\n$sharebody"; + } + } + } + +open (FILE, ">${General::swroot}/samba/shares") or die "Can't delete the share settings: $!"; +flock (FILE, 2); +print FILE <${General::swroot}/samba/shares") or die "Can't delete the share settings: $!"; +flock (FILE, 2); +print FILE <${General::swroot}/samba/global") or die "Can't save the global settings: $!"; flock (FILE, 2); print FILE <${General::swroot}/samba/pdc") or die "Can't save the pdc settings: $!"; + flock (FILE, 2); + print FILE < -
-END -; - if ( $message ne "" ) { - print " -
$message"; - } -print <Alle Dienste
-END -; - my $key = ''; - foreach $key (sort keys %servicenames) - { - print ""; - print <
- - - -END -; - } - print < -
$key"; - my $shortname = $servicenames{$key}; - my $status = &isrunning($shortname); - print "$status

-
- - - -
- -
-
- - - - - - -END -; - if (&Header::blue_used()){ - print < -END -; - } - if (&Header::orange_used()){ - print < -END -; - } - print < - - - - - - - - - - - - -
Basisoptionen
Workgroup:
NetBIOS-Name:
Server-String:
Interfaces: OpenVpn - $ovpnsettings{'DDEVICE'}
$Lang::tr{'green'} - $netsettings{'GREEN_DEV'}
$Lang::tr{'wireless'} - $netsettings{'BLUE_DEV'}
$Lang::tr{'dmz'} - $netsettings{'ORANGE_DEV'}
weitere

Sicherheitsoptionen
Security:
Map to guest:

Browsingoptionen
OS Level:

WINS-Optionen
WINS-Server:
WINS-Support:on / - off
-
+
+
+ +END +; +if ( $message ne "" ) + { + print " +
$message"; + } + +print <$Lang::tr{'all services'}
+END +; + +my $key = ''; +foreach $key (sort keys %servicenames) + { + print ""; + my $shortname = $servicenames{$key}; + my $status = &isrunning($shortname); + print "$status"; + } + +print < +
+
$key
+ + + +
+
+
+
+ + + + + + + + +END +; + +if (&Header::blue_used()) + { + print < +END +; + } + +if (&Header::orange_used()) + { + print < +END +; + } + +print < + + + + + + + + + + +END +; +if ($sambasettings{'WINSSUPPORT'} eq 'off') {print"";} + print < END ; -&Header::closebox(); if ($sambasettings{'SECURITY'} eq 'user') -{ -&Header::openbox('100%', 'center', 'accounting - user Security'); + { + print < + + +END +; + } + +if ($sambasettings{'SECURITY'} eq 'user' && $sambasettings{'DOMAINMASTER'} eq 'on') + { + print < + + + +END +; + } print < -
$Lang::tr{'basic options'}
$Lang::tr{'workgroup'}
$Lang::tr{'netbios name'}
$Lang::tr{'server string'}
$Lang::tr{'log level'}
$Lang::tr{'interfaces'}on / + off | + OpenVpn - $ovpnsettings{'DDEVICE'}
on / + off | + $Lang::tr{'green'} - $netsettings{'GREEN_DEV'}
on / + off | + $Lang::tr{'wireless'} - $netsettings{'BLUE_DEV'}
on / + off | + $Lang::tr{'dmz'} - $netsettings{'ORANGE_DEV'}
$Lang::tr{'more'}

$Lang::tr{'security options'}
$Lang::tr{'security'}
$Lang::tr{'map to guest'}
$Lang::tr{'unix password sync'}on / + off

$Lang::tr{'network options'}
$Lang::tr{'os level'}
$Lang::tr{'socket options'}
$Lang::tr{'remote announce'}
$Lang::tr{'wins server'}
$Lang::tr{'wins support'}on / + off
$Lang::tr{'local master'}on / + off
$Lang::tr{'domain master'}on / + off
$Lang::tr{'prefered master'}on / + off

$Lang::tr{'pdc options'}


- -END -; - open( FILE, "< $userfile") or die "Can't read user file: $!"; - @user = ; - close(FILE); - foreach $userentry (sort @user) - { - @userline = split( /\:/, $userentry ); - print < -END -; - }else{ - print < - -END -; - } - print <
- - - - -
- -END -; - } - print < -
-
Benutzerverwaltung -
BenutzernamePasswortStatusOptionen
$userline[0] -END -; - if ($userline[2] =~ m/N/){ - print < -END -; - }else{ - print < -END -; - } - if ($userline[2] =~ m/D/){ - print < - - - - -
- - - -
- - - -

- - -
- -
- -
-
-END -; -if ($sambasettings{'ACTION'} eq 'usercaption') -{ - print <
- Legende: - Benutzer neu anlegen - Benutzer aktivieren - Benutzer deaktivieren - Passwort wechseln - Benutzer loeschen - + +
+ + + + +
+ +
+ +
+ +
END ; -} -if ($sambasettings{'ACTION'} eq 'userchangepw') -{ - my $username = "$sambasettings{'NAME'}"; - my $password = 'samba'; - print < -
-
- - - - -
Passwort wechseln
Benutzername
Passwort
+if ($sambasettings{'ACTION'} eq 'globalcaption') + { + print < + + + + +
$Lang::tr{'caption'}
$Lang::tr{'save settings'}
$Lang::tr{'restore settings'}
END ; -} -if ($sambasettings{'ACTION'} eq 'useradd') -{ - my $username = "User"; - my $password = 'samba'; - print < -
-
- - - - -
Benutzer neu anlegen
Benutzername
Passwort
+ } + +&Header::closebox(); + +############################################################################################################################ +########################################## Benutzerverwaltung fr Usersecurity ############################################# + +if ($sambasettings{'SECURITY'} eq 'user') + { + if ($sambasettings{'DOMAINMASTER'} eq 'off') + { + &Header::openbox('100%', 'center', $Lang::tr{'accounting user nonpdc'}); + } + else + { + &Header::openbox('100%', 'center', $Lang::tr{'accounting user pdc'}); + } + print < +
+ + + + END ; -} + + if ($sambasettings{'DOMAINMASTER'} eq 'off') + { + print ""; + } + else + { + print ""; + } + + print ""; + system('/usr/local/bin/sambactrl readsmbpasswd'); + open(FILE, "; + close(FILE); + system('/usr/local/bin/sambactrl locksmbpasswd'); + foreach $userentry (sort @user) + { + @userline = split( /\:/, $userentry ); + print " +END +; + } + else + { + print < + +END +; + } + + if ($userline[0] =~ /\$/) + { + print ""; + } + else + { + print <
+ + + + +END +; + } + + if ($sambasettings{'DOMAINMASTER'} eq 'on' && $userline[0] =~ /\$/) + { + print <
+ + + +
+END +; + } + else + { + print <
+ + + + +END +; + } + } + print < +
+
$Lang::tr{'accounting'}
$Lang::tr{'username'}$Lang::tr{'password'}$Lang::tr{'type'}$Lang::tr{'status'}$Lang::tr{'options'}
$userline[0]"; + if ($userline[4] =~ /N/) + { + print "$Lang::tr{'not set'}"; + } + else + { + print "$Lang::tr{'set'}"; + } + + if ($sambasettings{'DOMAINMASTER'} eq 'off') + { + print ""; + } + else + { + if ($userline[0] =~ /\$/) + { + print "$Lang::tr{'pc'}"; + } + else + { + print "$Lang::tr{'user'}"; + } + } + + if ($userline[4] =~ /D/) + { + print < +
+ + + +
+ + + +
+ +END +; + + if ($sambasettings{'DOMAINMASTER'} eq 'on') + { + print <
+ + +END +; + } + print <
+ + +
+
+ +
+END +; + + if ($sambasettings{'ACTION'} eq 'usercaption') + { + print < + + + + + + + + + + +
$Lang::tr{'caption'}
$Lang::tr{'add user'}
$Lang::tr{'add pc'}
$Lang::tr{'delete user'}
$Lang::tr{'delete pc'}
$Lang::tr{'activate user'}
$Lang::tr{'deactivate user'}
$Lang::tr{'change passwords'}
$Lang::tr{'save config'}
+END +; + } + + if ($sambasettings{'ACTION'} eq 'userchangepw') + { + my $username = "$sambasettings{'NAME'}"; + my $password = 'samba'; + print < +
+
+ + + + + +
$Lang::tr{'change passwords'}
$Lang::tr{'username'}
$Lang::tr{'password'}
+
+
+END +; + } + + if ($sambasettings{'ACTION'} eq 'useradd') + { + my $username = "user"; + my $password = "samba"; + chomp $username; + $username=~s/\s//g; + chomp $password; + $password=~s/\s//g; + print < +
+
+ + + + + + + +
$Lang::tr{'add user'}
$Lang::tr{'username'}
$Lang::tr{'password'}
$Lang::tr{'unix group'}
$Lang::tr{'unix shell'}
+
+
+END +; + } + + if ($sambasettings{'ACTION'} eq 'pcadd') + { + my $pcname = "client\$"; + chomp $pcname; + $pcname=~s/\s//g; + print < +
+
+ + + + + + +
$Lang::tr{'pc add'}
$Lang::tr{'client'}
$Lang::tr{'unix group'}
$Lang::tr{'unix shell'}
+
+
+END +; + } &Header::closebox(); } - -&Header::openbox('100%', 'center', 'Shares'); + +############################################################################################################################ +############################################### Verwalten von Freigaben #################################################### + +&Header::openbox('100%', 'center', $Lang::tr{'shares'}); + +print < +
+ + +END +; + +foreach $shareentry (sort @Shares) + { + print < + + +END +; + } print < -
$Lang::tr{'manage shares'} +
$Lang::tr{'sharename'}$Lang::tr{'options'}
$shareentry
+ + + +
+ + + +

- -END -; - my @Zeilen; - my @Shares; - @shares = `grep -n '^\\[' $sharefile`; - foreach $shareentry (@shares) - { - @shareline = split( /\:/, $shareentry ); - push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]); - } - - foreach $shareentry (sort @Shares) - { - print < - - -END -; - } - print < - -
Shareverwaltung -
Names des SharesOptionen
$shareentry
- - - -
- - - -

- - -
- -
- -
-
+ +
+ + + + + +
+ + +
+ + +
+ + +
END ; + if ($sambasettings{'ACTION'} eq 'sharecaption') -{ - print <
- Legende: - Share neu anlegen - Share bearbeiten - Share loeschen - + { + print < + + + + + + + +
$Lang::tr{'caption'}
$Lang::tr{'add share'}
$Lang::tr{'edit share'}
$Lang::tr{'save config'}
$Lang::tr{'reset shares'}
$Lang::tr{'delete share'}
END ; -} + } if ($sambasettings{'ACTION'} eq 'shareadd' || $sambasettings{'ACTION'} eq 'optioncaption' ) -{ + { + print < +
+ + + + + +
$Lang::tr{'add share'}
$Lang::tr{'show share options'} + +
+
+ + +
+
+END +; + } + +if ($sambasettings{'ACTION'} eq 'sharechange' || $sambasettings{'ACTION'} eq 'optioncaption2' ) + { + my $sharename = "$sambasettings{'NAME'}"; + chomp $sharename; + $sharename=~s/\s//g; + + for(my $i = 0; $i <= $#Shares; $i++) + { + chomp $Shares[$i]; + $Shares[$i]=~s/\s//g; + if ( "$Shares[$i]" eq "$sharename" ) + { + my $Zeilenbegin = $Zeilen[$i+1]-2; + my $Zeilenende = $Zeilen[$i+1]-$Zeilen[$i]; + if ( $Zeilen[$i] eq $Zeilen[$#Shares] ) + {$Zeilenende = $EOF-$Zeilen[$#Shares]+1;$Zeilenbegin = $EOF-$Zeilen[$#Shares]; $shareoption = qx(tail -$Zeilenende $sharefile | head -$Zeilenbegin);} + else + {$shareoption = qx(head -$Zeilenbegin $sharefile | tail -$Zeilenende);} + } + } + print < +
+ + + + + +
$Lang::tr{'edit share'}
$Lang::tr{'show share options'}
+ +
+
+ + +
+ +
+END +; + } + +&Header::closebox(); -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"; +############################################################################################################################ +############################################### Anzeige des Sambastatus #################################################### + +&Header::openbox('100%', 'center', 'Status'); - print < -
- - - - - - -
neuen Share anlegen
Anzeige der Optionen fuer Shares -
-
- -
+print < +
+ + + +
$Lang::tr{'samba status'}
$Status
END ; -} +&Header::closebox(); -if ($sambasettings{'ACTION'} eq 'sharechange' || $sambasettings{'ACTION'} eq 'optioncaption2' ) +############################################################################################################################ +############################################### Anzeige des Sambastatus #################################################### + + +if ($sambasettings{'ACTION'} eq 'showlog') { - my $sharename = "$sambasettings{'NAME'}"; - my $shareoption = ''; - chomp $sharename; - $sharename=~s/\s//g; - - for(my $i = 0; $i <= $#Shares; $i++) - { - chomp $Shares[$i]; - $Shares[$i]=~s/\s//g; - if ( "$Shares[$i]" eq "$sharename" ) - { - my $Zeilenbegin = $Zeilen[$i+1]-2; - my $Zeilenende = $Zeilen[$i+1]-$Zeilen[$i]; - my $EOF = qx(cat $sharefile | wc -l); - if ( $Zeilen[$i] eq $Zeilen[$#Shares] ) - {$Zeilenende = $EOF-$Zeilen[$#Shares]+1;$Zeilenbegin = $EOF-$Zeilen[$#Shares]; $shareoption = qx(tail -$Zeilenende $sharefile | head -$Zeilenbegin);} - else{$shareoption = qx(head -$Zeilenbegin $sharefile | tail -$Zeilenende);} - } - } - - print < -
- - - - - - -
Share bearbeiten
Anzeige der Optionen fuer Shares -
-
- -
+$Log = qx(tail -n $LOGLINES /var/log/samba/$sambasettings{'LOG'}); +$Log=~s/\n/
/g; +} + +&Header::openbox('100%', 'center', $Lang::tr{'log'}); + +print < +
+
+ + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$Lang::tr{'log view'}

Legende:
OptionBedeutung / Beispiel
commentKommentar
comment = Mein neues Share

pathPfad zum Verzeichnis
path = /share/neu

writeableVerzeichnis schreibbar
writeable = yes

browseablesichtbar in Verzeichnisliste
browsable = yes

userBesitzer der Freigabe
user = samba

valid usersListe der Zugriffsberechtigten
valid users = samba, user1

write listListe der Schreibberechtigten
write list = samba

read listListe der nur Leseberechtigten
read list = user1

admin usersListe der Benutzer mit SuperUser Rechten
admin users = user1

invalid usersListe der Benutzer denen der Zugriff verweigert wird
invalid users = user2

force userStandartbenutzer fuer alle Dateien
force user = samba

directory maskUNIX Verzeichnisberchtigung beim Erzeugen
directory mask = 0777

create maskUNIX Dateiberchtigung beim Erzeugen
create mask = 0777

guest okAnnonymer Zugriff
guest ok = yes
+$Lang::tr{'show last x lines'} + +
+$Log +
+$sambasettings{'LOG'} + +
END ; -} &Header::closebox(); &Header::closebigbox(); &Header::closepage(); ############################################################################################################################ -############################################################################################################################ +############################################ Subfunktion fr Sambadienste ################################################### sub isrunning -{ - my $cmd = $_[0]; - my $status = "$Lang::tr{'stopped'}"; - my $pid = ''; - my $testcmd = ''; - my $exename; - - $cmd =~ /(^[a-z]+)/; - $exename = $1; - - if (open(FILE, "/var/run/${cmd}.pid")) - { - $pid = ; chomp $pid; - close FILE; - if (open(FILE, "/proc/${pid}/status")) - { - while () - { - if (/^Name:\W+(.*)/) { - $testcmd = $1; } - } - close FILE; - if ($testcmd =~ /$exename/) - { - $status = "$Lang::tr{'running'}"; - } - } - } - - return $status; -} \ No newline at end of file + { + my $cmd = $_[0]; + my $status = "$Lang::tr{'stopped'}"; + my $pid = ''; + my $testcmd = ''; + my $exename; + + $cmd =~ /(^[a-z]+)/; + $exename = $1; + + if (open(FILE, "/var/run/${cmd}.pid")) + { + $pid = ; chomp $pid; + close FILE; + if (open(FILE, "/proc/${pid}/status")) + { + while () + { + if (/^Name:\W+(.*)/) + { + $testcmd = $1; + } + } + close FILE; + if ($testcmd =~ /$exename/) + { + $status = "$Lang::tr{'running'}"; + } + } + } + return $status; + } \ No newline at end of file