0a2f5cffc8f115e39176929bbe1b95f50d8a8861
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) #
7) # Usage : 
8) #
9) #   in master.cf :
10) #
11) #        sms unix    -       n       n       -       1       pipe
12) #           flags=Rq user=gnokii:dialout argv=/usr/local/sbin/mail2gnokii ${user}
13) #
14) #   in transport :
15) #
16) #        sms.example.tld    sms
17) #
18) # # arg1: phone number 
19) 
20) use Email::Simple;
21) use Encode qw/encode decode/;
22) 
23) # Configuration
24) $smsc="+33609001390";
Benjamin Renard Add check_authorized_number...

Benjamin Renard authored 12 years ago

25) $check_authorized_number=undef;
Benjamin Renard initial commit

Benjamin Renard authored 12 years ago

26) @authorized_number=("0612345678","0033600000000");
27) $gnokii_config="/etc/gnokiirc";
28) 
29) # constantes tirees de <sysexits.h>
30) use constant {
31) 	EX_OK => 0,
32) 	EX_USAGE => 64,
33) 	EX_DATAERR => 65,
34) 	EX_NOINPUT => 66,
35) 	EX_NOUSER => 67,
36) 	EX_NOHOST => 68,
37) 	EX_UNAVAILABLE => 69,
38) 	EX_SOFTWARE => 70
39) };
40) 
41) 
42) if($#ARGV + 1 != 1){
43) 	print "Usage : mail2gnokii [phone number]";
44) 	exit EX_USAGE;
45) }
46) 
47) 
48) 
49) # recuperation du mail
50) 
51) my $text;
52) 
53) while(<STDIN>){
54) 	$text .= $_;
55) }
56) 
57) 
58) if($text eq ''){
59) 	print "Mail is empty !";
60) 	exit EX_NOINPUT;
61) }
62) 
63) my $email = Email::Simple->new($text);
64) 
65) 
66) # recuperation du sujet
67) 
68) my $subject = $email->header("Subject");
69) 
70) if($subject eq ''){
71) 	print "No text in Subject header !";
72) 	exit EX_NOINPUT;
73) }
74) 
75) $subject = decode('MIME-Header', $subject);
76) 
77) 
78) 
79) # recuperation du numero de mobile
80) my $mob=$ARGV[0];
81) 
82) if (not $mob =~ m/^[0-9]*$/) {
83) 	print "Invalid phone number : $mob";
84) 	exit EX_DATAERR;
85) }
86) 
87) sub in_array {
88) 	my ($arr,$search_for) = @_;
89) 	my %items = map {$_ => 1} @$arr; # create a hash out of the array values
90) 	return (exists($items{$search_for}))?1:0;
91) }
92) 
93) # Envoie du SMS
Benjamin Renard Add check_authorized_number...

Benjamin Renard authored 12 years ago

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