]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Modules/Kernel.pl
* Missed DebianBugs.pl in the previous merge
[infobot.git] / src / Modules / Kernel.pl
index 588b2c62be32039238b6e328ac13ce85b7f3056a..52c5c108ea5aebff69d1dd819e4bee285d4a9341 100644 (file)
 
 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 @now = &kernelGetInfo();
-    if (!scalar @now) {
-       &main::msg($main::who, "failed.");
-       return;
+    my $retval = 'Linux kernel versions';
+    my @now    = &kernelGetInfo();
+    if ( !scalar @now ) {
+        &::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::bot_base_dir/Temp/kernel.txt";
+    my $file = "$::param{tempDir}/kernel.txt";
     my @now  = &kernelGetInfo();
     my @old;
 
-    if (!scalar @now) {
-       &main::DEBUG("kA: failure to retrieve.");
-       return;
+    if ( !scalar @now ) {
+        &::DEBUG('kA: failure to retrieve.');
+        return;
     }
 
-    if (! -f $file) {
-       open(OUT, ">$file");
-       foreach (@now) {
-           print OUT "$_\n";
-       }
-       close OUT;
+    if ( !-f $file ) {
+        open( OUT, ">$file" );
+        foreach (@now) {
+            print OUT "$_\n";
+        }
+        close OUT;
 
-       return;
-    } else {
-       open(IN, $file);
-       while (<IN>) {
-           chop;
-           push(@old,$_);
-       }
-       close IN;
+        return;
     }
-
-    my @new;
-    for(my $i=0; $i<scalar(@old); $i++) {
-       next if ($old[$i] eq $now[$i]);
-       push(@new, $now[$i]);
+    else {
+        open( IN, $file );
+        while (<IN>) {
+            chop;
+            push( @old, $_ );
+        }
+        close IN;
     }
 
-    if (scalar @now != scalar @old) {
-       &main::DEBUG("kA: scalar mismatch; removing and exiting.");
-       unlink $file;
-       return;
+    my @new;
+    for ( my $i = 0 ; $i < scalar(@old) ; $i++ ) {
+        next if ( $old[$i] eq $now[$i] );
+        push( @new, $now[$i] );
     }
 
-    if (!scalar @new) {
-       &main::DEBUG("kA: no new kernels.");
-       return;
+    if ( scalar @now != scalar @old ) {
+        &::DEBUG("kA: scalar mismatch; removing and exiting.");
+        unlink $file;
+        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: $_");
-       }
+    if ( !scalar @new ) {
+        &::DEBUG("kA: no new kernels.");
+        return;
     }
 
-    open(OUT, ">$file");
+    open( OUT, ">$file" );
     foreach (@now) {
-       print OUT "$_\n";
+        print OUT "$_\n";
     }
     close OUT;
+
+    return @new;
 }
 
 1;
+
+# vim:ts=4:sw=4:expandtab:tw=80