Hi All,
I was writing few soap scripts in perl to support my automation testing
team and I have a query in adding custom permission using soap.
As per the instruction in the link(
http://sipxecs.sipfoundry.org/rep/sipXecs/main/sipXconfig/web/src/org/sipfoundry/sipxconfig/api/sipxconfig.wsdl
) its specified that server adds the name of the permission by itself ,
but still we have to pass a name for the permission we are trying to add
as argument.
And using following this procedure and trying to add a custom permission
, the permission is getting added but name of the permission is not
getting assigned. also the name send through soap request method is also
not getting assigned.
I am confused that is there any mistake in my script or soap framework
have some problem . Please verify the below script and correct me if the
script have some problem or soap framework problem.
Script :
#!/usr/bin/perl
use SOAP::Lite;
use Digest::MD5 qw(md5_hex);
use strict;
use warnings;
my $servicesUrl = 'https://firstsoak.qantom.int:8443/sipxconfig/services';
my $namespace = 'http://www.sipfoundry.org/2007/08/21/ConfigService';
sub SOAP::Transport::HTTP::Client::get_basic_credentials {
return 'superadmin' => '1234';
}
my $systemService = SOAP::Lite
-> uri("$namespace")
-> proxy("$servicesUrl/SystemService");
my $dlService = SOAP::Lite
-> uri("$namespace")
-> proxy("$servicesUrl/PermissionService");
my $realm = findRealm();
print "obtained realm via the SOAP service: $realm\n";
addCustomDialplan(name => "dp", prefix => "authcallee", digits => '0');
sub findRealm {
my $systemInfo = SOAP::Data->name('SystemInfo')
->attr({xmlns => "$namespace"});
my $result = $systemService->call($systemInfo);
checkFault($result);
my $domain = $result->result();
foreach my $key (keys %{$domain}) {
print "SystemInfo ", $key, ": ", $domain->{$key} || '', "\n";
}
return $domain->{'realm'};
}
sub editDP {
my %params = @_;
my ($name) = $params{name};
my ($prefix) = $params{prefix};
my ($digits) = $params{digits};
my $changePrefix = SOAP::Data->name(edit =>
\SOAP::Data->value(
SOAP::Data->type('string')->name(property => 'prefix'),
SOAP::Data->type('string')->name(value => $prefix)));
my $changeDigit = SOAP::Data->name(edit =>
\SOAP::Data->value(
SOAP::Data->type('string')->name(property => 'digits'),
SOAP::Data->type('string')->name(value => $digits)));
print "Editing custom dial plan to add prefix and digit value \n";
manageDP(name => $name, action => $changePrefix);
manageDP(name => $name, action => $changeDigit);
}
sub addCustomDialplan {
my %params = @_;
my ($name) = $params{name};
my ($prefix) = $params{prefix};
my ($digits) = $params{digits};
my $newPermission = SOAP::Data->name(permission =>
\SOAP::Data->value(
SOAP::Data->type('string')->name(name => $name)));
my $addPermission = SOAP::Data->name('AddPermission')
->attr({xmlns => "$namespace"});
print "adding custom dial plan $name\n";
my $result = $dlService->call($addPermission =>
SOAP::Data->value($newPermission));
checkFault($result);
editDP(name => $name, prefix => $prefix, degits => $digits);
}
sub checkFault {
my $result = shift;
if ($result->fault) {
# some error handling
print join ', \n',
$result->faultcode,
$result->faultstring,
$result->faultdetail;
}
}
sub manageDP {
my %params = @_;
my ($name) = $params{name};
my ($edit) = $params{action};
my $byName = SOAP::Data->type('string')->name('byName')->value($name);
my $search = SOAP::Data->name(search => \$byName);
my $managePermission = SOAP::Data->name('ManagePermission')
->attr({xmlns => "$namespace"});
my $result = $dlService->call($managePermission =>
SOAP::Data->value($search, $edit));
checkFault($result);
}
Thanks,
Shruthi
#!/usr/bin/perl
use SOAP::Lite;
use Digest::MD5 qw(md5_hex);
use strict;
use warnings;
my $servicesUrl = 'https://firstsoak.qantom.int:8443/sipxconfig/services';
my $namespace = 'http://www.sipfoundry.org/2007/08/21/ConfigService';
sub SOAP::Transport::HTTP::Client::get_basic_credentials {
return 'superadmin' => '1234';
}
my $systemService = SOAP::Lite
-> uri("$namespace")
-> proxy("$servicesUrl/SystemService");
my $dlService = SOAP::Lite
-> uri("$namespace")
-> proxy("$servicesUrl/PermissionService");
my $realm = findRealm();
print "obtained realm via the SOAP service: $realm\n";
addCustomDialplan(name => "dp", prefix => "authcallee", digits => '0');
sub findRealm {
my $systemInfo = SOAP::Data->name('SystemInfo')
->attr({xmlns => "$namespace"});
my $result = $systemService->call($systemInfo);
checkFault($result);
my $domain = $result->result();
foreach my $key (keys %{$domain}) {
print "SystemInfo ", $key, ": ", $domain->{$key} || '', "\n";
}
return $domain->{'realm'};
}
sub editDP {
my %params = @_;
my ($name) = $params{name};
my ($prefix) = $params{prefix};
my ($digits) = $params{digits};
my $changePrefix = SOAP::Data->name(edit =>
\SOAP::Data->value(
SOAP::Data->type('string')->name(property => 'prefix'),
SOAP::Data->type('string')->name(value => $prefix)));
my $changeDigit = SOAP::Data->name(edit =>
\SOAP::Data->value(
SOAP::Data->type('string')->name(property => 'digits'),
SOAP::Data->type('string')->name(value => $digits)));
print "Editing custom dial plan to add prefix and digit value \n";
manageDP(name => $name, action => $changePrefix);
manageDP(name => $name, action => $changeDigit);
}
sub addCustomDialplan {
my %params = @_;
my ($name) = $params{name};
my ($prefix) = $params{prefix};
my ($digits) = $params{digits};
my $newPermission = SOAP::Data->name(permission =>
\SOAP::Data->value(
SOAP::Data->type('string')->name(name => $name)));
my $addPermission = SOAP::Data->name('AddPermission')
->attr({xmlns => "$namespace"});
print "adding custom dial plan $name\n";
my $result = $dlService->call($addPermission =>
SOAP::Data->value($newPermission));
checkFault($result);
editDP(name => $name, prefix => $prefix, degits => $digits);
}
sub checkFault {
my $result = shift;
if ($result->fault) {
# some error handling
print join ', \n',
$result->faultcode,
$result->faultstring,
$result->faultdetail;
}
}
# helper function for methods that manage a dial plan like edit and delete
sub manageDP {
my %params = @_;
my ($name) = $params{name};
my ($edit) = $params{action};
my $byName = SOAP::Data->type('string')->name('byName')->value($name);
my $search = SOAP::Data->name(search => \$byName);
my $managePermission = SOAP::Data->name('ManagePermission')
->attr({xmlns => "$namespace"});
my $result = $dlService->call($managePermission =>
SOAP::Data->value($search, $edit));
checkFault($result);
}
_______________________________________________
sipx-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipx-dev
Unsubscribe: http://list.sipfoundry.org/mailman/listinfo/sipx-dev