]>
git.ipfire.org Git - ipfire-2.x.git/blob - html/cgi-bin/samba.cgi
5 # This code is distributed under the terms of the GPL
11 # enable only the following on debugging purpose
13 use CGI
::Carp
'fatalsToBrowser';
15 require '/var/ipfire/general-functions.pl';
16 require "${General::swroot}/lang.pl";
17 require "${General::swroot}/header.pl";
19 my %sambasettings = ();
22 my %ovpnsettings = ();
24 my $errormessage = "";
30 my $sharefile = "/var/ipfire/samba/shares";
31 &General
::readhash
("${General::swroot}/ethernet/settings", \
%netsettings);
32 &General
::readhash
("${General::swroot}/ovpn/settings", \
%ovpnsettings);
36 'SMB Daemon' => 'smbd',
37 'NetBIOS Nameserver' => 'nmbd',
38 'Winbind Daemon' => 'winbindd'
41 &Header
::showhttpheaders
();
43 $sambasettings{'ENABLED'} = 'off';
44 $sambasettings{'EDIT'} = 'no';
45 $sambasettings{'VALID'} = 'yes';
46 $sambasettings{'WORKGRP'} = 'homeip.net';
47 $sambasettings{'NETBIOSNAME'} = 'IPFIRE';
48 $sambasettings{'SRVSTRING'} = 'Samba Server %v running on IPFire 2.0';
49 $sambasettings{'INTERFACES'} = 'eth0';
50 $sambasettings{'SECURITY'} = 'share';
51 $sambasettings{'OSLEVEL'} = '20';
52 $sambasettings{'PDC'} = 'off';
53 $sambasettings{'GREEN'} = 'on';
54 $sambasettings{'BLUE'} = 'off';
55 $sambasettings{'ORANGE'} = 'off';
56 $sambasettings{'VPN'} = 'off';
57 $sambasettings{'WINSSERV'} = '';
58 $sambasettings{'WINS'} = 'off';
59 ### Values that have to be initialized
60 $sambasettings{'ACTION'} = '';
62 &General
::readhash
("${General::swroot}/samba/settings", \
%sambasettings);
63 &Header
::getcgihash
(\
%sambasettings);
65 &Header
::openpage
('Samba', 1, '');
66 &Header
::openbigbox
('100%', 'left', '', $errormessage);
68 ############################################################################################################################
69 ############################################################################################################################
71 if ($sambasettings{'ACTION'} eq $Lang::tr
{'save'})
73 &General
::writehash
("${General::swroot}/samba/settings", \
%sambasettings);
76 &General
::readhash
("${General::swroot}/samba/settings", \
%sambasettings);
79 &Header
::openbox
('100%', 'left', $Lang::tr
{'error messages'});
80 print "<class name='base'>$errormessage\n";
81 print " </class>\n";
85 $checked{'PDC'}{'on'} = '';
86 $checked{'PDC'}{'off'} = '';
87 $checked{'PDC'}{"$sambasettings{'PDC'}"} = 'checked';
88 $checked{'WINS'}{'on'} = '';
89 $checked{'WINS'}{'off'} = '';
90 $checked{'WINS'}{"$sambasettings{'WINS'}"} = 'checked';
91 $checked{'GREEN'}{'on'} = '';
92 $checked{'GREEN'}{'off'} = '';
93 $checked{'GREEN'}{"$sambasettings{'GREEN'}"} = 'checked';
94 $checked{'BLUE'}{'on'} = '';
95 $checked{'BLUE'}{'off'} = '';
96 $checked{'BLUE'}{"$sambasettings{'BLUE'}"} = 'checked';
97 $checked{'ORANGE'}{'on'} = '';
98 $checked{'ORANGE'}{'off'} = '';
99 $checked{'ORANGE'}{"$sambasettings{'ORANGE'}"} = 'checked';
100 $checked{'VPN'}{'on'} = '';
101 $checked{'VPN'}{'off'} = '';
102 $checked{'VPN'}{"$sambasettings{'VPN'}"} = 'checked';
104 $selected{'MAPTOGUEST'}{'Never'} = '';
105 $selected{'MAPTOGUEST'}{'Bad User'} = '';
106 $selected{'MAPTOGUEST'}{'Bad Password'} = '';
107 $selected{'MAPTOGUEST'}{$sambasettings{'MAPTOGUEST'}} = "selected='selected'";
108 $selected{'SECURITY'}{'share'} = '';
109 $selected{'SECURITY'}{'user'} = '';
110 $selected{'SECURITY'}{'server'} = '';
111 $selected{'SECURITY'}{'domain'} = '';
112 $selected{'SECURITY'}{$sambasettings{'SECURITY'}} = "selected='selected'";
114 ############################################################################################################################
115 ############################################################################################################################
117 &Header
::openbox
('100%', 'center', 'Samba');
119 <table width='400px' cellspacing='0'>
122 if ( $message ne "" ) {
123 print "<tr><td colspan='3' align='center'><font color='red'>$message</font>";
128 foreach $key (sort keys %servicenames)
131 print "<tr bgcolor='${Header::table1colour}'>\n"; }
133 print "<tr bgcolor='${Header::table2colour}'>\n"; }
134 print "<td align='left'>$key</td>\n";
135 my $shortname = $servicenames{$key};
136 my $status = &isrunning
($shortname);
139 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
140 <input type='hidden' name='ACTION' value='restart $shortname'>
141 <input type='image' src='/images/reload.gif'>
149 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
150 <tr><td><b>Alle Dienste:</b></td><td colspan='2'>
151 <input type='submit' name='ACTION' value='Start' />
152 <input type='submit' name='ACTION' value='Stop' />
153 <input type='submit' name='ACTION' value='$Lang::tr{'restart'}' />
157 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
158 <table width='500px'>
159 <tr><td colspan='2' align='left'>
160 <tr><td colspan='2' align='left'>
161 <tr><td colspan='2' align='left'><b>Basisoptionen</b>
162 <tr><td align='left'>Workgroup:<td><input type='text' name='WORKGRP' value='$sambasettings{'WORKGRP'}'>
163 <tr><td align='left'>NetBIOS-Name:<td><input type='text' name='NETBIOSNAME' value='$sambasettings{'NETBIOSNAME'}'>
164 <tr><td align='left'>Server-String:<td><input type='text' name='SRVSTRING' value='$sambasettings{'SRVSTRING'}'>
165 <tr><td align='left'>Interfaces:<td><input type='checkbox' name='VPN' $checked{'VPN'}{'on'}><font size='2' color='$Header::colourovpn'><b> OpenVpn - $ovpnsettings{'DDEVICE'}
166 <tr><td align='left'><td><input type='checkbox' name='GREEN' $checked{'GREEN'}{'on'}><font size='2' color='$Header::colourgreen'><b> $Lang::tr{'green'} - $netsettings{'GREEN_DEV'}
169 if (&Header
::blue_used
()){
171 <tr><td align='left'><td><input type='checkbox' name='BLUE' $checked{'BLUE'}{'on'}><font size='2' color='$Header::colourblue'><b> $Lang::tr{'wireless'} - $netsettings{'BLUE_DEV'}
175 if (&Header
::orange_used
()){
177 <tr><td align='left'><td><input type='checkbox' name='ORANGE' $checked{'ORANGE'}{'on'}><font size='2' color='$Header::colourorange'><b> $Lang::tr{'dmz'} - $netsettings{'ORANGE_DEV'}
183 <tr><td colspan='2' align='left'>
184 <tr><td colspan='2' align='left'>
185 <tr><td colspan='2' align='left'><b>Sicherheitsoptionen</b>
186 <tr><td align='left'>Security:<td><select name='SECURITY'>
187 <option value='share' $selected{'SECURITY'}{'share'}>SHARE</option>
188 <option value='user' $selected{'SECURITY'}{'user'}>USER</option>
189 <option value='server' $selected{'SECURITY'}{'server'}>SERVER</option>
190 <option value='domain' $selected{'SECURITY'}{'domain'}>DOMAIN</option>
193 <tr><td colspan='2' align='left'>
194 <tr><td colspan='2' align='left'>
195 <tr><td colspan='2' align='left'><b>Browsingoptionen</b>
196 <tr><td align='left'>OS Level:<td><input type='text' name='OSLEVEL' value='$sambasettings{'OSLEVEL'}'>
197 <tr><td align='left'>Primary Domain Controller:<td>on <input type='radio' name='PDC' value='on' $checked{'PDC'}{'on'}>/
198 <input type='radio' name='PDC' value='off' $checked{'PDC'}{'off'}> off
200 <tr><td colspan='2' align='left'>
201 <tr><td colspan='2' align='left'>
202 <tr><td colspan='2' align='left'><b>WINS-Optionen</b>
203 <tr><td align='left'>WINS-Server:<td><input type='text' name='WINSSRV' value='$sambasettings{'WINSSRV'}'>
204 <tr><td align='left'>WINS-Support:<td>on <input type='radio' name='WINS' value='on' $checked{'WINS'}{'on'}>/
205 <input type='radio' name='WINS' value='off' $checked{'WINS'}{'off'}> off
207 <tr><td colspan='1' align='right'><input type='submit' name='ACTION' value=$Lang::tr{'save'}>
214 &Header
::openbox
('100%', 'center', 'Shares');
219 <tr><th width='40%'>Name der Freigabe<th width='40%'>Pfad<th width='20%'>Optionen
222 open( FILE
, "< $sharefile" ) or die "Unable to read $sharefile";
225 foreach $shareentry (sort @shares)
227 @shareline = split( /\;/, $shareentry );
229 <tr><td align='center' bgcolor='#EAEAEA'><b>$shareline[0]</b>
230 <td align='center' bgcolor='#EAEAEA'>$shareline[2]
231 <td align='right' bgcolor='#EAEAEA'>
232 <table border='0'><tr>
235 if ($shareline[1] eq 'enabled') {
237 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
238 <input type='hidden' name='NAME' value='shareline[0]'>
239 <input type='hidden' name='ACTION' value='disable'>
240 <input type='image' alt='Ausschalten' src='/images/on.gif'>
244 } elsif ($shareline[1] eq 'disabled') {
246 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
247 <input type='hidden' name='NAME' value='shareline[0]'>
248 <input type='hidden' name='ACTION' value='enable'>
249 <input type='image' alt='Einschalten' src='/images/off.gif'>
255 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
256 <input type='hidden' name='NAME' value='shareline[0]'>
257 <input type='hidden' name='ACTION' value='Bearbeiten'>
258 <input type='image' alt='Bearbeiten' src='/images/edit.gif'>
260 <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
261 <input type='hidden' name='NAME' value='shareline[0]'>
262 <input type='hidden' name='ACTION' value='Loeschen'>
263 <input type='image' alt='Loeschen' src='/images/delete.gif'>
270 <tr><td colspan='8' align='right' valign='middle'><b>Legende:</b> <img src='/images/edit.gif'> Freigabe bearbeiten | <img src='/images/delete.gif'> Freigabe loeschen
278 if ($sambasettings{'SECURITY'} eq 'user')
280 &Header
::openbox
('100%', 'center', 'User');
285 <tr><td colspan='2' align='left'>
286 <tr><td colspan='2' align='left'><b>Benutzerverwaltung</b>
294 &Header
::closebigbox
();
295 &Header
::closepage
();
297 ############################################################################################################################
298 ############################################################################################################################
303 my $status = "<td bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td>";
311 if (open(FILE
, "/var/run/${cmd}.pid"))
313 $pid = <FILE
>; chomp $pid;
315 if (open(FILE
, "/proc/${pid}/status"))
319 if (/^Name:\W+(.*)/) {
323 if ($testcmd =~ /$exename/)
325 $status = "<td bgcolor='${Header::colourgreen}'><font color='white'><b>$Lang::tr{'running'}</b></font></td>";