Added peering rule functionality

2.0@2434
Andreas Granig 16 years ago
parent 0bcc396638
commit 8bbdb21aa8

@ -44,6 +44,7 @@ Delete a peering group
sub delete_grp : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering.tt';
my %messages;
my %settings;
@ -75,6 +76,7 @@ Create a peering group
sub create_grp : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering.tt';
my %messages;
my %settings;
@ -125,6 +127,7 @@ Edit a peering group
sub edit_grp : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering.tt';
my %messages;
my %settings;
@ -167,7 +170,6 @@ sub detail : Local {
{ id => $grpid },
\$peer_details
);
$c->log->debug(Dumper $peer_details);
$c->stash->{grp} = $peer_details;
$c->stash->{reditid} = $c->request->params->{reditid};
$c->stash->{peditid} = $c->request->params->{peditid};
@ -183,6 +185,7 @@ Create a peering rule for a given group
sub create_rule : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering_detail.tt';
my %messages;
my %settings;
@ -236,6 +239,7 @@ Delete a peering rule
sub delete_rule : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering_detail.tt';
my %messages;
my %settings;
@ -271,6 +275,7 @@ Edit a peering rule
sub edit_rule : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering_detail.tt';
my %messages;
my %settings;
@ -325,6 +330,7 @@ Create a peering server for a given group
sub create_peer : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering_detail.tt';
my %messages;
my %settings;
@ -383,6 +389,7 @@ Delete a peering host
sub delete_peer : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering_detail.tt';
my %messages;
my %settings;
@ -418,6 +425,7 @@ Edit a peering host
sub edit_peer : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering_detail.tt';
my %messages;
my %settings;
@ -466,6 +474,209 @@ sub edit_peer : Local {
return;
}
=head2 rewrite
Show rewrite rules for a given peer
=cut
sub rewrite : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering_rewrite.tt';
my $peerid = $c->request->params->{peer_id};
my $peer_details;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_peer_host_details',
{ id => $peerid },
\$peer_details
);
$c->stash->{peer} = $peer_details;
$c->stash->{ifeditid} = $c->request->params->{ifeditid};
$c->stash->{iteditid} = $c->request->params->{iteditid};
$c->stash->{ofeditid} = $c->request->params->{ofeditid};
$c->stash->{oteditid} = $c->request->params->{oteditid};
return 1;
}
=head2 create_rewrite
Create a rewrite rule for a given peer with defined direction and field
=cut
sub create_rewrite : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering_rewrite.tt';
my %messages;
my %settings;
my $grpid = $c->request->params->{grpid};
my $peerid = $c->request->params->{peerid};
my $match_pattern = $c->request->params->{match_pattern};
my $replace_pattern = $c->request->params->{replace_pattern};
my $description = $c->request->params->{description};
my $direction = $c->request->params->{direction};
my $field = $c->request->params->{field};
my $a = "";
if($field eq 'caller') { $a = 'caller'.$a; }
elsif($field eq 'callee') { $a = 'callee'.$a; }
if($direction eq 'in') { $a = 'i'.$a; }
elsif($direction eq 'out') { $a = 'o'.$a; }
my $m = $a.'msg'; my $e = $a.'err';
# $messages{crulerr} = 'Client.Syntax.MalformedPeerGroupName'
# unless $callee_prefix =~ /^[a-zA-Z0-9_\.\-\@\:]+/;
unless(keys %messages) {
if($c->model('Provisioning')->call_prov( $c, 'voip', 'create_peer_rewrite',
{ peer_id => $peerid,
match_pattern => $match_pattern,
replace_pattern => $replace_pattern,
description => $description,
direction => $direction,
field => $field
},
undef
))
{
$messages{$m} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/peering/rewrite?peer_id=$peerid#$a");
return;
}
else
{
$messages{$e} = '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/rewrite?peer_id=$peerid#$a");
return;
}
=head2 delete_rewrite
Delete a rewrite rule
=cut
sub delete_rewrite : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering_rewrite.tt';
my %messages;
my %settings;
my $peerid = $c->request->params->{peerid};
my $rewriteid = $c->request->params->{rewriteid};
my $direction = $c->request->params->{direction};
my $field = $c->request->params->{field};
my $a = "";
if($field eq 'caller') { $a = 'caller'.$a; }
elsif($field eq 'callee') { $a = 'callee'.$a; }
if($direction eq 'in') { $a = 'i'.$a; }
elsif($direction eq 'out') { $a = 'o'.$a; }
my $m = $a.'msg'; my $e = $a.'err';
unless(keys %messages) {
if($c->model('Provisioning')->call_prov( $c, 'voip', 'delete_peer_rewrite',
{ id => $rewriteid
},
undef
))
{
$messages{$m} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/peering/rewrite?peer_id=$peerid#$a");
return;
}
} else {
}
$c->session->{messages} = \%messages;
$c->response->redirect("/peering/rewrite?peer_id=$peerid#$a");
return;
}
=head2 edit_rewrite
Updates a rewrite rule
=cut
sub edit_rewrite : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/peering_rewrite.tt';
my %messages;
my %settings;
my $peerid = $c->request->params->{peerid};
my $rewriteid = $c->request->params->{rewriteid};
my $match_pattern = $c->request->params->{match_pattern};
my $replace_pattern = $c->request->params->{replace_pattern};
my $description = $c->request->params->{description};
my $direction = $c->request->params->{direction};
my $field = $c->request->params->{field};
my $a = "";
if($field eq 'caller') { $a = 'caller'.$a; }
elsif($field eq 'callee') { $a = 'callee'.$a; }
if($direction eq 'in') { $a = 'i'.$a; }
elsif($direction eq 'out') { $a = 'o'.$a; }
my $m = $a.'msg'; my $e = $a.'err';
# $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_rewrite',
{ id => $rewriteid,
match_pattern => $match_pattern,
replace_pattern => $replace_pattern,
description => $description,
direction => $direction,
field => $field
},
undef
))
{
$messages{$m} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/peering/rewrite?peer_id=$peerid#$a");
return;
}
else
{
$messages{$e} = '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/rewrite?peer_id=$peerid#$a");
return;
}
=head1 BUGS AND LIMITATIONS

