#!/usr/bin/perl $|=1; while() { chomp; last unless length($_); if (/^agi_(\w+)\:\s+(.*)$/) { $AGI{$1} = $2; } } sub checkresult { my ($res) = @_; my $retval; $tests++; chomp $res; if ($res =~ /^200/) { $res =~ /result=(-?\d+)/; if (!length($1)) { print STDERR "FAIL ($res)\n"; $fail++; break; } else { print STDERR "PASS ($1)\n"; $pass++; } } else { print STDERR "FAIL (unexpected result '$res')\n"; $fail++; } } print "STREAM FILE agent-loginok \"\"\n"; sleep(1); $get_digits = 10; get_digits(); $spoof_number = ''; for ($i = 1; $i <= @digits; ++$i) { #print STDERR "Spoof Number $i: $digits[$i-1]\n"; $spoof_number .= $digits[$i-1]; } print STDERR "Spoof String: ".$spoof_number."\n"; sleep(1); print "STREAM FILE beep \"\"\n"; $res = ; print STDERR "Number to call...\n"; $get_digits = 10; get_digits(); $call_number = ''; for ($i = 1; $i <= @digits; ++$i) { #print STDERR "Spoof Number $i: $digits[$i-1]\n"; $call_number .= $digits[$i-1]; } print STDERR "Call String: ".$call_number."\n"; print "SET VARIABLE spoofcid $spoof_number\n"; print "SET VARIABLE spoofno $call_number\n"; print STDERR "Spoof String: ".$spoof_number."\n"; sleep(1); print "STREAM FILE auth-thankyou \"\"\n"; sleep(1); print "SET CALLERID $spoof_number\n"; print "EXEC DIAL IAX2/username\@voipprovider/1$call_number\n"; print "HANGUP\n"; exit; sub get_digits { @digits=(''); for ($count=0; $count<$get_digits; $count++) { print STDERR "Wait DTMF'..."; print "WAIT FOR DIGIT 10000\n"; $res = ; chomp $res; if ($res =~ /^200/) { $res =~ /result=(-?\d+)/; if ( (!length($1)) || ($1 == 0) || ($1 eq '-1') ) { print STDERR "FAIL\n"; print "STREAM FILE pbx-invalid \"\"\n"; sleep(5); print "STREAM FILE vm-goodbye \"\"\n"; sleep(1); print "HANGUP\n"; exit; } else { $digit = $1; print STDERR "PASS ($digit)\n"; if ($digit == 48) { $real_digit = 0; } elsif ($digit == 49) { $real_digit = 1; } elsif ($digit == 50) { $real_digit = 2; } elsif ($digit == 51) { $real_digit = 3; } elsif ($digit == 52) { $real_digit = 4; } elsif ($digit == 53) { $real_digit = 5; } elsif ($digit == 54) { $real_digit = 6; } elsif ($digit == 55) { $real_digit = 7; } elsif ($digit == 56) { $real_digit = 8; } elsif ($digit == 57) { $real_digit = 9; } else { $real_digit = 0; } print STDERR "PASS ($digit $real_digit)\n"; push(@digits, $real_digit); } } } }