merged r10667:11150 from trunk

Add asterisk to call graphs.
  don't treat peering rule updates as duplicates
  also check callee pattern to detect duplicates
  fix layout for peering servers and rules
  fix layout for rewrite rules and optimize space usage
  replace hardcoded Euro currency with account.currency
  bump debian package version
  truncate long patterns and suffix with "..." (mantis:1853)
  access the actual ip with the correct key (mantis:2115)
  fix changelog for 3.4.4
3.4
Daniel Tiefnig 14 years ago
commit 21c60fadc7

21
debian/changelog vendored

@ -1,3 +1,24 @@
ngcp-www-admin (3.4.4) unstable; urgency=low
[ Christian Veigl ]
* peering.pm: check if peering rule already exists beforehand
* rewrite_detail.tt: truncate long patterns and suffix with "..."
* bans_ips.tt: access the actual ip with the correct key
[ dtiefnig ]
* peering.pm: don't treat peering rule updates as duplicates
* peering.pm: also check callee pattern to detect duplicates
* peering_detail.tt: fix layout for peering servers and rules
* rewrite_detail.tt: fix layout for rewrite rules and optimize space usage
[ agranig ]
* admin.conf,Utils.pm: Add asterisk to call graphs.
[ apogrebennyk ]
* account_detail.tt: replace hardcoded Euro currency with account.currency
-- Daniel Tiefnig <dtiefnig@sipwise.com> Wed, 26 Sep 2012 01:43:14 +0200
ngcp-www-admin (3.4.3) unstable; urgency=low
[ Michael Prokop ]

@ -36,7 +36,9 @@
<sipstats lb_int="[% networking.iaddress %]:[% kamailio.lb.port %]"
lb_ext="[% networking.eaddress %]:[% kamailio.lb.port %]"
proxy="[% networking.iaddress %]:[% kamailio.proxy.port %]"
sbc="[% networking.iaddress %]:[% sems.bindport %]" />
sbc="[% networking.iaddress %]:[% sems.bindport %]"
app="[% networking.iaddress %]:[% asterisk.sip.bindport %]"
/>
[- END -]
<dashboard enabled="[% www_admin.dashboard.enabled %]" />
<subscriber extension_features="[% www_admin.subscriber.extension_features %]"

@ -241,10 +241,28 @@ sub save_rule : Local {
$c->flash->{rule_caller_pattern_err_detail} = $c->session->{prov_error_object} if ($c->session->{prov_error_object});
}
# check if peering rule already exists beforehand
my $peer_details;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_peer_group_details',
{ id => $group_id },
\$peer_details
);
if (my ($tmp_rule) = grep ({
($_->{callee_prefix} eq $settings->{callee_prefix}) and
($_->{callee_pattern} eq $settings->{callee_pattern}) and
($_->{caller_pattern} eq $settings->{caller_pattern})
} @{$peer_details->{rules}}))
{
$messages{erulerr} = 'Client.Voip.DuplicatePeeringRule'
unless defined $rule_id and $$tmp_rule{id} == $rule_id;
}
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");
}
@ -277,12 +295,13 @@ sub save_rule : Local {
if ($result) {
$messages{erulmsg} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/peering/detail?group_id=$group_id");
return;
}
else {
$c->flash->{restore_rule} = $settings;
$messages{erulerr} = 'Client.Voip.InputErrorFound';
}
$c->response->redirect("/peering/detail?group_id=$group_id");
}
=head2 delete_rule

@ -645,6 +645,7 @@ sub process_callmap {
$c->config->{sipstats}->{lb_ext}, 'lb',
$c->config->{sipstats}->{proxy}, 'proxy',
$c->config->{sipstats}->{sbc}, 'sbc',
$c->config->{sipstats}->{app}, 'app',
);
my $canvas_margin = 100; # enough free space around diagram for text etc
@ -697,7 +698,7 @@ sub process_callmap {
push @uas, $packet->{dst_ip}.':'.$packet->{dst_port};
}
}
push @uas, ('lb', 'sbc', 'proxy');
push @uas, ('lb', 'sbc', 'proxy', 'app');
### calculate x position of all uas
my %uas_pos_x = ();

