X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2FModules%2Fpager.pl;h=f937c1b522094d95878fb8896e15cbd230ff0330;hb=24ea7acb85e25b73b587e1c27ba2b8f90e465569;hp=5e6b06aa834a7605465d173d1bd1e3cea96f39a4;hpb=1c0a2202fe58159dd4d4197c4ff8b21f9387685e;p=infobot.git diff --git a/src/Modules/pager.pl b/src/Modules/pager.pl index 5e6b06a..f937c1b 100644 --- a/src/Modules/pager.pl +++ b/src/Modules/pager.pl @@ -18,85 +18,93 @@ use strict; my $no_page; BEGIN { - eval qq{ + eval qq{ use Mail::Mailer qw(sendmail); }; - $no_page++ if ($@); + $no_page++ if ($@); } sub pager::page { - my ($message) = @_; - my ($retval); - - # TODO only allow registered users? - - if ($no_page) { - &::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; - - # allow optional trailing : ie: page foo[:] hello - $to =~ s/:$//; - - my $tofactoid = &::getFactoid(lc "${to}'s pager"); - if ($tofactoid =~ /(\S+@\S+)/) { - my $toaddr = $1; - $toaddr =~ s/^mailto://; - # TODO require sender-locked factoid? - - my $fromfactoid = &::getFactoid(lc "${from}'s pager"); - - my $fromaddr; - if ($fromfactoid =~ /(\S+@\S+)/) { - $fromaddr = $1; - $fromaddr =~ s/^mailto://; - } else { - # TODO require sender to have valid self-locked pager factoid? - $fromaddr = 'infobot@example.com'; - } - - my $channel = $::chan || 'infobot'; - # TODO disallow use from private message? $chan='_default' - - &::status("pager: from $from <$fromaddr>, to $to <$toaddr>, msg \"$msg\""); - my %headers = ( - To => "$to <$toaddr>", - From => "$from <$fromaddr>", - Subject => "Message from $channel!", - 'X-Mailer' => 'infobot', - ); - -# my $logmsg; -# for (keys %headers) { -# $logmsg .= "$_: $headers{$_}\n"; -# } -# $logmsg .= "\n$msg\n"; -# &::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 from $fromaddr."; - } - } else { - $retval="Sorry, I don't know ${to}'s email address."; - } - &::performStrictReply($retval); + my ($message) = @_; + my ($retval); + + # TODO only allow registered users? + + if ($no_page) { + &::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; + + # allow optional trailing : ie: page foo[:] hello + $to =~ s/:$//; + + my $tofactoid = &::getFactoid( lc "${to}'s pager" ); + if ( $tofactoid =~ /(\S+@\S+)/ ) { + my $toaddr = $1; + $toaddr =~ s/^mailto://; + + # TODO require sender-locked factoid? + + my $fromfactoid = &::getFactoid( lc "${from}'s pager" ); + + my $fromaddr; + if ( $fromfactoid =~ /(\S+@\S+)/ ) { + $fromaddr = $1; + $fromaddr =~ s/^mailto://; + } + else { + + # TODO require sender to have valid self-locked pager factoid? + $fromaddr = 'infobot@example.com'; + } + + my $channel = $::chan || 'infobot'; + + # TODO disallow use from private message? $chan='_default' + + &::status( + "pager: from $from <$fromaddr>, to $to <$toaddr>, msg \"$msg\""); + my %headers = ( + To => "$to <$toaddr>", + From => "$from <$fromaddr>", + Subject => "Message from $channel!", + 'X-Mailer' => 'infobot', + ); + + # my $logmsg; + # for (keys %headers) { + # $logmsg .= "$_: $headers{$_}\n"; + # } + # $logmsg .= "\n$msg\n"; + # &::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 from $fromaddr."; + } + } + else { + $retval = "Sorry, I don't know ${to}'s email address."; + } + &::performStrictReply($retval); } 'pager'; -# vim: ts=2 sw=2 + +# vim:ts=4:sw=4:expandtab:tw=80