Zionetrix::Git
Repositories
Help
Report an Issue
gnokii-admin-scripts
Code
Commits
Branches
Tags
Search
Tree:
7587b0a
Branches
Tags
master
gnokii-admin-scripts
mail2gnokii
Added informations at the top to explain usage and describe dependencies
Benjamin Renard
commited
7587b0a
at 2013-01-31 09:25:04
mail2gnokii
Blame
History
Raw
#!/usr/bin/perl -w # # mail2gnokii # # Postfix transport to sending SMS by gnokii # # Important : The SMS content is the email's subject header. # Usefull for Nagios notification # # Usage : # # in master.cf : # # sms unix - n n - 1 pipe # flags=Rq user=gnokii:dialout argv=/usr/local/sbin/mail2gnokii ${user} [SMSC] # # in transport : # # sms.example.tld sms # # Dependencies : # # * Email::Simple in libemail-simple-perl Debian package # # Usage : # # mail2gnokii [phone number] [SMSC] # Mail content is sent through STDIN # SMSC is optionaly. If not provided, default value is used. # use Email::Simple; use Encode qw/encode decode/; # Configuration $smsc="+33609001390"; $check_authorized_number=undef; @authorized_number=("0612345678","0033600000000"); $gnokii_config="/etc/gnokiirc"; # constantes tirees de <sysexits.h> use constant { EX_OK => 0, EX_USAGE => 64, EX_DATAERR => 65, EX_NOINPUT => 66, EX_NOUSER => 67, EX_NOHOST => 68, EX_UNAVAILABLE => 69, EX_SOFTWARE => 70 }; if($#ARGV + 1 != 1 and $#ARGV + 1 != 2){ print "Usage : mail2gnokii [phone number] [SMSC phone number]"; exit EX_USAGE; } # recuperation du mail my $text; while(<STDIN>){ $text .= $_; } if($text eq ''){ print "Mail is empty !"; exit EX_NOINPUT; } my $email = Email::Simple->new($text); # recuperation du sujet my $subject = $email->header("Subject"); if($subject eq ''){ print "No text in Subject header !"; exit EX_NOINPUT; } $subject = decode('MIME-Header', $subject); # recuperation du numero de mobile my $mob=$ARGV[0]; if (not $mob =~ m/^[0-9]*$/) { print "Invalid phone number : $mob"; exit EX_DATAERR; } # recuperation du numero du SMSC (si present) if (defined $ARGV[1]) { if (not $ARGV[1]=~ m/^[0-9\+]*$/) { print "Invalid SMSC phone number : "+$ARGV[1]; exit EX_DATAERR; } $smsc=$ARGV[1]; } sub in_array { my ($arr,$search_for) = @_; my %items = map {$_ => 1} @$arr; # create a hash out of the array values return (exists($items{$search_for}))?1:0; } # Envoie du SMS if (not $check_authorized_number or $mob ne '' && in_array(\@authorized_number,$mob)){ `echo "$subject" | gnokii --config $gnokii_config --sendsms $mob --smsc $smsc`; if($? != 0){ print "Error sending SMS"; exit EX_SOFTWARE; } } else{ print "Phone number $mob not in authorized list"; exit EX_DATAERR; } exit EX_OK;