@ -148,7 +148,7 @@
</form>
<td><a href="/peering/detail?group_id=[% grp.id %]" class="aaction">cancel</a></td>
[% ELSE %]
<td>[% peer.name %]</td>
<td><a href="/peering/rewrite?peer_id=[% peer.id%]" class="aaction">[% peer.name %]</a></td>
<td>[% peer.ip %]</td>
<td>[% peer.port %]</td>
<td class="tdcenter">

@ -0,0 +1,419 @@
<h2> SIP Peering Rewrite Rules for host
<a class="noarrow" href="rewrite?peer_id=[% peer.id %]">
[% peer.name %]</a>
</h2>
<a href="detail?group_id=[% peer.group_id %]" class="aaction">back</a>
<h3 id="icaller">Inbound Rewrite Rules for Caller</h3>
<div class="p1">
[% IF messages.icallermsg %]<div class="goodmsg">[% messages.icallermsg %]</div>[% END %]
[% IF messages.icallererr %]<div class="errormsg">[% messages.icallererr %]</div>[% END %]
<table class="domains">
<tr class="table_header">
<td>Match Pattern</td>
<td>Replacement Pattern</td>
<td>Description</td>
<td style="width:40px;" />
<td style="width:60px;" />
</tr>
[% id = 0 %]
[% FOREACH rule = peer.rewrite_in_caller %]
<tr>
[% IF rule.id == ifeditid %]
<form action="/peering/edit_rewrite" method="post">
<input type="hidden" name="peerid" value="[% peer.id %]" />
<input type="hidden" name="rewriteid" value="[% rule.id %]" />
<input type="hidden" name="direction" value="[% rule.direction %]" />
<input type="hidden" name="field" value="[% rule.field %]" />
<td>
<input type="text" size="15 id="addtxt" title="string, match pattern"
name="match_pattern" value="[% rule.match_pattern %]" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, replacement pattern"
name="replace_pattern" value="[% rule.replace_pattern %]" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, rewrite rule description"
name="description" value="[% rule.description %]" />
</td>
<td>
<div class="postlink">
<label for="ifsave[% id %]">save</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="ifsave[% id %]" />
</div>
</td>
</form>
<td><a href="/peering/rewrite?peer_id=[% peer.id %]#icaller" class="aaction">cancel</a></td>
[% ELSE %]
<td>[% rule.match_pattern %]</td>
<td>[% rule.replace_pattern %]</td>
<td>[% rule.description %]</td>
<td>
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/peering/rewrite?peer_id=[% peer.id %]&ifeditid=[% rule.id %]#icallee" class="aaction">edit</a>
[% END %]
</td>
<form action="/peering/delete_rewrite" method="post">
<input type="hidden" name="peerid" value="[% peer.id %]" />
<input type="hidden" name="rewriteid" value="[% rule.id %]" />
<input type="hidden" name="direction" value="[% rule.direction %]" />
<input type="hidden" name="field" value="[% rule.field %]" />
<td>
[% UNLESS Catalyst.session.admin.read_only %]
<div class="postlink">
<label for="ifdel[% id %]">delete</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="ifdel[% id %]" />
</div>
[% END %]
</td>
[% END %]
</form>
</tr>
[% id = id + 1 %]
[% END %]
<tr>
<form action="/peering/create_rewrite" method="post">
<input type="hidden" name="grpid" value="[% peer.group_id %]" />
<input type="hidden" name="peerid" value="[% peer.id %]" />
<input type="hidden" name="direction" value="in" />
<input type="hidden" name="field" value="caller" />
<td>
<input type="text" size="15" id="addtxt" title="string, match pattern"
name="match_pattern" value="" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, replacement pattern"
name="replace_pattern" value="" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, rule description"
name="description" value="" />
</td>
<td>
<div class="postlink">
<label for="radd">add</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="radd" />
</div>
</form>
</td>
<td />
</tr>
</table>
</div>
<h3 id="icallee">Inbound Rewrite Rules for Callee</h3>
<div class="p1">
[% IF messages.icalleemsg %]<div class="goodmsg">[% messages.icalleemsg %]</div>[% END %]
[% IF messages.icalleeerr %]<div class="errormsg">[% messages.icalleeerr %]</div>[% END %]
<table class="domains">
<tr class="table_header">
<td>Match Pattern</td>
<td>Replacement Pattern</td>
<td>Description</td>
<td style="width:40px;" />
<td style="width:60px;" />
</tr>
[% id = 0 %]
[% FOREACH rule = peer.rewrite_in_callee %]
<tr>
[% IF rule.id == iteditid %]
<form action="/peering/edit_rewrite" method="post">
<input type="hidden" name="peerid" value="[% peer.id %]" />
<input type="hidden" name="rewriteid" value="[% rule.id %]" />
<input type="hidden" name="direction" value="[% rule.direction %]" />
<input type="hidden" name="field" value="[% rule.field %]" />
<td>
<input type="text" size="15 id="addtxt" title="string, match pattern"
name="match_pattern" value="[% rule.match_pattern %]" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, replacement pattern"
name="replace_pattern" value="[% rule.replace_pattern %]" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, rewrite rule description"
name="description" value="[% rule.description %]" />
</td>
<td>
<div class="postlink">
<label for="itsave[% id %]">save</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="itsave[% id %]" />
</div>
</td>
</form>
<td><a href="/peering/rewrite?peer_id=[% peer.id %]#icallee" class="aaction">cancel</a></td>
[% ELSE %]
<td>[% rule.match_pattern %]</td>
<td>[% rule.replace_pattern %]</td>
<td>[% rule.description %]</td>
<td>
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/peering/rewrite?peer_id=[% peer.id %]&iteditid=[% rule.id %]#icallee" class="aaction">edit</a>
[% END %]
</td>
<form action="/peering/delete_rewrite" method="post">
<input type="hidden" name="peerid" value="[% peer.id %]" />
<input type="hidden" name="rewriteid" value="[% rule.id %]" />
<input type="hidden" name="direction" value="[% rule.direction %]" />
<input type="hidden" name="field" value="[% rule.field %]" />
<td>
[% UNLESS Catalyst.session.admin.read_only %]
<div class="postlink">
<label for="itdel[% id %]">delete</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="itdel[% id %]" />
</div>
[% END %]
</td>
[% END %]
</form>
</tr>
[% id = id + 1 %]
[% END %]
<tr>
<form action="/peering/create_rewrite" method="post">
<input type="hidden" name="grpid" value="[% peer.group_id %]" />
<input type="hidden" name="peerid" value="[% peer.id %]" />
<input type="hidden" name="direction" value="in" />
<input type="hidden" name="field" value="callee" />
<td>
<input type="text" size="15" id="addtxt" title="string, match pattern"
name="match_pattern" value="" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, replacement pattern"
name="replace_pattern" value="" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, rule description"
name="description" value="" />
</td>
<td>
<div class="postlink">
<label for="itadd">add</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="itadd" />
</div>
</form>
</td>
<td />
</tr>
</table>
</div>
<h3 id="ocaller">Outbound Rewrite Rules for Caller</h3>
<div class="p1">
[% IF messages.ocallermsg %]<div class="goodmsg">[% messages.ocallermsg %]</div>[% END %]
[% IF messages.ocallererr %]<div class="errormsg">[% messages.ocallererr %]</div>[% END %]
<table class="domains">
<tr class="table_header">
<td>Match Pattern</td>
<td>Replacement Pattern</td>
<td>Description</td>
<td style="width:40px;" />
<td style="width:60px;" />
</tr>
[% id = 0 %]
[% FOREACH rule = peer.rewrite_out_caller %]
<tr>
[% IF rule.id == ofeditid %]
<form action="/peering/edit_rewrite" method="post">
<input type="hidden" name="peerid" value="[% peer.id %]" />
<input type="hidden" name="rewriteid" value="[% rule.id %]" />
<input type="hidden" name="direction" value="[% rule.direction %]" />
<input type="hidden" name="field" value="[% rule.field %]" />
<td>
<input type="text" size="15 id="addtxt" title="string, match pattern"
name="match_pattern" value="[% rule.match_pattern %]" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, replacement pattern"
name="replace_pattern" value="[% rule.replace_pattern %]" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, rewrite rule description"
name="description" value="[% rule.description %]" />
</td>
<td>
<div class="postlink">
<label for="ofsave[% id %]">save</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="ofsave[% id %]" />
</div>
</td>
</form>
<td><a href="/peering/rewrite?peer_id=[% peer.id %]#ocaller" class="aaction">cancel</a></td>
[% ELSE %]
<td>[% rule.match_pattern %]</td>
<td>[% rule.replace_pattern %]</td>
<td>[% rule.description %]</td>
<td>
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/peering/rewrite?peer_id=[% peer.id %]&ofeditid=[% rule.id %]#ocaller" class="aaction">edit</a>
[% END %]
</td>
<form action="/peering/delete_rewrite" method="post">
<input type="hidden" name="peerid" value="[% peer.id %]" />
<input type="hidden" name="rewriteid" value="[% rule.id %]" />
<input type="hidden" name="direction" value="[% rule.direction %]" />
<input type="hidden" name="field" value="[% rule.field %]" />
<td>
[% UNLESS Catalyst.session.admin.read_only %]
<div class="postlink">
<label for="ofdel[% id %]">delete</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="ofdel[% id %]" />
</div>
[% END %]
</td>
[% END %]
</form>
</tr>
[% id = id + 1 %]
[% END %]
<tr>
<form action="/peering/create_rewrite" method="post">
<input type="hidden" name="grpid" value="[% peer.group_id %]" />
<input type="hidden" name="peerid" value="[% peer.id %]" />
<input type="hidden" name="direction" value="out" />
<input type="hidden" name="field" value="caller" />
<td>
<input type="text" size="15" id="addtxt" title="string, match pattern"
name="match_pattern" value="" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, replacement pattern"
name="replace_pattern" value="" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, rule description"
name="description" value="" />
</td>
<td>
<div class="postlink">
<label for="ofadd">add</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="ofadd" />
</div>
</form>
</td>
<td />
</tr>
</table>
</div>
<h3 id="ocallee">Outbound Rewrite Rules for Callee</h3>
<div class="p1">
[% IF messages.ocalleemsg %]<div class="goodmsg">[% messages.ocalleemsg %]</div>[% END %]
[% IF messages.ocalleeerr %]<div class="errormsg">[% messages.ocalleeerr %]</div>[% END %]
<table class="domains">
<tr class="table_header">
<td>Match Pattern</td>
<td>Replacement Pattern</td>
<td>Description</td>
<td style="width:40px;" />
<td style="width:60px;" />
</tr>
[% id = 0 %]
[% FOREACH rule = peer.rewrite_out_callee %]
<tr>
[% IF rule.id == oteditid %]
<form action="/peering/edit_rewrite" method="post">
<input type="hidden" name="peerid" value="[% peer.id %]" />
<input type="hidden" name="rewriteid" value="[% rule.id %]" />
<input type="hidden" name="direction" value="[% rule.direction %]" />
<input type="hidden" name="field" value="[% rule.field %]" />
<td>
<input type="text" size="15 id="addtxt" title="string, match pattern"
name="match_pattern" value="[% rule.match_pattern %]" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, replacement pattern"
name="replace_pattern" value="[% rule.replace_pattern %]" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, rewrite rule description"
name="description" value="[% rule.description %]" />
</td>
<td>
<div class="postlink">
<label for="otsave[% id %]">save</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="otsave[% id %]" />
</div>
</td>
</form>
<td><a href="/peering/rewrite?peer_id=[% peer.id %]#ocallee" class="aaction">cancel</a></td>
[% ELSE %]
<td>[% rule.match_pattern %]</td>
<td>[% rule.replace_pattern %]</td>
<td>[% rule.description %]</td>
<td>
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/peering/rewrite?peer_id=[% peer.id %]&oteditid=[% rule.id %]#ocallee" class="aaction">edit</a>
[% END %]
</td>
<form action="/peering/delete_rewrite" method="post">
<input type="hidden" name="peerid" value="[% peer.id %]" />
<input type="hidden" name="rewriteid" value="[% rule.id %]" />
<input type="hidden" name="direction" value="[% rule.direction %]" />
<input type="hidden" name="field" value="[% rule.field %]" />
<td>
[% UNLESS Catalyst.session.admin.read_only %]
<div class="postlink">
<label for="otdel[% id %]">delete</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="otdel[% id %]" />
</div>
[% END %]
</td>
[% END %]
</form>
</tr>
[% id = id + 1 %]
[% END %]
<tr>
<form action="/peering/create_rewrite" method="post">
<input type="hidden" name="grpid" value="[% peer.group_id %]" />
<input type="hidden" name="peerid" value="[% peer.id %]" />
<input type="hidden" name="direction" value="out" />
<input type="hidden" name="field" value="callee" />
<td>
<input type="text" size="15" id="addtxt" title="string, match pattern"
name="match_pattern" value="" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, replacement pattern"
name="replace_pattern" value="" />
</td>
<td>
<input type="text" size="15" id="addtxt" title="string, rule description"
name="description" value="" />
</td>
<td>
<div class="postlink">
<label for="otadd">add</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="otadd" />
</div>
</form>
</td>
<td />
</tr>
</table>
</div>
Loading…
Cancel
Save