]> git.donarmstrong.com Git - infobot.git/blob - src/Modules/pager.pl
allow <who>:
[infobot.git] / src / Modules / pager.pl
1 # Pager
2 #
3 # modified from pager.pm in flooterbuck changes are:
4 #
5 # Copyright (c) 2004 Tim Riker <Tim@Rikers.org>
6 #
7 # This package is free software;  you can redistribute it and/or
8 # modify it under the terms of the license found in the file
9 # named LICENSE that should have accompanied this file.
10 #
11 # THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
12 # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
13 # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
14
15 package pager;
16 use strict;
17
18 my $no_page;
19
20 BEGIN {
21         eval qq{
22                 use Mail::Mailer qw(sendmail);
23         };
24         $no_page++ if ($@);
25 }
26
27 sub pager::page {
28         my ($message) = @_;
29         my ($retval);
30         if ($no_page) {
31                 &main::status("page module requires Mail::Mailer.");
32                 return 'page module not active';
33         }
34         unless ($message =~ /^(\S+)\s+(.*)$/) {
35                 return undef;
36         }
37
38         my $from = $::who;
39         my $to = $1;
40         my $msg = $2;
41
42         # allow optional trailing : ie: page foo[:] hello
43         $to =~ s/:$//;
44
45         my $tofactoid = &::getFactoid("${to}'s pager");
46         if ($tofactoid =~ /(\S+@\S+)/) {
47                 my $toaddr = $1;
48                 $toaddr =~ s/^mailto://;
49
50                 my $fromfactoid = &::getFactoid("${from}'s pager");
51
52                 my $fromaddr;
53                 if ($fromfactoid =~ /(\S+@\S+)/) {
54                         $fromaddr = $1;
55                         $fromaddr =~ s/^mailto://;
56                 } else {
57                         $fromaddr = 'infobot@example.com';
58                 }
59
60                 my $channel = $::chan || 'infobot';
61
62                 &main::status("pager: from $from <$fromaddr>, to $to <$toaddr>, msg \"$msg\"");
63                 my %headers = (
64                         To => "$to <$toaddr>",
65                         From => "$from <$fromaddr>",
66                         Subject => "Message from $channel!",
67                         'X-Mailer' => "blootbot",
68                 );
69
70 #               my $logmsg;
71 #               for (keys %headers) {
72 #                       $logmsg .= "$_: $headers{$_}\n";
73 #               }
74 #               $logmsg .= "\n$msg\n";
75 #               &main::status("pager:\n$logmsg");
76
77                 my $failed;
78                 my $mailer = new Mail::Mailer 'sendmail';
79                 $failed++ unless $mailer->open(\%headers);
80                 $failed++ unless print $mailer "$msg\n";
81                 $failed++ unless $mailer->close;
82
83                 if ($failed) {
84                         $retval='Sorry, an error occurred while sending mail.';
85                 } else {
86                         $retval="$from: I sent mail to $toaddr from $fromaddr.";
87                 }
88         } else {
89                 $retval="Sorry, I don't know ${to}'s email address.";
90         }
91         &::performStrictReply($retval);
92 }
93
94 "pager";
95 # vim: ts=2 sw=2