#!/usr/bin/perl
#
# Used for testing, This will allow you to configure a
# dialplan on a remote system for testing via X headers
# in a SIP invite.  DO NOT RUN IN PRODUCTION LIKE THIS.
#
# YOU'VE BEEN WARNED!
#

use CGI;
use XML::Writer;
use IO::File;
use Data::Dumper;

my $q = CGI->new;
my $output = IO::File->new(*STDOUT);
my $writer = XML::Writer->new(OUTPUT => $output, DATA_MODE => 1, DATA_INDENT => 2);

my $params = $q->Vars;
print $q->header('text/xml');
$writer->xmlDecl("UTF-8");

$writer->startTag("document", "type" => "freeswitch/xml");

if($params->{'Hunt-Destination-Number'} eq 'puppet') {
    $writer->startTag("section",  "name" => "dialplan");
    $writer->startTag("context",  "name" => "$params->{'Hunt-Context'}");
    $writer->startTag("extension", "name" => "puppet");
    $writer->startTag("condition");
    my $count = 1;
    while (exists $params->{"variable_sip_h_X-DP-$count"}) {
	my ($app, $arg) = split(/:/, $params->{"variable_sip_h_X-DP-$count"});
	if($arg) {
	    $writer->emptyTag("action", "application"  => "$app", "data" => "$arg");
	} else {
	    $writer->emptyTag("action", "application"  => "$app");
	}
	$count++;
    }
    $writer->endTag("condition");
    $writer->endTag("extension");
    $writer->endTag("context");
} else {
    $writer->startTag("section",  "name" => "result");
    $writer->emptyTag("result", "status"  => "not found");
}
$writer->endTag("section");
$writer->endTag("document");
$writer->end();