#!/usr/bin/perl use strict; use Config::IniFiles; use DBI; package rddb; sub opendb { my $RD_CONF = "/etc/rd.conf"; my $cfg = Config::IniFiles->new(-file => $RD_CONF) or return (undef , 'ERROR', "Config File Error: " . join("\n", @Config::IniFiles::errors)); my $dbhost = $cfg->val('mySQL', 'Hostname'); my $dbname = $cfg->val('mySQL', 'Database'); my $dbuser = $cfg->val('mySQL', 'Loginname'); my $dbpasswd = $cfg->val('mySQL', 'Password'); my $dbh = DBI->connect("DBI:mysql:$dbname:$dbhost","$dbuser","$dbpasswd") or return (undef, 'ERROR', "Database Error: " . $DBI::errstr); return ($dbh, 'OK', 'success'); } sub get_token { my $username = shift; my ($dbh, $state, $errorstring) = opendb(); unless($dbh) { return ('', $state, $errorstring); } my $sth = $dbh->prepare('select PASSWORD from USERS where LOGIN_NAME = ?') or return ('', 'ERROR', "Database Error: " . $dbh->errstr); $sth->execute($username) or return ('', 'ERROR', "Database Error: " . $sth->errstr); my ($token) = $sth->fetchrow_array; return ($token, 'OK', 'success') if(defined $token); return ('', 'ERROR', "user '" . $username . "' not known by rivendell") } return 1;