Changed the behaviour of the pakfire cgi
authorChristian Schmidt <maniacikarus@ipfire.org>
Sat, 19 Apr 2008 12:49:00 +0000 (14:49 +0200)
committerChristian Schmidt <maniacikarus@ipfire.org>
Sat, 19 Apr 2008 12:49:00 +0000 (14:49 +0200)
Tried to handle some known pakfire problems (time errors and zero metas)

html/cgi-bin/pakfire.cgi
src/pakfire/lib/functions.pl

index 2a49463..79bb3fb 100644 (file)
@@ -136,13 +136,11 @@ END
 
 } elsif ($pakfiresettings{'ACTION'} eq 'update') {
 
-       system("/usr/local/bin/pakfire update --force --no-colors &>/dev/null");
+       system("/usr/local/bin/pakfire update --force --no-colors &>/dev/null &");
 
 } elsif ($pakfiresettings{'ACTION'} eq 'upgrade') {
-       my $command = "/usr/local/bin/pakfire upgrade -y --no-colors &>/dev/null";
+       my $command = "/usr/local/bin/pakfire upgrade -y --no-colors &>/dev/null &";
        system("$command");
-       refreshpage();
-
 } elsif ($pakfiresettings{'ACTION'} eq "$Lang::tr{'save'}") {
 
        if ($pakfiresettings{'AUTOUPDATE'} eq 'on') {
@@ -198,7 +196,7 @@ if ($return) {
                        </form>
                <tr><td colspan='2' align='left'><pre>
 END
-       my @output = `tail -20 /var/log/pakfire.log`;
+       my @output = `grep pakfire /var/log/messages | tail -20`;
        foreach (@output) {
                print "$_";
        }
@@ -210,6 +208,7 @@ END
        &Header::closebigbox();
        &Header::closepage();
        exit;
+       refreshpage();
 }
 
 my $core_release = `cat /opt/pakfire/db/core/mine 2>/dev/null`;
index 1080b00..c8febe7 100644 (file)
@@ -118,7 +118,7 @@ sub pinghost {
        
        $p = Net::Ping->new();
   if ($p->ping($host)) {
-       logger("PING INFO: $host is alive");
+        logger("PING INFO: $host is alive");
        return 1;
   } else {
                logger("PING INFO: $host is unreachable");
@@ -211,6 +211,9 @@ sub fetchfile {
                                                move("$Conf::tmpdir/$bfile","$Conf::cachedir/$bfile");
                                        } else {
                                                message("DOWNLOAD ERROR: The downloaded file ($file) wasn't verified by IPFire.org. Sorry - Exiting...");
+                                               my $ntp = `ntpdate -q -t 10 pool.ntp.org 2>/dev/null | tail -1`;
+                                               if ( $ntp !~ /time\ server(.*)offset(.*)/ ){message("TIME ERROR: Unable to get the nettime, this may lead to the verification error.");}
+                                               else { $ntp =~ /time\ server(.*)offset(.*)/; message("TIME INFO: Time Server$1has$2 offset to localtime.");}
                                                exit 1;
                                        }
                                        logger("DOWNLOAD FINISHED: $file");
@@ -544,7 +547,12 @@ sub cleanup {
 sub getmetafile {
        my $pak = shift;
        
-       unless ( -e "$Conf::dbdir/meta/meta-$pak") {
+       unless ( -e "$Conf::dbdir/meta/meta-$pak" ) {
+               fetchfile("meta/meta-$pak", "");
+               move("$Conf::cachedir/meta-$pak", "$Conf::dbdir/meta/meta-$pak");
+       }
+       
+       if ( -z "$Conf::dbdir/meta/meta-$pak" ) {
                fetchfile("meta/meta-$pak", "");
                move("$Conf::cachedir/meta-$pak", "$Conf::dbdir/meta/meta-$pak");
        }