|
|
|
|
@ -1,11 +1,11 @@
|
|
|
|
|
package NGCP::Panel::Controller::Rewrite;
|
|
|
|
|
use Sipwise::Base;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN { extends 'Catalyst::Controller'; }
|
|
|
|
|
|
|
|
|
|
use NGCP::Panel::Form::RewriteRuleSet;
|
|
|
|
|
use NGCP::Panel::Form::RewriteRule;
|
|
|
|
|
use NGCP::Panel::Form::RewriteRule::AdminSet;
|
|
|
|
|
use NGCP::Panel::Form::RewriteRule::ResellerSet;
|
|
|
|
|
use NGCP::Panel::Form::RewriteRule::Rule;
|
|
|
|
|
use NGCP::Panel::Utils::XMLDispatcher;
|
|
|
|
|
use NGCP::Panel::Utils::Navigation;
|
|
|
|
|
|
|
|
|
|
@ -19,6 +19,19 @@ sub auto :Does(ACL) :ACLDetachTo('/denied_page') :AllowedRole(admin) :AllowedRol
|
|
|
|
|
sub set_list :Chained('/') :PathPart('rewrite') :CaptureArgs(0) {
|
|
|
|
|
my ( $self, $c ) = @_;
|
|
|
|
|
|
|
|
|
|
$c->stash->{sets_rs} = $c->model('DB')->resultset('voip_rewrite_rule_sets');
|
|
|
|
|
unless($c->user->is_superuser) {
|
|
|
|
|
$c->stash->{sets_rs} = $c->stash->{sets_rs}->search({
|
|
|
|
|
reseller_id => $c->user->reseller_id
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
$c->stash->{set_dt_columns} = NGCP::Panel::Utils::Datatables::set_columns($c, [
|
|
|
|
|
{ name => 'id', search => 1, title => '#' },
|
|
|
|
|
{ name => 'reseller.name', search => 1, title => 'Reseller' },
|
|
|
|
|
{ name => 'name', search => 1, title => 'Name' },
|
|
|
|
|
{ name => 'description', search => 1, title => 'Description' },
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
$c->stash(template => 'rewrite/set_list.tt');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -28,13 +41,8 @@ sub set_root :Chained('set_list') :PathPart('') :Args(0) {
|
|
|
|
|
|
|
|
|
|
sub set_ajax :Chained('set_list') :PathPart('ajax') :Args(0) {
|
|
|
|
|
my ($self, $c) = @_;
|
|
|
|
|
|
|
|
|
|
my $resultset = $c->model('DB')->resultset('voip_rewrite_rule_sets');
|
|
|
|
|
|
|
|
|
|
$c->forward( "/ajax_process_resultset", [$resultset,
|
|
|
|
|
["id", "name", "description"],
|
|
|
|
|
["name", "description"]]);
|
|
|
|
|
|
|
|
|
|
my $rs = $c->stash->{sets_rs};
|
|
|
|
|
NGCP::Panel::Utils::Datatables::process($c, $rs, $c->stash->{set_dt_columns});
|
|
|
|
|
$c->detach( $c->view("JSON") );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -42,18 +50,14 @@ sub set_base :Chained('set_list') :PathPart('') :CaptureArgs(1) {
|
|
|
|
|
my ($self, $c, $set_id) = @_;
|
|
|
|
|
|
|
|
|
|
unless($set_id && $set_id->is_integer) {
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Invalid rewrite rule set id detected!'}]);
|
|
|
|
|
$c->response->redirect($c->uri_for());
|
|
|
|
|
$c->detach;
|
|
|
|
|
return;
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Invalid rewrite rule set id detected'}]);
|
|
|
|
|
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/rewrite'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
my $res = $c->model('DB')->resultset('voip_rewrite_rule_sets')->find($set_id);
|
|
|
|
|
my $res = $c->stash->{sets_rs}->find($set_id);
|
|
|
|
|
unless(defined($res)) {
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Rewrite rule set does not exist!'}]);
|
|
|
|
|
$c->response->redirect($c->uri_for());
|
|
|
|
|
$c->detach;
|
|
|
|
|
return;
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Rewrite rule set does not exist'}]);
|
|
|
|
|
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/rewrite'));
|
|
|
|
|
}
|
|
|
|
|
$c->stash(set_result => $res);
|
|
|
|
|
}
|
|
|
|
|
@ -62,17 +66,42 @@ sub set_edit :Chained('set_base') :PathPart('edit') {
|
|
|
|
|
my ($self, $c) = @_;
|
|
|
|
|
|
|
|
|
|
my $posted = ($c->request->method eq 'POST');
|
|
|
|
|
my $form = NGCP::Panel::Form::RewriteRuleSet->new;
|
|
|
|
|
my $params = { $c->stash->{set_result}->get_inflated_columns };
|
|
|
|
|
$params->{reseller}{id} = delete $params->{reseller_id};
|
|
|
|
|
$params = $params->merge($c->session->{created_objects});
|
|
|
|
|
my $form;
|
|
|
|
|
if($c->user->is_superuser) {
|
|
|
|
|
$form = NGCP::Panel::Form::RewriteRule::AdminSet->new;
|
|
|
|
|
} else {
|
|
|
|
|
$form = NGCP::Panel::Form::RewriteRule::ResellerSet->new;
|
|
|
|
|
}
|
|
|
|
|
$form->process(
|
|
|
|
|
posted => $posted,
|
|
|
|
|
params => $c->request->params,
|
|
|
|
|
action => $c->uri_for_action('/rewrite/set_edit'),
|
|
|
|
|
item => $c->stash->{set_result},
|
|
|
|
|
item => $params,
|
|
|
|
|
);
|
|
|
|
|
if($form->validated) {
|
|
|
|
|
$c->flash(messages => [{type => 'success', text => 'Rewrite Rule Set successfully changed!'}]);
|
|
|
|
|
$c->response->redirect($c->uri_for());
|
|
|
|
|
return;
|
|
|
|
|
NGCP::Panel::Utils::Navigation::check_form_buttons(
|
|
|
|
|
c => $c,
|
|
|
|
|
form => $form,
|
|
|
|
|
fields => {
|
|
|
|
|
'reseller.create' => $c->uri_for('/reseller/create'),
|
|
|
|
|
},
|
|
|
|
|
back_uri => $c->req->uri,
|
|
|
|
|
);
|
|
|
|
|
if($posted && $form->validated) {
|
|
|
|
|
try {
|
|
|
|
|
if($c->user->is_superuser) {
|
|
|
|
|
$form->values->{reseller_id} = $form->values->{reseller}{id};
|
|
|
|
|
delete $form->values->{reseller};
|
|
|
|
|
}
|
|
|
|
|
$c->stash->{set_result}->update($form->values);
|
|
|
|
|
delete $c->session->{created_objects}->{reseller};
|
|
|
|
|
$c->flash(messages => [{type => 'success', text => 'Rewrite rule set successfully updated'}]);
|
|
|
|
|
} catch($e) {
|
|
|
|
|
$c->log->error("failed to update rewrite rule set: $e");
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Failed to update rewrite rule set'}]);
|
|
|
|
|
}
|
|
|
|
|
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/rewrite'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$c->stash(form => $form);
|
|
|
|
|
@ -84,33 +113,59 @@ sub set_delete :Chained('set_base') :PathPart('delete') {
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
$c->stash->{set_result}->delete;
|
|
|
|
|
$c->flash(messages => [{type => 'success', text => 'Rewrite Rule Set successfully deleted!'}]);
|
|
|
|
|
} catch (DBIx::Class::Exception $e) {
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Delete failed.'}]);
|
|
|
|
|
$c->log->info("Delete failed: " . $e);
|
|
|
|
|
};
|
|
|
|
|
$c->response->redirect($c->uri_for());
|
|
|
|
|
$c->flash(messages => [{type => 'success', text => 'Rewrite rule set successfully deleted'}]);
|
|
|
|
|
} catch($e) {
|
|
|
|
|
$c->log->info("failed to delete rewrite rule set: $e");
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Failed to delete rewrite rule set'}]);
|
|
|
|
|
}
|
|
|
|
|
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/rewrite'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub set_create :Chained('set_list') :PathPart('create') :Args(0) {
|
|
|
|
|
my ($self, $c) = @_;
|
|
|
|
|
|
|
|
|
|
my $form = NGCP::Panel::Form::RewriteRuleSet->new;
|
|
|
|
|
my $posted = ($c->request->method eq 'POST');
|
|
|
|
|
my $params = {};
|
|
|
|
|
$params = $params->merge($c->session->{created_objects});
|
|
|
|
|
my $form;
|
|
|
|
|
if($c->user->is_superuser) {
|
|
|
|
|
$form = NGCP::Panel::Form::RewriteRule::AdminSet->new;
|
|
|
|
|
} else {
|
|
|
|
|
$form = NGCP::Panel::Form::RewriteRule::ResellerSet->new;
|
|
|
|
|
}
|
|
|
|
|
$form->process(
|
|
|
|
|
posted => ($c->request->method eq 'POST'),
|
|
|
|
|
posted => $posted,
|
|
|
|
|
params => $c->request->params,
|
|
|
|
|
action => $c->uri_for_action('/rewrite/set_create'),
|
|
|
|
|
item => $c->model('DB')->resultset('voip_rewrite_rule_sets')->new_result({}),
|
|
|
|
|
item => $params,
|
|
|
|
|
);
|
|
|
|
|
if($form->validated) {
|
|
|
|
|
$c->flash(messages => [{type => 'success', text => 'Rewrite Rule Set successfully created!'}]);
|
|
|
|
|
$c->response->redirect($c->uri_for_action('/rewrite/set_root'));
|
|
|
|
|
return;
|
|
|
|
|
NGCP::Panel::Utils::Navigation::check_form_buttons(
|
|
|
|
|
c => $c,
|
|
|
|
|
form => $form,
|
|
|
|
|
fields => {
|
|
|
|
|
'reseller.create' => $c->uri_for('/reseller/create'),
|
|
|
|
|
},
|
|
|
|
|
back_uri => $c->req->uri,
|
|
|
|
|
);
|
|
|
|
|
if($posted && $form->validated) {
|
|
|
|
|
try {
|
|
|
|
|
if($c->user->is_superuser) {
|
|
|
|
|
$form->values->{reseller_id} = $form->values->{reseller}{id};
|
|
|
|
|
delete $form->values->{reseller};
|
|
|
|
|
} else {
|
|
|
|
|
$form->values->{reseller_id} = $c->user->reseller_id;
|
|
|
|
|
}
|
|
|
|
|
$c->stash->{sets_rs}->create($form->values);
|
|
|
|
|
delete $c->session->{created_objects}->{reseller};
|
|
|
|
|
$c->flash(messages => [{type => 'success', text => 'Rewrite rule set successfully created'}]);
|
|
|
|
|
} catch($e) {
|
|
|
|
|
$c->log->error("failed to create rewrite rule set: $e");
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Failed to create rewrite rule set'}]);
|
|
|
|
|
}
|
|
|
|
|
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/rewrite'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$c->stash(close_target => $c->uri_for());
|
|
|
|
|
$c->stash(create_flag => 1);
|
|
|
|
|
$c->stash(form => $form);
|
|
|
|
|
$c->stash(create_flag => 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub rules_list :Chained('set_base') :PathPart('rules') :CaptureArgs(0) {
|
|
|
|
|
@ -200,18 +255,14 @@ sub rules_base :Chained('rules_list') :PathPart('') :CaptureArgs(1) {
|
|
|
|
|
my ($self, $c, $rule_id) = @_;
|
|
|
|
|
|
|
|
|
|
unless($rule_id && $rule_id->is_integer) {
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Invalid rewrite rule id detected!'}]);
|
|
|
|
|
$c->response->redirect($c->stash->{rules_uri});
|
|
|
|
|
$c->detach;
|
|
|
|
|
return;
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Invalid rewrite rule id detected'}]);
|
|
|
|
|
NGCP::Panel::Utils::Navigation::back_or($c, $c->stash->{rules_uri});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
my $res = $c->stash->{rules_rs}->find($rule_id);
|
|
|
|
|
unless(defined($res)) {
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Rewrite rule does not exist!'}]);
|
|
|
|
|
$c->response->redirect($c->stash->{rules_uri});
|
|
|
|
|
$c->detach;
|
|
|
|
|
return;
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Rewrite rule does not exist'}]);
|
|
|
|
|
NGCP::Panel::Utils::Navigation::back_or($c, $c->stash->{rules_uri});
|
|
|
|
|
}
|
|
|
|
|
$c->stash(rule_result => $res);
|
|
|
|
|
}
|
|
|
|
|
@ -220,18 +271,28 @@ sub rules_edit :Chained('rules_base') :PathPart('edit') {
|
|
|
|
|
my ($self, $c) = @_;
|
|
|
|
|
|
|
|
|
|
my $posted = ($c->request->method eq 'POST');
|
|
|
|
|
my $form = NGCP::Panel::Form::RewriteRule->new;
|
|
|
|
|
my $form = NGCP::Panel::Form::RewriteRule::Rule->new;
|
|
|
|
|
$form->process(
|
|
|
|
|
posted => $posted,
|
|
|
|
|
params => $c->request->params,
|
|
|
|
|
action => $c->uri_for_action('/rewrite/rules_edit', $c->req->captures),
|
|
|
|
|
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;
|
|
|
|
|
NGCP::Panel::Utils::Navigation::check_form_buttons(
|
|
|
|
|
c => $c,
|
|
|
|
|
form => $form,
|
|
|
|
|
fields => {},
|
|
|
|
|
back_uri => $c->req->uri,
|
|
|
|
|
);
|
|
|
|
|
if($posted && $form->validated) {
|
|
|
|
|
try {
|
|
|
|
|
$c->stash->{rule_result}->update($form->values);
|
|
|
|
|
$self->_sip_dialplan_reload();
|
|
|
|
|
$c->flash(messages => [{type => 'success', text => 'Rewrite rule successfully updated'}]);
|
|
|
|
|
} catch($e) {
|
|
|
|
|
$c->log->error("failed to update rewrite rule: $e");
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Failed to update rewrite rule'}]);
|
|
|
|
|
}
|
|
|
|
|
NGCP::Panel::Utils::Navigation::back_or($c, $c->stash->{rules_uri});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$c->stash(form => $form);
|
|
|
|
|
@ -244,33 +305,43 @@ 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.'}]);
|
|
|
|
|
$c->log->info("Delete failed: " . $e);
|
|
|
|
|
$c->flash(messages => [{type => 'success', text => 'Rewrite rule successfully deleted'}]);
|
|
|
|
|
} catch($e) {
|
|
|
|
|
$c->log->info("failed to delete rewrite rule: $e");
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Failed to delete rewrite rule'}]);
|
|
|
|
|
};
|
|
|
|
|
$c->response->redirect($c->stash->{rules_uri});
|
|
|
|
|
NGCP::Panel::Utils::Navigation::back_or($c, $c->stash->{rules_uri});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub rules_create :Chained('rules_list') :PathPart('create') :Args(0) {
|
|
|
|
|
my ($self, $c) = @_;
|
|
|
|
|
|
|
|
|
|
my $form = NGCP::Panel::Form::RewriteRule->new;
|
|
|
|
|
my $posted = ($c->request->method eq 'POST');
|
|
|
|
|
my $form = NGCP::Panel::Form::RewriteRule::Rule->new;
|
|
|
|
|
$form->process(
|
|
|
|
|
posted => ($c->request->method eq 'POST'),
|
|
|
|
|
posted => $posted,
|
|
|
|
|
params => $c->request->params,
|
|
|
|
|
action => $c->uri_for_action('/rewrite/rules_create', $c->req->captures),
|
|
|
|
|
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;
|
|
|
|
|
NGCP::Panel::Utils::Navigation::check_form_buttons(
|
|
|
|
|
c => $c,
|
|
|
|
|
form => $form,
|
|
|
|
|
fields => {},
|
|
|
|
|
back_uri => $c->req->uri,
|
|
|
|
|
);
|
|
|
|
|
if($posted && $form->validated) {
|
|
|
|
|
try {
|
|
|
|
|
$c->stash->{rules_rs}->create($form->values);
|
|
|
|
|
$self->_sip_dialplan_reload();
|
|
|
|
|
$c->flash(messages => [{type => 'success', text => 'Rewrite rule successfully created'}]);
|
|
|
|
|
} catch($e) {
|
|
|
|
|
$c->log->error("failed to create rewrite rule: $e");
|
|
|
|
|
$c->flash(messages => [{type => 'error', text => 'Failed to create rewrite rule'}]);
|
|
|
|
|
}
|
|
|
|
|
NGCP::Panel::Utils::Navigation::back_or($c, $c->stash->{rules_uri});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$c->stash(create_flag => 1);
|
|
|
|
|
$c->stash(form => $form);
|
|
|
|
|
$c->stash(create_flag => 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub _sip_dialplan_reload {
|
|
|
|
|
|