MT#11501 configure dialogic from webinterface

and change api config naming and add support for out_codecs
now with preferences approach

Change-Id: Ic62918e681fa877e8bfb92c2c70efb9edb4d0acc
changes/45/1245/5
Gerhard Jungwirth 11 years ago
parent 9bc45cf3f5
commit 3bb5df875a

@ -7,10 +7,11 @@ BEGIN { extends 'Catalyst::Controller'; }
use NGCP::Panel::Form::PeeringGroup;
use NGCP::Panel::Form::PeeringRule;
use NGCP::Panel::Form::PeeringServer;
use NGCP::Panel::Utils::XMLDispatcher;
use NGCP::Panel::Utils::DialogicImg;
use NGCP::Panel::Utils::Message;
use NGCP::Panel::Utils::Navigation;
use NGCP::Panel::Utils::Preferences;
use NGCP::Panel::Utils::XMLDispatcher;
sub auto :Does(ACL) :ACLDetachTo('/denied_page') :AllowedRole(admin) {
my ($self, $c) = @_;
@ -243,7 +244,17 @@ sub servers_create :Chained('servers_list') :PathPart('create') :Args(0) {
);
if($posted && $form->validated) {
try {
$c->stash->{group_result}->voip_peer_hosts->create($form->values);
my $dbvalues = {
name => $form->values->{name},
ip => $form->values->{ip},
host => $form->values->{host},
port => $form->values->{port},
transport => $form->values->{transport},
weight => $form->values->{weight},
via_route => $form->values->{via_route},
enabled => $form->values->{enabled},
};
my $server = $c->stash->{group_result}->voip_peer_hosts->create($dbvalues);
$self->_sip_lcr_reload($c);
NGCP::Panel::Utils::Message->info(
c => $c,
@ -262,7 +273,7 @@ sub servers_create :Chained('servers_list') :PathPart('create') :Args(0) {
$c->stash(
close_target => $c->uri_for_action('/peering/servers_root', [$c->req->captures->[0]]),
servers_create_flag => 1,
servers_form => $form
servers_form => $form,
);
}
@ -357,6 +368,69 @@ sub servers_delete :Chained('servers_base') :PathPart('delete') :Args(0) {
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for_action('/peering/servers_root', [$c->req->captures->[0]]));
}
sub servers_flash_dialogic :Chained('servers_base') :PathPart('edit/dialogic') :Args(0) {
my ($self, $c) = @_;
my $pref_mode = NGCP::Panel::Utils::Preferences::get_peer_preference_rs(
c => $c,
attribute => 'dialogic_mode',
peer_host => $c->stash->{server_result},
)->first;
my $pref_ip_rtp = NGCP::Panel::Utils::Preferences::get_peer_preference_rs(
c => $c,
attribute => 'dialogic_ip_rtp',
peer_host => $c->stash->{server_result},
)->first;
my $pref_ip_config = NGCP::Panel::Utils::Preferences::get_peer_preference_rs(
c => $c,
attribute => 'dialogic_ip_config',
peer_host => $c->stash->{server_result},
)->first;
my $pref_out_codecs = NGCP::Panel::Utils::Preferences::get_peer_preference_rs(
c => $c,
attribute => 'dialogic_out_codecs',
peer_host => $c->stash->{server_result},
)->first;
try {
if ($pref_mode->value ne 'none') {
my $api = NGCP::Panel::Utils::DialogicImg->new(
server => 'https://' . $pref_ip_config->value,
);
my @configured_out_codecs = map { s/^\s+|\s+$//gr } split(',', $pref_out_codecs->value);
$api->login( $c->config->{dialogic}{username}, $c->config->{dialogic}{password} );
my $resp = $api->obtain_lock();
die "Couldn't connect to dialogic"
unless $resp->code == 200;
if ($pref_mode->value eq 'sipsip') {
my $config = {
ip_sip => $c->stash->{server_result}->ip,
ip_rtp => $pref_ip_rtp->value,
ip_client => $c->config->{dialogic}{own_ip},
out_codecs => \@configured_out_codecs,
ip_config => $pref_ip_config->value, # just for the config hash
dialogic_mode => $pref_mode->value,
};
$resp = $api->create_all_sipsip($config, 1);
my $config_hash = $api->hash_config($config);
}
}
NGCP::Panel::Utils::Message->info(
c => $c,
data => { $c->stash->{server_result}->get_inflated_columns },
desc => $c->loc('Dialogic successfully flashed.'),
);
} catch ($e) {
NGCP::Panel::Utils::Message->error(
c => $c,
error => $e,
desc => $c->loc('Failed to flash dialogic'),
);
};
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for_action('/peering/servers_root', [$c->req->captures->[0]]));
}
sub servers_preferences_list :Chained('servers_base') :PathPart('preferences') :CaptureArgs(0) {
my ($self, $c) = @_;

@ -210,7 +210,7 @@ has_field 'bootstrap_method' => (
default => 'http',
element_attr => {
rel => ['tooltip'],
title => ['Method to configure the provisioning server on the phone. One of http, redirect_panasonic, redirect_yealink.'],
title => ['Method to configure the provisioning server on the phone. One of http, redirect_panasonic, redirect_yealink, redirect_polycom.'],
# TODO: ????
javascript => ' onchange="bootstrapDynamicFields(this.options[this.selectedIndex].value);" ',
},

@ -455,29 +455,43 @@ sub _create_generic {
}
# log: 0: none, 1: short, 2: everything
# necessary keys: ip_sip, ip_rtp, ip_client, out_codecs, optional: in_codecs
sub create_all_sipsip {
my ($self, $settings, $log) = @_;
$self->_create_indent;
my $in_codecs = ['G711 ulaw', 'G711 alaw', 'G729', 'AMR',
'AMR Bandwidth Efficient', 'AMR-WB', 'AMR-WB Bandwidth Efficient',
'Clear Channel', 'G723 5.3 Kbps', 'G723 6.3 Kbps', 'G722', 'iLBC 30ms',
'GSM-FR Static Payload Type', 'GSM-FR Dynamic Payload Type',
'G726-32/G721 Static Payload Type', 'G726-32/G721 Dynamic Payload Type',
'GSM-EFR'];
my $resp = $self->create_bn2020;
my @in_schedule = map {
{
name => 'vocoder_profile', options =>
{ PayloadType => $_ },
};
} @{ $settings->{in_codecs} // $in_codecs };
my @out_schedule = map {
{
name => 'vocoder_profile', options =>
{ PayloadType => $_ },
};
} @{ $settings->{in_codecs} };
} @{ $settings->{out_codecs} };
my $schedule = [
{name => 'network', options => undef},
{name => 'interface_collection', options => undef},
{name => 'interface', options => undef},
{name => 'ip_address', options => {
NIIPAddress => $settings->{ip1},
NIIPAddress => $settings->{ip_sip},
NIIPPhy => 'Services',
}},
{name => 'interface', options => undef},
{name => 'ip_address', options => {
NIIPAddress => $settings->{ip2},
NIIPAddress => $settings->{ip_rtp},
NIIPPhy => 'Media 0',
}},
{name => 'facility', options => undef},
@ -488,7 +502,7 @@ sub create_all_sipsip {
{name => 'signaling', options => undef},
{name => 'sip', options => undef},
{name => 'sip_ip', options => {
IPAddress => $settings->{ip1},
IPAddress => $settings->{ip_sip},
}},
{name => 'profile_collection', options => undef},
{name => 'ip_profile_collection', options => undef},
@ -497,6 +511,11 @@ sub create_all_sipsip {
Name => 'ngcp_in_profile',
}},
@in_schedule,
{name => 'ip_profile', options => {
DigitRelay => 'DTMF Packetized',
Name => 'ngcp_out_profile',
}},
@out_schedule,
{name => 'sip_profile_collection', options => undef},
{name => 'sip_profile', options => undef},
#{run => 'download_profiles'},
@ -518,7 +537,7 @@ sub create_all_sipsip {
InRouteTable => 'ngcp_route_table - ID: 5',
InIPProfile => 'ngcp_in_profile',
InIPProfileId => '1',
OutIPProfile => 'ngcp_in_profile', # separate one for out?
OutIPProfile => 'ngcp_out_profile',
SupportA2F => 'True',
}},
{name => 'cg_network_element', options => undef},
@ -556,7 +575,7 @@ sub create_all_sipsip {
###### OTHER STUFF ######
sub hash_config_sipsip {
sub hash_config {
my ($self, $config) = @_;
$Storable::canonical = 1;
return md5_hex(freeze $config);

@ -50,6 +50,12 @@ log4perl.appender.Default.layout.ConversionPattern=%d{ISO8601} [%p] [%F +%L] %m{
element_order customer_id
</voucher_csv>
<dialogic>
own_ip 10.15.20.199
username dialogic
password Dial0gic
</dialogic>
<fees_csv>
element_order source
element_order destination

@ -14,11 +14,9 @@
helper.rewrite_rule_sets = rwr_sets;
helper.man_aip_grp_rs = man_aip_grp_rs;
helper.dt_buttons = [
{ name = c.loc('Edit'), uri = c.uri_for_action("/peering/servers_preferences_root", [c.req.captures.0, c.req.captures.1]), class = 'btn-small btn-primary', icon = 'icon-edit' },
];
helper.top_buttons = [
{ name = c.loc('Back'), uri = c.uri_for(group.id, "servers"), icon = 'icon-arrow-left' },
{ name = c.loc('Flash Dialogic'), uri = c.uri_for_action("/peering/servers_flash_dialogic", [c.req.captures.0, c.req.captures.1]), icon = 'icon-star' },
];
PROCESS 'helpers/pref_table.tt';

@ -48,7 +48,7 @@ my $result = $test->create_all_sipsip({
ip2 => '10.15.21.10',
ip_client => '10.15.20.199',
in_codecs => ['G711 ulaw', 'G711 alaw', 'G729', 'AMR'],
#out_codecs => ['G711 ulaw', 'G711 alaw', 'G729', 'AMR'], # not yet used
out_codecs => ['G711 ulaw', 'G711 alaw', 'G729', 'AMR'],
},
2,
);

Loading…
Cancel
Save