#!/usr/bin/perl
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} ||=
'/tmp'
;
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;
}
}
my
$cgi
= CGI->new();
print
$cgi
->header(
-charset
=>
'ascii'
,
-type
=>
'text/plain'
,
);
print
"LEMONLDAP::NG::PORTAL STATUS\n\nConfiguration : "
;
my
$lmconf
= Lemonldap::NG::Manager::Conf->new(
{
type
=>
'File'
,
dirName
=>
'__CONFDIR__'
,
}
);
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;