&addCmdHook("extra", 'slashdot', ('CODEREF' => 'Slashdot::Slashdot',
'Identifier' => 'slashdot', 'Forker' => 1,
'Cmdstats' => 'Slashdot') );
+&addCmdHook("extra", 'plug', ('CODEREF' => 'Plug::Plug',
+ 'Identifier' => 'plug', 'Forker' => 1,
+ 'Cmdstats' => 'Plug') );
&addCmdHook("extra", 'uptime', ('CODEREF' => 'uptime', 'Identifier' => 'uptime',
'Cmdstats' => 'Uptime') );
&addCmdHook("extra", 'nullski', ('CODEREF' => 'nullski', ) );
&miscCheck2(2); # mandatory
&shmFlush(1); # mandatory
&slashdotLoop(2);
+ &plugLoop(2);
&freshmeatLoop(2);
&kernelLoop(2);
&wingateWriteFile(2);
} );
}
+sub plugLoop {
+
+ if (@_) {
+ &ScheduleThis(60, "plugLoop");
+ return if ($_[0] eq "2");
+ }
+
+ my @chans = &ChanConfList("plugAnnounce");
+ return unless (scalar @chans);
+
+ &Forker("plug", sub {
+ my $line = &Plug::plugAnnounce();
+ return unless (defined $line);
+
+ foreach (@chans) {
+ next unless (&::validChan($_));
+
+ &::status("sending plug update to $_.");
+ ¬ice($_, "Plug: $line");
+ }
+ } );
+}
+
sub freshmeatLoop {
if (@_) {
&ScheduleThis(60, "freshmeatLoop");
--- /dev/null
+#
+# Plug.pl: hacked for http://Plug.org/ by Tim Riker <Tim@Rikers.org>
+# Slashdot.pl: Slashdot headline retrival
+# Author: Chris Tessone <tessone@imsa.edu>
+# Modified: dms
+# Licensing: Artistic License (as perl itself)
+# Version: v0.4 (19991125)
+#
+
+###
+# fixed up to use XML'd /. backdoor 7/31 by richardh@rahga.com
+# My only request if this gets included in infobot is that the
+# other header gets trimmed to 2 lines, dump the fluff ;) -rah
+#
+# added a status message so people know to install LWP - oznoid
+# also simplified the return code because it wasn't working.
+###
+
+
+package Plug;
+
+use strict;
+
+sub plugParse {
+ my @list;
+
+ foreach (@_) {
+ next unless (/<title>(.*?)<\/title>/);
+ my $title = $1;
+ $title =~ s/&\;/&/g;
+ push(@list, $title);
+ }
+
+ return @list;
+}
+
+sub Plug {
+ my @results = &::getURL("http://www.plug.org/plug.xml");
+ my $retval = "i could not get the headlines.";
+
+ if (scalar @results) {
+ my $prefix = "Plug Headlines ";
+ my @list = &plugParse(@results);
+ $retval = &::formListReply(0, $prefix, @list);
+ }
+
+ &::performStrictReply($retval);
+}
+
+sub plugAnnounce {
+ my $file = "$::param{tempDir}/plug.xml";
+
+ my @Cxml = &::getURL("http://www.plug.org/plug.xml");
+ if (!scalar @Cxml) {
+ &::DEBUG("sdA: failure (Cxml == NULL).");
+ return;
+ }
+
+ if (! -e $file) { # first time run.
+ open(OUT, ">$file");
+ foreach (@Cxml) {
+ print OUT "$_\n";
+ }
+ close OUT;
+
+ return;
+ }
+
+ my @Oxml;
+ open(IN, $file);
+ while (<IN>) {
+ chop;
+ push(@Oxml,$_);
+ }
+ close IN;
+
+ my @Chl = &plugParse(@Cxml);
+ my @Ohl = &plugParse(@Oxml);
+
+ my @new;
+ foreach (@Chl) {
+ last if ($_ eq $Ohl[0]);
+ push(@new, $_);
+ }
+
+ if (scalar @new == 0) {
+ &::status("Plug: no new headlines.");
+ return;
+ }
+
+ if (scalar @new == scalar @Chl) {
+ &::DEBUG("sdA: scalar(new) == scalar(Chl). bad?");
+ }
+
+ open(OUT,">$file");
+ foreach (@Cxml) {
+ print OUT "$_\n";
+ }
+ close OUT;
+
+ return "Plug: ".
+ join(" \002::\002 ", @new);
+}
+
+1;
"factoids" => "Factoids.pl",
"freshmeat" => "Freshmeat.pl",
"kernel" => "Kernel.pl",
- "ircdcc" => "UserDCC.pl",
"perlMath" => "Math.pl",
"news" => "News.pl",
+ "plug" => "Plug.pl",
"quote" => "Quote.pl",
"rootwarn" => "RootWarn.pl",
"search" => "Search.pl",
"topic" => "Topic.pl",
"units" => "Units.pl",
"uptime" => "Uptime.pl",
+ "ircdcc" => "UserDCC.pl",
"userinfo" => "UserInfo.pl",
"wwwsearch" => "W3Search.pl",
"whatis" => "WhatIs.pl",
"wingate" => "Wingate.pl",
- "zfi" => "zfi.pl",
- "zsi" => "zsi.pl",
+ "babelfish" => "babel.pl",
"insult" => "insult.pl",
"nickometer" => "nickometer.pl",
- "babelfish" => "babel.pl",
+ "zfi" => "zfi.pl",
+ "zsi" => "zsi.pl",
);
### THIS IS NOT LOADED ON RELOAD :(
my @myModulesLoadNow;