X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=blobdiff_plain;f=html%2Fcgi-bin%2Fsamba.cgi;h=b8e57317767e333082e390d1bdf86d0691524c5d;hp=8426e98d223dfb053002b9a9c0cf7d10674b2329;hb=a195328750779741d95b093e8322eb09c27d2871;hpb=115340d291bf0f0fc3c64fca893d863867f268c4 diff --git a/html/cgi-bin/samba.cgi b/html/cgi-bin/samba.cgi index 8426e98d22..b8e5731776 100644 --- a/html/cgi-bin/samba.cgi +++ b/html/cgi-bin/samba.cgi @@ -1,15 +1,28 @@ #!/usr/bin/perl -# -# IPFire CGIs -# -# This code is distributed under the terms of the GPL -# -# (c) The IPFire Team +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### use strict; # enable only the following on debugging purpose -use warnings; -use CGI::Carp 'fatalsToBrowser'; +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; require '/var/ipfire/general-functions.pl'; require "${General::swroot}/lang.pl"; @@ -20,6 +33,8 @@ my %cgisettings = (); my %checked = (); my %netsettings = (); my %ovpnsettings = (); +my %color = (); +my %mainsettings = (); my $message = ""; my $errormessage = ""; @@ -42,6 +57,12 @@ my %shares = (); &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); &General::readhash("${General::swroot}/ovpn/settings", \%ovpnsettings); +&General::readhash("${General::swroot}/main/settings", \%mainsettings); +&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color); + +my @ovpnnetwork = split(/\//,$ovpnsettings{'DOVPN_SUBNET'}); +my @ovpnip = split(/\./,$ovpnnetwork[0]); +$ovpnip[3]=$ovpnip[3]+1; ############################################################################################################################ ############################################# Samba Dienste fr Statusberprfung ########################################## @@ -56,7 +77,7 @@ my %servicenames = ('SMB Daemon' => 'smbd','NetBIOS Nameserver' => 'nmbd'); $sambasettings{'WORKGRP'} = 'homeip.net'; $sambasettings{'NETBIOSNAME'} = 'IPFire'; -$sambasettings{'SRVSTRING'} = 'Samba running on IPFire 2.0'; +$sambasettings{'SRVSTRING'} = 'Samba running on IPFire 2.5'; $sambasettings{'INTERFACES'} = ''; $sambasettings{'SECURITY'} = 'share'; $sambasettings{'OSLEVEL'} = '33'; @@ -67,11 +88,17 @@ $sambasettings{'VPN'} = 'off'; $sambasettings{'WINSSRV'} = ''; $sambasettings{'WINSSUPPORT'} = 'on'; $sambasettings{'REMOTEANNOUNCE'} = ''; +$sambasettings{'REMOTESYNC'} = ''; $sambasettings{'PASSWORDSYNC'} = 'off'; $sambasettings{'OTHERINTERFACES'} = '127.0.0.1'; $sambasettings{'GUESTACCOUNT'} = 'samba'; $sambasettings{'MAPTOGUEST'} = 'Never'; $sambasettings{'LOGLEVEL'} = '3 passdb:5 auth:5 winbind:2'; +$sambasettings{'SYSLOGLEVEL'} = '1'; +$sambasettings{'SYSLOGONLY'} = 'on'; +$sambasettings{'DOSCHARSET'} = 'CP850'; +$sambasettings{'UNIXCHARSET'} = 'UTF8'; +$sambasettings{'DISPLAYCHARSET'} = 'CP850'; $sambasettings{'SOCKETOPTIONS'} = 'TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE'; ### Values that have to be initialized $sambasettings{'ACTION'} = ''; @@ -94,7 +121,7 @@ my $PDCOPTIONS = `cat ${General::swroot}/samba/pdc`; &General::readhash("${General::swroot}/samba/settings", \%sambasettings); &Header::getcgihash(\%sambasettings); -sub refreshpage{&Header::openbox( 'Waiting', 1, "" );} +sub refreshpage{&Header::openbox( 'Waiting', 1, "" );print "

