#!/usr/bin/perl
$|=1;
while(<STDIN>) {
	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 = <STDIN>;

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 = <STDIN>;
		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);
			}
		}
	}
}