From 39a7cc119ab47d4ef5c06d61c99abbeb09a9f130 Mon Sep 17 00:00:00 2001 From: ms Date: Mon, 5 Jun 2006 11:30:07 +0000 Subject: [PATCH] =?utf8?q?Hinzugef=C3=BCgt:=20=20=20*=20Kleiner=20Tux=20im?= =?utf8?q?=20Webinterface=20f=C3=BCr=20den=20eXciter=20und=20den=20Benne?= =?utf8?q?=20:)=20Ge=C3=A4ndert:=20=20=20*=20time.cgi=20=C3=BCberarbeitet?= =?utf8?q?=20und=20Funktion=20verbessert.=20=20=20*=20index.cgi=20-=20noch?= =?utf8?q?=20ein=20Paar=20Fehler=20behoben=20oder=20was=20hinzugef=C3=BCgt?= =?utf8?q?.=20=20=20*=20FLASH-Eintrag=20aus=20der=20crontab=20gel=C3=B6sch?= =?utf8?q?t.=20=20=20*=20Online-Hilfe-Rettungsringe=20(die=20h=C3=A4sslich?= =?utf8?q?en)=20aus=20den=20CGIs=20entfernt.=20=20=20*=20Logger=20von=20ip?= =?utf8?q?cop=20nach=20ipfire=20umgestellt.=20Gel=C3=B6scht:=20=20=20*=20N?= =?utf8?q?icht=20ben=C3=B6tigte=20Reste=20vom=20IPCop=20entfernt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@160 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8 --- config/cfgroot/general-functions.pl | 6 +-- config/cfgroot/header.pl | 2 +- config/cfgroot/time-settings | 2 +- config/cron/crontab | 3 -- html/cgi-bin/dhcp.cgi | 4 +- html/cgi-bin/index.cgi | 10 ++-- html/cgi-bin/portfw.cgi | 4 +- html/cgi-bin/shutdown.cgi | 4 +- html/cgi-bin/time.cgi | 80 ++-------------------------- html/cgi-bin/wireless.cgi | 4 +- html/html/images/iptux.png | Bin 0 -> 35477 bytes src/ROOTFILES.i386 | 3 +- src/misc-progs/Makefile | 5 +- src/misc-progs/timecheckctrl.c | 25 +++++++++ src/scripts/makegraphs | 16 +++--- src/scripts/updatelists.pl | 42 --------------- src/scripts/updatesetup | 23 -------- 17 files changed, 57 insertions(+), 176 deletions(-) create mode 100644 html/html/images/iptux.png create mode 100644 src/misc-progs/timecheckctrl.c delete mode 100644 src/scripts/updatelists.pl delete mode 100644 src/scripts/updatesetup diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl index b40327a625..d8c2bb959f 100644 --- a/config/cfgroot/general-functions.pl +++ b/config/cfgroot/general-functions.pl @@ -23,14 +23,14 @@ $|=1; # line buffering $General::version = 'VERSION'; $General::swroot = 'CONFIG_ROOT'; $General::noipprefix = 'noipg-'; -$General::adminmanualurl = 'http://www.ipcop.org/1.4.0/en/admin/html'; +$General::adminmanualurl = 'http://users.ipfire.eu'; sub log { my $logmessage = $_[0]; $logmessage =~ /([\w\W]*)/; $logmessage = $1; - system('/usr/bin/logger', '-t', 'ipcop', $logmessage); + system('/usr/bin/logger', '-t', 'ipfire', $logmessage); } sub readhash @@ -481,7 +481,7 @@ sub FetchPublicIp { my ($out, $response) = Net::SSLeay::get_http( 'checkip.dyndns.org', 80, "/", - Net::SSLeay::make_headers('User-Agent' => 'Ipcop' ) + Net::SSLeay::make_headers('User-Agent' => 'IPFire' ) ); if ($response =~ m%HTTP/1\.. 200 OK%) { $out =~ /Current IP Address: (\d+.\d+.\d+.\d+)/; diff --git a/config/cfgroot/header.pl b/config/cfgroot/header.pl index 065bb690b2..3d84c1cc28 100644 --- a/config/cfgroot/header.pl +++ b/config/cfgroot/header.pl @@ -760,7 +760,7 @@ END &showsubsection($menu); print <

