diff --git a/Build.PL b/Build.PL index 39a3f9c9c9..f2b96ae23a 100644 --- a/Build.PL +++ b/Build.PL @@ -47,6 +47,7 @@ my $builder = Local::Module::Build->new( 'DateTime::Format::ISO8601' => 0, 'DateTime::Format::RFC3339' => 0, 'DBIx::Class::ResultSet::RecursiveUpdate' => '0.30', + 'Digest::MD5' => 0, 'Email::Sender::Simple' => 0, 'Email::Sender::Transport::SMTP' => 0, 'Email::Valid' => 0, diff --git a/lib/NGCP/Panel/Utils/DeviceBootstrap.pm b/lib/NGCP/Panel/Utils/DeviceBootstrap.pm index 6447089dda..dc9665f4f4 100644 --- a/lib/NGCP/Panel/Utils/DeviceBootstrap.pm +++ b/lib/NGCP/Panel/Utils/DeviceBootstrap.pm @@ -7,16 +7,6 @@ use NGCP::Panel::Utils::DeviceBootstrap::VendorRPC; use NGCP::Panel::Utils::DeviceBootstrap::Panasonic; use NGCP::Panel::Utils::DeviceBootstrap::Yealink; -#NGCP::Panel::Utils::DeviceBootstrap::RPC params => - #$params = { - # redirect_uri - # redirect_uri_params - # mac - # mac_old (optional) - # c for log, config sync uri from config - # credentials => {user=>, password=>} - #}; - sub dispatch{ my($c, $action, $fdev, $old_identifier) = @_; diff --git a/lib/NGCP/Panel/Utils/DeviceBootstrap/VendorRPC.pm b/lib/NGCP/Panel/Utils/DeviceBootstrap/VendorRPC.pm index 8906f23b3b..94325f242d 100644 --- a/lib/NGCP/Panel/Utils/DeviceBootstrap/VendorRPC.pm +++ b/lib/NGCP/Panel/Utils/DeviceBootstrap/VendorRPC.pm @@ -27,14 +27,18 @@ sub redirect_server_call{ my $c = $self->params->{c}; $self->init_content_params(); $c->log->debug(Dumper ($self->content_params)); - my($content,$response_value); - if('unregister' eq $action){ - $content = $self->unregister_content(); - }elsif('register' eq $action){ - $content = $self->register_content(); + my($content,$response_value,$ret); + my $method = $action.'_content'; + if($self->can($method)){ + $content = $self->$method(); + }else{ + $ret = "Unknown method: $action"; } - $response_value = $self->rpc_https_call($content); - return $self->extract_response_description($response_value); + if($content){ + $response_value = $self->rpc_https_call($content); + $ret = $self->extract_response_description($response_value); + } + return $ret; } sub rpc_https_call{ diff --git a/lib/NGCP/Panel/Utils/DeviceBootstrap/Yealink.pm b/lib/NGCP/Panel/Utils/DeviceBootstrap/Yealink.pm index b0d5a7c121..73e4b312a0 100644 --- a/lib/NGCP/Panel/Utils/DeviceBootstrap/Yealink.pm +++ b/lib/NGCP/Panel/Utils/DeviceBootstrap/Yealink.pm @@ -2,6 +2,7 @@ package NGCP::Panel::Utils::DeviceBootstrap::Yealink; use strict; use Moose; +use Digest::MD5 qw/md5_hex/; extends 'NGCP::Panel::Utils::DeviceBootstrap::VendorRPC'; has 'rpc_server_params' => ( @@ -19,6 +20,11 @@ has 'unregister_content' => ( isa => 'Str', accessor => '_unregister_content', ); +has 'add_server_content' => ( + is => 'rw', + isa => 'Str', + accessor => '_add_server_content', +); sub rpc_server_params{ my $self = shift; my $cfg = { @@ -34,7 +40,7 @@ sub rpc_server_params{ sub register_content { my $self = shift; - $self->{register_content} = " + $self->{register_content} ||= " redirect.registerDevice @@ -42,7 +48,7 @@ sub register_content { ".$self->content_params->{mac}." -content_params->{uri}."]]> +content_params->{server_name}."]]> 1 @@ -53,7 +59,7 @@ sub register_content { sub unregister_content { my $self = shift; - $self->{unregister_content} = " + $self->{unregister_content} ||= " redirect.deRegisterDevice @@ -64,6 +70,26 @@ sub unregister_content { "; return $self->{unregister_content}; } +sub add_server_content { + my $self = shift; + $self->{add_server_content} ||= " + +redirect.addServer + + + +content_params->{uri_server_name}."]]> + + + + +content_params->{uri}."]]> + + + +"; + return $self->{add_server_content}; +} sub parse_rpc_response{ my($self,$rpc_response) = @_; @@ -80,8 +106,11 @@ sub extract_response_description{ } } -sub process_uri{ +sub uri2server_name{ my($self,$uri) = @_; + #http://stackoverflow.com/questions/4826403/hash-algorithm-with-alphanumeric-output-of-20-characters-max + + return $uri; } 1;