Update portal status (#595)

This commit is contained in:
Xavier Guimard 2017-02-18 14:25:51 +00:00
parent 3e4554ee45
commit a70842603a
4 changed files with 38 additions and 4 deletions

View File

@ -4,7 +4,6 @@
* Calendar in notifications explorer
* login history
* Test for Zero
* updateStatus( Main, SOAP server )
* replace SOAP by REST for notification creation
* "mail" in UserDB/*
* checkLogins in SAML

View File

@ -5,6 +5,7 @@ package Lemonldap::NG::Handler::Lib::Status;
use strict;
use POSIX qw(setuid setgid);
use JSON qw(to_json);
use Data::Dumper;
our $VERSION = '2.0.0';
@ -173,7 +174,7 @@ sub run {
my $tmp = $1;
my $args = {};
%$args = split( /[=&]/, $tmp ) if ($tmp);
&head;
&head unless ( $args->{json} );
my ( $c, $m, $u );
foreach my $user ( keys %{ $status->{user} } ) {
@ -194,8 +195,13 @@ sub run {
$m->{$_} = int( $m->{$_} ) if ( $m->{$_} > 99 );
}
# JSON values
if ( $args->{json} ) {
print to_json( { average => $m, total => $c } ) . "\nEND\n";
}
# Raw values (Dump)
if ( $args->{'dump'} ) {
elsif ( $args->{'dump'} ) {
print "<div id=\"dump\"><pre>\n";
print Dumper( $status, $activity, $count );
print "</pre></div>\n";

View File

@ -153,6 +153,11 @@ sub do {
my $err = $req->error( $self->process($req) );
# TODO: updateStatus
if ( my $p = $self->HANDLER->tsv->{statusPipe} ) {
print $p ( $req->user ? $req->user : $req->address ) . ' => '
. $req->uri
. " $err\n";
}
if ( $err == PE_SENDRESPONSE ) {
return $req->response;
}

View File

@ -7,6 +7,7 @@ package Lemonldap::NG::Portal::Plugins::Status;
use strict;
use Mouse;
use JSON qw(from_json);
use MIME::Base64;
our $VERSION = '2.0.0';
@ -25,6 +26,29 @@ sub init {
sub status {
my ( $self, $req ) = @_;
my $res = {};
if ( my $p = $self->p->HANDLER->tsv->{statusPipe} ) {
print $p "STATUS json=1\n";
my $buf;
$p = $self->p->HANDLER->tsv->{statusOut};
while (<$p>) {
last if (/^END$/);
$buf .= $_;
}
if ($buf) {
eval { $res = from_json($buf) };
if ($@) {
$self->logger->error("JSON error: $@");
$self->logger->error("JSON: $buf");
}
foreach (qw(total average)) {
if ( $res->{$_} ) {
foreach my $k ( keys %{ $res->{$_} } ) {
delete $res->{$_}->{$k} unless ( $k =~ /^PORTAL/ );
}
}
}
}
}
foreach my $type (qw(global persistent cas saml oidc)) {
if ( $self->conf->{"${type}Storage"} ) {
my %modOpts = (
@ -38,7 +62,7 @@ sub status {
);
if (%$sessions) {
my @s = keys %$sessions;
$res->{$type} = @s;
$res->{storage}->{$type} = @s;
}
}
}