$Lang::tr{'pagerefresh'}
";&Header::closebox();} &Header::openpage('Samba', 1, ''); &Header::openbigbox('100%', 'left', '', $errormessage); @@ -127,11 +154,17 @@ if ($sambasettings{'ACTION'} eq 'globalresetyes') $sambasettings{'WINSSRV'} = ''; $sambasettings{'WINSSUPPORT'} = 'on'; $sambasettings{'REMOTEANNOUNCE'} = ''; + $sambasettings{'REMOTESYNC'} = ''; $sambasettings{'PASSWORDSYNC'} = 'off'; $sambasettings{'OTHERINTERFACES'} = '127.0.0.1'; $sambasettings{'GUESTACCOUNT'} = 'samba'; $sambasettings{'MAPTOGUEST'} = 'Never'; $sambasettings{'LOGLEVEL'} = '3 passdb:5 auth:5 winbind:2'; + $sambasettings{'SYSLOGLEVEL'} = '1'; + $sambasettings{'SYSLOGONLY'} = 'on'; + $sambasettings{'DOSCHARSET'} = 'CP850'; + $sambasettings{'UNIXCHARSET'} = 'UTF8'; + $sambasettings{'DISPLAYCHARSET'} = 'CP850'; ### Samba CUPS Variablen $sambasettings{'LOADPRINTERS'} = 'Yes'; $sambasettings{'PRINTING'} = 'cups'; @@ -156,12 +189,12 @@ if ($sambasettings{'ACTION'} eq 'globalreset') print < -
$Lang::tr{'resetglobals'} +
$Lang::tr{'resetglobals'}
- $Lang::tr{'yes'} + $Lang::tr{'yes'}
- $Lang::tr{'no'} + $Lang::tr{'no'}
@@ -174,12 +207,12 @@ if ($sambasettings{'ACTION'} eq 'sharesreset') print < -
$Lang::tr{'resetshares'} +
$Lang::tr{'resetshares'}
- $Lang::tr{'yes'} + $Lang::tr{'yes'}
- $Lang::tr{'no'} + $Lang::tr{'no'}
@@ -201,7 +234,7 @@ $sambasettings{'INTERFACES'} = ''; if ($sambasettings{'GREEN'} eq 'on'){ $sambasettings{'INTERFACES'} .= " $netsettings{'GREEN_DEV'}";} if ($sambasettings{'BLUE'} eq 'on'){ $sambasettings{'INTERFACES'} .= " $netsettings{'BLUE_DEV'}";} if ($sambasettings{'ORANGE'} eq 'on'){ $sambasettings{'INTERFACES'} .= " $netsettings{'ORANGE_DEV'}";} -if ($sambasettings{'VPN'} eq 'on'){ $sambasettings{'INTERFACES'} .= " $ovpnsettings{'DDEVICE'}";} +if ($sambasettings{'VPN'} eq 'on'){$sambasettings{'INTERFACES'} .= " ";} if ($sambasettings{'OTHERINTERFACES'} ne ''){ $sambasettings{'INTERFACES'} .= " $sambasettings{'OTHERINTERFACES'}";} ############################################################################################################################ @@ -215,6 +248,7 @@ if ($sambasettings{'WINSSUPPORT'} eq 'on'){ $sambasettings{'WINSSUPPORT'} = "tru if ($sambasettings{'LOCALMASTER'} eq 'on'){ $sambasettings{'LOCALMASTER'} = "true";} else { $sambasettings{'LOCALMASTER'} = "false";} if ($sambasettings{'DOMAINMASTER'} eq 'on'){ $sambasettings{'DOMAINMASTER'} = "true";} else { $sambasettings{'DOMAINMASTER'} = "false";} if ($sambasettings{'PREFERREDMASTER'} eq 'on'){ $sambasettings{'PREFERREDMASTER'} = "true";} else { $sambasettings{'PREFERREDMASTER'} = "false";} +if ($sambasettings{'SYSLOGONLY'} eq 'on'){ $sambasettings{'SYSLOGONLY'} = "yes";} else { $sambasettings{'SYSLOGONLY'} = "no";} ############################################################################################################################ ############################################# Schreiben der Samba globals ################################################## @@ -237,7 +271,9 @@ fstype = NTFS kernel oplocks = false map to guest = $sambasettings{'MAPTOGUEST'} smb ports = 445 139 -unix charset = CP850 +dos charset = $sambasettings{'DOSCHARSET'} +unix charset = $sambasettings{'UNIXCHARSET'} +display charset = $sambasettings{'DISPLAYCHARSET'} security = $sambasettings{'SECURITY'} encrypt passwords = yes @@ -249,6 +285,7 @@ bind interfaces only = true interfaces = $sambasettings{'INTERFACES'} socket options = $sambasettings{'SOCKETOPTIONS'} remote announce = $sambasettings{'REMOTEANNOUNCE'} +remote browse sync = $sambasettings{'REMOTESYNC'} username level = 1 wins support = $sambasettings{'WINSSUPPORT'} @@ -256,9 +293,11 @@ wins server = $sambasettings{'WINSSRV'} log file = /var/log/samba/samba-log.%m lock directory = /var/lock/samba -pid directory = /var/run/ +pid directory = /var/run/ log level = $sambasettings{'LOGLEVEL'} - +syslog = $sambasettings{'SYSLOGLEVEL'} +syslog only = $sambasettings{'SYSLOGONLY'} + preferred master = $sambasettings{'PREFERREDMASTER'} domain master = $sambasettings{'DOMAINMASTER'} local master = $sambasettings{'LOCALMASTER'} @@ -280,7 +319,7 @@ END close FILE; } - if ($sambasettings{'SECURITY'} eq 'User' && $sambasettings{'DOMAINMASTER'} eq 'true' ) + if ($sambasettings{'SECURITY'} eq 'user' && $sambasettings{'DOMAINMASTER'} eq 'true' ) { open (FILE, ">${General::swroot}/samba/pdc") or die "Can't save the pdc settings: $!"; flock (FILE, 2); @@ -299,13 +338,13 @@ END if ( -e "/var/ipfire/cups/enable") { - if ( $sambasettings{'SECURITY'} eq 'User' && $sambasettings{'DOMAINMASTER'} eq 'true' ){system("/usr/local/bin/sambactrl smbsafeconfpdccups");refreshpage();} - else {system("/usr/local/bin/sambactrl smbsafeconfcups");refreshpage();} + if ( $sambasettings{'SECURITY'} eq 'user' && $sambasettings{'DOMAINMASTER'} eq 'true' ){system("/usr/local/bin/sambactrl smbsafeconfpdccups");refreshpage();} + else {system("/usr/local/bin/sambactrl smbsafeconfcups");} } else { - if ( $sambasettings{'SECURITY'} eq 'User' && $sambasettings{'DOMAINMASTER'} eq 'true' ){system("/usr/local/bin/sambactrl smbsafeconfpdc");refreshpage();} - else{system("/usr/local/bin/sambactrl smbsafeconf");refreshpage();} + if ( $sambasettings{'SECURITY'} eq 'user' && $sambasettings{'DOMAINMASTER'} eq 'true' ){system("/usr/local/bin/sambactrl smbsafeconfpdc");refreshpage();} + else{system("/usr/local/bin/sambactrl smbsafeconf");} } system("/usr/local/bin/sambactrl smbreload");refreshpage(); @@ -324,6 +363,9 @@ if ($errormessage) ############################################################################################################################ ########################################## Aktivieren von Checkboxen und Dropdowns ######################################### +$checked{'SYSLOGONLY'}{'off'} = ''; +$checked{'SYSLOGONLY'}{'on'} = ''; +$checked{'SYSLOGONLY'}{$sambasettings{'SYSLOGONLY'}} = "checked='checked'"; $checked{'WINSSUPPORT'}{'off'} = ''; $checked{'WINSSUPPORT'}{'on'} = ''; $checked{'WINSSUPPORT'}{$sambasettings{'WINSSUPPORT'}} = "checked='checked'"; @@ -360,7 +402,6 @@ $selected{'SECURITY'}{$sambasettings{'SECURITY'}} = "selected='selected'"; &Header::openbox('100%', 'center', $Lang::tr{'samba'}); print <
END @@ -371,7 +412,7 @@ if ( $message ne "" ) } print < +
$Lang::tr{'all services'}
$Lang::tr{'all services'}
END ; @@ -390,21 +431,27 @@ print <
- - + + +
-

