From 268292e730717ad07349ea74e3b10ed3a3902102 Mon Sep 17 00:00:00 2001 From: maniacikarus Date: Wed, 6 Jun 2007 17:09:21 +0000 Subject: [PATCH] Viele CGIs geaendert, einige Proxy Dateien hinzugefuegt, iptables aus dem menu geschmissen git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@612 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8 --- config/menu/20-status.menu | 8 +- config/proxy/auth/msnt_auth | Bin 0 -> 38708 bytes config/proxy/auth/ncsa_auth | Bin 0 -> 14732 bytes config/proxy/auth/ntlm_auth | Bin 0 -> 47500 bytes config/proxy/auth/squid_ldap_auth | Bin 0 -> 18280 bytes config/proxy/auth/squid_ldap_group | Bin 0 -> 19080 bytes config/proxy/auth/squid_radius_auth | Bin 0 -> 13064 bytes config/proxy/proxy.pac | 3 + config/rootfiles/common/apache2 | 1 + doc/language_issues.de | 1 + doc/language_issues.en | 1 + html/cgi-bin/proxy.cgi | 29 +++- html/cgi-bin/qos.cgi | 172 +------------------- html/cgi-bin/qosgraph.cgi | 237 ++++++++++++++++++++++++++++ html/cgi-bin/traffic.cgi | 5 - lfs/squid | 7 + 16 files changed, 283 insertions(+), 181 deletions(-) create mode 100644 config/proxy/auth/msnt_auth create mode 100644 config/proxy/auth/ncsa_auth create mode 100644 config/proxy/auth/ntlm_auth create mode 100644 config/proxy/auth/squid_ldap_auth create mode 100644 config/proxy/auth/squid_ldap_group create mode 100644 config/proxy/auth/squid_radius_auth create mode 100644 config/proxy/proxy.pac create mode 100644 html/cgi-bin/qosgraph.cgi diff --git a/config/menu/20-status.menu b/config/menu/20-status.menu index 37cd984af8..d81cefdadb 100644 --- a/config/menu/20-status.menu +++ b/config/menu/20-status.menu @@ -60,9 +60,9 @@ 'title' => "$Lang::tr{'sstraffic'}", 'enabled' => 1, }; - $substatus->{'73.iptables'} = { - 'caption' => $Lang::tr{'iptable rules'}, - 'uri' => '/cgi-bin/iptables.cgi', - 'title' => "$Lang::tr{'iptable rules'}", + $substatus->{'73.qos'} = { + 'caption' => $Lang::tr{'qos graphs'}, + 'uri' => '/cgi-bin/qosgraphs.cgi', + 'title' => "$Lang::tr{'qos graphs'}", 'enabled' => 1, }; diff --git a/config/proxy/auth/msnt_auth b/config/proxy/auth/msnt_auth new file mode 100644 index 0000000000000000000000000000000000000000..bbc56e879c069b5deaa7a9c99e37427355359d1c GIT binary patch literal 38708 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 yrq2Vsdgl7^I7sDG(YyBnz}u30ye>#h6{)Q literal 0 Hc-jL100001 diff --git a/config/proxy/proxy.pac b/config/proxy/proxy.pac new file mode 100644 index 0000000000..71c47f902c --- /dev/null +++ b/config/proxy/proxy.pac @@ -0,0 +1,3 @@ +function FindProxyForURL(url, host) +{ +} diff --git a/config/rootfiles/common/apache2 b/config/rootfiles/common/apache2 index ae67f3119b..e43accb52f 100644 --- a/config/rootfiles/common/apache2 +++ b/config/rootfiles/common/apache2 @@ -1311,6 +1311,7 @@ srv/web/ipfire/cgi-bin/pppsetup.cgi srv/web/ipfire/cgi-bin/proxy.cgi srv/web/ipfire/cgi-bin/proxygraphs.cgi srv/web/ipfire/cgi-bin/qos.cgi +srv/web/ipfire/cgi-bin/qosgraph.cgi srv/web/ipfire/cgi-bin/remote.cgi srv/web/ipfire/cgi-bin/services.cgi #srv/web/ipfire/cgi-bin/shaping.cgi diff --git a/doc/language_issues.de b/doc/language_issues.de index af9adb6e58..cfc26ea484 100644 --- a/doc/language_issues.de +++ b/doc/language_issues.de @@ -363,3 +363,4 @@ WARNING: translation string unused: written sectors WARNING: translation string unused: xtaccess bad transfert WARNING: translation string unused: year WARNING: translation string unused: yearly firewallhits +WARNING: untranslated string: qos graphs diff --git a/doc/language_issues.en b/doc/language_issues.en index 61e52904e7..3001d4e7f7 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -366,3 +366,4 @@ WARNING: translation string unused: weekly firewallhits WARNING: translation string unused: written sectors WARNING: translation string unused: year WARNING: translation string unused: yearly firewallhits +WARNING: untranslated string: qos graphs diff --git a/html/cgi-bin/proxy.cgi b/html/cgi-bin/proxy.cgi index e582b4e572..e0d8452bbe 100644 --- a/html/cgi-bin/proxy.cgi +++ b/html/cgi-bin/proxy.cgi @@ -2756,9 +2756,34 @@ END ; if ($proxysettings{'ENABLE'} eq 'on') { + print FILE "if (\n"; + print FILE " (isInNet(myIpAddress(), \"$netsettings{'GREEN_NETADDRESS'}\", \"$netsettings{'GREEN_NETMASK'}\"))"; + + undef @templist; + if (-e "$acl_src_subnets") { + open(SUBNETS,"$acl_src_subnets"); + @templist = ; + close(SUBNETS); + } + + foreach (@templist) + { + @temp = split(/\//); + if ( + ($temp[0] ne $netsettings{'GREEN_NETADDRESS'}) && ($temp[1] ne $netsettings{'GREEN_NETMASK'}) && + ($temp[0] ne $netsettings{'BLUE_NETADDRESS'}) && ($temp[1] ne $netsettings{'BLUE_NETMASK'}) + ) + { + chomp $temp[1]; + print FILE " ||\n (isInNet(myIpAddress(), \"$temp[0]\", \"$temp[1]\"))"; + } + } + + print FILE "\n"; + print FILE <; - close FILE; - open( FILE, "< $subclassfile" ) or die "Unable to read $subclassfile"; - @subclasses = ; - close FILE; - &Header::openbox('100%', 'left', 'QoS Graphen'); - print < Diese Seite braucht je nach Geschwindigkeit des Computers laenger zum Laden. - Klasse: -END -; - foreach $classentry (sort @classes) - { - @classline = split( /\;/, $classentry ); - $qossettings{'CLASS'}=$classline[1]; - print < -END -; - } - print < -END -; - &Header::closebox(); - foreach $classentry (sort @classes) - { - @classline = split( /\;/, $classentry ); - $qossettings{'DEV'}=$classline[0]; - $qossettings{'CLASS'}=$classline[1]; - &gengraph($qossettings{'DEV'},$qossettings{'CLASS'}); - print "\n"; - } -print < -END -; - &Header::closebigbox(); - &Header::closepage(); - exit -} elsif ($qossettings{'ACTION'} eq 'Parentklasse hinzufuegen') { &parentclass(); @@ -704,9 +634,8 @@ END
-
- -
+ + END ; @@ -728,20 +657,12 @@ if ( ($qossettings{'DEFCLASS_INC'} eq '') || ($qossettings{'DEFCLASS_OUT'} eq '' } &Header::openbox('100%', 'center', $Lang::tr{'info'}); -&overviewgraph($qossettings{'RED_DEV'}); -&overviewgraph($qossettings{'IMQ_DEV'}); print <  Unterklasse hinzufuegen |  Regel hinzufuegen |  Bearbeiten |  Loeschen   TOS-Bits:  0 - Deaktiviert | 8 - Minimale Verzoegerung | 4 - Maximaler Durchsatz | 2 - Maximale Zuverlaessigkeit | 1 - Minimale Kosten   END ; -if (( -e "/srv/web/ipfire/html/graphs/qos-graph-$qossettings{'RED_DEV'}.png") && ( -e "/srv/web/ipfire/html/graphs/qos-graph-$qossettings{'IMQ_DEV'}.png")) { - print < - -END -;} print "\t"; &Header::closebox(); @@ -1144,7 +1065,6 @@ sub showclasses { @classline = split( /\;/, $classentry ); if ( $classline[0] eq $qossettings{'DEV'} ) { - gengraph($qossettings{'DEV'},$classline[1]); &Header::openbox('100%', 'center', "Klasse: $classline[1]"); print < @@ -1348,10 +1268,6 @@ END } } } - - if ( -e "/srv/web/ipfire/html/graphs/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}-packets.png") { - print < END ; } @@ -1400,7 +1316,6 @@ END } } } -} sub expert { @@ -1500,86 +1415,3 @@ sub validsubclass { } } } - -sub gengraph { - $qossettings{'DEV'} = shift; - $qossettings{'CLASS'} = shift; - my $ERROR=""; - if ( $qossettings{'DEV'} eq $qossettings{'RED_DEV'} ) { - $qossettings{'CLASSPRFX'} = '1'; - } else { - $qossettings{'CLASSPRFX'} = '2'; - } - my $color=random_hex_color(6); - - RRDs::graph ("/srv/web/ipfire/html/graphs/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}-packets.png", - "--start", "-3240", "-aPNG", "-i", "-z", - "--alt-y-grid", "-w 600", "-h 150", "-r", - "--color", "SHADEA#EAE9EE", - "--color", "SHADEB#EAE9EE", - "--color", "BACK#FFFFFF", - "-t $qossettings{'CLASS'} ($qossettings{'DEV'})", - "DEF:pkts=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}.rrd:pkts:AVERAGE", - "DEF:dropped=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}.rrd:dropped:AVERAGE", - "DEF:overlimits=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}.rrd:overlimits:AVERAGE", - "AREA:pkts$color:packets", - "GPRINT:pkts:LAST:total packets\\:%8.3lf %s packets\\j", - "LINE3:dropped#FF0000:dropped", - "GPRINT:dropped:LAST:dropped packets\\:%8.3lf %s packets\\j", - "LINE3:overlimits#0000FF:overlimits", - "GPRINT:overlimits:LAST:overlimits\\:%8.3lf %s packets\\j", - ); - $ERROR = RRDs::error; - #print "$ERROR"; -} - -sub overviewgraph { - $qossettings{'DEV'} = shift; - if ( $qossettings{'DEV'} eq $qossettings{'RED_DEV'} ) { - $qossettings{'CLASSPRFX'} = '1'; - } else { - $qossettings{'CLASSPRFX'} = '2'; - } - my $ERROR=""; - my $count="1"; - my $color="#000000"; - my @command=("/srv/web/ipfire/html/graphs/qos-graph-$qossettings{'DEV'}.png", - "--start", "-3240", "-aPNG", "-i", "-z", - "--alt-y-grid", "-w 600", "-h 150", "-r", - "--color", "SHADEA#EAE9EE", - "--color", "SHADEB#EAE9EE", - "--color", "BACK#FFFFFF", - "-t Auslastung auf ($qossettings{'DEV'})" - ); - open( FILE, "< $classfile" ) or die "Unable to read $classfile"; - @classes = ; - close FILE; - foreach $classentry (sort @classes) - { - @classline = split( /\;/, $classentry ); - if ( $classline[0] eq $qossettings{'DEV'} ) - { - $color=random_hex_color(6); - push(@command, "DEF:$classline[1]=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bits:AVERAGE"); - - if ($count eq "1") { - push(@command, "AREA:$classline[1]$color:Klasse $classline[1] - $classline[8]\\j"); - } else { - push(@command, "STACK:$classline[1]$color:Klasse $classline[1] - $classline[8]\\j"); - } - $count++; - } - } - RRDs::graph (@command); - $ERROR = RRDs::error; - #print "$ERROR"; -} - -sub random_hex_color { - my $size = shift; - $size = 6 if $size !~ /^3|6$/; - my @hex = ( 0 .. 9, 'a' .. 'f' ); - my @color; - push @color, @hex[rand(@hex)] for 1 .. $size; - return join('', '#', @color); -} diff --git a/html/cgi-bin/qosgraph.cgi b/html/cgi-bin/qosgraph.cgi new file mode 100644 index 0000000000..9a850146a0 --- /dev/null +++ b/html/cgi-bin/qosgraph.cgi @@ -0,0 +1,237 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# + +use strict; + +# enable only the following on debugging purpose +use warnings; +use CGI::Carp 'fatalsToBrowser'; + +require '/var/ipfire/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; +require "${General::swroot}/graphs.pl"; + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::colourred} ); +undef (@dummy); + +my %qossettings = (); +my %checked = (); +my %netsettings = (); +my $message = ''; +my $errormessage = ""; +my $c = ""; +my $direntry = ""; +my $classentry = ""; +my $subclassentry = ""; +my $l7ruleentry = ""; +my $portruleentry = ""; +my $tosruleentry = ""; +my @tmp = (); +my @classes = (); +my @subclasses = (); +my @l7rules = (); +my @portrules = (); +my @tosrules = (); +my @tmpline = (); +my @classline = (); +my @subclassline = (); +my @l7ruleline = (); +my @portruleline = (); +my @tosruleline = (); +my @proto = (); +my %selected= (); +my @checked = (); +my $classfile = "/var/ipfire/qos/classes"; +my $subclassfile = "/var/ipfire/qos/subclasses"; +my $level7file = "/var/ipfire/qos/level7config"; +my $portfile = "/var/ipfire/qos/portconfig"; +my $tosfile = "/var/ipfire/qos/tosconfig"; +&General::readhash("${General::swroot}/ethernet/settings", \%netsettings); + +&overviewgraph($qossettings{'RED_DEV'}); +&overviewgraph($qossettings{'IMQ_DEV'}); + +my %color = (); +my %mainsettings = (); +&General::readhash("${General::swroot}/main/settings", \%mainsettings); +&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color); + +my %cgiparams=(); +# Maps a nice printable name to the changing part of the pid file, which +# is also the name of the program + + +# Generate Graphs from rrd Data +&Graphs::updatecpugraph ("day"); +&Graphs::updateloadgraph ("day"); + +&Header::showhttpheaders(); +&Header::getcgihash(\%cgiparams); +&Header::openpage($Lang::tr{'status information'}, 1, ''); +&Header::openbigbox('100%', 'left'); + + open( FILE, "< $classfile" ) or die "Unable to read $classfile"; + @classes = ; + close FILE; + open( FILE, "< $subclassfile" ) or die "Unable to read $subclassfile"; + @subclasses = ; + close FILE; + &Header::openbox('100%', 'left', 'QoS Graphen'); + print < Diese Seite braucht je nach Geschwindigkeit des Computers laenger zum Laden. + Klasse: +END +; + foreach $classentry (sort @classes) + { + @classline = split( /\;/, $classentry ); + $qossettings{'CLASS'}=$classline[1]; + print < +END +; + } + print < +END +; + &Header::closebox(); + foreach $classentry (sort @classes) + { + @classline = split( /\;/, $classentry ); + $qossettings{'DEV'}=$classline[0]; + $qossettings{'CLASS'}=$classline[1]; + &gengraph($qossettings{'DEV'},$qossettings{'CLASS'}); + print "\n"; + } +print < +END +; + +if (( -e "/srv/web/ipfire/html/graphs/qos-graph-$qossettings{'RED_DEV'}.png") && ( -e "/srv/web/ipfire/html/graphs/qos-graph-$qossettings{'IMQ_DEV'}.png")) { + print < + +END +;} + + +&Header::closebox(); +&Header::closebigbox(); +&Header::closepage(); + +sub gengraph { + $qossettings{'DEV'} = shift; + $qossettings{'CLASS'} = shift; + my $ERROR=""; + if ( $qossettings{'DEV'} eq $qossettings{'RED_DEV'} ) { + $qossettings{'CLASSPRFX'} = '1'; + } else { + $qossettings{'CLASSPRFX'} = '2'; + } + my $color=random_hex_color(6); + + RRDs::graph ("/srv/web/ipfire/html/graphs/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}-packets.png", + "--start", "-3240", "-aPNG", "-i", "-z", + "--alt-y-grid", "-w 600", "-h 150", "-r", + "--color", "SHADEA#EAE9EE", + "--color", "SHADEB#EAE9EE", + "--color", "BACK#FFFFFF", + "-t $qossettings{'CLASS'} ($qossettings{'DEV'})", + "DEF:pkts=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}.rrd:pkts:AVERAGE", + "DEF:dropped=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}.rrd:dropped:AVERAGE", + "DEF:overlimits=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$qossettings{'CLASS'}_$qossettings{'DEV'}.rrd:overlimits:AVERAGE", + "AREA:pkts$color:packets", + "GPRINT:pkts:LAST:total packets\\:%8.3lf %s packets\\j", + "LINE3:dropped#FF0000:dropped", + "GPRINT:dropped:LAST:dropped packets\\:%8.3lf %s packets\\j", + "LINE3:overlimits#0000FF:overlimits", + "GPRINT:overlimits:LAST:overlimits\\:%8.3lf %s packets\\j", + ); +} + + +sub overviewgraph { + $qossettings{'DEV'} = shift; + if ( $qossettings{'DEV'} eq $qossettings{'RED_DEV'} ) { + $qossettings{'CLASSPRFX'} = '1'; + } else { + $qossettings{'CLASSPRFX'} = '2'; + } + my $ERROR=""; + my $count="1"; + my $color="#000000"; + my @command=("/srv/web/ipfire/html/graphs/qos-graph-$qossettings{'DEV'}.png", + "--start", "-3240", "-aPNG", "-i", "-z", + "--alt-y-grid", "-w 600", "-h 150", "-r", + "--color", "SHADEA#EAE9EE", + "--color", "SHADEB#EAE9EE", + "--color", "BACK#FFFFFF", + "-t Auslastung auf ($qossettings{'DEV'})" + ); + open( FILE, "< $classfile" ) or die "Unable to read $classfile"; + @classes = ; + close FILE; + foreach $classentry (sort @classes) + { + @classline = split( /\;/, $classentry ); + if ( $classline[0] eq $qossettings{'DEV'} ) + { + $color=random_hex_color(6); + push(@command, "DEF:$classline[1]=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bits:AVERAGE"); + + if ($count eq "1") { + push(@command, "AREA:$classline[1]$color:Klasse $classline[1] - $classline[8]\\j"); + } else { + push(@command, "STACK:$classline[1]$color:Klasse $classline[1] - $classline[8]\\j"); + } + $count++; + } + } + RRDs::graph (@command); +} + +sub random_hex_color { + my $size = shift; + $size = 6 if $size !~ /^3|6$/; + my @hex = ( 0 .. 9, 'a' .. 'f' ); + my @color; + push @color, @hex[rand(@hex)] for 1 .. $size; + return join('', '#', @color); +} diff --git a/html/cgi-bin/traffic.cgi b/html/cgi-bin/traffic.cgi index ac0d2a079a..03843913a0 100644 --- a/html/cgi-bin/traffic.cgi +++ b/html/cgi-bin/traffic.cgi @@ -131,11 +131,6 @@ print < - -
- -
-
diff --git a/lfs/squid b/lfs/squid index f545ee1ab4..2bdf5bea82 100644 --- a/lfs/squid +++ b/lfs/squid @@ -123,6 +123,13 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) chmod 775 /srv/web/ipfire/html/updatecache/download chmod 775 /srv/web/ipfire/html/updatecache/metadata chmod 755 /var/log/updatexlrator + + chwon squid:squid /var/log/squid + mkdir /var/ipfire/proxy/advanced/auth + cp -f $(DIR_SRC)/config/proxy/auth /var/ipfire/proxy/advanced/auth + cp -f $(DIR_SRC)/config/proxy/proxy.pac /srv/web/ipfire/html/proxy.pac + chown nobody.nobody /srv/web/ipfire/html/proxy.pac + ln -f /srv/web/ipfire/html/proxy.pac /srv/web/ipfire/html//wpad.dat @rm -rf $(DIR_APP) @$(POSTBUILD) -- 2.39.2