X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=src%2FModules%2FKernel.pl;h=2b0ba90fac227275f8e032829af47cae066c5751;hb=1c0a2202fe58159dd4d4197c4ff8b21f9387685e;hp=d3bff0390400bf0e4d2f64983e9d1811d8754ce4;hpb=ff79e1c84ea3ec0e1e72c36d27ea958c8a4ca77a;p=infobot.git diff --git a/src/Modules/Kernel.pl b/src/Modules/Kernel.pl index d3bff03..2b0ba90 100644 --- a/src/Modules/Kernel.pl +++ b/src/Modules/Kernel.pl @@ -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,23 @@ 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;