summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rwxr-xr-xlib/rddb.pm48
1 files changed, 48 insertions, 0 deletions
diff --git a/lib/rddb.pm b/lib/rddb.pm
new file mode 100755
index 0000000..1ef296c
--- /dev/null
+++ b/lib/rddb.pm
@@ -0,0 +1,48 @@
+#!/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;