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