]> git.donarmstrong.com Git - infobot.git/blob - src/Modules/pager.pl
new pager support
[infobot.git] / src / Modules / pager.pl
1 # Pager
2 #
3 # modified from pager.pm in flooterbuck
4
5 package pager;
6 use strict;
7
8 my $no_page;
9
10 BEGIN {
11         eval qq{
12                 use Mail::Mailer qw(sendmail);
13         };
14         $no_page++ if ($@);
15 }
16
17 sub pager::page {
18         my ($message) = @_;
19         my ($retval);
20         if ($no_page) {
21                 &main::status("page module requires Mail::Mailer.");
22                 return 'page module not active';
23         }
24         unless ($message =~ /^(\S+)\s+(.*)$/) {
25                 return undef;
26         }
27
28         my $from = $::who;
29         my $to = $1;
30         my $msg = $2;
31
32         my $tofactoid = &::getFactoid("${to}'s pager");
33         if ($tofactoid =~ /(\S+@\S+)/) {
34                 my $toaddr = $1;
35                 $toaddr =~ s/^mailto://;
36
37                 my $fromfactoid = &::getFactoid("${from}'s pager");
38
39                 my $fromaddr;
40                 if ($fromfactoid =~ /(\S+@\S+)/) {
41                         $fromaddr = $1;
42                         $fromaddr =~ s/^mailto://;
43                 } else {
44                         $fromaddr = 'infobot@example.com';
45                 }
46
47                 my $channel = $::chan || 'infobot';
48
49                 &main::status("pager: from $from <$fromaddr>, to $to <$toaddr>, msg \"$msg\"");
50                 my %headers = (
51                         To => "$to <$toaddr>",
52                         From => "$from <$fromaddr>",
53                         Subject => "Message from $channel!",
54                         'X-Mailer' => "blootbot",
55                 );
56
57                 #my $logmsg;
58                 #for (keys %headers) {
59                 #       $logmsg .= "$_: $headers{$_}\n";
60                 #}
61                 #$logmsg .= "\n$msg\n";
62                 #&main::status("pager:\n$logmsg");
63
64                 my $failed;
65                 my $mailer = new Mail::Mailer 'sendmail';
66                 $failed++ unless $mailer->open(\%headers);
67                 $failed++ unless print $mailer "$msg\n";
68                 $failed++ unless $mailer->close;
69
70                 if ($failed) {
71                         $retval='Sorry, an error occurred while sending mail.';
72                 } else {
73                         $retval="$from: I sent mail to $toaddr.";
74                 }
75         } else {
76                 $retval="Sorry, I don't know ${to}'s email address.";
77         }
78         &::performStrictReply($retval);
79 }
80
81 "pager";
82 # vim: ts=2 sw=2