@ -155,7 +155,7 @@
add
<input type="text" name="add_cash" value="[% balanceadd.cash %]"
title="amount of money to add, float" />
Euro
[% account.currency %]
[% END %]
</div>
</li>

@ -18,11 +18,11 @@
</li>
[% FOREACH ip IN banned_ips %]
<li class="ui-state-default">
<div class="span-3">[% ip %]</div>
<div class="span-3">[% ip.ip %]</div>
[% UNLESS Catalyst.session.admin.read_only %]
<div class="prepend-12 span-1 last">
<form action="/bans/unban_ip" method="POST">
<input type="hidden" name="ip" value="[% ip %]"/>
<input type="hidden" name="ip" value="[% ip.ip %]"/>
<button class="button-delete">Delete</button>
</form>
</div>

@ -12,12 +12,12 @@
<ul class="cleanlist">
<li class="ui-state-default">
<div class="span-4">Name</div>
<div class="span-3">Name</div>
<div class="span-3">IP Address</div>
<div class="span-3">Hostname</div>
<div class="span-3-4">Hostname</div>
<div class="span-2">Port</div>
<div class="span-2">Protocol</div>
<div class="span-1 last">Weight</div>
<div class="span-2 last">Weight</div>
</li>
[% id = 0 %]
[% FOREACH peer = grp.peers %]
@ -26,7 +26,7 @@
<form action="/peering/edit_peer" method="post">
<input type="hidden" name="grpid" value="[% grp.group.id %]" />
<input type="hidden" name="peerid" value="[% peer.id %]" />
<div class="span-4">
<div class="span-3">
<input type="text" size="10 id="addtxt" title="string, peer name"
name="name" value="[% peer.name %]" />
</div>
@ -34,8 +34,8 @@
<input type="text" size="10" id="addtxt" title="string, peer ip address"
name="ip" value="[% peer.ip %]" />
</div>
<div class="span-3">
<input type="text" size="10" id="addtxt" title="string, peer hostname (optional)"
<div class="span-3-4">
<input type="text" size="12" id="addtxt" title="string, peer hostname (optional)"
name="host" value="[% peer.host %]" />
</div>
<div class="span-2">
@ -49,7 +49,7 @@
<option value="TLS" [% IF peer.transport == 'TLS' %]selected="selected"[% END %]>TLS</option>
</select>
</div>
<div class="span-1">
<div class="span-2">
<input type="text" size="1" id="addtxt" title="int, peer weight (0-255)"
name="weight" value="[% peer.weight %]" />
</div>
@ -61,12 +61,12 @@
<a href="/peering/detail?group_id=[% grp.group.id %]"><span class="button-cancel">Cancel</span></a>
</div>
[% ELSE %]
<div class="span-4"><a href="/peering/preferences?peerid=[% peer.id%]" class="aaction">[% peer.name %]</a></div>
<div class="span-3"><a href="/peering/preferences?peerid=[% peer.id%]" class="aaction">[% peer.name %]</a></div>
<div class="span-3">[% peer.ip %]</div>
<div class="span-3">[% peer.host %]</div>
<div class="span-3-4">[% peer.host %]</div>
<div class="span-2">[% peer.port %]</div>
<div class="span-2">[% peer.transport %]</div>
<div class="span-1">[% peer.weight %]</div>
<div class="span-2">[% peer.weight %]</div>
<div class="span-1">
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/peering/detail?group_id=[% grp.group.id %]&peditid=[% peer.id %]"><span class="button-edit">Edit</span></a>
@ -89,7 +89,7 @@
<li class="ui-state-default">
<form action="/peering/create_peer" method="post">
<input type="hidden" name="grpid" value="[% grp.group.id %]" />
<div class="span-4">
<div class="span-3">
<input type="text" size="10" id="addtxt" title="string, peer name"
name="name" value="" />
</div>
@ -97,8 +97,8 @@
<input type="text" size="10" id="addtxt" title="string, peer ip address"
name="ip" value="" />
</div>
<div class="span-3">
<input type="text" size="10" id="addtxt" title="string, peer hostname (optional)"
<div class="span-3-4">
<input type="text" size="12" id="addtxt" title="string, peer hostname (optional)"
name="host" value="" />
</div>
<div class="span-2">
@ -112,7 +112,7 @@
<option value="TLS" [% IF peer.transport == 'TLS' %]selected="selected"[% END %]>TLS</option>
</select>
</div>
<div class="span-1">
<div class="span-2">
<input type="text" size="1" id="addtxt" title="int, peer weight (0-255)"
name="weight" value="1" />
</div>
@ -159,10 +159,10 @@
<ul class="cleanlist">
<li class="ui-state-default">
<div class="span-4">Callee Prefix</div>
<div class="span-3">Callee Prefix</div>
<div class="span-4">Callee Pattern</div>
<div class="span-4">Caller Pattern</div>
<div class="span-3 last">Description</div>
<div class="span-4 last">Description</div>
</li>
[% id = 0 %]
[% FOREACH rule = grp.rules %]
@ -171,20 +171,20 @@
<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">
<div class="span-3">
<input type="text" size="10 id="addtxt" title="Callee prefix, eg: 43"
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="A regex matching against 'user@domain' (e.g. '^.+@example\.org$')"
<input type="text" size="15" id="addtxt" title="A regex matching against 'user@domain' (e.g. '^.+@example\.org$')"
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="A regex matching against 'user@domain' (e.g. '^.+@example\.org$')"
<input type="text" size="15" id="addtxt" title="A regex matching against 'user@domain' (e.g. '^.+@example\.org$')"
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"
<div class="span-4">
<input type="text" size="15" id="addtxt" title="string, rule description"
name="description" value="[% restore_rule.description or rule.description %]" />
</div>
<div class="span-1">
@ -195,10 +195,10 @@
<a href="/peering/detail?group_id=[% grp.group.id %]"><span class="button-cancel">Cancel</span></a>
</div>
[% ELSE %]
<div class="span-4">[% rule.callee_prefix %]</div>
<div class="span-3">[% rule.callee_prefix %]</div>
<div class="span-4">[% rule.callee_pattern %]</div>
<div class="span-4">[% rule.caller_pattern %]</div>
<div class="span-3">[% rule.description %]</div>
<div class="span-4">[% rule.description %]</div>
<div class="span-1">
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/peering/detail?group_id=[% grp.group.id %]&reditid=[% rule.id %]"><span class="button-edit">Edit</span></a>
@ -221,20 +221,20 @@
<li class="ui-state-default">
<form action="/peering/save_rule" method="post">
<input type="hidden" name="grpid" value="[% grp.group.id %]" />
<div class="span-4">
<div class="span-3">
<input type="text" size="10" id="addtxt" title="Callee prefix, eg: 43"
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="A regex matching against 'user@domain' (e.g. '^.+@example\.org$')"
<input type="text" size="15" id="addtxt" title="A regex matching against 'user@domain' (e.g. '^.+@example\.org$')"
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="A regex matching against 'user@domain' (e.g. '^.+@example\.org$')"
<input type="text" size="15" id="addtxt" title="A regex matching against 'user@domain' (e.g. '^.+@example\.org$')"
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"
<div class="span-4">
<input type="text" size="15" id="addtxt" title="string, rule description"
name="description" value="[% IF not rule.id == reditid %][% restore_rule.description %][% END %]" />
</div>
<div class="span-1 last">