- + + + + + + + OpenVpn - $ovpnip[0].$ovpnip[1].$ovpnip[2].$ovpnip[3]/$ovpnnetwork[1] @@ -434,7 +481,7 @@ END print < - + - +END +; +# +print < - + + END ; if ($sambasettings{'WINSSUPPORT'} eq 'off') {print"";} @@ -480,7 +531,7 @@ if ($sambasettings{'SECURITY'} eq 'user' && $sambasettings{'DOMAINMASTER'} eq 'o { print < - + END @@ -491,7 +542,7 @@ END { print < - + @@ -505,13 +556,13 @@ print < + + +
$Lang::tr{'basic options'}
$Lang::tr{'basic options'}
$Lang::tr{'workgroup'}
$Lang::tr{'netbios name'}
$Lang::tr{'dos charset'}
$Lang::tr{'unix charset'}
$Lang::tr{'display charset'}
$Lang::tr{'server string'}
$Lang::tr{'log level'}
Sys$Lang::tr{'log level'}
Syslog onlyon / + off
$Lang::tr{'interfaces'}on / off | - OpenVpn - $ovpnsettings{'DDEVICE'}
on / off | $Lang::tr{'green'} - $netsettings{'GREEN_DEV'}
$Lang::tr{'more'}

$Lang::tr{'security options'}
$Lang::tr{'security options'}
$Lang::tr{'security'}
$Lang::tr{'unix password sync'}on / - off
$Lang::tr{'unix password sync'}on / +# off