diff --git a/config/cfgroot/time-settings b/config/cfgroot/time-settings index 2f74f9ccc9..577b0b3455 100644 --- a/config/cfgroot/time-settings +++ b/config/cfgroot/time-settings @@ -3,5 +3,5 @@ UPDATE_PERIOD=daily UPDATE_VALUE=1 UPDATE_METHOD=manually ENABLENTP=off -NTP_ADDR_1=pool.ntp.org +NTP_ADDR_1=de.pool.ntp.org VALID=yes diff --git a/config/cron/crontab b/config/cron/crontab index 435328befe..f51a686a4d 100644 --- a/config/cron/crontab +++ b/config/cron/crontab @@ -9,9 +9,6 @@ HOME=/ # Log rotation 01 * * * * /usr/sbin/logrotate /etc/logrotate.conf -# Backup logs to flashdisk -01 * * * * [ -f "/etc/FLASH" ] && /etc/rc.d/rc.flash.down - # Set time */5 * * * * /usr/local/bin/timecheck > /dev/null 2>&1 diff --git a/html/cgi-bin/dhcp.cgi b/html/cgi-bin/dhcp.cgi index be7e0bf531..11fbb6a187 100644 --- a/html/cgi-bin/dhcp.cgi +++ b/html/cgi-bin/dhcp.cgi @@ -576,9 +576,7 @@ print <* $Lang::tr{'this field may be blank'} $warnNTPmessage - - - $Lang::tr{ +   diff --git a/html/cgi-bin/index.cgi b/html/cgi-bin/index.cgi index 7bcf445224..9233628df3 100644 --- a/html/cgi-bin/index.cgi +++ b/html/cgi-bin/index.cgi @@ -102,13 +102,12 @@ print < - +
$Lang::tr{'network'} IP $Lang::tr{'status'} -
$Lang::tr{'internet'}:
-
$ipaddr $connstate + $ipaddr + $connstate
$Lang::tr{'profile'}:
$Lang::tr{'dmz'}:
$netsettings{'ORANGE_ADDRESS'} Online END } - if ( `cat /var/ipfire/vpn/settings | grep ^ENABLED=on` ) { + if ( `cat /var/ipfire/vpn/settings | grep ^ENABLED=on` || + `cat /var/ipfire/vpn/settings | grep ^ENABLED_BLUE=on` ) { my $ipsecip = `cat /var/ipfire/vpn/settings | grep ^VPN_IP= | cut -c 8-`; print <$Lang::tr{'vpn'}:
diff --git a/html/cgi-bin/portfw.cgi b/html/cgi-bin/portfw.cgi index fcd77e5483..bd3333b1e5 100644 --- a/html/cgi-bin/portfw.cgi +++ b/html/cgi-bin/portfw.cgi @@ -714,9 +714,7 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}){ } } print < - - $Lang::tr{
 
END diff --git a/html/cgi-bin/shutdown.cgi b/html/cgi-bin/shutdown.cgi index 4ccf805ae0..cd0ace7d3f 100644 --- a/html/cgi-bin/shutdown.cgi +++ b/html/cgi-bin/shutdown.cgi @@ -186,9 +186,7 @@ END - - - +   diff --git a/html/cgi-bin/time.cgi b/html/cgi-bin/time.cgi index aa96479da4..9b599453b5 100644 --- a/html/cgi-bin/time.cgi +++ b/html/cgi-bin/time.cgi @@ -19,7 +19,7 @@ use strict; #use warnings; #use CGI::Carp 'fatalsToBrowser'; -require 'CONFIG_ROOT/general-functions.pl'; +require '/var/ipfire/general-functions.pl'; require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; @@ -46,49 +46,6 @@ $timesettings{'SETYEAR'} = ''; &Header::getcgihash(\%timesettings); -if ($timesettings{'ACTION'} eq $Lang::tr{'instant update'}) -{ - if ($timesettings{'SETHOUR'} eq '' || $timesettings{'SETHOUR'} < 0 || $timesettings{'SETHOUR'} > 23) { - $errormessage = $Lang::tr{'invalid time entered'}; - goto UPDTERROR; - } - if ($timesettings{'SETMINUTES'} eq '' || $timesettings{'SETMINUTES'} < 0 || $timesettings{'SETMINUTES'} > 59) { - $errormessage = $Lang::tr{'invalid time entered'}; - goto UPDTERROR; - } - if ($timesettings{'SETDAY'} eq '' || $timesettings{'SETDAY'} < 1 || $timesettings{'SETDAY'} > 31) { - $errormessage = $Lang::tr{'invalid date entered'}; - goto UPDTERROR; - } - if ($timesettings{'SETMONTH'} eq '' || $timesettings{'SETMONTH'} < 1 || $timesettings{'SETMONTH'} > 12) { - $errormessage = $Lang::tr{'invalid date entered'}; - goto UPDTERROR; - } - if ($timesettings{'SETYEAR'} eq '' || $timesettings{'SETYEAR'} < 2003 || $timesettings{'SETYEAR'} > 2030) { - $errormessage = $Lang::tr{'invalid date entered'}; - goto UPDTERROR; - } - -UPDTERROR: - if ($errormessage) { - $timesettings{'VALID'} = 'no'; } - else { - $timesettings{'VALID'} = 'yes'; } - - if ($timesettings{'VALID'} eq 'yes') { - # we want date in YYYY-MM-DD HH:MM format for date command - # EAO changed datestring to ISO 6801 format 2003-08-11 - my $datestring = "$timesettings{'SETYEAR'}-$timesettings{'SETMONTH'}-$timesettings{'SETDAY'}"; - my $timestring = "$timesettings{'SETHOUR'}:$timesettings{'SETMINUTES'}"; - # EAO setdate.c also revised for ISO 6801 date format 2003-08-11 - system ('/usr/local/bin/setdate', $datestring, $timestring); - &General::log("$Lang::tr{'time date manually reset'} $datestring $timestring"); - } - unless ($errormessage) { - undef %timesettings; - } -} - if ($timesettings{'ACTION'} eq $Lang::tr{'save'}) { if ($timesettings{'ENABLENTP'} eq 'on') @@ -203,6 +160,7 @@ $timesettings{'ACTION'} = &Header::cleanhtml ($timesettings{'ACTION'}); if ($timesettings{'ACTION'} eq $Lang::tr{'set time now'} && $timesettings{'ENABLENTP'} eq 'on') { system ('/bin/touch', "${General::swroot}/time/settimenow"); + system ('/usr/local/bin/timecheckctrl >& /dev/null'); } &General::readhash("${General::swroot}/time/settings", \%timesettings); @@ -213,7 +171,7 @@ if ($timesettings{'VALID'} eq '') $timesettings{'UPDATE_METHOD'} = 'manually'; $timesettings{'UPDATE_VALUE'} = '1'; $timesettings{'UPDATE_PERIOD'} = 'daily'; - $timesettings{'NTP_ADDR_1'} = 'pool.ntp.org'; + $timesettings{'NTP_ADDR_1'} = 'de.pool.ntp.org'; $timesettings{'NTP_ADDR_2'} = 'pool.ntp.org'; } @@ -345,9 +303,7 @@ print <* $Lang::tr{'this field may be blank'} - - - +   END @@ -355,34 +311,6 @@ END &Header::closebox(); -&Header::openbox('100%', 'left', $Lang::tr{'update time'}); - -print < - - - - - - - - - - - - - - - -
$Lang::tr{'year'}:  $Lang::tr{'month'}:  $Lang::tr{'day'}:     $Lang::tr{'hours2'}:  $Lang::tr{'minutes'}: 
- - - - -END -; -&Header::closebox(); - print "\n"; &Header::closebigbox(); diff --git a/html/cgi-bin/wireless.cgi b/html/cgi-bin/wireless.cgi index 129e8df238..d73df7034b 100644 --- a/html/cgi-bin/wireless.cgi +++ b/html/cgi-bin/wireless.cgi @@ -225,9 +225,7 @@ print < - - - $Lang::tr{ +   END diff --git a/html/html/images/iptux.png b/html/html/images/iptux.png new file mode 100644 index 0000000000000000000000000000000000000000..38a754ba03bb7ffa501bca4b51afdce8ba2486e5 GIT binary patch literal 35477 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

-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

)(Vyh9=BWt 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 +#include "setuid.h" + +int main(void) +{ + if (!(initsetuid())) + exit(1); + + safe_system("/usr/local/bin/timecheck"); + + return 0; +} diff --git a/src/scripts/makegraphs b/src/scripts/makegraphs index 42773338a8..1120fd8488 100644 --- a/src/scripts/makegraphs +++ b/src/scripts/makegraphs @@ -89,7 +89,7 @@ sub updatecpugraph { "--alt-y-grid", "-w 600", "-h 100", "-l 0", "-u 100", "-r", "--color", "SHADEA#EAE9EE", "--color", "SHADEB#EAE9EE", - "--color", "BACK#EAE9EE", + "--color", "BACK#FFFFFF", "-t $tr{'cpu usage per'} $tr{$period}", "DEF:user=$rrdlog/cpu.rrd:user:AVERAGE", "DEF:system=$rrdlog/cpu.rrd:system:AVERAGE", @@ -156,7 +156,7 @@ sub updatememgraph { "--alt-y-grid", "-w 600", "-h 100", "-l 0", "-u 100", "-r", "--color", "SHADEA#EAE9EE", "--color", "SHADEB#EAE9EE", - "--color", "BACK#EAE9EE", + "--color", "BACK#FFFFFF", "-t $tr{'memory usage per'} $tr{$period}", "DEF:used=$rrdlog/mem.rrd:memused:AVERAGE", "DEF:free=$rrdlog/mem.rrd:memfree:AVERAGE", @@ -198,7 +198,7 @@ sub updatememgraph { "--alt-y-grid", "-w 600", "-h 100", "-l 0", "-u 100", "-r", "--color", "SHADEA#EAE9EE", "--color", "SHADEB#EAE9EE", - "--color", "BACK#EAE9EE", + "--color", "BACK#FFFFFF", "-t $tr{'swap usage per'} $tr{$period}", "DEF:used=$rrdlog/mem.rrd:swapused:AVERAGE", "DEF:free=$rrdlog/mem.rrd:swapfree:AVERAGE", @@ -269,7 +269,7 @@ sub updatediskgraph { "--alt-y-grid", "-w 600", "-h 100", "-l 0", "-r", "--color", "SHADEA#EAE9EE", "--color", "SHADEB#EAE9EE", - "--color", "BACK#EAE9EE", + "--color", "BACK#FFFFFF", "-t $tr{'disk access per'} $tr{$period}", "DEF:read=$rrdlog/disk.rrd:readsect:AVERAGE", "DEF:write=$rrdlog/disk.rrd:writesect:AVERAGE", @@ -350,7 +350,7 @@ sub updateifgraph { "--alt-y-grid", "-w 600", "-h 100", "--color", "SHADEA#EAE9EE", "--color", "SHADEB#EAE9EE", - "--color", "BACK#EAE9EE", + "--color", "BACK#FFFFFF", "-t $tr{'traffic on'} $interface ($tr{'graph per'} $tr{$period})", "-v$tr{'bytes per second'}", "DEF:incoming=$rrdlog/$interface.rrd:incoming:AVERAGE", @@ -398,7 +398,7 @@ sub updatefwhitsgraph { "--alt-y-grid", "-w 600", "-h 200", "--color", "SHADEA#EAE9EE", "--color", "SHADEB#EAE9EE", - "--color", "BACK#EAE9EE", + "--color", "BACK#FFFFFF", "-t firewall hits over the last $interval", "DEF:amount=$rrdlog/firewallhits.rrd:amount:AVERAGE", "AREA:amount#6464FF:firewallhits", @@ -418,7 +418,7 @@ sub updatefwhitsgraph { "--alt-y-grid", "-w 600", "-h 200", "--color", "SHADEA#EAE9EE", "--color", "SHADEB#EAE9EE", - "--color", "BACK#EAE9EE", + "--color", "BACK#FFFFFF", "-t firewall hits over the last $interval", "DEF:amount=$rrdlog/firewallhits.rrd:amount:AVERAGE", "LINE2:amount#6464FF:firewallhits", @@ -545,7 +545,7 @@ sub updatelqgraph { "--lazy", "--color", "SHADEA#EAE9EE", "--color", "SHADEB#EAE9EE", - "--color", "BACK#EAE9EE", + "--color", "BACK#FFFFFF", "-v ms / pkts (% x10)", "DEF:roundtrip=$rrdlog/lq.rrd:roundtrip:AVERAGE", "DEF:loss=$rrdlog/lq.rrd:loss:AVERAGE", diff --git a/src/scripts/updatelists.pl b/src/scripts/updatelists.pl deleted file mode 100644 index 9b534d824e..0000000000 --- a/src/scripts/updatelists.pl +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/perl - -use strict; -use LWP::UserAgent; -require "CONFIG_ROOT/general-functions.pl"; - -my @this; -my $return = &downloadlist(); -if($return && $return->is_success) { - unless(open(LIST, ">CONFIG_ROOT/patches/available")) { - die "Could not open available lists database."; - } - flock LIST, 2; - @this = split(/----START LIST----\n/,$return->content); - print LIST $this[1]; - close(LIST); -} else { - die "Could not download patches list."; -} - -sub downloadlist { - unless(-e "CONFIG_ROOT/red/active") { - die "Not connected."; - } - - my $downloader = LWP::UserAgent->new; - $downloader->timeout(5); - - my %proxysettings; - &General::readhash("CONFIG_ROOT/proxy/settings", \%proxysettings); - - if ($_=$proxysettings{'UPSTREAM_PROXY'}) { - my ($peer, $peerport) = (/^(?:[a-zA-Z ]+\:\/\/)?(?:[A-Za-z0-9\_\.\-]*?(?:\:[A-Za-z0-9\_\.\-]*?)?\@)?([a-zA-Z0-9\.\_\-]*?)(?:\:([0-9]{1,5}))?(?:\/.*?)?$/); - if ($proxysettings{'UPSTREAM_USER'}) { - $downloader->proxy("http","http://$proxysettings{'UPSTREAM_USER'}:$proxysettings{'UPSTREAM_PASSWORD'}@"."$peer:$peerport/"); - } else { - $downloader->proxy("http","http://$peer:$peerport/"); - } - } - - return $downloader->get("http://www.ipcop.org/patches/${General::version}", 'Cache-Control', 'no-cache'); -} diff --git a/src/scripts/updatesetup b/src/scripts/updatesetup deleted file mode 100644 index ef9b23a9ea..0000000000 --- a/src/scripts/updatesetup +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -UPGRADEVERSION="1.4.x" # configured by ./make.sh newupdate -PREVIOUSVERSION="1.4."$((`echo $UPGRADEVERSION | /usr/bin/cut -f3 -d '.'`-1)) -echo "This is the $UPGRADEVERSION update patch for IPCop $PREVIOUSVERSION installing." - -CURRENTVERSION=`perl -e "require '/var/ipfire/general-functions.pl';print \\$General::version;"` -if [ "$CURRENTVERSION" != "$PREVIOUSVERSION" ]; then - echo "You are not running IPCop v$PREVIOUSVERSION for this patch to install." - echo "Aborting installation." - exit -1 -fi - -# general-functions might not be overwrited by patch... -/bin/sed -i -e "s+= '1.4.*$+= '$UPGRADEVERSION';+" /var/ipfire/general-functions.pl - -/bin/tar -zxpf patch.tar.gz -C / - -#build cachelang file after all "lang/*.pl" updates -perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" - -killall mingetty #redisplay correct version -echo "end of $UPGRADEVERSION update" -- 2.39.2