109 lines
2.8 KiB
Perl
Executable File
109 lines
2.8 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use CGI;
|
|
use strict;
|
|
|
|
# Status page for Lemonldap::NG::Portal
|
|
#
|
|
# This CGI displays some information about Lemonldap::NG sessions
|
|
#
|
|
|
|
BEGIN {
|
|
|
|
sub Apache::Session::get_sessions_count {
|
|
return 0;
|
|
}
|
|
|
|
sub Apache::Session::MySQL::get_sessions_count {
|
|
my $class = shift;
|
|
my $args = shift;
|
|
my $dbh =
|
|
DBI->connect( $args->{DataSource}, $args->{UserName},
|
|
$args->{Password} )
|
|
or die("$!$@");
|
|
my $table = $args->{TableName} || 'sessions';
|
|
my $sth = $dbh->prepare("SELECT count(*) from $table");
|
|
$sth->execute;
|
|
return ( $sth->fetchrow_array )[0];
|
|
}
|
|
|
|
*Apache::Session::Postgres::get_sessions_count =
|
|
\&Apache::Session::MySQL::get_sessions_count;
|
|
*Apache::Session::Oracle::get_sessions_count =
|
|
\&Apache::Session::MySQL::get_sessions_count;
|
|
*Apache::Session::Sybase::get_sessions_count =
|
|
\&Apache::Session::MySQL::get_sessions_count;
|
|
*Apache::Session::Informix::get_sessions_count =
|
|
\&Apache::Session::MySQL::get_sessions_count;
|
|
|
|
sub Apache::Session::File::get_sessions_count {
|
|
my $class = shift;
|
|
my $args = shift;
|
|
$args->{Directory} ||= '__SESSIONDIR__';
|
|
unless ( opendir DIR, $args->{Directory} ) {
|
|
die "Cannot open directory $args->{Directory}\n";
|
|
}
|
|
my @t =
|
|
grep { -f "$args->{Directory}/$_" and /^[A-Za-z0-9@\-]+$/ }
|
|
readdir(DIR);
|
|
closedir DIR;
|
|
return $#t + 1;
|
|
}
|
|
|
|
sub Apache::Session::DB_File::get_sessions_count {
|
|
my $class = shift;
|
|
my $args = shift;
|
|
|
|
if ( !tied %{ $class->{dbm} } ) {
|
|
my $rv = tie %{ $class->{dbm} }, 'DB_File', $args->{FileName};
|
|
|
|
if ( !$rv ) {
|
|
die "Could not open dbm file $args->{FileName}: $!";
|
|
}
|
|
}
|
|
my @t = keys( %{ $class->{dbm} } );
|
|
return $#t + 1;
|
|
}
|
|
}
|
|
|
|
use Lemonldap::NG::Common::Conf;
|
|
use Lemonldap::NG::Common::Conf::Constants;
|
|
use strict;
|
|
use DBI;
|
|
|
|
my $cgi = CGI->new();
|
|
|
|
print $cgi->header(
|
|
-charset => 'ascii',
|
|
-type => 'text/plain',
|
|
);
|
|
|
|
print "LEMONLDAP::NG::PORTAL STATUS\n\nConfiguration : ";
|
|
|
|
my $lmconf = Lemonldap::NG::Common::Conf->new();
|
|
|
|
unless ($lmconf) {
|
|
print "unable to create conf object\n";
|
|
}
|
|
else {
|
|
my $conf = $lmconf->getConf;
|
|
unless ($conf) {
|
|
write "unable to get configuration ($!)\n";
|
|
}
|
|
else {
|
|
print "OK\nApache::Session module : ";
|
|
my $tmp = $conf->{globalStorage};
|
|
eval "use $tmp";
|
|
if ($@) {
|
|
print "unable to load $tmp ($@)\n";
|
|
}
|
|
else {
|
|
my $t = $tmp->get_sessions_count( $conf->{globalStorageOptions} );
|
|
print "OK\nActive sessions : $t\n";
|
|
}
|
|
}
|
|
}
|
|
|
|
1;
|
|
|