#!/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 $number=""; my $message=""; my $failemail="henkka\@localhost"; my $okemail="henkka\@localhost"; my $gnokii = "/usr/bin/gnokii"; my $gnokii_getsms = "/usr/local/bin/mygnokii"; # 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="0407318702"; } if ($number =~ /,/) { my @numbers = split (/,/,$number); foreach $number (@numbers) { if ($number ne "") { my $reply = `echo '$message'|$gnokii --sendsms $number`; chomp($reply); if($reply eq "Send succeeded!") { print "ok $number ($file)\n"; move("$file", "$sentfolder" . "/$newfile") || print "Error $!"; open M, "|mail -s 'Sent SMS' $okemail"; print M "$number\n$message\n ($sentfolder/$newfile)\n\n"; close M; } else { print "failed $number ($file)\n"; 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; } } } } else { my $reply = `echo '$message'|$gnokii --sendsms $number`; chomp($reply); if($reply eq "Send succeeded!") { print "ok $number ($file)\n"; move("$file", "$sentfolder" . "/$newfile") || print "Error $!"; } else { print "failed $number ($file)\n"; 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; } } } 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 ###########