From 146074d8921f02d087fcc0c69488a6d27e6fb62b Mon Sep 17 00:00:00 2001 From: Andreas Granig Date: Mon, 5 Oct 2009 16:36:27 +0000 Subject: [PATCH] added rewriting rules for domains --- lib/admin/Controller/domain.pm | 158 +++++++++++++++++++++++++++++++++ root/tt/domain.tt | 2 +- root/tt/domain_rewrite.tt | 103 +++++++++++++++++++++ 3 files changed, 262 insertions(+), 1 deletion(-) create mode 100644 root/tt/domain_rewrite.tt diff --git a/lib/admin/Controller/domain.pm b/lib/admin/Controller/domain.pm index ca83a04..12ff3dc 100644 --- a/lib/admin/Controller/domain.pm +++ b/lib/admin/Controller/domain.pm @@ -168,6 +168,164 @@ sub do_delete_domain : Local { return; } +=head2 rewrite + +Show rewrite rules for a given domain + +=cut + +sub rewrite : Local { + my ( $self, $c ) = @_; + $c->stash->{template} = 'tt/domain_rewrite.tt'; + + my $domain = $c->request->params->{domain}; + + my $domain_rw; + return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_domain_rewrites', + { domain => $domain }, + \$domain_rw + ); + $c->stash->{domain} = $domain_rw; + $c->stash->{iteditid} = $c->request->params->{iteditid}; + + return 1; +} + +=head2 create_rewrite + +Create a rewrite rule for a given domain + +=cut + +sub create_rewrite : Local { + my ( $self, $c ) = @_; + $c->stash->{template} = 'tt/domain_rewrite.tt'; + + my %messages; + my %settings; + + my $domain = $c->request->params->{domain}; + my $match_pattern = $c->request->params->{match_pattern}; + my $replace_pattern = $c->request->params->{replace_pattern}; + my $description = $c->request->params->{description}; + + unless(keys %messages) { + if($c->model('Provisioning')->call_prov( $c, 'voip', 'create_domain_rewrite', + { domain => $domain, + match_pattern => $match_pattern, + replace_pattern => $replace_pattern, + description => $description, + }, + undef + )) + { + $messages{icalleemsg} = 'Server.Voip.SavedSettings'; + $c->session->{messages} = \%messages; + $c->response->redirect("/domain/rewrite?domain=$domain"); + return; + } + else + { + $messages{icalleeerr} = 'Client.Voip.InputErrorFound'; + } + } else { + } + + $c->session->{messages} = \%messages; + $c->response->redirect("/domain/rewrite?domain=$domain"); + return; +} + +=head2 edit_rewrite + +Updates a rewrite rule + +=cut + +sub edit_rewrite : Local { + my ( $self, $c ) = @_; + $c->stash->{template} = 'tt/domain_rewrite.tt'; + + my %messages; + my %settings; + + my $domain = $c->request->params->{domain}; + 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}; + + unless(keys %messages) { + if($c->model('Provisioning')->call_prov( $c, 'voip', 'update_domain_rewrite', + { id => $rewriteid, + match_pattern => $match_pattern, + replace_pattern => $replace_pattern, + description => $description, + }, + undef + )) + { + $messages{icalleemsg} = 'Server.Voip.SavedSettings'; + $c->session->{messages} = \%messages; + $c->response->redirect("/domain/rewrite?domain=$domain"); + return; + } + else + { + $messages{icalleeerr} = 'Client.Voip.InputErrorFound'; + } + } else { + } + + $c->session->{messages} = \%messages; + $c->response->redirect("/domain/rewrite?domain=$domain"); + return; +} + +=head2 delete_rewrite + +Delete a rewrite rule + +=cut + +sub delete_rewrite : Local { + my ( $self, $c ) = @_; + $c->stash->{template} = 'tt/domain_rewrite.tt'; + + my %messages; + my %settings; + + my $domain = $c->request->params->{domain}; + my $rewriteid = $c->request->params->{rewriteid}; + + unless(keys %messages) { + if($c->model('Provisioning')->call_prov( $c, 'voip', 'delete_domain_rewrite', + { id => $rewriteid + }, + undef + )) + { + $messages{icalleemsg} = 'Server.Voip.SavedSettings'; + $c->session->{messages} = \%messages; + $c->response->redirect("/domain/rewrite?domain=$domain"); + return; + } + } else { + } + + $c->session->{messages} = \%messages; + $c->response->redirect("/domain/rewrite?domain=$domain"); + return; +} + + + + + + + + + =head1 BUGS AND LIMITATIONS =over diff --git a/root/tt/domain.tt b/root/tt/domain.tt index c99e993..a046ca4 100644 --- a/root/tt/domain.tt +++ b/root/tt/domain.tt @@ -16,7 +16,7 @@ [% id = 0 %] [% FOREACH domain = domains %] - [% domain.domain %] + [% domain.domain %] [% IF domain.domain == edit_domain %]
diff --git a/root/tt/domain_rewrite.tt b/root/tt/domain_rewrite.tt new file mode 100644 index 0000000..d433c3e --- /dev/null +++ b/root/tt/domain_rewrite.tt @@ -0,0 +1,103 @@ +

Domain Rewrite Rules for domain + + [% domain.domain %] +

+ + back + +

Inbound Rewrite Rules for Callee

+ +
+ [% IF messages.icalleemsg %]
[% messages.icalleemsg %]
[% END %] + [% IF messages.icalleeerr %]
[% messages.icalleeerr %]
[% END %] + + + + + + + + [% id = 0 %] + [% FOREACH rule = domain.rewrites %] + + [% IF rule.id == iteditid %] + + + + + + + + + + [% ELSE %] + + + + + + + + + [% END %] + + + [% id = id + 1 %] + [% END %] + + + + + + + + + + + +
Match PatternReplacement PatternDescription + +
+ + + + + + + + cancel[% rule.match_pattern %][% rule.replace_pattern %][% rule.description %] + [% UNLESS Catalyst.session.admin.read_only %] + edit + [% END %] +
+ [% UNLESS Catalyst.session.admin.read_only %] + + [% END %] +
+ + + + + + + + + +
+
+