#!/usr/bin/perl -w #`killall -9 mygnokii 1>/dev/null 2>/dev/null`; `killall -9 gnokii 1>/dev/null 2>/dev/null`; sleep(1); use File::Copy; # use Gnokii::GSM; # my $gsm_conn = Gnokii::GSM->new("/dev/ttyS1","5110"); my $outfolder = "/var/gsm/out"; my $infolder = "/var/gsm/in"; my $sentfolder = "/var/gsm/sent"; my $failfolder = "/var/gsm/fail"; my $tmpfolder = "/var/gsm/tmp"; my $number=""; my $message=""; my $failemail="neshac_nospam\@gmail.com"; my $okemail="neshac_nospam\@gmail.com"; my $gnokii = "/usr/local/bin/gnokii"; #my $gnokii_getsms = "/usr/local/bin/mygnokii"; my $gnokii_getsms = "/usr/local/bin/gnokii"; my @when_retry = (0,1,3,5,10,20); my $max_retry = $when_retry[-1]; # lets read the messages, one by one # Then lets send them and move to either "sent" or "fail" folder for $file ( <$outfolder/*> ) { $message=""; $number=""; open INFILE, "<$file" || print "Error in opening file $file: $!"; while () { if (/^NUMBER:/) { chomp; $number = $_; $number =~ s/NUMBER//g; $number =~ s/://g; $number =~ s/-//g; $number =~ s/\s//g; } else { $message = $message . $_; $message =~ s/^$//g; } } close INFILE; my $newfile = $file; $newfile =~ s/\/.*\///g; if ($number eq "") { $number="381641769071"; } my $replyf = system("mktemp $tmpfolder/$newfile > /dev/null 2>&1"); my $number_of_try = 0; if ($replyf == "256") { $number_of_try = `cat $tmpfolder/$newfile` + 1; } system("echo $number_of_try > $tmpfolder/$newfile"); undef @is_time_to_retry; for (@when_retry) { $is_time_to_retry[$_] = 1; } if ($is_time_to_retry[$number_of_try]) { if ($number =~ /,/) { my @numbers = split (/,/,$number); my $error_send = 0; foreach $number (@numbers) { if ($number ne "") { my $reply = system("echo '$message'|$gnokii --sendsms $number"); if($reply == "0") { print "ok $number ($file)\n"; #open M, "|mail -s 'Sent SMS' $okemail"; #close M; } else { $error_send = 1; print "failed $number ($file)\n"; if ($number_of_try == $max_retry) { move("$file", "$failfolder" . "/$newfile") || print "Error $!"; open M, "|mail -s 'Failed SMS' $failemail"; print M "$number\n$message\n ($failfolder/$newfile)\n\n"; close M; unlink("$tmpfolder/$newfile") || print "Error $!"; } } } } if($error_send eq "0") { #print "$number\n$message\n ($sentfolder/$newfile)\n\n"; move("$file", "$sentfolder" . "/$newfile") || print "Error $!"; unlink("$tmpfolder/$newfile") || print "Error $!"; } } else { my $reply = system("echo '$message'|$gnokii --sendsms $number"); if($reply == "0") { print "ok $number ($file)\n"; move("$file", "$sentfolder" . "/$newfile") || print "Error $!"; unlink("$tmpfolder/$newfile") || print "Error $!"; } else { print "failed $number ($file)\n"; if ($number_of_try == $max_retry) { move("$file", "$failfolder" . "/$newfile") || print "Error $!"; open M, "|mail -s 'Failed SMS' $failemail"; print M "$number\n$message\n ($failfolder/$newfile)\n\n"; close M; unlink("$tmpfolder/$newfile") || print "Error $!"; } } } } } sleep(1); `killall -9 gnokii 1>/dev/null 2>/dev/null`; ############# SENDING IS READY ################# ############# START RECEIVING ################## # for (my $place=1; $place<5; $place++) { # my $reply = `$gnokii_getsms --getsms ME $place`; # chomp($reply); # if ($reply ne "SMS location ME $place empty." && $reply ne "") { # my @lines = split "\n",$reply; # my $sender=""; # my $tmp=""; # my @tmp; # my $datetime; # foreach (@lines) { # if (/Sender:/) { # s/.*Sender:/Sender:/; # ($tmp,$sender,@tmp) = split (" ",$_); # chomp($sender); # $sender =~ s/\+//g; # #print "$sender\n"; # } # if (/^Date/) { # ($datetime) = $_; # chomp($datetime); # $datetime =~ s/Date\/time: //g; # $datetime =~ s/(:)|(\/)/./g; # $datetime =~ s/ /_/g; # $datetime =~ s/_\+.*$//g; # #print "$datetime\n"; # } # } # # print "SMS nro $place\n"; # my $in = "$infolder" . "/$sender-$datetime" . ".txt"; # print "$in"; # open SMSIN, ">>$in" || die "ERROR: $_"; # print SMSIN "$reply"; # close SMSIN; # open M, "|mail -s 'Incoming SMS' $okemail"; # print M "$in:\n$reply\n\n"; # close M; # # ############ DELETING SMS FROM PHONE ######### # $reply=`$gnokii_getsms --deletesms ME $place $place`; # print "$reply"; # } # `killall -9 mygnokii 1>/dev/null 2>/dev/null`; # sleep(2); # } ########### RECEIVING IS READY ###########