X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=blootbot%2Fsrc%2FModules%2FKernel.pl;h=2b0ba90fac227275f8e032829af47cae066c5751;hb=16c36ddd8e8e1f0c2e6add8e2ddc52005f5e7198;hp=34cca2fabb1cc4c38a1af87f1fe1686cb54a5d6a;hpb=69a09af16e976b0e91c87fc97a707aa4cf3abb13;p=infobot.git diff --git a/blootbot/src/Modules/Kernel.pl b/blootbot/src/Modules/Kernel.pl index 34cca2f..2b0ba90 100644 --- a/blootbot/src/Modules/Kernel.pl +++ b/blootbot/src/Modules/Kernel.pl @@ -7,63 +7,34 @@ 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 &::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) { &::msg($::who, "failed."); return; } - foreach (@now) { - &::msg($::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 { @@ -72,7 +43,7 @@ sub kernelAnnounce { my @old; if (!scalar @now) { - &::DEBUG("kA: failure to retrieve."); + &::DEBUG('kA: failure to retrieve.'); return; }