@ -26,6 +26,7 @@
<h2> Rewrite Rule Set [% set.rewrite_set.name %] </h2>
<a href="/rewrite"><span class="button-back">Back</span></a><br /><br />
<p>Very long entries are truncated and suffixed with "...". Hoover over them to see the full entry.</p>
[%
rewrites = [
@ -85,9 +86,9 @@
<ul class="cleanlist">
<li class="ui-state-default">
<div class="span-1">&nbsp;</div>
<div class="span-4">Match Pattern</div>
<div class="span-4">Replacement Pattern</div>
<div class="span-4 append-3 last">Description</div>
<div class="span-5">Match Pattern</div>
<div class="span-5">Replacement Pattern</div>
<div class="span-4 last">Description</div>
</li>
</ul>
@ -105,15 +106,15 @@
<input type="hidden" name="field" value="[% rule.field %]" />
<input type="hidden" name="rewriteid" value="[% rule.id %]" />
<input type="hidden" name="priority" value="[% rule.priority %]" />
<div class="span-4">
<input type="text" size="15 id="addtxt" title="string, match pattern"
<div class="span-5">
<input type="text" size="20 id="addtxt" title="string, match pattern"
name="match_pattern" value="[% rule.match_pattern %]" />
</div>
<div class="span-5">
<input type="text" size="15" id="addtxt" title="string, replacement pattern"
<input type="text" size="20" id="addtxt" title="string, replacement pattern"
name="replace_pattern" value="[% rule.replace_pattern %]" />
</div>
<div class="span-5">
<div class="span-4">
<input type="text" size="15" id="addtxt" title="string, rewrite rule description"
name="description" value="[% rule.description %]" />
</div>
@ -125,9 +126,10 @@
<a href="/rewrite/detail?set_id=[% set.rewrite_set.id %]#[% rw.id %]"><span class="button-cancel">Cancel</span></a>
</div>
[% ELSE %]
<div class="span-4">[% rule.match_pattern %]</div>
<div class="span-5">[% rule.replace_pattern %]</div>
<div class="span-5">[% rule.description %]</div>
<div class="span-5" title="[% rule.match_pattern %]">[% PROCESS shorten string = rule.match_pattern %]</div>
<div class="span-5" title="[% rule.replace_pattern %]">[% PROCESS shorten string = rule.replace_pattern %]</div>
<div class="span-4" title="[% rule.description %]" class="span-5">[% PROCESS shorten string = rule.description %]</div>
<div class="span-1">
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/rewrite/detail?set_id=[% set.rewrite_set.id %]&editid=[% rule.id %]#[% rw.id %]"><span class="button-edit">Edit</span></a>
@ -159,19 +161,19 @@
<input type="hidden" name="field" value="[% rw.field%]" />
<input type="hidden" name="priority" value="[% priority + 1 %]" />
<div class="span-1">&nbsp;</div>
<div class="span-4">
<input type="text" size="15" id="addtxt" title="string, match pattern"
<div class="span-5">
<input type="text" size="20" id="addtxt" title="string, match pattern"
name="match_pattern" value="" />
</div>
<div class="span-5">
<input type="text" size="15" id="addtxt" title="string, replacement pattern"
<input type="text" size="20" id="addtxt" title="string, replacement pattern"
name="replace_pattern" value="" />
</div>
<div class="span-5">
<div class="span-4">
<input type="text" size="15" id="addtxt" title="string, rule description"
name="description" value="" />
</div>
<div class="span-1 append-1 last">
<div class="span-1 last">
<button class="button-add" id="[% rw.tag %]add">Add</button>
</div>
</form>
@ -182,3 +184,11 @@
[% END %]
[% BLOCK shorten %]
[% IF string.length > 20 %]
[% string.substr(0, 20) _ '...' %]
[% ELSE %]
[% string %]
[% END %]
[% END %]

Loading…
Cancel
Save