From b5fd06ff14387159e18a21f7429d07ce6609b38c Mon Sep 17 00:00:00 2001 From: timriker Date: Mon, 8 Nov 2004 21:46:54 +0000 Subject: [PATCH] new pager support git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk/blootbot@1030 c11ca15a-4712-0410-83d8-924469b57eb5 --- files/sample/blootbot.chan | 1 + src/CommandStubs.pl | 3 ++ src/Modules/pager.pl | 82 ++++++++++++++++++++++++++++++++++++++ src/modules.pl | 1 + 4 files changed, 87 insertions(+) create mode 100644 src/Modules/pager.pl diff --git a/files/sample/blootbot.chan b/files/sample/blootbot.chan index c7a806a..44840f9 100644 --- a/files/sample/blootbot.chan +++ b/files/sample/blootbot.chan @@ -44,6 +44,7 @@ _default +limitcheck +log +nickometer + +page +perlMath +plug +quote diff --git a/src/CommandStubs.pl b/src/CommandStubs.pl index d638cbf..fd10ecd 100644 --- a/src/CommandStubs.pl +++ b/src/CommandStubs.pl @@ -263,6 +263,9 @@ sub parseCmdHook { &addCmdHook("extra", 'wiki(pedia)?', ('CODEREF' => 'wikipedia::wikipedia', 'Identifier' => 'wikipedia', 'Cmdstats' => 'wikipedia', 'Forker' => 1, 'Help' => 'wikipedia') ); +&addCmdHook("extra", 'page', ('CODEREF' => 'pager::page', + 'Identifier' => 'pager', 'Cmdstats' => 'pager', + 'Forker' => 1, 'Help' => 'page') ); ### ### END OF ADDING HOOKS. ### diff --git a/src/Modules/pager.pl b/src/Modules/pager.pl new file mode 100644 index 0000000..56bc495 --- /dev/null +++ b/src/Modules/pager.pl @@ -0,0 +1,82 @@ +# Pager +# +# modified from pager.pm in flooterbuck + +package pager; +use strict; + +my $no_page; + +BEGIN { + eval qq{ + use Mail::Mailer qw(sendmail); + }; + $no_page++ if ($@); +} + +sub pager::page { + my ($message) = @_; + my ($retval); + if ($no_page) { + &main::status("page module requires Mail::Mailer."); + return 'page module not active'; + } + unless ($message =~ /^(\S+)\s+(.*)$/) { + return undef; + } + + my $from = $::who; + my $to = $1; + my $msg = $2; + + my $tofactoid = &::getFactoid("${to}'s pager"); + if ($tofactoid =~ /(\S+@\S+)/) { + my $toaddr = $1; + $toaddr =~ s/^mailto://; + + my $fromfactoid = &::getFactoid("${from}'s pager"); + + my $fromaddr; + if ($fromfactoid =~ /(\S+@\S+)/) { + $fromaddr = $1; + $fromaddr =~ s/^mailto://; + } else { + $fromaddr = 'infobot@example.com'; + } + + my $channel = $::chan || 'infobot'; + + &main::status("pager: from $from <$fromaddr>, to $to <$toaddr>, msg \"$msg\""); + my %headers = ( + To => "$to <$toaddr>", + From => "$from <$fromaddr>", + Subject => "Message from $channel!", + 'X-Mailer' => "blootbot", + ); + + #my $logmsg; + #for (keys %headers) { + # $logmsg .= "$_: $headers{$_}\n"; + #} + #$logmsg .= "\n$msg\n"; + #&main::status("pager:\n$logmsg"); + + my $failed; + my $mailer = new Mail::Mailer 'sendmail'; + $failed++ unless $mailer->open(\%headers); + $failed++ unless print $mailer "$msg\n"; + $failed++ unless $mailer->close; + + if ($failed) { + $retval='Sorry, an error occurred while sending mail.'; + } else { + $retval="$from: I sent mail to $toaddr."; + } + } else { + $retval="Sorry, I don't know ${to}'s email address."; + } + &::performStrictReply($retval); +} + +"pager"; +# vim: ts=2 sw=2 diff --git a/src/modules.pl b/src/modules.pl index bbce57c..0fcf722 100644 --- a/src/modules.pl +++ b/src/modules.pl @@ -38,6 +38,7 @@ if ($@) { "kernel" => "Kernel.pl", "news" => "News.pl", "nickometer" => "nickometer.pl", + "pager" => "pager.pl", "perlMath" => "Math.pl", "plug" => "Plug.pl", "quote" => "Quote.pl", -- 2.39.2