Steuern einer Firewall ueber HTML
Gerhard Neugebauer
- webserver
Ich suche eine Lösung:
ein Benutzer soll sich von einer Win98 Station über einen Linux 6.2 Server
(SQUID) im Internet serven können. Allerding soll die Freischaltung des Internets
abhängig vom Benutzer sein und automatisch erfolgen.Wenn das Internet
freigeschalten ist sollen nur berechtigte Benutzer Daten aus dem Internet
bekommen.
Dabei soll egal sein an welchem Client der Benutzer angemeldet ist.
Die Clients haben eine feste IP-Adresser.
Wenn es nicht Benutzer bezogen geht dann sollte es nur IP bezogen sein.
Das freischalten des Benutzers oder der IP soll ueber einen Browser funktionieren.
z.B. wenn ein cgi skript folgendes ausfuerhren soll
ipchains -D input -j DENY -p tcp -s 192.168.0.2 -d 192.168.0.3 3128
sleep 300 &
ipchains -A -j input -j DENY -p tcp -s 192.168.0.2 -d 192.168.0.3 3128
zweite Problem: Der Browser wartet bis der sleep ausgefuehrt ist, trotz &.
wie kann ich das umgehen.
Ich suche eine Lösung:
ein Benutzer soll sich von einer Win98 Station über einen Linux 6.2 Server
(SQUID) im Internet serven können. Allerding soll die Freischaltung des Internets
abhängig vom Benutzer sein und automatisch erfolgen.Wenn das Internet
freigeschalten ist sollen nur berechtigte Benutzer Daten aus dem Internet
bekommen.
Dabei soll egal sein an welchem Client der Benutzer angemeldet ist.
Die Clients haben eine feste IP-Adresser.
Wenn es nicht Benutzer bezogen geht dann sollte es nur IP bezogen sein.Das freischalten des Benutzers oder der IP soll ueber einen Browser funktionieren.
z.B. wenn ein cgi skript folgendes ausfuerhren sollipchains -D input -j DENY -p tcp -s 192.168.0.2 -d 192.168.0.3 3128
sleep 300 &
ipchains -A -j input -j DENY -p tcp -s 192.168.0.2 -d 192.168.0.3 3128zweite Problem: Der Browser wartet bis der sleep ausgefuehrt ist, trotz &.
wie kann ich das umgehen.
Hm, erklär das nochmal. Wie genau soll das gehen. Zu deinem Script, dass musst du erst mal als Root ausführen. Dazu brauchst du z. B. nen gepatchtes suexec.
Versuch doch mal folgendes Sub aufzurufen:
sub daemonize {
chdir '/' or die "Can't chdir to /: $!";
open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
open STDOUT, '>/dev/null'
or die "Can't write to /dev/null: $!";
defined(my $pid = fork) or die "Can't fork: $!";
exit if $pid;
setsid or die "Can't start a new session: $!";
open STDERR, '>&STDOUT' or die "Can't dup stdout: $!";
}
Dann koppelt sich das CGI vom Browser ab.
Versuch doch mal folgendes Sub aufzurufen:
sub daemonize {
chdir '/' or die "Can't chdir to /: $!";
open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
open STDOUT, '>/dev/null'
or die "Can't write to /dev/null: $!";
defined(my $pid = fork) or die "Can't fork: $!";
exit if $pid;
setsid or die "Can't start a new session: $!";
open STDERR, '>&STDOUT' or die "Can't dup stdout: $!";
}
leider habe ich noch nicht soviel ahnung, wo soll ich dieses eintragen. in der indexhtml oder im CGI Skript
index:html:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<form method=POST action="/usr/local/webmin-0.74/ip.cgi">
<table border="0" width="80%">
<tr>
<td><input type="submit"
name="B1" value=" OK ">
</form>
</td>
</tr>
</table>
</html>
ip.sh:
#!/bin/sh
ipchains -A input -j DENY -p tcp -s 192.168.0.2 -d 192.168.0.3 3128
sleep 10 & # Das & macht aerger
ipchains -D input -j DENY -p tcp -s 192.168.0.2 -d 192.168.0.3 3128
Dann koppelt sich das CGI vom Browser ab.