diff --git a/etc/admin.conf b/etc/admin.conf index 3cca7b5..2bd09a8 100644 --- a/etc/admin.conf +++ b/etc/admin.conf @@ -12,9 +12,7 @@ cc_dial_prefix="[% www_admin.cc_dial_prefix %]" ac_dial_prefix="[% www_admin.ac_dial_prefix %]" > - + diff --git a/lib/admin/Controller/dashboard.pm b/lib/admin/Controller/dashboard.pm index 2bd1a2e..8a12b48 100644 --- a/lib/admin/Controller/dashboard.pm +++ b/lib/admin/Controller/dashboard.pm @@ -43,14 +43,14 @@ sub system : Local { $c->stash->{template} = 'tt/dashboard.tt'; my @plotdata = (); - push @plotdata, {name=>"mem", title=>"Memory", - url=>$c->config->{dashboard}{rrd_url_path}."/memory-used.rrd", si=>1}; + push @plotdata, {name=>"mem", title=>"Free Memory", + url=>"/rrd/get?path=memory/memory-free.rrd", si=>1}; push @plotdata, {name=>"load", title=>"Load", - url=>$c->config->{dashboard}{rrd_url_path}."/load.rrd", si=>0}; + url=>"/rrd/get?path=load/load.rrd", si=>0}; push @plotdata, {name=>"rdisk", title=>"Root Disk", - url=>$c->config->{dashboard}{rrd_url_path}."/df-root.rrd", si=>1}; - push @plotdata, {name=>"ldisk", title=>"Local Disk", - url=>$c->config->{dashboard}{rrd_url_path}."/df-disk.rrd", si=>1}; + url=>"/rrd/get?path=df/df-root.rrd", si=>1}; + push @plotdata, {name=>"ldisk", title=>"Network Traffic", + url=>"/rrd/get?path=interface/if_octets-eth0.rrd", si=>1}; $c->stash->{ctx} = "system"; $c->stash->{plotdata} = \@plotdata; @@ -64,13 +64,13 @@ sub voip : Local { my @plotdata = (); push @plotdata, {name=>"sipo", title=>"SIP Option Latency", - url=>$c->config->{dashboard}{rrd_url_path}."/sip_option.rrd", si=>0}; + url=>"/rrd/get?path=ngcp/sip_option.rrd", si=>0}; push @plotdata, {name=>"sipr", title=>"SIP Register Latency", - url=>$c->config->{dashboard}{rrd_url_path}."/sip_register.rrd", si=>0}; + url=>"/rrd/get?path=ngcp/sip_option.rrd", si=>0}; push @plotdata, {name=>"mysql", title=>"DB Queries/sec", - url=>$c->config->{dashboard}{rrd_url_path}."/mysql.rrd", si=>0}; + url=>"/rrd/get?path=ngcp/mysql.rrd", si=>0}; push @plotdata, {name=>"ldisk", title=>"DB MGM Status", - url=>$c->config->{dashboard}{rrd_url_path}."/mysql_mgm.rrd", si=>0}; + url=>"/rrd/get?path=ngcp/mysql.rrd", si=>0}; $c->stash->{ctx} = "voip"; $c->stash->{plotdata} = \@plotdata; diff --git a/lib/admin/Controller/rrd.pm b/lib/admin/Controller/rrd.pm new file mode 100644 index 0000000..2901d76 --- /dev/null +++ b/lib/admin/Controller/rrd.pm @@ -0,0 +1,94 @@ +package admin::Controller::rrd; + +use strict; +use warnings; +use base 'Catalyst::Controller'; +use admin::Utils; +use Data::Dumper; + +=head1 NAME + +admin::Controller::rrd - Catalyst Controller + +=head1 DESCRIPTION + +Catalyst Controller. + +=head1 METHODS + +=cut + + +=head2 get + +Serves rrd files + +=cut + +sub get : Local { + my ( $self, $c ) = @_; + + $c->log->debug('***rrd::get called'); + + my $path = $c->request->params->{path}; + my $rrd; + + if($path and $c->model('Provisioning')->call_prov( $c, 'system', 'get_rrd', + {path => $path}, \$rrd)) { + $c->stash->{current_view} = 'Binary'; + $c->stash->{content_type} = 'application/octet-stream'; + $c->stash->{content} = $$rrd{content}; + return; + } + $c->response->redirect('/'); +} + +sub end : ActionClass('RenderView') { + my ( $self, $c ) = @_; + + if(defined $c->stash->{current_view} and $c->stash->{current_view} eq 'Binary') { + return 1; + } + + $c->stash->{current_view} = 'TT'; + unless($c->response->{status} =~ /^3/) { # only if not a redirect + if(exists $c->session->{prov_error}) { + $c->session->{messages}{prov_error} = $c->session->{prov_error}; + delete $c->session->{prov_error}; + } + + if(exists $c->session->{messages}) { + $c->stash->{messages} = $c->model('Provisioning')->localize($c, $c->session->{messages}); + delete $c->session->{messages}; + } + } + + $c->stash->{subscriber}{username} = $c->session->{user}{username}; + + return 1; # shouldn't matter +} + +=head1 BUGS AND LIMITATIONS + +=over + +=item none + +=back + +=head1 SEE ALSO + +Provisioning model, Catalyst + +=head1 AUTHORS + +Andreas Granig + +=head1 COPYRIGHT + +The rrd controller is Copyright (c) 2007-2010 Sipwise GmbH, +Austria. All rights reserved. + +=cut + +1; diff --git a/lib/admin/Model/Provisioning.pm b/lib/admin/Model/Provisioning.pm index 73f38b1..8ea4317 100644 --- a/lib/admin/Model/Provisioning.pm +++ b/lib/admin/Model/Provisioning.pm @@ -8,6 +8,7 @@ use Catalyst::Plugin::Authentication; use Sipwise::Provisioning::Voip; use Sipwise::Provisioning::Billing; +use Sipwise::Provisioning::System; =head1 NAME @@ -26,6 +27,7 @@ sub new { my $self = {}; $$self{voip} = Sipwise::Provisioning::Voip->new(); $$self{billing} = Sipwise::Provisioning::Billing->new(); + $$self{system} = Sipwise::Provisioning::System->new(); return bless $self, $class; } diff --git a/lib/admin/View/Binary.pm b/lib/admin/View/Binary.pm new file mode 100644 index 0000000..1eb9dd9 --- /dev/null +++ b/lib/admin/View/Binary.pm @@ -0,0 +1,53 @@ +package admin::View::Binary; + +use strict; + +=head1 NAME + +admin::View::Binary - TT View for binary data + +=head1 DESCRIPTION + +Binary View for admin. It will output binary data with the corresponding +content-type header set. + +=cut + +sub new { + return bless {}, shift; +} + +sub process { + my ( $self, $c ) = @_; + + $c->response->content_type($c->stash->{content_type}); + $c->response->body($c->stash->{content}); + + return 1; +} + +=head1 BUGS AND LIMITATIONS + +=over + +=item none I know. + +=back + +=head1 SEE ALSO + +Catalyst, admin + +=head1 AUTHORS + +Daniel Tiefnig + +=head1 COPYRIGHT + +The Binary view is Copyright (c) 2007 Sipwise GmbH, Austria. All rights +reserved. + +=cut + +# over and out +1;