$Lang::tr{'network options'}
$Lang::tr{'network options'}
$Lang::tr{'os level'}
$Lang::tr{'socket options'}
$Lang::tr{'remote announce'}
$Lang::tr{'remote browse sync'}
$Lang::tr{'wins server'}

$Lang::tr{'pdc options'}
$Lang::tr{'pdc options'}


$Lang::tr{'printing options'}
$Lang::tr{'printing options'}
$Lang::tr{'load printer'}
$Lang::tr{'printing'}
$Lang::tr{'printcap name'}
-
-
-
END ; @@ -545,11 +596,11 @@ if ($sambasettings{'SECURITY'} eq 'user') &Header::openbox('100%', 'center', $Lang::tr{'accounting user pdc'}); } print < +
- + END ; @@ -569,10 +620,14 @@ END @user = ; close(FILE); system('/usr/local/bin/sambactrl locksmbpasswd'); + + my $lines = 0; + foreach $userentry (sort @user) { @userline = split( /\:/, $userentry ); - print "";} else {print "";} + print " END ; @@ -614,10 +669,10 @@ END { print < - END ; @@ -630,10 +685,10 @@ END else { print <
+
END ; @@ -642,10 +697,10 @@ END if ($sambasettings{'DOMAINMASTER'} eq 'on' && $userline[0] =~ /\$/) { print <
+
END ; @@ -653,38 +708,39 @@ END else { print <
+
END ; } + $lines++; } print <
$Lang::tr{'accounting'}
$Lang::tr{'accounting'}
$Lang::tr{'username'}$Lang::tr{'password'}
$userline[0]"; + if ($lines % 2) {print "
$userline[0]"; if ($userline[4] =~ /N/) { print "$Lang::tr{'not set'}"; @@ -602,10 +657,10 @@ END { print < -
+
- +
+
- + - + - +
- +
- + END ; if ($sambasettings{'DOMAINMASTER'} eq 'on') { print <
+
+
- - + END ; } print <
+
- +
END @@ -700,8 +756,8 @@ END $Lang::tr{'pc add'} $Lang::tr{'delete user'} $Lang::tr{'delete pc'} - $Lang::tr{'activate user'} - $Lang::tr{'deactivate user'} + $Lang::tr{'activate user'} + $Lang::tr{'deactivate user'} $Lang::tr{'change passwords'} $Lang::tr{'save config'} @@ -714,15 +770,14 @@ END my $username = "$sambasettings{'NAME'}"; my $password = 'samba'; print <
-
+ - + +
$Lang::tr{'change passwords'}
$Lang::tr{'change passwords'}
$Lang::tr{'username'}
$Lang::tr{'password'}
-
END @@ -738,17 +793,16 @@ END chomp $password; $password=~s/\s//g; print <
-
+ - + +
$Lang::tr{'add user'}
$Lang::tr{'add user'}
$Lang::tr{'username'}
$Lang::tr{'password'}
$Lang::tr{'unix group'}
$Lang::tr{'unix shell'}
-
END @@ -761,16 +815,15 @@ END chomp $pcname; $pcname=~s/\s//g; print <
-
+ - + +
$Lang::tr{'pc add'}
$Lang::tr{'pc add'}
$Lang::tr{'client'}
$Lang::tr{'unix group'}
$Lang::tr{'unix shell'}
-
END @@ -789,50 +842,53 @@ my %shares = config("${General::swroot}/samba/shares"); print < +

