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;