X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=html%2Fcgi-bin%2Fsamba.cgi;h=69cb9fe25872fabe0cb57690ccb3df75b806d788;hb=5b2a12ff8ad39591a5a57a0f2122edc2934f5ec3;hp=d70f87ab9b555dcd7ee4692feed26885ef65af57;hpb=97de2cae62f9d8bf61681561211fa8170d0808e2;p=people%2Fpmueller%2Fipfire-2.x.git
diff --git a/html/cgi-bin/samba.cgi b/html/cgi-bin/samba.cgi
index d70f87ab9b..69cb9fe258 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,315 +16,1183 @@ require "${General::swroot}/lang.pl";
require "${General::swroot}/header.pl";
my %sambasettings = ();
+my %cgisettings = ();
my %checked = ();
my %netsettings = ();
my %ovpnsettings = ();
+my %color = ();
+my %mainsettings = ();
my $message = "";
my $errormessage = "";
-my $shareentry = "";
-my @shares = ();
-my @shareline = ();
-my @proto = ();
+
+my @Logs = qx(ls /var/log/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 $userfile = "${General::swroot}/samba/private/smbpasswd";
my %selected= () ;
-my $sharefile = "/var/ipfire/samba/shares";
+
+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);
+
+############################################################################################################################
+############################################# 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();
-$sambasettings{'ENABLED'} = 'off';
-$sambasettings{'EDIT'} = 'no';
-$sambasettings{'VALID'} = 'yes';
+############################################################################################################################
+#################################### Initialisierung von Samba Variablen fr global Settings ###############################
+
$sambasettings{'WORKGRP'} = 'homeip.net';
-$sambasettings{'NETBIOSNAME'} = 'IPFIRE';
-$sambasettings{'SRVSTRING'} = 'Samba Server %v running on IPFire 2.0';
-$sambasettings{'INTERFACES'} = 'eth0';
+$sambasettings{'NETBIOSNAME'} = 'IPFire';
+$sambasettings{'SRVSTRING'} = 'Samba running on IPFire 2.0';
+$sambasettings{'INTERFACES'} = '';
$sambasettings{'SECURITY'} = 'share';
-$sambasettings{'OSLEVEL'} = '20';
-$sambasettings{'PDC'} = 'off';
+$sambasettings{'OSLEVEL'} = '33';
$sambasettings{'GREEN'} = 'on';
$sambasettings{'BLUE'} = 'off';
$sambasettings{'ORANGE'} = 'off';
$sambasettings{'VPN'} = 'off';
-$sambasettings{'WINSSERV'} = '';
-$sambasettings{'WINS'} = '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';
+$sambasettings{'SOCKETOPTIONS'} = 'TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE';
### Values that have to be initialized
$sambasettings{'ACTION'} = '';
+### Samba CUPS Variablen
+$sambasettings{'LOADPRINTERS'} = 'Yes';
+$sambasettings{'PRINTING'} = 'cups';
+$sambasettings{'PRINTCAPNAME'} = 'cups';
+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);
+sub refreshpage{&Header::openbox( 'Waiting', 1, "" );}
+
&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'}");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");
+ $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';
+### Samba CUPS Variablen
+ $sambasettings{'LOADPRINTERS'} = 'Yes';
+ $sambasettings{'PRINTING'} = 'cups';
+ $sambasettings{'PRINTCAPNAME'} = 'cups';
+ $sambasettings{'PRINTERNAME'} = 'Printer';
+### 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");
+ refreshpage();
+ }
+
+############################################################################################################################
+################################################ Sicherheitsabfrage für den Reset ##########################################
+
+if ($sambasettings{'ACTION'} eq 'globalreset')
+ {
+ print <
+
+ $Lang::tr{'resetglobals'}
+ |
|
+ |
+
+
+END
+;
+}
+
+if ($sambasettings{'ACTION'} eq 'sharesreset')
+ {
+ print <
+
+ $Lang::tr{'resetshares'}
+ |
|
+ |
+
+
+END
+;
+ }
+
############################################################################################################################
+########################################### Samba Benutzer oder PC l�chen #################################################
+
+if ($sambasettings{'ACTION'} eq 'userdelete'){system("/usr/local/bin/sambactrl smbuserdelete $sambasettings{'NAME'}");refreshpage();}
+
+############################################################################################################################
+##################################### Umsetzen der Werte von Checkboxen und Dropdowns ######################################
if ($sambasettings{'ACTION'} eq $Lang::tr{'save'})
{
- &General::writehash("${General::swroot}/samba/settings", \%sambasettings);
-}
+$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{'OTHERINTERFACES'} ne ''){ $sambasettings{'INTERFACES'} .= " $sambasettings{'OTHERINTERFACES'}";}
-&General::readhash("${General::swroot}/samba/settings", \%sambasettings);
+############################################################################################################################
+##################################### Schreiben settings und bersetzen fr smb.conf #######################################
+
+delete $sambasettings{'__CGI__'};delete $sambasettings{'x'};delete $sambasettings{'y'};
+&General::writehash("${General::swroot}/samba/settings", \%sambasettings);
+
+if ($sambasettings{'PASSWORDSYNC'} eq 'on'){ $sambasettings{'PASSWORDSYNC'} = "true";} else { $sambasettings{'PASSWORDSYNC'} = "false";}
+if ($sambasettings{'WINSSUPPORT'} eq 'on'){ $sambasettings{'WINSSUPPORT'} = "true";$sambasettings{'WINSSRV'} = "";} else { $sambasettings{'WINSSUPPORT'} = "false";}
+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";}
+
+############################################################################################################################
+############################################# Schreiben der Samba globals ##################################################
+
+ open (FILE, ">${General::swroot}/samba/global") or die "Can't save the global 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();
+system("/usr/local/bin/sambactrl smbreload");refreshpage();
}
+ &General::readhash("${General::swroot}/samba/settings", \%sambasettings);
+
-$checked{'PDC'}{'on'} = '';
-$checked{'PDC'}{'off'} = '';
-$checked{'PDC'}{"$sambasettings{'PDC'}"} = 'checked';
-$checked{'WINS'}{'on'} = '';
-$checked{'WINS'}{'off'} = '';
-$checked{'WINS'}{"$sambasettings{'WINS'}"} = 'checked';
-$checked{'GREEN'}{'on'} = '';
+if ($errormessage)
+ {
+ &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
+ print "$errormessage\n";
+ print " \n";
+ &Header::closebox();
+ }
+
+############################################################################################################################
+########################################## Aktivieren von Checkboxen und Dropdowns #########################################
+
+$checked{'WINSSUPPORT'}{'off'} = '';
+$checked{'WINSSUPPORT'}{'on'} = '';
+$checked{'WINSSUPPORT'}{$sambasettings{'WINSSUPPORT'}} = "checked='checked'";
+$checked{'PASSWORDSYNC'}{'off'} = '';
+$checked{'PASSWORDSYNC'}{'on'} = '';
+$checked{'PASSWORDSYNC'}{$sambasettings{'PASSWORDSYNC'}} = "checked='checked'";
+$checked{'LOCALMASTER'}{'off'} = '';
+$checked{'LOCALMASTER'}{'on'} = '';
+$checked{'LOCALMASTER'}{$sambasettings{'LOCALMASTER'}} = "checked='checked'";
+$checked{'DOMAINMASTER'}{'off'} = '';
+$checked{'DOMAINMASTER'}{'on'} = '';
+$checked{'DOMAINMASTER'}{$sambasettings{'DOMAINMASTER'}} = "checked='checked'";
+$checked{'PREFERREDMASTER'}{'off'} = '';
+$checked{'PREFERREDMASTER'}{'on'} = '';
+$checked{'PREFERREDMASTER'}{$sambasettings{'PREFERREDMASTER'}} = "checked='checked'";
$checked{'GREEN'}{'off'} = '';
-$checked{'GREEN'}{"$sambasettings{'GREEN'}"} = 'checked';
-$checked{'BLUE'}{'on'} = '';
+$checked{'GREEN'}{'on'} = '';
+$checked{'GREEN'}{$sambasettings{'GREEN'}} = "checked='checked'";
$checked{'BLUE'}{'off'} = '';
-$checked{'BLUE'}{"$sambasettings{'BLUE'}"} = 'checked';
-$checked{'ORANGE'}{'on'} = '';
+$checked{'BLUE'}{'on'} = '';
+$checked{'BLUE'}{$sambasettings{'BLUE'}} = "checked='checked'";
$checked{'ORANGE'}{'off'} = '';
-$checked{'ORANGE'}{"$sambasettings{'ORANGE'}"} = 'checked';
-$checked{'VPN'}{'on'} = '';
+$checked{'ORANGE'}{'on'} = '';
+$checked{'ORANGE'}{$sambasettings{'ORANGE'}} = "checked='checked'";
$checked{'VPN'}{'off'} = '';
-$checked{'VPN'}{"$sambasettings{'VPN'}"} = 'checked';
+$checked{'VPN'}{'on'} = '';
+$checked{'VPN'}{$sambasettings{'VPN'}} = "checked='checked'";
-$selected{'MAPTOGUEST'}{'Never'} = '';
-$selected{'MAPTOGUEST'}{'Bad User'} = '';
-$selected{'MAPTOGUEST'}{'Bad Password'} = '';
$selected{'MAPTOGUEST'}{$sambasettings{'MAPTOGUEST'}} = "selected='selected'";
-$selected{'SECURITY'}{'share'} = '';
-$selected{'SECURITY'}{'user'} = '';
-$selected{'SECURITY'}{'server'} = '';
-$selected{'SECURITY'}{'domain'} = '';
$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";
- }
-
- my $lines = 0;
- my $key = '';
- foreach $key (sort keys %servicenames)
- {
- if ($lines % 2) {
- print " |
\n"; }
- else {
- print "
\n"; }
- print "$key | \n";
- my $shortname = $servicenames{$key};
- my $status = &isrunning($shortname);
- print "$status\n";
- print <
-END
-;
- print "
\n";
- $lines++;
- }
- print <
- Alle Dienste: |
-
-
-
- |
-
-
-
+
+
END
;
-&Header::closebox();
+if ( $message ne "" )
+ {
+ print "$message";
+ }
+
+print <$Lang::tr{'all services'} | |
+
+END
+;
+
+my $key = '';
+foreach $key (sort keys %servicenames)
+ {
+ print "$key | ";
+ my $shortname = $servicenames{$key};
+ my $status = &isrunning($shortname);
+ print "$status
";
+ }
+
+print <
+
+
+
+