Added rrd controller to use authentication for fetching rrd files from javascript by users.

3.0-u-redesign
Andreas Granig 16 years ago
parent 673e05a857
commit 0afaa4f6ae

@ -12,9 +12,7 @@
cc_dial_prefix="[% www_admin.cc_dial_prefix %]"
ac_dial_prefix="[% www_admin.ac_dial_prefix %]"
>
<dashboard enabled="[% www_admin.dashboard.enabled %]"
rrd_url_path="/rrd"
/>
<dashboard enabled="[% www_admin.dashboard.enabled %]" />
<subscriber extension_features="[% www_admin.subscriber.extension_features %]"
audiofile_features="[% www_admin.subscriber.audiofile_features %]"
/>

@ -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;

@ -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 <agranig@sipwise.com>
=head1 COPYRIGHT
The rrd controller is Copyright (c) 2007-2010 Sipwise GmbH,
Austria. All rights reserved.
=cut
1;

@ -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;
}

@ -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 <dtiefnig@sipwise.com>
=head1 COPYRIGHT
The Binary view is Copyright (c) 2007 Sipwise GmbH, Austria. All rights
reserved.
=cut
# over and out
1;
Loading…
Cancel
Save