X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=blobdiff_plain;f=html%2Fcgi-bin%2Fsamba.cgi;h=13a7a8254895562e1eba35813e7ed1694d807bc2;hp=e45ca26fd02752b12dd821dd10e0f1e110d24fb7;hb=4594712a1777fdd03b51491cf82bd06d45c16472;hpb=fa7be6597cdea9f028ca09c875eec3ecd193953a
diff --git a/html/cgi-bin/samba.cgi b/html/cgi-bin/samba.cgi
index e45ca26fd0..13a7a82548 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,59 +33,54 @@ my %cgisettings = ();
my %checked = ();
my %netsettings = ();
my %ovpnsettings = ();
+my %color = ();
+my %mainsettings = ();
my $message = "";
my $errormessage = "";
+
my @Logs = qx(ls /var/log/samba/);
-my $Log ='kein Log ausgewählt';
-my $defaultoption= "[Share]\npath = /var/samba/share1\ncomment = Share - Public Access\nbrowseable = yes\nwriteable = yes\ncreate mask = 0777\ndirectory mask = 0777\nguest ok = yes\npublic = yes\nforce user = samba";
+my $Log =$Lang::tr{'no log selected'};
+
+my $Status = qx(/usr/local/bin/sambactrl smbstatus);
+$Status=~s/\n/
/g;
+
my $userentry = "";
my @user = ();
my @userline = ();
-my @proto = ();
+my $userfile = "${General::swroot}/samba/private/smbpasswd";
my %selected= () ;
-my $userfile = "/var/ipfire/samba/private/smbpasswd";
+
+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 $defaultprinter= "[Printer]\ncomment = Printer public\npath = /var/spool/cups\nprinting = sysvn\nprintcap = lpstat\npublic = yes\nwritable = no\nprintable = yes";
+my %printer = ();
+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 ##########################################
-my %servicenames = ('SMB Daemon' => 'smbd','NetBIOS Nameserver' => 'nmbd','Winbind Daemon' => 'winbindd');
+my %servicenames = ('SMB Daemon' => 'smbd','NetBIOS Nameserver' => 'nmbd');
+#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 running on IPFire 2.0';
+$sambasettings{'SRVSTRING'} = 'Samba running on IPFire 2.7';
$sambasettings{'INTERFACES'} = '';
$sambasettings{'SECURITY'} = 'share';
-$sambasettings{'OSLEVEL'} = '65';
+$sambasettings{'OSLEVEL'} = '33';
$sambasettings{'GREEN'} = 'on';
$sambasettings{'BLUE'} = 'off';
$sambasettings{'ORANGE'} = 'off';
@@ -80,14 +88,27 @@ $sambasettings{'VPN'} = 'off';
$sambasettings{'WINSSRV'} = '';
$sambasettings{'WINSSUPPORT'} = 'on';
$sambasettings{'REMOTEANNOUNCE'} = '';
+$sambasettings{'REMOTESYNC'} = '';
$sambasettings{'PASSWORDSYNC'} = 'off';
-$sambasettings{'OTHERINTERFACES'} = '';
+$sambasettings{'OTHERINTERFACES'} = '127.0.0.1';
$sambasettings{'GUESTACCOUNT'} = 'samba';
$sambasettings{'MAPTOGUEST'} = 'Never';
-$sambasettings{'LOGLEVEL'} = '3 passdb:5 auth:10 winbind:2';
+$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';
+$sambasettings{'WIDELINKS'} = 'on';
+$sambasettings{'UNIXEXTENSION'} = 'off';
### Values that have to be initialized
$sambasettings{'ACTION'} = '';
-$sambasettings{'LOGLINES'} = '15';
+### Samba CUPS Variablen
+$sambasettings{'LOADPRINTERS'} = 'Yes';
+$sambasettings{'PRINTING'} = 'cups';
+$sambasettings{'PRINTCAPNAME'} = 'cups';
+my $LOGLINES = '50';
################################################## Samba PDC Variablen #####################################################
@@ -102,21 +123,26 @@ my $PDCOPTIONS = `cat ${General::swroot}/samba/pdc`;
&General::readhash("${General::swroot}/samba/settings", \%sambasettings);
&Header::getcgihash(\%sambasettings);
+sub refreshpage{&Header::openbox( 'Waiting', 1, "" );print "
$Lang::tr{'pagerefresh'}";&Header::closebox();}
+
+if (($sambasettings{'WIDELINKS'} eq 'on') & ($sambasettings{'UNIXEXTENSION'} eq 'on'))
+ {$errormessage = "$errormessage
Don't enable 'Wide links' and 'Unix extension' at the same time"; }
+
&Header::openpage('Samba', 1, '');
&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 'smbstop'){system("/usr/local/bin/sambactrl smbstop");}
+if ($sambasettings{'ACTION'} eq 'smbuserdisable'){system("/usr/local/bin/sambactrl smbuserdisable $sambasettings{'NAME'}");refreshpage();}
+if ($sambasettings{'ACTION'} eq 'smbuserenable'){system("/usr/local/bin/sambactrl smbuserenable $sambasettings{'NAME'}");refreshpage();}
+if ($sambasettings{'ACTION'} eq 'smbuseradd'){system("/usr/local/bin/sambactrl smbuseradd $sambasettings{'USERNAME'} $sambasettings{'PASSWORD'} $sambasettings{'GROUP'} $sambasettings{'SHELL'}");refreshpage();}
+if ($sambasettings{'ACTION'} eq 'smbpcadd'){system("/usr/local/bin/sambactrl smbpcadd $sambasettings{'PCNAME'} $sambasettings{'GROUP'} $sambasettings{'SHELL'}");refreshpage();}
+if ($sambasettings{'ACTION'} eq 'smbchangepw'){system("/usr/local/bin/sambactrl smbchangepw $sambasettings{'USERNAME'} $sambasettings{'PASSWORD'}");refreshpage();}
+if ($sambasettings{'ACTION'} eq 'smbrestart'){system("/usr/local/bin/sambactrl smbrestart");refreshpage();}
+if ($sambasettings{'ACTION'} eq 'smbstart'){system("/usr/local/bin/sambactrl smbstart");refreshpage();}
+if ($sambasettings{'ACTION'} eq 'smbstop'){system("/usr/local/bin/sambactrl smbstop");refreshpage();}
+if ($sambasettings{'ACTION'} eq 'smbreload'){system("/usr/local/bin/sambactrl smbreload");refreshpage();}
if ($sambasettings{'ACTION'} eq 'globalresetyes')
{
system("/usr/local/bin/sambactrl smbglobalreset");
@@ -133,53 +159,49 @@ if ($sambasettings{'ACTION'} eq 'globalresetyes')
$sambasettings{'WINSSRV'} = '';
$sambasettings{'WINSSUPPORT'} = 'on';
$sambasettings{'REMOTEANNOUNCE'} = '';
+ $sambasettings{'REMOTESYNC'} = '';
$sambasettings{'PASSWORDSYNC'} = 'off';
- $sambasettings{'OTHERINTERFACES'} = '';
+ $sambasettings{'OTHERINTERFACES'} = '127.0.0.1';
$sambasettings{'GUESTACCOUNT'} = 'samba';
$sambasettings{'MAPTOGUEST'} = 'Never';
- $sambasettings{'LOGLEVEL'} = '3 passdb:5 auth:10 winbind:2';
+ $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';
+ $sambasettings{'PRINTCAPNAME'} = 'cups';
+ $sambasettings{'PRINTERNAME'} = 'Printer';
### Values that have to be initialized
+ $sambasettings{'WIDELINKS'} = 'on';
+ $sambasettings{'UNIXEXTENSION'} = 'off';
$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");
+ refreshpage();
}
-# 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]);
- }
-}
-
############################################################################################################################
################################################ Sicherheitsabfrage für den Reset ##########################################
if ($sambasettings{'ACTION'} eq 'globalreset')
{
print <
-
|
- Globals zurück setzen?
+ |
$Lang::tr{'resetglobals'}
|
|
|
@@ -190,14 +212,14 @@ END
if ($sambasettings{'ACTION'} eq 'sharesreset')
{
print <
-
|
- Shares zurück setzen?
+ |
$Lang::tr{'resetshares'}
|
|
|
@@ -208,161 +230,7 @@ END
############################################################################################################################
########################################### Samba Benutzer oder PC l�chen #################################################
-if ($sambasettings{'ACTION'} eq 'userdelete'){system("/usr/local/bin/sambactrl smbuserdelete $sambasettings{'NAME'}");}
-
-############################################################################################################################
-############################################## Samba Share neu anlegen #####################################################
-
-if ($sambasettings{'ACTION'} eq 'smbshareadd')
-{
- my $emptyline= "";
- open (FILE, ">>${General::swroot}/samba/shares") or die "Can't save the shares 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/shares") or die "Can't delete the share settings: $!";
-flock (FILE, 2);
-print FILE <${General::swroot}/samba/pdc") or die "Can't save the pdc settings: $!";
- flock (FILE, 2);
- print FILE <>${General::swroot}/samba/global") or die "Can't save the global cups settings: $!";
+ flock (FILE, 2);
+ print FILE <${General::swroot}/samba/pdc") or die "Can't save the pdc settings: $!";
+ flock (FILE, 2);
+ chomp $sambasettings{'PDCOPTIONS'};
+ $sambasettings{'PDCOPTIONS'} =~ s/\r\n/\n/gi;
+ $sambasettings{'PDCOPTIONS'} =~ s/^\n//gi;
+ $sambasettings{'PDCOPTIONS'} =~ s/^\r//gi;
+ $sambasettings{'PDCOPTIONS'} =~ s/^.\n//gi;
+ $sambasettings{'PDCOPTIONS'} =~ s/^.\r//gi;
+ print FILE <$errormessage\n";
- print " \n";
- &Header::closebox();
- }
+if ($errormessage)
+ {
+ &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
+ print "$errormessage\n";
+ print " \n";
+ &Header::closebox();
+ }
############################################################################################################################
########################################## 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'";
@@ -482,6 +394,12 @@ $checked{'DOMAINMASTER'}{$sambasettings{'DOMAINMASTER'}} = "checked='checked'";
$checked{'PREFERREDMASTER'}{'off'} = '';
$checked{'PREFERREDMASTER'}{'on'} = '';
$checked{'PREFERREDMASTER'}{$sambasettings{'PREFERREDMASTER'}} = "checked='checked'";
+$checked{'WIDELINKS'}{'off'} = '';
+$checked{'WIDELINKS'}{'on'} = '';
+$checked{'WIDELINKS'}{$sambasettings{'WIDELINKS'}} = "checked='checked'";
+$checked{'UNIXEXTENSION'}{'off'} = '';
+$checked{'UNIXEXTENSION'}{'on'} = '';
+$checked{'UNIXEXTENSION'}{$sambasettings{'UNIXEXTENSION'}} = "checked='checked'";
$checked{'GREEN'}{'off'} = '';
$checked{'GREEN'}{'on'} = '';
$checked{'GREEN'}{$sambasettings{'GREEN'}} = "checked='checked'";
@@ -501,20 +419,19 @@ $selected{'SECURITY'}{$sambasettings{'SECURITY'}} = "selected='selected'";
############################################################################################################################
################################### Aufbau der HTML Seite fr globale Sambaeinstellungen ###################################
-&Header::openbox('100%', 'center', 'Samba');
+&Header::openbox('100%', 'center', $Lang::tr{'samba'});
print <
-
+
+
END
;
if ( $message ne "" )
{
- print "$message";
+ print " |
$message";
}
print <
| |
-Alle Dienste |
+$Lang::tr{'all services'} |
END
;
@@ -522,40 +439,38 @@ END
my $key = '';
foreach $key (sort keys %servicenames)
{
- print "$key";
+ print " |
$key | ";
my $shortname = $servicenames{$key};
my $status = &isrunning($shortname);
- print "$status";
- print <
-END
-;
+ print "$status
";
}
print <
|
- |
-
-
+
+
+