ensure correct syntax for peering rules

3.4
Christian Veigl 14 years ago
parent 0a3872dccd
commit 52898f3de6

@ -208,60 +208,77 @@ Create a peering rule for a given group
=cut
sub create_rule : Local {
sub save_rule : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering_detail.tt';
my %messages;
my %settings;
my $checkresult;
my $settings = {
callee_prefix => $c->request->params->{callee_prefix} //= undef,
callee_pattern => $c->request->params->{callee_pattern} //= undef,
caller_pattern => $c->request->params->{caller_pattern} //= undef,
description => $c->request->params->{description} //= undef,
};
my $rule_id = $c->request->params->{ruleid} //= undef;
my $group_id = $c->request->params->{grpid} //= undef;
unless ($c->model('Provisioning')->call_prov( $c, 'voip', 'check_sip_uri_prefix', $settings->{callee_prefix}, \$checkresult)) {
$messages{rule_callee_prefix_err} = 'Client.Syntax.MalformedUri';
$c->flash->{rule_callee_prefix_err_detail} = $c->session->{prov_error_object} if ($c->session->{prov_error_object});
}
unless ($c->model('Provisioning')->call_prov( $c, 'voip', 'check_sip_uri_pattern', $settings->{callee_pattern}, \$checkresult)) {
$messages{rule_callee_pattern_err} = 'Client.Syntax.MalformedUri';
$c->flash->{rule_callee_pattern_err_detail} = $c->session->{prov_error_object} if ($c->session->{prov_error_object});
}
unless ($c->model('Provisioning')->call_prov( $c, 'voip', 'check_sip_uri_pattern', $settings->{caller_pattern}, \$checkresult)) {
$messages{rule_caller_pattern_err} = 'Client.Syntax.MalformedUri';
$c->flash->{rule_caller_pattern_err_detail} = $c->session->{prov_error_object} if ($c->session->{prov_error_object});
}
my $grpid = $c->request->params->{grpid};
my $callee_prefix = $c->request->params->{callee_prefix};
my $callee_pattern = $c->request->params->{callee_pattern};
my $caller_pattern = $c->request->params->{caller_pattern};
my $description = $c->request->params->{description};
if (keys %messages) {
$c->session->{messages} = \%messages;
$c->flash->{restore_rule} = $settings;
if (defined $rule_id and length ($rule_id)) {
$c->response->redirect("/peering/detail?group_id=$group_id&reditid=$rule_id");
}
else {
$c->response->redirect("/peering/detail?group_id=$group_id");
}
$c->detach;
}
# $messages{crulerr} = 'Client.Syntax.MalformedPeerGroupName'
# unless $callee_prefix =~ /^[a-zA-Z0-9_\.\-\@\:]+/;
# data ok, save it
my $result;
unless(keys %messages) {
if($c->model('Provisioning')->call_prov( $c, 'voip', 'create_peer_rule',
{ group_id => $grpid,
data => {
callee_prefix => $callee_prefix,
callee_pattern => $callee_pattern,
caller_pattern => $caller_pattern,
description => $description
},
},
undef
))
{
$messages{erulmsg} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/peering/detail?group_id=$grpid");
return;
}
else
{
$messages{erulerr} = 'Client.Voip.InputErrorFound';
if ($c->session->{prov_error_object}) {
# put into flash (read-once), %messages is translated which will not work here.
$c->flash->{erulerr_detail} = $c->session->{prov_error_object};
}
}
} else {
# TODO: add proper values here and set them in tt
my %arefill = ();
# $arefill{name} = $grpname;
# $arefill{desc} = $grpdesc;
$c->stash->{arefill} = \%arefill;
if (defined $rule_id and length ($rule_id)) {
$result = $c->model('Provisioning')->call_prov( $c, 'voip', 'update_peer_rule',
{ id => $rule_id,
data => $settings,
},
undef,
);
}
else {
$result = $c->model('Provisioning')->call_prov( $c, 'voip', 'create_peer_rule',
{ group_id => $group_id,
data => $settings,
},
undef,
);
}
$c->session->{messages} = \%messages;
$c->response->redirect("/peering/detail?group_id=$grpid");
return;
if ($result) {
$messages{erulmsg} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/peering/detail?group_id=$group_id");
return;
}
else {
$messages{erulerr} = 'Client.Voip.InputErrorFound';
}
}
=head2 delete_rule
@ -300,65 +317,6 @@ sub delete_rule : Local {
return;
}
=head2 edit_rule
Edit a peering rule
=cut
sub edit_rule : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering_detail.tt';
my %messages;
my %settings;
my $grpid = $c->request->params->{grpid};
my $ruleid = $c->request->params->{ruleid};
my $callee_prefix = $c->request->params->{callee_prefix};
my $callee_pattern = $c->request->params->{callee_pattern};
my $caller_pattern = $c->request->params->{caller_pattern};
my $description = $c->request->params->{description};
# $messages{crulerr} = 'Client.Syntax.MalformedPeerGroupName'
# unless $callee_prefix =~ /^[a-zA-Z0-9_\.\-\@\:]+/;
unless(keys %messages) {
if($c->model('Provisioning')->call_prov( $c, 'voip', 'update_peer_rule',
{ id => $ruleid,
data => {
callee_prefix => $callee_prefix,
callee_pattern => $callee_pattern,
caller_pattern => $caller_pattern,
description => $description
},
},
undef
))
{
$messages{erulmsg} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/peering/detail?group_id=$grpid");
return;
}
else
{
$messages{erulerr} = 'Client.Voip.InputErrorFound';
}
} else {
# TODO: add proper values here and set them in tt
my %arefill = ();
# $arefill{name} = $grpname;
# $arefill{desc} = $grpdesc;
$c->stash->{arefill} = \%arefill;
}
$c->session->{messages} = \%messages;
$c->response->redirect("/peering/detail?group_id=$grpid");
return;
}
=head2 create_peer
Create a peering server for a given group

