]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Modules/Kernel.pl
* Add vim formatting comments ( # vim:ts=4:sw=4:expandtab:tw=80 )
[infobot.git] / src / Modules / Kernel.pl
index d3bff0390400bf0e4d2f64983e9d1811d8754ce4..fe842a68bf54854a914ae3dbf92610da70e434c4 100644 (file)
@@ -7,72 +7,43 @@
 
 package Kernel;
 
-use IO::Socket;
-use strict;
-
-### TODO: change this to http instead of finger?
-my $server     = "ftp.kernel.org";
-my $port       =  79;
-my $proto      = getprotobyname('tcp');
-
-###local $SIG{ALRM} = sub { die "alarm\n" };
-
 sub kernelGetInfo {
-###    return unless &main::loadPerlModule("IO::Socket");
-
-    my $socket    = new IO::Socket;
-
-    socket($socket, PF_INET, SOCK_STREAM, $proto) or return "error: socket: $!";
-    eval {
-       alarm 15;
-       connect($socket, sockaddr_in($port, inet_aton($server))) or return "error: connect: $!";
-       alarm 0;
-    };
-
-    my @retval;
-
-    if ($@ && $@ ne "alarm\n") {               # failed.
-       return;
-    }
-
-    $socket->autoflush(1);     # required.
-
-    print $socket "\n";
-    while (<$socket>) {
-       chop;
-
-       s/\t//g;
-       s/\s$//;
-       s/\s+/ /g;
-
-       next if ($_ eq "");
-
-       push(@retval, $_);
-    }
-    close $socket;
-
-    @retval;
+    return &::getURL("http://www.kernel.org/kdist/finger_banner");
 }
 
 sub Kernel {
+    my $retval = 'Linux kernel versions';
     my @now = &kernelGetInfo();
     if (!scalar @now) {
-       &main::msg($main::who, "failed.");
+       &::msg($::who, "failed.");
        return;
     }
 
-    foreach (@now) {
-       &main::msg($main::who, $_);
+    foreach $line (@now) {
+       $line =~ s/The latest //;
+       $line =~ s/version //;
+       $line =~ s/of //;
+       $line =~ s/the //;
+       $line =~ s/Linux //;
+       $line =~ s/kernel //;
+       $line =~ s/tree //;
+       $line =~ s/ for stable//;
+       $line =~ s/ to stable kernels//;
+       $line =~ s/ for 2.4//;
+       $line =~ s/ for 2.2//;
+       $line =~ s/ is: */: /;
+       $retval .= ', ' . $line;
     }
+    &::performStrictReply($retval);
 }
 
 sub kernelAnnounce {
-    my $file = "$main::param{tempDir}/kernel.txt";
+    my $file = "$::param{tempDir}/kernel.txt";
     my @now  = &kernelGetInfo();
     my @old;
 
     if (!scalar @now) {
-       &main::DEBUG("kA: failure to retrieve.");
+       &::DEBUG('kA: failure to retrieve.');
        return;
     }
 
@@ -100,33 +71,25 @@ sub kernelAnnounce {
     }
 
     if (scalar @now != scalar @old) {
-       &main::DEBUG("kA: scalar mismatch; removing and exiting.");
+       &::DEBUG("kA: scalar mismatch; removing and exiting.");
        unlink $file;
        return;
     }
 
     if (!scalar @new) {
-       &main::DEBUG("kA: no new kernels.");
+       &::DEBUG("kA: no new kernels.");
        return;
     }
 
-    my $chan;
-    my @chans = split(/[\s\t]+/, lc $main::param{'kernelAnnounce'});
-    @chans    = keys(%main::channels) unless (scalar @chans);
-    foreach $chan (@chans) {
-       next unless (&main::validChan($chan));
-
-       &main::status("sending kernel update to $chan.");
-       foreach (@new) {
-            &main::notice($chan, "Kernel: $_");
-       }
-    }
-
     open(OUT, ">$file");
     foreach (@now) {
        print OUT "$_\n";
     }
     close OUT;
+
+    return @new;
 }
 
 1;
+
+# vim:ts=4:sw=4:expandtab:tw=80