7587b0af08d0e47396ed1c510f4f2b934502086f
Benjamin Renard initial commit

Benjamin Renard authored 12 years ago

1) #!/usr/bin/perl -w
2) 
3) # # mail2gnokii
4) #
5) # Postfix transport to sending SMS by gnokii
6) #
Benjamin Renard Added informations at the t...

Benjamin Renard authored 11 years ago

7) # Important : The SMS content is the email's subject header.
8) #             Usefull for Nagios notification
9) #
Benjamin Renard initial commit

Benjamin Renard authored 12 years ago

10) # Usage : 
11) #
12) #   in master.cf :
13) #
14) #        sms unix    -       n       n       -       1       pipe
Benjamin Renard add smsc option to script m...

Benjamin Renard authored 11 years ago

15) #           flags=Rq user=gnokii:dialout argv=/usr/local/sbin/mail2gnokii ${user} [SMSC]
Benjamin Renard initial commit

Benjamin Renard authored 12 years ago

16) #
17) #   in transport :
18) #
19) #        sms.example.tld    sms
20) #
Benjamin Renard Added informations at the t...

Benjamin Renard authored 11 years ago

21) # Dependencies :
22) #
23) #   * Email::Simple in libemail-simple-perl Debian package
24) #
25) # Usage :
26) #
27) #  mail2gnokii [phone number] [SMSC]
28) #       Mail content is sent through STDIN
29) #       SMSC is optionaly. If not provided, default value is used.
30) #
Benjamin Renard initial commit

Benjamin Renard authored 12 years ago

31) 
32) use Email::Simple;
33) use Encode qw/encode decode/;
34) 
35) # Configuration
36) $smsc="+33609001390";
Benjamin Renard Add check_authorized_number...

Benjamin Renard authored 11 years ago

37) $check_authorized_number=undef;
Benjamin Renard initial commit

Benjamin Renard authored 12 years ago

38) @authorized_number=("0612345678","0033600000000");
39) $gnokii_config="/etc/gnokiirc";
40) 
41) # constantes tirees de <sysexits.h>
42) use constant {
43) 	EX_OK => 0,
44) 	EX_USAGE => 64,
45) 	EX_DATAERR => 65,
46) 	EX_NOINPUT => 66,
47) 	EX_NOUSER => 67,
48) 	EX_NOHOST => 68,
49) 	EX_UNAVAILABLE => 69,
50) 	EX_SOFTWARE => 70
51) };
52) 
53) 
Benjamin Renard add smsc option to script m...

Benjamin Renard authored 11 years ago

54) if($#ARGV + 1 != 1 and $#ARGV + 1 != 2){
55) 	print "Usage : mail2gnokii [phone number] [SMSC phone number]";
Benjamin Renard initial commit

Benjamin Renard authored 12 years ago

56) 	exit EX_USAGE;
57) }
58) 
59) 
60) 
61) # recuperation du mail
62) 
63) my $text;
64) 
65) while(<STDIN>){
66) 	$text .= $_;
67) }
68) 
69) 
70) if($text eq ''){
71) 	print "Mail is empty !";
72) 	exit EX_NOINPUT;
73) }
74) 
75) my $email = Email::Simple->new($text);
76) 
77) 
78) # recuperation du sujet
79) 
80) my $subject = $email->header("Subject");
81) 
82) if($subject eq ''){
83) 	print "No text in Subject header !";
84) 	exit EX_NOINPUT;
85) }
86) 
87) $subject = decode('MIME-Header', $subject);
88) 
89) 
90) 
91) # recuperation du numero de mobile
92) my $mob=$ARGV[0];
93) 
94) if (not $mob =~ m/^[0-9]*$/) {
95) 	print "Invalid phone number : $mob";
96) 	exit EX_DATAERR;
97) }
98) 
Benjamin Renard add smsc option to script m...

Benjamin Renard authored 11 years ago

99) # recuperation du numero du SMSC (si present)
100) if (defined $ARGV[1]) {
101) 	if (not $ARGV[1]=~ m/^[0-9\+]*$/) {
102) 		print "Invalid SMSC phone number : "+$ARGV[1];
103) 		exit EX_DATAERR;
104) 	}
105) 	$smsc=$ARGV[1];
106) }
107) 
Benjamin Renard initial commit

Benjamin Renard authored 12 years ago

108) sub in_array {
109) 	my ($arr,$search_for) = @_;
110) 	my %items = map {$_ => 1} @$arr; # create a hash out of the array values
111) 	return (exists($items{$search_for}))?1:0;
112) }
113) 
114) # Envoie du SMS
Benjamin Renard Add check_authorized_number...

Benjamin Renard authored 11 years ago

115) if (not $check_authorized_number or $mob ne '' && in_array(\@authorized_number,$mob)){