]>
Commit | Line | Data |
---|---|---|
5e773594 MT |
1 | #!/usr/bin/perl |
2 | # | |
3 | # IPFire CGIs | |
4 | # | |
5 | # This code is distributed under the terms of the GPL | |
6 | # | |
7 | # (c) The IPFire Team | |
8 | # | |
9 | ||
10 | use strict; | |
11 | # enable only the following on debugging purpose | |
12 | use warnings; | |
13 | use CGI::Carp 'fatalsToBrowser'; | |
14 | ||
15 | require '/var/ipfire/general-functions.pl'; | |
16 | require "${General::swroot}/lang.pl"; | |
17 | require "${General::swroot}/header.pl"; | |
18 | ||
19 | my %sambasettings = (); | |
20 | my %checked = (); | |
21 | my %netsettings = (); | |
97de2cae | 22 | my %ovpnsettings = (); |
5e773594 MT |
23 | my $message = ""; |
24 | my $errormessage = ""; | |
25 | my $shareentry = ""; | |
26 | my @shares = (); | |
27 | my @shareline = (); | |
1ee8bf5d MT |
28 | my $shareconfigentry = ""; |
29 | my @sharesconfig = (); | |
30 | my @shareconfigline = (); | |
31 | my $userentry = ""; | |
32 | my @user = (); | |
33 | my @userline = (); | |
5e773594 MT |
34 | my @proto = (); |
35 | my %selected= () ; | |
36 | my $sharefile = "/var/ipfire/samba/shares"; | |
1ee8bf5d | 37 | my $userfile = "/var/ipfire/samba/private/smbpasswd"; |
5e773594 | 38 | &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); |
97de2cae | 39 | &General::readhash("${General::swroot}/ovpn/settings", \%ovpnsettings); |
5e773594 MT |
40 | |
41 | my %servicenames = | |
42 | ( | |
97de2cae MT |
43 | 'SMB Daemon' => 'smbd', |
44 | 'NetBIOS Nameserver' => 'nmbd', | |
45 | 'Winbind Daemon' => 'winbindd' | |
5e773594 MT |
46 | ); |
47 | ||
48 | &Header::showhttpheaders(); | |
49 | ||
5e773594 MT |
50 | $sambasettings{'WORKGRP'} = 'homeip.net'; |
51 | $sambasettings{'NETBIOSNAME'} = 'IPFIRE'; | |
1ee8bf5d MT |
52 | $sambasettings{'SRVSTRING'} = 'Samba Server running on IPFire 2.0'; |
53 | $sambasettings{'INTERFACES'} = ''; | |
5e773594 | 54 | $sambasettings{'SECURITY'} = 'share'; |
1ee8bf5d | 55 | $sambasettings{'OSLEVEL'} = '65'; |
97de2cae MT |
56 | $sambasettings{'GREEN'} = 'on'; |
57 | $sambasettings{'BLUE'} = 'off'; | |
58 | $sambasettings{'ORANGE'} = 'off'; | |
59 | $sambasettings{'VPN'} = 'off'; | |
1ee8bf5d MT |
60 | $sambasettings{'WINSSRV'} = "$netsettings{'GREEN_NETADDRESS'}"; |
61 | $sambasettings{'WINSSUPPORT'} = 'off'; | |
62 | $sambasettings{'OTHERINTERFACES'} = ''; | |
63 | $sambasettings{'GUESTACCOUNT'} = 'samba'; | |
64 | $sambasettings{'MAPTOGUEST'} = 'Never'; | |
65 | $sambasettings{'BINDINTERFACESONLY'} = 'True'; | |
5e773594 MT |
66 | ### Values that have to be initialized |
67 | $sambasettings{'ACTION'} = ''; | |
68 | ||
69 | &General::readhash("${General::swroot}/samba/settings", \%sambasettings); | |
70 | &Header::getcgihash(\%sambasettings); | |
71 | ||
72 | &Header::openpage('Samba', 1, ''); | |
73 | &Header::openbigbox('100%', 'left', '', $errormessage); | |
74 | ||
75 | ############################################################################################################################ | |
76 | ############################################################################################################################ | |
77 | ||
1ee8bf5d MT |
78 | if ($sambasettings{'ACTION'} eq 'smbuserdisable'){system('/usr/local/bin/sambactrl 1 $sambasettings{"NAME"}');} |
79 | if ($sambasettings{'ACTION'} eq 'smbuserenable'){system('/usr/local/bin/sambactrl 2 $sambasettings{"NAME"}');} | |
80 | if ($sambasettings{'ACTION'} eq 'smbuserdelete'){system('/usr/local/bin/sambactrl 3 $sambasettings{"NAME"}');} | |
81 | if ($sambasettings{'ACTION'} eq 'smbuseradd'){system('/usr/local/bin/sambactrl 4 $username $password');} | |
82 | if ($sambasettings{'ACTION'} eq 'smbchangepw'){system('/usr/local/bin/sambactrl 5 $username $password');} | |
83 | if ($sambasettings{'ACTION'} eq 'smbsharechange'){system('/usr/local/bin/sambactrl 7 $sambasettings{"SHARENAME"} $sambasettings{"SHAREOPTION"}');} | |
84 | if ($sambasettings{'ACTION'} eq 'smbstart'){system('/usr/local/bin/sambactrl 8');} | |
85 | if ($sambasettings{'ACTION'} eq 'smbstop'){system('/usr/local/bin/sambactrl 9');} | |
86 | ||
87 | ############################################################################################################################ | |
88 | ############################################## Samba Share neu anlegen ##################################################### | |
89 | ||
90 | if ($sambasettings{'ACTION'} eq 'smbshareadd') | |
5e773594 | 91 | { |
1ee8bf5d MT |
92 | my $emptyline= ""; |
93 | system('/usr/local/bin/sambactrl 6'); | |
94 | open (FILE, ">>${General::swroot}/samba/shares") or die "Can't save the shares settings: $!"; | |
95 | flock (FILE, 2); | |
96 | ||
97 | print FILE <<END | |
98 | $sambasettings{'SHAREOPTION'} | |
99 | $emptyline | |
100 | END | |
101 | ; | |
102 | close FILE; | |
5e773594 MT |
103 | } |
104 | ||
1ee8bf5d MT |
105 | ############################################################################################################################ |
106 | ############################################################################################################################ | |
107 | ||
108 | if ($sambasettings{'ACTION'} eq $Lang::tr{'save'}) | |
109 | { | |
110 | $sambasettings{'INTERFACES'} = ''; | |
111 | if ($checked{'GREEN'}){ $sambasettings{'INTERFACES'} = "$sambasettings{'INTERFACES'} $netsettings{'GREEN_DEV'}";} | |
112 | if ($checked{'BLUE'}){ $sambasettings{'INTERFACES'} = "$sambasettings{'INTERFACES'} $netsettings{'BLUE_DEV'}";} | |
113 | if ($checked{'ORANGE'}){ $sambasettings{'INTERFACES'} = "$sambasettings{'INTERFACES'} $netsettings{'ORANGE_DEV'}";} | |
114 | if ($checked{'VPN'}){ $sambasettings{'INTERFACES'} = "$sambasettings{'INTERFACES'} $ovpnsettings{'DDEVICE'}";} | |
115 | if ($sambasettings{'OTHERINTERFACES'} ne ''){ $sambasettings{'INTERFACES'} = "$sambasettings{'INTERFACES'} $sambasettings{'OTHERINTERFACES'}";} | |
116 | ||
117 | ############################################################################################################################ | |
118 | ############################################################################################################################ | |
119 | ||
120 | &General::writehash("${General::swroot}/samba/settings", \%sambasettings); | |
121 | ||
122 | open (FILE, ">${General::swroot}/samba/global") or die "Can't save the global settings: $!"; | |
123 | flock (FILE, 2); | |
124 | ||
125 | print FILE <<END | |
126 | # global.settings by IPFire Project | |
127 | ||
128 | [global] | |
129 | netbios name = $sambasettings{'NETBIOSNAME'} | |
130 | server string = $sambasettings{'SRVSTRING'} | |
131 | workgroup = $sambasettings{'WORKGRP'} | |
132 | ||
133 | keep alive = 30 | |
134 | os level = $sambasettings{'OSLEVEL'} | |
135 | fstype = NTFS | |
136 | ||
137 | preferred master = yes | |
138 | domain master = yes | |
139 | local master = yes | |
140 | ||
141 | kernel oplocks = false | |
142 | map to guest = $sambasettings{'MAPTOGUEST'} | |
143 | smb ports = 445 139 | |
144 | unix charset = CP850 | |
145 | ||
146 | security = $sambasettings{'SECURITY'} | |
147 | encrypt passwords = yes | |
148 | guest account = $sambasettings{'GUESTACCOUNT'} | |
149 | unix password sync = no | |
150 | null passwords = yes | |
151 | ||
152 | bind interfaces only = $sambasettings{'BINDINTERFACESONLY'} | |
153 | interfaces = $sambasettings{'INTERFACES'} | |
154 | socket options = TCP_NODELAY IPTOS_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE | |
155 | ||
156 | username level = 1 | |
157 | wins support = $sambasettings{'WINSSUPPORT'} | |
158 | local master = yes | |
159 | ||
160 | log file = /var/log/samba/samba-log.%m | |
161 | lock directory = /var/lock/samba | |
162 | pid directory = /var/run/ | |
163 | ||
164 | END | |
165 | ; | |
166 | close FILE; | |
167 | } | |
168 | &General::readhash("${General::swroot}/samba/settings", \%sambasettings); | |
5e773594 MT |
169 | |
170 | if ($errormessage) { | |
97de2cae MT |
171 | &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); |
172 | print "<class name='base'>$errormessage\n"; | |
173 | print " </class>\n"; | |
174 | &Header::closebox(); | |
1ee8bf5d MT |
175 | } |
176 | ||
177 | $checked{'WINSSUPPORT'}{$sambasettings{'WINSSUPPORT'}} = "checked='checked' "; | |
178 | $checked{'GREEN'}{$sambasettings{'GREEN'}} = "checked='checked' "; | |
179 | $checked{'BLUE'}{$sambasettings{'BLUE'}} = "checked='checked' "; | |
180 | $checked{'ORANGE'}{$sambasettings{'ORANGE'}} = "checked='checked' "; | |
181 | $checked{'VPN'}{$sambasettings{'VPN'}} = "checked='checked' "; | |
5e773594 | 182 | |
97de2cae | 183 | $selected{'MAPTOGUEST'}{$sambasettings{'MAPTOGUEST'}} = "selected='selected'"; |
97de2cae | 184 | $selected{'SECURITY'}{$sambasettings{'SECURITY'}} = "selected='selected'"; |
5e773594 MT |
185 | |
186 | ############################################################################################################################ | |
187 | ############################################################################################################################ | |
188 | ||
189 | &Header::openbox('100%', 'center', 'Samba'); | |
190 | print <<END | |
1ee8bf5d MT |
191 | <hr> |
192 | <table width='500px' cellspacing='0'><br> | |
5e773594 MT |
193 | END |
194 | ; | |
97de2cae | 195 | if ( $message ne "" ) { |
1ee8bf5d | 196 | print "<tr><td colspan='2' align='left'><font color='red'>$message</font>"; |
97de2cae | 197 | } |
1ee8bf5d MT |
198 | print <<END |
199 | <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Alle Dienste</b></td></tr> | |
200 | </table><table width='500px' cellspacing='0'> | |
201 | END | |
202 | ; | |
97de2cae MT |
203 | my $key = ''; |
204 | foreach $key (sort keys %servicenames) | |
205 | { | |
1ee8bf5d | 206 | print "<tr><td align='left'>$key"; |
97de2cae MT |
207 | my $shortname = $servicenames{$key}; |
208 | my $status = &isrunning($shortname); | |
1ee8bf5d | 209 | print "$status</td>"; |
97de2cae MT |
210 | print <<END |
211 | <td><form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
212 | <input type='hidden' name='ACTION' value='restart $shortname'> | |
213 | <input type='image' src='/images/reload.gif'> | |
214 | </form></td> | |
5e773594 MT |
215 | END |
216 | ; | |
97de2cae MT |
217 | } |
218 | print <<END | |
219 | <form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
1ee8bf5d MT |
220 | <table width='500px' cellspacing='0'><br> |
221 | <tr><td colspan='2' align='center'> | |
97de2cae MT |
222 | <input type='submit' name='ACTION' value='Start' /> |
223 | <input type='submit' name='ACTION' value='Stop' /> | |
224 | <input type='submit' name='ACTION' value='$Lang::tr{'restart'}' /> | |
1ee8bf5d MT |
225 | </td></tr></form></table> |
226 | ||
97de2cae | 227 | <form method='post' action='$ENV{'SCRIPT_NAME'}'> |
1ee8bf5d MT |
228 | <table width='500px' cellspacing='0'><br> |
229 | <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Basisoptionen</b></td></tr> | |
230 | <tr><td align='left'>Workgroup:</td><td><input type='text' name='WORKGRP' value='$sambasettings{'WORKGRP'}' size="30"></td></tr> | |
231 | <tr><td align='left'>NetBIOS-Name:</td><td><input type='text' name='NETBIOSNAME' value='$sambasettings{'NETBIOSNAME'}' size="30"></td></tr> | |
232 | <tr><td align='left'>Server-String:</td><td><input type='text' name='SRVSTRING' value='$sambasettings{'SRVSTRING'}' size="30"></td></tr> | |
233 | <tr><td align='left'>Interfaces:</td><td><input type='checkbox' name='VPN' $checked{'VPN'}{'on'}><font size='2' color='$Header::colourovpn'><b> OpenVpn - $ovpnsettings{'DDEVICE'}</td></tr> | |
234 | <tr><td align='left'></td><td><input type='checkbox' name='GREEN' $checked{'GREEN'}{'on'}><font size='2' color='$Header::colourgreen'><b> $Lang::tr{'green'} - $netsettings{'GREEN_DEV'}</td></tr> | |
5e773594 MT |
235 | END |
236 | ; | |
97de2cae MT |
237 | if (&Header::blue_used()){ |
238 | print <<END | |
1ee8bf5d | 239 | <tr><td align='left'></td><td><input type='checkbox' name='BLUE' $checked{'BLUE'}{'on'}><font size='2' color='$Header::colourblue'><b> $Lang::tr{'wireless'} - $netsettings{'BLUE_DEV'}</td></tr> |
5e773594 MT |
240 | END |
241 | ; | |
97de2cae MT |
242 | } |
243 | if (&Header::orange_used()){ | |
244 | print <<END | |
1ee8bf5d | 245 | <tr><td align='left'></td><td><input type='checkbox' name='ORANGE' $checked{'ORANGE'}{'on'}><font size='2' color='$Header::colourorange'><b> $Lang::tr{'dmz'} - $netsettings{'ORANGE_DEV'}</td></tr> |
97de2cae MT |
246 | END |
247 | ; | |
248 | } | |
249 | print <<END | |
1ee8bf5d MT |
250 | <tr><td align='center'>weitere</td><td><input type='text' name='OTHERINTERFACES' value='$sambasettings{'OTHERINTERFACES'}' size="30"></td></tr> |
251 | <tr><td align='left'><br></td><td></td></tr> | |
252 | <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Sicherheitsoptionen</b></td></tr> | |
253 | <tr><td align='left'>Security:</td><td><select name='SECURITY'> | |
254 | <option value='share' $selected{'SECURITY'}{'share'}>Share</option> | |
255 | <option value='user' $selected{'SECURITY'}{'user'}>User</option> | |
256 | <option value='domain' $selected{'SECURITY'}{'domain'}>Domain</option> | |
257 | <option value='ADS' $selected{'SECURITY'}{'ADS'}>ADS</option> | |
258 | <option value='server' $selected{'SECURITY'}{'server'}>Server</option> | |
259 | ||
260 | </select></td></tr> | |
261 | <tr><td align='left'>Map to guest:</td><td><select name='MAPTOGUEST'> | |
262 | <option value='Never' $selected{'MAPTOGUEST'}{'Never'}>Never</option> | |
263 | <option value='Bad User' $selected{'MAPTOGUEST'}{'Bad User'}>Bad User</option> | |
264 | <option value='Bad Password' $selected{'MAPTOGUEST'}{'Bad Password'}>Bad Password</option> | |
265 | </select></td></tr> | |
266 | <tr><td align='left'><br></td><td></td></tr> | |
267 | <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Browsingoptionen</b></td></tr> | |
268 | <tr><td align='left'>OS Level:</td><td><input type='text' name='OSLEVEL' value='$sambasettings{'OSLEVEL'}' size="30"></td></tr> | |
269 | <tr><td align='left'><br></td><td></td></tr> | |
270 | <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>WINS-Optionen</b></td></tr> | |
271 | <tr><td align='left'>WINS-Server:</td><td><input type='text' name='WINSSRV' value='$sambasettings{'WINSSRV'}' size="30"></td></tr> | |
272 | <tr><td align='left'>WINS-Support:</td><td>on <input type='radio' name='WINSSUPPORT' value='on' $checked{'WINSSUPPORT'}{'on'}>/ | |
273 | <input type='radio' name='WINSSUPPORT' value='off' $checked{'WINSSUPPORT'}{'off'}> off</td></tr> | |
274 | <tr><td colspan='2' align='center'><input type='submit' name='ACTION' value=$Lang::tr{'save'}></td></tr> | |
97de2cae MT |
275 | </table> |
276 | </form> | |
5e773594 MT |
277 | END |
278 | ; | |
279 | &Header::closebox(); | |
280 | ||
1ee8bf5d MT |
281 | if ($sambasettings{'SECURITY'} eq 'user') |
282 | { | |
283 | &Header::openbox('100%', 'center', 'accounting - user Security'); | |
5e773594 MT |
284 | |
285 | print <<END | |
1ee8bf5d MT |
286 | <hr> |
287 | <table width='500px' cellspacing='0'><br> | |
288 | <tr><td colspan='6' align='left'> | |
289 | <tr><td bgcolor='${Header::table1colour}' colspan='6' align='left'><b>Benutzerverwaltung</b> | |
290 | <tr><td><u>Benutzername</u></td><td><u>Passwort</u></td><td><u>Status</u></td><td colspan='3' width="5"><u>Optionen</u></td></tr> | |
97de2cae MT |
291 | END |
292 | ; | |
1ee8bf5d MT |
293 | open( FILE, "< $userfile") or die "Can't read user file: $!"; |
294 | @user = <FILE>; | |
295 | close(FILE); | |
296 | foreach $userentry (sort @user) | |
97de2cae | 297 | { |
1ee8bf5d MT |
298 | @userline = split( /\:/, $userentry ); |
299 | print <<END | |
300 | <tr><td align='left'>$userline[0]</td><td> | |
5e773594 MT |
301 | END |
302 | ; | |
1ee8bf5d MT |
303 | if ($userline[2] =~ m/N/){ |
304 | print <<END | |
305 | nicht gesetzt</td><td> | |
5e773594 MT |
306 | END |
307 | ; | |
1ee8bf5d MT |
308 | }else{ |
309 | print <<END | |
310 | gesetzt</td><td> | |
5e773594 MT |
311 | END |
312 | ; | |
1ee8bf5d MT |
313 | } |
314 | if ($userline[2] =~ m/D/){ | |
315 | print <<END | |
316 | aktiv</td> | |
317 | <td><form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
318 | <input type='hidden' name='NAME' value='$userline[0]'> | |
319 | <input type='hidden' name='ACTION' value='userdisable'> | |
320 | <input type='image' alt='Deaktivieren' src='/images/off.gif'> | |
321 | </form></td> | |
322 | END | |
323 | ; | |
324 | }else{ | |
325 | print <<END | |
326 | inaktiv</td> | |
327 | <td><form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
328 | <input type='hidden' name='NAME' value='$userline[0]'> | |
329 | <input type='hidden' name='ACTION' value='userenable'> | |
330 | <input type='image' alt='Aktivieren' src='/images/on.gif'> | |
331 | </form></td> | |
332 | END | |
333 | ; | |
334 | } | |
335 | print <<END | |
336 | <td><form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
337 | <input type='hidden' name='NAME' value='$userline[0]'> | |
338 | <input type='hidden' name='ACTION' value='userchangepw'> | |
97de2cae | 339 | <input type='image' alt='Bearbeiten' src='/images/edit.gif'> |
1ee8bf5d MT |
340 | </form></td> |
341 | <td><form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
342 | <input type='hidden' name='NAME' value='$userline[0]'> | |
343 | <input type='hidden' name='ACTION' value='userdelete'> | |
97de2cae | 344 | <input type='image' alt='Loeschen' src='/images/delete.gif'> |
1ee8bf5d MT |
345 | </form></td> |
346 | </td></tr> | |
5e773594 MT |
347 | END |
348 | ; | |
97de2cae MT |
349 | } |
350 | print <<END | |
1ee8bf5d MT |
351 | </table> |
352 | <table width='50px' cellspacing='0'><br> | |
353 | <tr><td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
354 | <input type='hidden' name='ACTION' value='useradd'> | |
355 | <input type='image' alt='Benutzer anlegen' src='/images/add.gif'></form></td> | |
356 | <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
357 | <input type='hidden' name='ACTION' value='usercaption'> | |
358 | <input type='image' alt='Legende' src='/images/info.gif'></form> | |
359 | </td><tr> | |
360 | </table> | |
361 | END | |
362 | ; | |
363 | if ($sambasettings{'ACTION'} eq 'usercaption') | |
364 | { | |
365 | print <<END | |
366 | <table width='500px' cellspacing='0'><br> | |
367 | <tr><td><b>Legende:</b></td></tr> | |
368 | <tr><td><img src='/images/add.gif'>Benutzer neu anlegen</td></tr> | |
369 | <tr><td><img src='/images/on.gif'>Benutzer aktivieren</td></tr> | |
370 | <tr><td><img src='/images/off.gif'>Benutzer deaktivieren</td></tr> | |
371 | <tr><td><img src='/images/edit.gif'>Passwort wechseln</td></tr> | |
372 | <tr><td><img src='/images/delete.gif'>Benutzer loeschen</td></tr> | |
97de2cae | 373 | </table> |
5e773594 MT |
374 | END |
375 | ; | |
1ee8bf5d MT |
376 | } |
377 | ||
378 | if ($sambasettings{'ACTION'} eq 'userchangepw') | |
379 | { | |
380 | my $username = "$sambasettings{'NAME'}"; | |
381 | my $password = 'samba'; | |
382 | print <<END | |
383 | <hr> | |
384 | <form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
385 | <table width='500px' cellspacing='0'><br> | |
386 | <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Passwort wechseln</b></td></tr> | |
387 | <tr><td align='left'>Benutzername</td><td><input type='text' name='USERNAME' value='$username' size="30"></td></tr> | |
388 | <tr><td align='left'>Passwort</td><td><input type='password' name='PASSWORD' value='$password' size="30"></td></tr> | |
389 | <tr><td colspan='2' align='center'><input type='submit' name='ACTION' value='smbchangepw'></td></tr></form> | |
390 | </table> | |
391 | END | |
392 | ; | |
393 | } | |
394 | if ($sambasettings{'ACTION'} eq 'useradd') | |
395 | { | |
396 | my $username = "User"; | |
397 | my $password = 'samba'; | |
398 | print <<END | |
399 | <hr> | |
400 | <form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
401 | <table width='500px' cellspacing='0'><br> | |
402 | <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Benutzer neu anlegen</b></td></tr> | |
403 | <tr><td align='left'>Benutzername</td><td><input type='text' name='USERNAME' value='$username' size="30"></td></tr> | |
404 | <tr><td align='left'>Passwort</td><td><input type='password' name='PASSWORD' value='$password' size="30"></td></tr> | |
405 | <tr><td colspan='2' align='center'><input type='submit' name='ACTION' value='smbuseradd'></td></tr></form> | |
406 | </table> | |
407 | END | |
408 | ; | |
409 | } | |
97de2cae MT |
410 | |
411 | &Header::closebox(); | |
1ee8bf5d MT |
412 | } |
413 | ||
414 | &Header::openbox('100%', 'center', 'Shares'); | |
97de2cae | 415 | |
1ee8bf5d MT |
416 | print <<END |
417 | <hr> | |
418 | <table width='500px' cellspacing='0'><br> | |
419 | <tr><td bgcolor='${Header::table1colour}' colspan='3' align='left'><b>Shareverwaltung</b> | |
420 | <tr><td><u>Names des Shares</u></td><td colspan='2' width="5"><u>Optionen</u></td></tr> | |
421 | END | |
422 | ; | |
423 | my @Zeilen; | |
424 | my @Shares; | |
425 | @shares = `grep -n '^\\[' $sharefile`; | |
426 | foreach $shareentry (@shares) | |
427 | { | |
428 | @shareline = split( /\:/, $shareentry ); | |
429 | push(@Zeilen,$shareline[0]);push(@Shares,$shareline[1]); | |
430 | } | |
431 | ||
432 | foreach $shareentry (sort @Shares) | |
433 | { | |
434 | print <<END | |
435 | <tr><td align='left'>$shareentry</td> | |
436 | <td><form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
437 | <input type='hidden' name='NAME' value='$shareentry'> | |
438 | <input type='hidden' name='ACTION' value='sharechange'> | |
439 | <input type='image' alt='Bearbeiten' src='/images/edit.gif'> | |
440 | </td></form> | |
441 | <td><form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
442 | <input type='hidden' name='NAME' value='$shareentry'> | |
443 | <input type='hidden' name='ACTION' value='Loeschen'> | |
444 | <input type='image' alt='Loeschen' src='/images/delete.gif'> | |
445 | </td></form><tr> | |
446 | END | |
447 | ; | |
448 | } | |
449 | print <<END | |
450 | </table> | |
97de2cae | 451 | |
1ee8bf5d MT |
452 | <table width='50px' cellspacing='0'><br> |
453 | <tr><td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
454 | <input type='hidden' name='ACTION' value='shareadd'> | |
455 | <input type='image' alt='neuen Share anlegen' src='/images/add.gif'></form></td> | |
456 | <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
457 | <input type='hidden' name='ACTION' value='sharecaption'> | |
458 | <input type='image' alt='Legende' src='/images/info.gif'></form> | |
459 | </td><tr> | |
460 | </table> | |
461 | END | |
462 | ; | |
463 | if ($sambasettings{'ACTION'} eq 'sharecaption') | |
97de2cae | 464 | { |
1ee8bf5d MT |
465 | print <<END |
466 | <table width='500px' cellspacing='0'><br> | |
467 | <tr><td><b>Legende:</b></td></tr> | |
468 | <tr><td><img src='/images/add.gif'>Share neu anlegen</td></tr> | |
469 | <tr><td><img src='/images/edit.gif'>Share bearbeiten</td></tr> | |
470 | <tr><td><img src='/images/delete.gif'>Share loeschen</td></tr> | |
471 | </table> | |
472 | END | |
473 | ; | |
474 | } | |
97de2cae | 475 | |
1ee8bf5d MT |
476 | if ($sambasettings{'ACTION'} eq 'shareadd' || $sambasettings{'ACTION'} eq 'optioncaption' ) |
477 | { | |
478 | ||
479 | my $defaultoption= "[Share]\npath = /shares/share1\ncomment = Share - Public Access\nbrowseable = yes\nwriteable = yes\ncreate mask = 0777\ndirectory mask = 0777\nguest ok = yes\npublic = yes\nforce user = samba"; | |
480 | ||
481 | print <<END | |
482 | <hr> | |
483 | <table width='500px' cellspacing='0'><br> | |
484 | <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>neuen Share anlegen</b></td></tr> | |
485 | <tr><td colspan='2' align='center'></td></tr> | |
486 | <form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
487 | <tr><td colspan='2' align='center'>Anzeige der Optionen fuer Shares<input type='hidden' name='ACTION' value='optioncaption'> | |
488 | <input type='image' alt='Legende' src='/images/info.gif'></td></tr></form> | |
489 | <form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
490 | <tr><td colspan='2' align='center'><textarea name="SHAREOPTION" cols="50" rows="15" Wrap="off">$defaultoption</textarea></td></tr> | |
491 | </table> | |
492 | <table width='50px' cellspacing='0'><br> | |
493 | <tr><td align='center'><input type='submit' name='ACTION' value='smbshareadd'></td></tr></form> | |
97de2cae | 494 | </table> |
5e773594 MT |
495 | END |
496 | ; | |
1ee8bf5d | 497 | } |
5e773594 | 498 | |
1ee8bf5d MT |
499 | if ($sambasettings{'ACTION'} eq 'sharechange' || $sambasettings{'ACTION'} eq 'optioncaption2' ) |
500 | { | |
501 | my $sharename = "$sambasettings{'NAME'}"; | |
502 | my $shareoption = ''; | |
503 | chomp $sharename; | |
504 | $sharename=~s/\s//g; | |
505 | ||
506 | for(my $i = 0; $i <= $#Shares; $i++) | |
507 | { | |
508 | chomp $Shares[$i]; | |
509 | $Shares[$i]=~s/\s//g; | |
510 | if ( "$Shares[$i]" eq "$sharename" ) | |
511 | { | |
512 | my $Zeilenbegin = $Zeilen[$i+1]-2; | |
513 | my $Zeilenende = $Zeilen[$i+1]-$Zeilen[$i]; | |
514 | my $EOF = qx(cat $sharefile | wc -l); | |
515 | if ( $Zeilen[$i] eq $Zeilen[$#Shares] ) | |
516 | {$Zeilenende = $EOF-$Zeilen[$#Shares]+1;$Zeilenbegin = $EOF-$Zeilen[$#Shares]; $shareoption = qx(tail -$Zeilenende $sharefile | head -$Zeilenbegin);} | |
517 | else{$shareoption = qx(head -$Zeilenbegin $sharefile | tail -$Zeilenende);} | |
518 | } | |
519 | } | |
520 | ||
521 | print <<END | |
522 | <hr> | |
523 | <table width='500px' cellspacing='0'><br> | |
524 | <tr bgcolor='${Header::table1colour}'><td colspan='2' align='left'><b>Share bearbeiten</b></td></tr> | |
525 | <tr><td colspan='2' align='center'></td></tr> | |
526 | <form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
527 | <tr><td colspan='2' align='center'>Anzeige der Optionen fuer Shares<input type='hidden' name='ACTION' value='optioncaption2'> | |
528 | <input type='image' alt='Legende' src='/images/info.gif'></td></tr></form> | |
529 | <form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
530 | <tr><td colspan='2' align='center'><textarea name="SHAREOPTION" cols="50" rows="15" Wrap="off">$shareoption</textarea></td></tr> | |
531 | </table> | |
532 | <table width='50px' cellspacing='0'><br> | |
533 | <tr><td align='center'><input type='submit' name='ACTION' value='smbsharechange'></td></tr></form> | |
534 | </table> | |
535 | END | |
536 | ; | |
97de2cae | 537 | } |
5e773594 | 538 | |
1ee8bf5d MT |
539 | if ($sambasettings{'ACTION'} eq 'optioncaption' || $sambasettings{'ACTION'} eq 'optioncaption2') |
540 | { | |
541 | print <<END | |
542 | <table width='500px' cellspacing='0'><br> | |
543 | <tr><td><b>Legende:</b></td></tr> | |
544 | <tr><td><u>Option</u></td><td><u>Bedeutung</u> / <u>Beispiel</u></td></tr> | |
545 | <tr><td>comment</td><td>Kommentar</td></tr> | |
546 | <tr><td></td><td>comment = Mein neues Share</td></tr> | |
547 | <tr><td><br></td><td></td></tr> | |
548 | <tr><td>path</td><td>Pfad zum Verzeichnis</td></tr> | |
549 | <tr><td></td><td>path = /share/neu</td></tr> | |
550 | <tr><td><br></td><td></td></tr> | |
551 | <tr><td>writeable</td><td>Verzeichnis schreibbar</td></tr> | |
552 | <tr><td></td><td>writeable = yes</td></tr> | |
553 | <tr><td><br></td><td></td></tr> | |
554 | <tr><td>browseable</td><td>sichtbar in Verzeichnisliste</td></tr> | |
555 | <tr><td></td><td>browsable = yes</td></tr> | |
556 | <tr><td><br></td><td></td></tr> | |
557 | <tr><td>user</td><td>Besitzer der Freigabe</td></tr> | |
558 | <tr><td></td><td>user = samba</td></tr> | |
559 | <tr><td><br></td><td></td></tr> | |
560 | <tr><td>valid users</td><td>Liste der Zugriffsberechtigten</td></tr> | |
561 | <tr><td></td><td>valid users = samba, user1</td></tr> | |
562 | <tr><td><br></td><td></td></tr> | |
563 | <tr><td>write list</td><td>Liste der Schreibberechtigten</td></tr> | |
564 | <tr><td></td><td>write list = samba</td></tr> | |
565 | <tr><td><br></td><td></td></tr> | |
566 | <tr><td>read list</td><td>Liste der nur Leseberechtigten</td></tr> | |
567 | <tr><td></td><td>read list = user1</td></tr> | |
568 | <tr><td><br></td><td></td></tr> | |
569 | <tr><td>admin users</td><td>Liste der Benutzer mit SuperUser Rechten</td></tr> | |
570 | <tr><td></td><td>admin users = user1</td></tr> | |
571 | <tr><td><br></td><td></td></tr> | |
572 | <tr><td>invalid users</td><td>Liste der Benutzer denen der Zugriff verweigert wird</td></tr> | |
573 | <tr><td></td><td>invalid users = user2</td></tr> | |
574 | <tr><td><br></td><td></td></tr> | |
575 | <tr><td>force user</td><td>Standartbenutzer fuer alle Dateien</td></tr> | |
576 | <tr><td></td><td>force user = samba</td></tr> | |
577 | <tr><td><br></td><td></td></tr> | |
578 | <tr><td>directory mask</td><td>UNIX Verzeichnisberchtigung beim Erzeugen</td></tr> | |
579 | <tr><td></td><td>directory mask = 0777</td></tr> | |
580 | <tr><td><br></td><td></td></tr> | |
581 | <tr><td>create mask</td><td>UNIX Dateiberchtigung beim Erzeugen</td></tr> | |
582 | <tr><td></td><td>create mask = 0777</td></tr> | |
583 | <tr><td><br></td><td></td></tr> | |
584 | <tr><td>guest ok</td><td>Annonymer Zugriff</td></tr> | |
585 | <tr><td></td><td>guest ok = yes</td></tr> | |
586 | </table> | |
587 | END | |
588 | ; | |
589 | } | |
590 | ||
591 | &Header::closebox(); | |
5e773594 MT |
592 | &Header::closebigbox(); |
593 | &Header::closepage(); | |
594 | ||
595 | ############################################################################################################################ | |
596 | ############################################################################################################################ | |
597 | ||
598 | sub isrunning | |
599 | { | |
97de2cae | 600 | my $cmd = $_[0]; |
1ee8bf5d | 601 | my $status = "<td align='center' bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td>"; |
97de2cae MT |
602 | my $pid = ''; |
603 | my $testcmd = ''; | |
604 | my $exename; | |
605 | ||
606 | $cmd =~ /(^[a-z]+)/; | |
607 | $exename = $1; | |
5e773594 | 608 | |
97de2cae MT |
609 | if (open(FILE, "/var/run/${cmd}.pid")) |
610 | { | |
611 | $pid = <FILE>; chomp $pid; | |
612 | close FILE; | |
613 | if (open(FILE, "/proc/${pid}/status")) | |
614 | { | |
615 | while (<FILE>) | |
616 | { | |
617 | if (/^Name:\W+(.*)/) { | |
618 | $testcmd = $1; } | |
619 | } | |
620 | close FILE; | |
621 | if ($testcmd =~ /$exename/) | |
622 | { | |
1ee8bf5d | 623 | $status = "<td align='center' bgcolor='${Header::colourgreen}'><font color='white'><b>$Lang::tr{'running'}</b></font></td>"; |
97de2cae MT |
624 | } |
625 | } | |
626 | } | |
627 | ||
628 | return $status; | |
1ee8bf5d | 629 | } |