]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - html/cgi-bin/samba.cgi
samba: Add GUI functionality to join a domain.
[people/pmueller/ipfire-2.x.git] / html / cgi-bin / samba.cgi
index 27856cab9ba00f6d14c886e9104c35ec82d0c018..b9bf9f3f3933974dd7310e34ec9090b00753fb20 100644 (file)
@@ -2,7 +2,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2005-2012  IPFire Team  <info@ipfire.org>                     #
+# 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        #
@@ -67,8 +67,7 @@ $ovpnip[3]=$ovpnip[3]+1;
 ############################################################################################################################
 ############################################# 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();
 
@@ -92,14 +91,14 @@ $sambasettings{'REMOTESYNC'} = '';
 $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';
@@ -149,7 +148,7 @@ 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{'SRVSTRING'} = 'Samba running on IPFire 2.x';
        $sambasettings{'INTERFACES'} = '';
        $sambasettings{'SECURITY'} = 'share';
        $sambasettings{'OSLEVEL'} = '65';
@@ -164,7 +163,7 @@ if ($sambasettings{'ACTION'} eq 'globalresetyes')
        $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';
@@ -183,7 +182,7 @@ if ($sambasettings{'ACTION'} eq 'globalresetyes')
        $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';
@@ -192,6 +191,10 @@ if ($sambasettings{'ACTION'} eq 'globalresetyes')
        refreshpage();
        }
 
+if ($sambasettings{'ACTION'} eq 'join') {
+       $message .= &joindomain($sambasettings{'USERNAME'}, $sambasettings{'PASSWORD'});
+}
+
 ############################################################################################################################
 ################################################ Sicherheitsabfrage für den Reset ##########################################
 
@@ -276,6 +279,7 @@ print FILE <<END
 netbios name = $sambasettings{'NETBIOSNAME'}
 server string = $sambasettings{'SRVSTRING'}
 workgroup = $sambasettings{'WORKGRP'}
+realm = $mainsettings{'DOMAINNAME'}
 passdb backend = smbpasswd
 
 wide links = $sambasettings{'WIDELINKS'}
@@ -315,6 +319,11 @@ username level = 1
 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/
@@ -384,6 +393,15 @@ if ($errormessage)
        &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 #########################################
 
@@ -427,6 +445,9 @@ $checked{'VPN'}{'off'} = '';
 $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'";
 
@@ -437,14 +458,6 @@ $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
@@ -530,7 +543,6 @@ print <<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>
@@ -814,10 +826,10 @@ END
                <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
@@ -842,7 +854,7 @@ 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
@@ -863,7 +875,7 @@ 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
@@ -873,6 +885,55 @@ 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 ####################################################
 
@@ -884,27 +945,33 @@ my %shares =  config("${General::swroot}/samba/shares");
 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' />
@@ -1296,3 +1363,13 @@ sub isrunning
                }
        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;
+}