@ -130,6 +130,7 @@
<h3>Peering Rules</h3>
[% IF !grp.rules || grp.rules.size == 0 %]<div class="notice">Peering Servers of this Peering Group will not be used until at least one Peering Rule is added!</div>[% END %]
[% IF messages.erulmsg %]<div class="success">[% messages.erulmsg %]</div>[% END %]
[% IF messages.erulerr %]
<div class="error">[% messages.erulerr %]
@ -140,6 +141,22 @@
</div>
[% END %]
[% IF messages.rule_callee_prefix_err %]
<div class="error">Callee prefix: [% messages.rule_callee_prefix_err %]
[% IF rule_callee_prefix_err_detail %]<br />[% rule_callee_prefix_err_detail %][% END %]
</div>
[% END %]
[% IF messages.rule_callee_pattern_err %]
<div class="error">Callee pattern: [% messages.rule_callee_pattern_err %]
[% IF rule_callee_pattern_err_detail %]<br />[% rule_callee_pattern_err_detail %][% END %]
</div>
[% END %]
[% IF messages.rule_caller_pattern_err %]
<div class="error">Caller pattern: [% messages.rule_caller_pattern_err %]
[% IF rule_caller_pattern_err_detail %]<br />[% rule_caller_pattern_err_detail %][% END %]
</div>
[% END %]
<ul class="cleanlist">
<li class="ui-state-default">
<div class="span-4">Callee Prefix</div>
@ -151,24 +168,24 @@
[% FOREACH rule = grp.rules %]
<li class="ui-state-default">
[% IF rule.id == reditid && !Catalyst.session.admin.read_only %]
<form action="/peering/edit_rule" method="post">
<form action="/peering/save_rule" method="post">
<input type="hidden" name="grpid" value="[% grp.group.id %]" />
<input type="hidden" name="ruleid" value="[% rule.id %]" />
<div class="span-4">
<input type="text" size="10 id="addtxt" title="string, callee prefix"
name="callee_prefix" value="[% rule.callee_prefix %]" />
<input type="text" size="10 id="addtxt" title="Callee prefix, eg: ^43 (must not include leading 'sip:'"
name="callee_prefix" value="[% restore_rule.callee_prefix or rule.callee_prefix %]" />
</div>
<div class="span-4">
<input type="text" size="10" id="addtxt" title="string, callee pattern"
name="callee_pattern" value="[% rule.callee_pattern %]" />
<input type="text" size="10" id="addtxt" title="A regex including the leading 'sip:' if ^ is included (eg: '^sip:user@domain.com$')"
name="callee_pattern" value="[% restore_rule.callee_pattern or rule.callee_pattern %]" />
</div>
<div class="span-4">
<input type="text" size="10" id="addtxt" title="string, caller pattern"
name="caller_pattern" value="[% rule.caller_pattern %]" />
<input type="text" size="10" id="addtxt" title="A regex including the leading 'sip:' if ^ is included (eg: '^sip:user@domain.com$')"
name="caller_pattern" value="[% restore_rule.caller_pattern or rule.caller_pattern %]" />
</div>
<div class="span-3">
<input type="text" size="12" id="addtxt" title="string, rule description"
name="description" value="[% rule.description %]" />
name="description" value="[% restore_rule.description or rule.description %]" />
</div>
<div class="span-1">
<button class="button-save" id="rsave[% id %]">Save</button>
@ -202,23 +219,23 @@
[% END %]
[% UNLESS Catalyst.session.admin.read_only %]
<li class="ui-state-default">
<form action="/peering/create_rule" method="post">
<form action="/peering/save_rule" method="post">
<input type="hidden" name="grpid" value="[% grp.group.id %]" />
<div class="span-4">
<input type="text" size="10" id="addtxt" title="string, callee prefix"
name="callee_prefix" value="" />
<input type="text" size="10" id="addtxt" title="Callee prefix, eg: ^43 (must not include leading 'sip:'"
name="callee_prefix" value="[% IF not rule.id == reditid %][% restore_rule.callee_prefix %][% END %]" />
</div>
<div class="span-4">
<input type="text" size="10" id="addtxt" title="string, callee pattern"
name="callee_pattern" value="" />
<input type="text" size="10" id="addtxt" title="A regex including the leading 'sip:' if ^ is included (eg: '^sip:user@domain.com$')"
name="callee_pattern" value="[% IF not rule.id == reditid %][% restore_rule.callee_pattern %][% END %]" />
</div>
<div class="span-4">
<input type="text" size="10" id="addtxt" title="string, caller pattern"
name="caller_pattern" value="" />
<input type="text" size="10" id="addtxt" title="A regex including the leading 'sip:' if ^ is included (eg: '^sip:user@domain.com$')"
name="caller_pattern" value="[% IF not rule.id == reditid %][% restore_rule.caller_pattern %][% END %]" />
</div>
<div class="span-3">
<input type="text" size="12" id="addtxt" title="string, rule description"
name="description" value="" />
name="description" value="[% IF not rule.id == reditid %][% restore_rule.description %][% END %]" />
</div>
<div class="span-1 last">
<button class="button-add" id="radd">Add</button>

Loading…
Cancel
Save