###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2005-2010 IPFire Team #
+# Copyright (C) 2005-2013 IPFire Team <info@ipfire.org> #
# #
# 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 #
############################################################################################################################
############################################# Samba Dienste fr Statusberprfung ##########################################
-my %servicenames = ('SMB Daemon' => 'smbd','NetBIOS Nameserver' => 'nmbd');
-#my %servicenames = ('SMB Daemon' => 'smbd','NetBIOS Nameserver' => 'nmbd','Winbind Daemon' => 'winbindd');
+my %servicenames = ('SMB Daemon' => 'smbd', 'NetBIOS Nameserver' => 'nmbd', 'Winbind Daemon' => 'winbindd');
&Header::showhttpheaders();
$sambasettings{'WORKGRP'} = 'homeip.net';
$sambasettings{'NETBIOSNAME'} = 'IPFire';
-$sambasettings{'SRVSTRING'} = 'Samba running on IPFire 2.7';
+$sambasettings{'SRVSTRING'} = 'Samba running on IPFire 2.x';
$sambasettings{'INTERFACES'} = '';
$sambasettings{'SECURITY'} = 'share';
$sambasettings{'OSLEVEL'} = '33';
$sambasettings{'PASSWORDSYNC'} = 'off';
$sambasettings{'OTHERINTERFACES'} = '127.0.0.1';
$sambasettings{'GUESTACCOUNT'} = 'samba';
-$sambasettings{'MAPTOGUEST'} = 'Never';
+$sambasettings{'MAPTOGUEST'} = 'Bad User';
$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{'SOCKETOPTIONS'} = 'TCP_NODELAY SO_RCVBUF=819200 SO_SNDBUF=819200 SO_KEEPALIVE';
$sambasettings{'WIDELINKS'} = 'on';
$sambasettings{'UNIXEXTENSION'} = 'off';
$sambasettings{'SMB2'} = 'off';
system("/usr/local/bin/sambactrl smbglobalreset");
$sambasettings{'WORKGRP'} = 'homeip.net';
$sambasettings{'NETBIOSNAME'} = 'IPFire';
- $sambasettings{'SRVSTRING'} = 'Samba running on IPFire 2.0';
+ $sambasettings{'SRVSTRING'} = 'Samba running on IPFire 2.x';
$sambasettings{'INTERFACES'} = '';
$sambasettings{'SECURITY'} = 'share';
$sambasettings{'OSLEVEL'} = '65';
$sambasettings{'PASSWORDSYNC'} = 'off';
$sambasettings{'OTHERINTERFACES'} = '127.0.0.1';
$sambasettings{'GUESTACCOUNT'} = 'samba';
- $sambasettings{'MAPTOGUEST'} = 'Never';
+ $sambasettings{'MAPTOGUEST'} = 'Bad User';
$sambasettings{'LOGLEVEL'} = '3 passdb:5 auth:5 winbind:2';
$sambasettings{'SYSLOGLEVEL'} = '1';
$sambasettings{'SYSLOGONLY'} = 'on';
$sambasettings{'LOCALMASTER'} = 'off';
$sambasettings{'DOMAINMASTER'} = 'off';
$sambasettings{'PREFERREDMASTER'} = 'off';
- $sambasettings{'SOCKETOPTIONS'} = 'TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE';
+ $sambasettings{'SOCKETOPTIONS'} = 'TCP_NODELAY SO_RCVBUF=819200 SO_SNDBUF=819200 SO_KEEPALIVE';
$sambasettings{'WIDELINKS'} = 'on';
$sambasettings{'UNIXEXTENSION'} = 'off';
$sambasettings{'SMB2'} = 'off';
refreshpage();
}
+if ($sambasettings{'ACTION'} eq 'join') {
+ $message .= &joindomain($sambasettings{'USERNAME'}, $sambasettings{'PASSWORD'});
+}
+
############################################################################################################################
################################################ Sicherheitsabfrage für den Reset ##########################################
netbios name = $sambasettings{'NETBIOSNAME'}
server string = $sambasettings{'SRVSTRING'}
workgroup = $sambasettings{'WORKGRP'}
+realm = $mainsettings{'DOMAINNAME'}
passdb backend = smbpasswd
wide links = $sambasettings{'WIDELINKS'}
wins support = $sambasettings{'WINSSUPPORT'}
wins server = $sambasettings{'WINSSRV'}
+winbind separator = +
+winbind uid = 10000-20000
+winbind gid = 10000-20000
+winbind use default domain = yes
+
log file = /var/log/samba/samba-log.%m
-lock directory = /var/lock/samba
pid directory = /var/run/
log level = $sambasettings{'LOGLEVEL'}
syslog = $sambasettings{'SYSLOGLEVEL'}
&Header::closebox();
}
+if ($message) {
+ $message = &Header::cleanhtml($message);
+ $message =~ s/\n/<br>/g;
+
+ &Header::openbox('100%', 'left', $Lang::tr{'messages'});
+ print "$message\n";
+ &Header::closebox();
+}
+
############################################################################################################################
########################################## Aktivieren von Checkboxen und Dropdowns #########################################
$checked{'VPN'}{'on'} = '';
$checked{'VPN'}{$sambasettings{'VPN'}} = "checked='checked'";
+if ( $sambasettings{'MAPTOGUEST'} eq "Never" ) {
+ $sambasettings{'MAPTOGUEST'}="Bad User";
+}
$selected{'MAPTOGUEST'}{$sambasettings{'MAPTOGUEST'}} = "selected='selected'";
$selected{'SECURITY'}{$sambasettings{'SECURITY'}} = "selected='selected'";
print <<END
<br />
<table width='95%' cellspacing='0'>
-END
-;
-if ( $message ne "" )
- {
- print "<tr><td colspan='3' align='left'><font color='red'>$message</font>";
- }
-
-print <<END
<tr bgcolor='$color{'color20'}'><td colspan='2' align='left'><b>$Lang::tr{'all services'}</b></td></tr>
</table><table width='95%' cellspacing='0'>
END
<option value='server' $selected{'SECURITY'}{'server'}>Server</option>
</select></td></tr>
<tr><td align='left' width='40%'>$Lang::tr{'map to guest'}</td><td align='left'><select name='MAPTOGUEST' style="width: 165px">
- <option value='Never' $selected{'MAPTOGUEST'}{'Never'}>Never</option>
<option value='Bad User' $selected{'MAPTOGUEST'}{'Bad User'}>Bad User</option>
<option value='Bad Password' $selected{'MAPTOGUEST'}{'Bad Password'}>Bad Password</option>
</select></td></tr>
<form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'accounting'}'>
<table width='95%' cellspacing='0'>
<tr bgcolor='$color{'color20'}'><td colspan='2' align='left'><b>$Lang::tr{'change passwords'}</b></td></tr>
- <tr><td align='left'>$Lang::tr{'username'}</td><td><input type='text' name='USERNAME' value='$username' size='30' readonly /></td></tr>
+ <tr><td align='left'>$Lang::tr{'username'}</td><td><input type='text' name='USERNAME' value='$username' size='30' readonly='readonly' /></td></tr>
<tr><td align='left'>$Lang::tr{'password'}</td><td><input type='password' name='PASSWORD' value='$password' size='30' /></td></tr>
<tr><td colspan='2' align='center'><input type='hidden' name='ACTION' value='smbchangepw' />
- <input type='image' alt=$Lang::tr{'save'} title=$Lang::tr{'save'} src='/images/media-floppy.png' /></td></tr>
+ <input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' /></td></tr>
</table>
</form>
END
<tr><td align='left'>$Lang::tr{'unix group'}</td><td><input type='text' name='GROUP' value='sambauser' size='30' /></td></tr>
<tr><td align='left'>$Lang::tr{'unix shell'}</td><td><input type='text' name='SHELL' value='/bin/false' size='30' /></td></tr>
<tr><td colspan='2' align='center'><input type='hidden' name='ACTION' value='smbuseradd' />
- <input type='image' alt=$Lang::tr{'save'} title=$Lang::tr{'save'} src='/images/media-floppy.png' /></td></tr>
+ <input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' /></td></tr>
</table>
</form>
END
<tr><td align='left'>$Lang::tr{'unix group'}</td><td><input type='text' name='GROUP' value='sambawks' size='30' /></td></tr>
<tr><td align='left'>$Lang::tr{'unix shell'}</td><td><input type='text' name='SHELL' value='/bin/false' size='30' /></td></tr>
<tr><td colspan='2' align='center'><input type='hidden' name='ACTION' value='smbpcadd' />
- <input type='image' title=$Lang::tr{'save'} alt=$Lang::tr{'save'} src='/images/media-floppy.png' /></td></tr>
+ <input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' /></td></tr>
</table>
</form>
END
&Header::closebox();
}
+if ($sambasettings{'SECURITY'} eq "ADS") {
+ &Header::openbox('100%', 'center', $Lang::tr{'samba join a domain'});
+
+ my $AD_DOMAINNAME = uc($mainsettings{'DOMAINNAME'});
+
+ print <<END;
+ <form method="POST" action="$ENV{'SCRIPT_NAME'}">
+ <input type="hidden" name="ACTION" value="join">
+
+ <table width="95%">
+ <tbody>
+ <tr>
+ <td width="40%">
+ $Lang::tr{'domain'}
+ </td>
+ <td>
+ $AD_DOMAINNAME
+ </td>
+ </tr>
+ <tr>
+ <td width="40%">
+ $Lang::tr{'administrator username'}
+ </td>
+ <td>
+ <input type="text" name="USERNAME" size="30">
+ </td>
+ </tr>
+ <tr>
+ <td width="40%">
+ $Lang::tr{'administrator password'}
+ </td>
+ <td>
+ <input type="password" name="PASSWORD" size="30">
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>
+ <input type="submit" value="$Lang::tr{'samba join domain'}">
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </form>
+END
+
+ &Header::closebox();
+}
+
############################################################################################################################
############################################### Verwalten von Freigaben ####################################################
print <<END
<a name="$Lang::tr{'manage shares'}"></a>
<br />
-<table width='95%' cellspacing='0'>
-<tr><td bgcolor='$color{'color20'}' colspan='3' align='left'><b>$Lang::tr{'manage shares'}</b>
-<tr><td align='left'><u>$Lang::tr{'sharename'}</u></td><td colspan='2' width="5%" align='center'><u>$Lang::tr{'options'}</u></td></tr>
+<table width='95%' cellspacing='0' class='tbl'>
+<tr><th bgcolor='$color{'color20'}' colspan='3' align='left'><b>$Lang::tr{'manage shares'}</b></th></tr>
+<tr><th align='left'><u>$Lang::tr{'sharename'}</u></th><th colspan='2' width="5%" align='center'><u>$Lang::tr{'options'}</u></th></tr>
END
;
my @Shares = keys(%shares);
my $lines = 0;
-
+my $col="";
foreach my $shareentry (sort @Shares)
{
chomp $shareentry;
- if ($lines % 2) {print "<tr bgcolor='$color{'color20'}'>";} else {print "<tr bgcolor='$color{'color22'}'>";}
+ if ($lines % 2) {
+ print "<tr>";
+ $col="bgcolor='$color{'color20'}'";
+ } else {
+ print "<tr>";
+ $col="bgcolor='$color{'color22'}'";
+ }
print <<END
- <td align='left'>$shareentry</td>
- <td><form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'manage shares'}'>
+ <td align='left' $col>$shareentry</td>
+ <td $col><form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'manage shares'}'>
<input type='hidden' name='NAME' value='$shareentry' />
<input type='hidden' name='ACTION' value='sharechange' />
<input type='image' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' src='/images/edit.gif' />
</form></td>
- <td><form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'manage shares'}'>
+ <td $col><form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'manage shares'}'>
<input type='hidden' name='NAME' value='$shareentry' />
<input type='hidden' name='ACTION' value='smbsharedel' />
<input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/user-trash.png' />
}
return $status;
}
+
+sub joindomain {
+ my $username = shift;
+ my $password = shift;
+
+ my @options = ("/usr/local/bin/sambactrl", "join", $username, $password);
+ my $output = qx(@options);
+
+ return $output;
+}