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

Reply via email to