On 09/10/2014 05:16 PM, Christopher Bland wrote:
> I recently change a postauthhook to do cleanup of the RADONLINE session table
> and have lost users sessions. I added the following
Hello Chris,
I suggest a couple of small changes plus some debugging. Please see
below for more:
> my $username = $p->getAttrByNum($Radius::Radius::USER_NAME);
> my $now = &Radius::Util::format_special('%t', $p);
You can remove the line above.
> if ($result == $main::ACCEPT) {
>
> my $dbhandler = DBI->connect ($dsn,$dbuser,$dbpasswd) || die "Error
> opening database: $DBI::errstr\n";
> my $yesterday = $now - 86400;
my $yesterday = time() - 86400;
This should be the shortest way to get yesterday's timestamp.
> # Build insert sql
$username = $dbhandler->quote($username);
Username is typically user input, so it should be handled with care.
> $sql = "delete from RADONLINE where USERNAME='$username' and
> TIME_STAMP < $yesterday";
main::log($main::LOG_INFO, 'SQL query is: $sql");
This should show what the query will look like.
> # Execute RADONLINE cleanup and disconnect from db
> my $radonlinecleanup = $dbhandler->prepare($sql);
> $radonlinecleanup->execute;
> $radonlinecleanup->finish;
>
> $dbhandler->disconnect;
> }
A further modification might be to do something like this:
my $authby = Radius::AuthGeneric::find($identifier);
to get a handle on an AuthBy SQL or some other clause that is already
configured to use the database your hook uses. You could then do
$authby->prepareAndExecute(...) etc. See goodies/lookupauthgroup.pl and
how $sqlclause is used.
> Since putting this in user sessions are not being added even though only
> session older than 24 hours are getting deleted.
The extra debugging might help to tell what's happening.
Thanks,
Heikki
--
Heikki Vatiainen <[email protected]>
Radiator: the most portable, flexible and configurable RADIUS server
anywhere. SQL, proxy, DBM, files, LDAP, NIS+, password, NT, Emerald,
Platypus, Freeside, TACACS+, PAM, external, Active Directory, EAP, TLS,
TTLS, PEAP, TNC, WiMAX, RSA, Vasco, Yubikey, MOTP, HOTP, TOTP,
DIAMETER etc. Full source on Unix, Windows, MacOSX, Solaris, VMS,
NetWare etc.
_______________________________________________
radiator mailing list
[email protected]
http://www.open.com.au/mailman/listinfo/radiator