#!/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();