diff --git a/modules/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Simple.pm b/modules/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Simple.pm index c746f6116..39bddc389 100644 --- a/modules/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Simple.pm +++ b/modules/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Simple.pm @@ -482,9 +482,8 @@ sub forgeHeadersInit { } sub updateStatus { - my ( $class, $url, $action ) = @_; - print $statusPipe ( $datas->{$whatToTrace} ? $datas->{$whatToTrace} : '' ) - . " => " + my ( $class, $user, $url, $action ) = @_; + print $statusPipe "$user => " . $apacheRequest->hostname . "$url $action\n" if ($statusPipe); @@ -508,12 +507,12 @@ sub grant { sub forbidden { my $class = shift; if ( $datas->{_logout} ) { - $class->updateStatus( $_[0], 'LOGOUT' ); + $class->updateStatus( $datas->{$whatToTrace}, $_[0], 'LOGOUT' ); my $u = $datas->{_logout}; $class->localUnlog; return $class->goToPortal( $u, 'logout=1' ); } - $class->updateStatus( $_[0], 'REJECT' ); + $class->updateStatus( $datas->{$whatToTrace}, $_[0], 'REJECT' ); $class->logForbidden(@_); return FORBIDDEN; } @@ -593,7 +592,7 @@ sub run ($$) { my $id; unless ( $id = $class->fetchId ) { $class->lmLog( "$class: No cookie found", 'info' ); - $class->updateStatus( $apacheRequest->uri, 'REDIRECT' ); + $class->updateStatus( $apacheRequest->connection->remote_ip, $apacheRequest->uri, 'REDIRECT' ); return $class->goToPortal($uri); } @@ -613,7 +612,7 @@ sub run ($$) { # The cookie isn't yet available $class->lmLog( "The cookie $id isn't yet available: $@", 'info' ); - $class->updateStatus( $apacheRequest->uri, 'EXPIRED' ); + $class->updateStatus( $apacheRequest->connection->remote_ip, $apacheRequest->uri, 'EXPIRED' ); return $class->goToPortal($uri); } $datas->{$_} = $h{$_} foreach ( keys %h ); @@ -632,7 +631,7 @@ sub run ($$) { # AUTHORIZATION return $class->forbidden($uri) unless ( $class->grant($uri) ); - $class->updateStatus( $apacheRequest->uri, 'OK' ); + $class->updateStatus( $datas->{$whatToTrace}, $apacheRequest->uri, 'OK' ); $class->lmLog( "User " . $datas->{$whatToTrace} @@ -695,7 +694,7 @@ sub unlog ($$) { my $class; ( $class, $apacheRequest ) = @_; $class->localUnlog; - $class->updateStatus( $apacheRequest->uri, 'LOGOUT' ); + $class->updateStatus( $apacheRequest->connection->remote_ip, $apacheRequest->uri, 'LOGOUT' ); return $class->goToPortal( '/', 'logout=1' ); } @@ -714,7 +713,7 @@ sub redirectFilter { } while ( $f->read( my $buffer, 1024 ) ) { } - $class->updateStatus( 'filter', 'REDIRECT' ); + $class->updateStatus( ( $datas->{$whatToTrace} ? $datas->{$whatToTrace} : $f->r->connection->remote_ip ), 'filter', 'REDIRECT' ); return REDIRECT; } diff --git a/modules/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Status.pm b/modules/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Status.pm index a76809943..ec2395249 100644 --- a/modules/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Status.pm +++ b/modules/lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Status.pm @@ -87,9 +87,9 @@ sub run { # if request is http://test.example.com/status?a=1). To be used # later... elsif (/^STATUS(?:\s+(\S+))?$/) { - my $tmp = $1; + my $tmp = $1; my $args = {}; - %$args = split (/[=&]/,$tmp) if($tmp); + %$args = split( /[=&]/, $tmp ) if ($tmp); &head; #print Dumper($args),&end;next; my ( $c, $m, $u ); @@ -136,38 +136,55 @@ sub run { $args->{categories} ||= 'REJECT,PORTAL_FIRSTACCESS,LOGOUT,OK'; # General print "

Top used URI

\n
\n";
-                foreach my $uri (keys %{$status->{uri}}) {
-                    $count->{$uri} += $_ foreach (values %{$status->{uri}->{$uri}});
+                foreach my $uri ( keys %{ $status->{uri} } ) {
+                    $count->{$uri} += $_
+                      foreach ( values %{ $status->{uri}->{$uri} } );
                 }
-                my $i=0;
-                foreach (sort {$count->{$b} <=> $count->{$a}} keys %$count) {
-                    last if($i == $args->{top});
-                    last unless($count->{$_});
+                my $i = 0;
+                foreach ( sort { $count->{$b} <=> $count->{$a} } keys %$count )
+                {
+                    last if ( $i == $args->{top} );
+                    last unless ( $count->{$_} );
                     $i++;
                     print sprintf( "%-80s : %4d\n", $_, $count->{$_} );
                 }
                 print "\n
\n"; # Top by category print "\n"; - foreach my $cat (split /,/,$args->{categories}) { + foreach my $cat ( split /,/, $args->{categories} ) { print ""; } - print '
CodeTop
$cat
\n
\n"; - topByCat($cat,$args->{top}); + topByCat( $cat, $args->{top} ); print "
\n
'; + print "\n"; } + print "

\nServer up for : " + . &timeUp($mn) + . "\n

\n"; &end; } } } +sub timeUp { + my $d = shift; + my $mn = $d % 60; + $d = ( $d - $mn ) / 60; + my $h = $d % 24; + $d = ( $a - $h ) / 24; + return "$d\d $h\h $mn\mn"; +} + sub topByCat { - my($cat,$max) = @_; - my $i=0; + my ( $cat, $max ) = @_; + my $i = 0; print "
\n";
-    foreach (sort {$status->{uri}->{$b}->{$cat} <=> $status->{uri}->{$a}->{$cat}} keys %{$status->{uri}}) {
-        last if($i == $max);
-        last unless($status->{uri}->{$_}->{$cat});
+    foreach (
+        sort { $status->{uri}->{$b}->{$cat} <=> $status->{uri}->{$a}->{$cat} }
+        keys %{ $status->{uri} } )
+    {
+        last if ( $i == $max );
+        last unless ( $status->{uri}->{$_}->{$cat} );
         $i++;
         print sprintf( "%-80s : %4d\n", $_, $status->{uri}->{$_}->{$cat} );
     }