- END ; my @Shares = keys(%shares); +my $lines = 0; foreach my $shareentry (sort @Shares) { chomp $shareentry; + if ($lines % 2) {print "";} else {print "";} print < - + - END ; + $lines++; } print <
$Lang::tr{'manage shares'} +
$Lang::tr{'manage shares'}
$Lang::tr{'sharename'}$Lang::tr{'options'}
$shareentry
+
$shareentry - +
+
- +
- - -
+
- +
+
- +
+
- +
@@ -858,19 +914,18 @@ END if ($sambasettings{'ACTION'} eq 'shareadd' || $sambasettings{'ACTION'} eq 'optioncaption' ) { print <
- + - +
$Lang::tr{'add share'}
$Lang::tr{'add share'}
$Lang::tr{'show share options'}

+
-
END ; @@ -880,18 +935,17 @@ if ($sambasettings{'ACTION'} eq 'sharechange' || $sambasettings{'ACTION'} eq 'op { my $shareoption = $shares{$sambasettings{'NAME'}}; print <
- + - +
$Lang::tr{'edit share'}
$Lang::tr{'edit share'}
$Lang::tr{'show share options'}

- +
END @@ -936,10 +990,10 @@ if ( -e "/var/ipfire/cups/enable") my @Printers = keys(%printer); print < +

- END ; @@ -948,15 +1002,15 @@ foreach my $printerentry (sort @Printers) chomp $printerentry; print < - - END ; @@ -965,17 +1019,17 @@ print <
$Lang::tr{'manage printers'} +
$Lang::tr{'manage printers'}
$Lang::tr{'printername'}$Lang::tr{'options'}
$printerentry
+
- +
+
- +
- - -
+
- +
+
- +
+
- +
@@ -985,19 +1039,18 @@ END if ($sambasettings{'ACTION'} eq 'printeradd' || $sambasettings{'ACTION'} eq 'printercaption' ) { print <
- + - +
$Lang::tr{'add printer'}
$Lang::tr{'add printer'}
$Lang::tr{'show share options'}

+
-
END @@ -1008,18 +1061,17 @@ if ($sambasettings{'ACTION'} eq 'printerchange' || $sambasettings{'ACTION'} eq ' { my $printeroption = $printer{$sambasettings{'NAME'}}; print <
- + - +
$Lang::tr{'edit printer'}
$Lang::tr{'edit printer'}
$Lang::tr{'show share options'}

- +
END @@ -1056,10 +1108,9 @@ if ($sambasettings{'ACTION'} eq 'smbprinterchange') &Header::openbox('100%', 'center', 'Status'); print <
- +
$Lang::tr{'samba status'}
$Lang::tr{'samba status'}
$Status
END @@ -1079,11 +1130,11 @@ $Log=~s/\n/
/g; &Header::openbox('100%', 'center', $Lang::tr{'log'}); print < +

-
+ - + - + @@ -1159,12 +1210,12 @@ close FILE; if ( -e "/var/ipfire/cups/enable") { - if ( $sambasettings{'SECURITY'} eq 'User' && $sambasettings{'DOMAINMASTER'} eq 'true' ){system("/usr/local/bin/sambactrl smbsafeconfpdccups");} + if ( $sambasettings{'SECURITY'} eq 'user' && $sambasettings{'DOMAINMASTER'} eq 'true' ){system("/usr/local/bin/sambactrl smbsafeconfpdccups");} else {system("/usr/local/bin/sambactrl smbsafeconfcups");} } else { - if ( $sambasettings{'SECURITY'} eq 'User' && $sambasettings{'DOMAINMASTER'} eq 'true' ){system("/usr/local/bin/sambactrl smbsafeconfpdc");} + if ( $sambasettings{'SECURITY'} eq 'user' && $sambasettings{'DOMAINMASTER'} eq 'true' ){system("/usr/local/bin/sambactrl smbsafeconfpdc");} else{system("/usr/local/bin/sambactrl smbsafeconf");} }
$Lang::tr{'log view'}
$Lang::tr{'log view'}

$Lang::tr{'show last x lines'}

$Log