Revision: 6793 http://ipcop.svn.sourceforge.net/ipcop/?rev=6793&view=rev Author: owes Date: 2012-10-26 08:15:39 +0000 (Fri, 26 Oct 2012) Log Message: ----------- Fix the 'update is old' display bug.
Modified Paths: -------------- ipcop/tags/release-2.0.3/html/cgi-bin/updates.cgi ipcop/tags/release-2.0.3/src/libs/general-functions.pl ipcop/tags/release-2.0.3/updates/2.0.5/ROOTFILES.i486-2.0.5 Modified: ipcop/tags/release-2.0.3/html/cgi-bin/updates.cgi =================================================================== --- ipcop/tags/release-2.0.3/html/cgi-bin/updates.cgi 2012-10-26 05:55:14 UTC (rev 6792) +++ ipcop/tags/release-2.0.3/html/cgi-bin/updates.cgi 2012-10-26 08:15:39 UTC (rev 6793) @@ -19,7 +19,7 @@ # (c) The SmoothWall Team # # With many, many changes since 2001, -# (c) 2001-2011, the IPCop team +# (c) 2001-2012, the IPCop team # # $Id$ # @@ -185,13 +185,13 @@ &Header::closebox(); } -my $age = &General::age("/var/ipcop/patches/available.xml"); -if ($age =~ m/(\d{1,3})d/) { - if ($1 >= 7) { - &Header::openbox('100%', 'left', $Lang::tr{'warning messages'}, 'warning'); - print "$Lang::tr{'updates is old1'} $1 $Lang::tr{'updates is old3'}"; - &Header::closebox(); - } +# Patches warning +my $patchmessage = &General::ispatchavailable(); +if ($patchmessage ne '') { + &Header::openbox('100%', 'left', $Lang::tr{'warning messages'}, 'warning'); + print $patchmessage; + print " "; + &Header::closebox(); } $checked{'CHECKUPDATES'}{'off'} = ''; Modified: ipcop/tags/release-2.0.3/src/libs/general-functions.pl =================================================================== --- ipcop/tags/release-2.0.3/src/libs/general-functions.pl 2012-10-26 05:55:14 UTC (rev 6792) +++ ipcop/tags/release-2.0.3/src/libs/general-functions.pl 2012-10-26 08:15:39 UTC (rev 6793) @@ -89,7 +89,11 @@ my $referer = $1; $cgi->url() =~ m/^https?\:\/\/([^\/]+)/; my $servername = $1; - if ($referer ne $servername) { + if ($referer eq "") { + &General::log('ipcop', "No referer: activate 'send referer' in your web browser."); + return; + } + elsif ($referer ne $servername) { &General::log('ipcop', "Invalid referer: doesn't match servername!"); return; } @@ -186,6 +190,33 @@ return "${days}d ${hours}h ${mins}m ${secs}s"; } +# +# Return age of update flagfile in days. +# -1 in case no flagfile. +# +sub ageupdate +{ + my $filename = $_[0]; + my $age = &General::age("/var/log/updates/${filename}"); + + if ($age =~ m/(\d{1,3})d/) { + return $1; + } + return -1; +} + +# +# Touch a flagfile in /var/log/updates. +# Flagfile should be something like updates.last, blacklist.check, etc. +# +sub touchupdate +{ + my $filename = $_[0]; + + system("/usr/bin/touch /var/log/updates/${filename}"); + system("/bin/chown nobody.nobody /var/log/updates/${filename}"); +} + sub validip { my $ip = $_[0]; @@ -961,22 +992,36 @@ } # -# Get available space on partition in MiB. +# Get available space on partition in MiB +# or percentage in use on partition. # Return space on /root if called without parameter. # sub getavailabledisk { my $where = '/root'; $where = shift if (defined($_[0])); + my $which = 'free'; + $which = shift if (defined($_[0])); open(XX, "/bin/df -B M $where | grep -v Filesystem |"); my $df = <XX>; close(XX); my ($device, $size, $used, $free, $percent) = split(' ', $df); - $free =~ m/^(\d+)M$/; - $free = $1; - return $free; + if ($which eq 'use') { + # percentage, strip % character + $percent =~ m/^(\d+)\%$/; + $percent = $1; + + return $percent; + } + else { + # available space, strip M character + $free =~ m/^(\d+)M$/; + $free = $1; + + return $free; + } } # @@ -1008,6 +1053,29 @@ $cmd =~ /(^[a-z]+)/; $exename = $1; + if ($exename eq 'squidguard') { + # Special case for squidguard, no PID file(s) to check. + my $counter = 0; + my $output = ''; + + $output = `/bin/ps -o vsz= -C squidGuard`; + foreach my $line (split(/\n/, $output)) { + $counter++; + $vmsize = $vmsize + int($line); + } + if ($counter) { + if ($showsize) { + $status = "<td align='center' >$vmsize kB</td>"; + } + else { + $status = ""; + } + $status .= "<td align='center' class='ipcop_running'>$Lang::tr{'running'}</td>"; + } + + return($status); + } + if ($exename eq 'dhcpd') { # Special case for dnsmasq as DHCP server. dnsmasq is both DNS proxy and DHCP server, we want to # show both status. For DHCP we check if DHCP is enabled on at least 1 interface first. @@ -1179,6 +1247,7 @@ } } + &General::touchupdate('update.check'); if (${General::version} eq $available->{"latest"}) { # We are uptodate, nothing left to do return 0; @@ -1239,8 +1308,11 @@ return "$Lang::tr{'there are updates'}"; } - my $age = &General::age('/var/ipcop/patches/available.xml'); - if ($age =~ m/(\d{1,3})d/) { + my $age = &General::ageupdate('update.check'); + if ($age == -1) { + $age = &General::age('/var/ipcop/patches/available.xml'); + } + if ($age =~ m/(\d{1,3})d*/) { if ($1 >= 7) { return "$Lang::tr{'updates is old1'} $1 $Lang::tr{'updates is old2'}"; } Modified: ipcop/tags/release-2.0.3/updates/2.0.5/ROOTFILES.i486-2.0.5 =================================================================== --- ipcop/tags/release-2.0.3/updates/2.0.5/ROOTFILES.i486-2.0.5 2012-10-26 05:55:14 UTC (rev 6792) +++ ipcop/tags/release-2.0.3/updates/2.0.5/ROOTFILES.i486-2.0.5 2012-10-26 08:15:39 UTC (rev 6793) @@ -1,4 +1,6 @@ ## please place IPCop files first, then packages sorted by alphabetical order +/home/httpd/cgi-bin/updates.cgi +/usr/lib/ipcop/general-functions.pl ## tzdata-2012g /usr/share/zoneinfo/posix/Africa/Casablanca /usr/share/zoneinfo/posix/America/Atikokan This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct _______________________________________________ Ipcop-svn mailing list Ipcop-svn@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ipcop-svn