diff --git a/lib/NGCP/Panel/Controller/Peering.pm b/lib/NGCP/Panel/Controller/Peering.pm index b75f1414d5..e4eced7d94 100644 --- a/lib/NGCP/Panel/Controller/Peering.pm +++ b/lib/NGCP/Panel/Controller/Peering.pm @@ -8,6 +8,7 @@ use NGCP::Panel::Utils; use NGCP::Panel::Form::PeeringGroup; use NGCP::Panel::Form::PeeringRule; use NGCP::Panel::Form::PeeringServer; +use NGCP::Panel::Utils::XMLDispatcher; sub auto :Does(ACL) :ACLDetachTo('/denied_page') :AllowedRole(admin) { my ($self, $c) = @_; @@ -81,6 +82,7 @@ sub edit :Chained('base') :PathPart('edit') { if($posted && $form->validated) { try { $c->stash->{group_result}->update($form->custom_get_values); + $self->_sip_lcr_reload; $c->flash(messages => [{type => 'success', text => 'Peering Group successfully changed!'}]); } catch (DBIx::Class::Exception $e) { $c->flash(messages => [{type => 'error', text => 'Update of peering group failed.'}]); @@ -99,6 +101,7 @@ sub delete :Chained('base') :PathPart('delete') { try { $c->stash->{group_result}->delete; + $self->_sip_lcr_reload; $c->flash(messages => [{type => 'success', text => 'Peering Group successfully deleted!'}]); } catch (DBIx::Class::Exception $e) { $c->flash(messages => [{type => 'error', text => 'Delete failed.'}]); @@ -128,6 +131,7 @@ sub create :Chained('group_list') :PathPart('create') :Args(0) { try { $c->model('provisioning')->resultset('voip_peer_groups')->create( $formdata ); + $self->_sip_lcr_reload; $c->flash(messages => [{type => 'success', text => 'Peering group successfully created!'}]); } catch (DBIx::Class::Exception $e) { $c->flash(rules_messages => [{type => 'error', text => 'Creation of peering group failed.'}]); @@ -179,6 +183,7 @@ sub servers_create :Chained('servers_list') :PathPart('create') :Args(0) { if($form->validated) { try { $c->stash->{group_result}->voip_peer_hosts->create( $form->fif ); + $self->_sip_lcr_reload; $c->flash(messages => [{type => 'success', text => 'Peering server successfully created!'}]); } catch (DBIx::Class::Exception $e) { $c->flash(messages => [{type => 'error', text => 'Creation of Peering server failed.'}]); @@ -227,6 +232,7 @@ sub servers_edit :Chained('servers_base') :PathPart('edit') :Args(0) { if($posted && $form->validated) { try { $c->stash->{server_result}->update($form->fif); + $self->_sip_lcr_reload; $c->flash(messages => [{type => 'success', text => 'Peering Server successfully changed!'}]); } catch (DBIx::Class::Exception $e) { $c->flash(messages => [{type => 'error', text => 'Updating of Peering server failed.'}]); @@ -247,6 +253,7 @@ sub servers_delete :Chained('servers_base') :PathPart('delete') :Args(0) { try { $c->stash->{server_result}->delete; + $self->_sip_lcr_reload; $c->flash(messages => [{type => 'success', text => 'Peering Server successfully deleted!'}]); } catch (DBIx::Class::Exception $e) { $c->flash(rules_messages => [{type => 'error', text => 'Delete failed.'}]); @@ -358,6 +365,7 @@ sub rules_create :Chained('rules_list') :PathPart('create') :Args(0) { if($form->validated) { try { $c->stash->{group_result}->voip_peer_rules->create( $form->fif ); + $self->_sip_lcr_reload; $c->flash(rules_messages => [{type => 'success', text => 'Peering rule successfully created!'}]); } catch (DBIx::Class::Exception $e) { $c->flash(rules_messages => [{type => 'error', text => 'Create failed.'}]); @@ -406,6 +414,7 @@ sub rules_edit :Chained('rules_base') :PathPart('edit') :Args(0) { if($posted && $form->validated) { try { $c->stash->{rule_result}->update($form->fif); + $self->_sip_lcr_reload; $c->flash(rules_messages => [{type => 'success', text => 'Peering Rule successfully changed!'}]); } catch (DBIx::Class::Exception $e) { $c->flash(rules_messages => [{type => 'error', text => 'Edit failed.'}]); @@ -425,6 +434,7 @@ sub rules_delete :Chained('rules_base') :PathPart('delete') :Args(0) { try { $c->stash->{rule_result}->delete; + $self->_sip_lcr_reload; $c->flash(rules_messages => [{type => 'success', text => 'Peering Rule successfully deleted!'}]); } catch (DBIx::Class::Exception $e) { $c->flash(rules_messages => [{type => 'error', text => 'Delete failed.'}]); @@ -433,6 +443,20 @@ sub rules_delete :Chained('rules_base') :PathPart('delete') :Args(0) { $c->response->redirect($c->stash->{sr_list_uri}); } +sub _sip_lcr_reload { + my ($self) = @_; + my $dispatcher = NGCP::Panel::Utils::XMLDispatcher->new; + $dispatcher->dispatch("proxy-ng", 1, 1, < + +lcr.reload + + +EOF + + return 1; +} + __PACKAGE__->meta->make_immutable; 1; @@ -560,6 +584,12 @@ Show a modal to edit a peering rule. Delete a peering rule. +=head2 _sip_lcr_reload + +This is ported from ossbss. + +Reloads lcr cache of sip proxies. + =head1 AUTHOR Gerhard Jungwirth C<< >> diff --git a/lib/NGCP/Panel/Controller/Rewrite.pm b/lib/NGCP/Panel/Controller/Rewrite.pm index 9aae194589..1a42a2b5df 100644 --- a/lib/NGCP/Panel/Controller/Rewrite.pm +++ b/lib/NGCP/Panel/Controller/Rewrite.pm @@ -6,6 +6,7 @@ BEGIN { extends 'Catalyst::Controller'; } use NGCP::Panel::Form::RewriteRuleSet; use NGCP::Panel::Form::RewriteRule; +use NGCP::Panel::Utils::XMLDispatcher; sub auto :Does(ACL) :ACLDetachTo('/denied_page') :AllowedRole(admin) :AllowedRole(reseller) { my ($self, $c) = @_; @@ -225,6 +226,7 @@ sub rules_edit :Chained('rules_base') :PathPart('edit') { item => $c->stash->{rule_result}, ); if($form->validated) { + $self->_sip_dialplan_reload(); $c->flash(messages => [{type => 'success', text => 'Rewrite Rule successfully changed!'}]); $c->response->redirect($c->stash->{rules_uri}); return; @@ -239,6 +241,7 @@ sub rules_delete :Chained('rules_base') :PathPart('delete') { try { $c->stash->{rule_result}->delete; + $self->_sip_dialplan_reload(); $c->flash(messages => [{type => 'success', text => 'Rewrite Rule successfully deleted!'}]); } catch (DBIx::Class::Exception $e) { $c->flash(messages => [{type => 'error', text => 'Delete failed.'}]); @@ -258,6 +261,7 @@ sub rules_create :Chained('rules_list') :PathPart('create') :Args(0) { item => $c->stash->{rules_rs}->new_result({}), ); if($form->validated) { + $self->_sip_dialplan_reload(); $c->flash(messages => [{type => 'success', text => 'Rewrite Rule successfully created!'}]); $c->response->redirect($c->stash->{rules_uri}); return; @@ -267,6 +271,20 @@ sub rules_create :Chained('rules_list') :PathPart('create') :Args(0) { $c->stash(form => $form); } +sub _sip_dialplan_reload { + my ($self) = @_; + my $dispatcher = NGCP::Panel::Utils::XMLDispatcher->new; + $dispatcher->dispatch("proxy-ng", 1, 1, < + +dialplan.reload + + +EOF + + return 1; +} + __PACKAGE__->meta->make_immutable; 1; @@ -350,6 +368,12 @@ Delete a rewrite rule determined by L. Show a modal to create a new rewrite rule using the form L. +=head2 _sip_dialplan_reload + +This is ported from ossbss. + +Reloads dialplan cache of sip proxies. + =head1 AUTHOR Gerhard Jungwirth C<< >>