summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README2
-rwxr-xr-xauthtoken.json10
-rwxr-xr-xlib/rddb.pm186
-rwxr-xr-xrh-bin/listdropboxes.cgi12
4 files changed, 10 insertions, 200 deletions
diff --git a/README b/README
index 6346a55..0ec53aa 100644
--- a/README
+++ b/README
@@ -30,7 +30,7 @@ LICENSE
Installation
============
-# sudo aptitude install apache2 libapache2-mod-perl2 libconfig-inifiles-perl libdbd-mysql-perl libjs-jquery rivendell-server
+# sudo aptitude install apache2 libapache2-mod-perl2 libconfig-inifiles-perl libdbd-mysql-perl librhrd-perl libjs-jquery rivendell-server
# sudo a2enmod ssl authnz_ldap perl proxy_wstunnel
# sudo /etc/init.d/apache2 restart
diff --git a/authtoken.json b/authtoken.json
index 995f3ec..12e390f 100755
--- a/authtoken.json
+++ b/authtoken.json
@@ -21,9 +21,7 @@
#
use strict;
-use File::Basename;
-use lib dirname( __FILE__ ) . '/lib';
-use rddb;
+use RHRD::rddb;
my $status = 'ERROR';
my $errorstring = 'unknown';
@@ -31,12 +29,12 @@ my $username = '';
my $token = '';
if(defined $ENV{REMOTE_USER}) {
my $dbh;
- ($dbh, $status, $errorstring) = rddb::opendb();
+ ($dbh, $status, $errorstring) = RHRD::rddb::opendb();
if(defined $dbh) {
- ($token, $status, $errorstring) = rddb::get_token($dbh, $ENV{REMOTE_USER});
+ ($token, $status, $errorstring) = RHRD::rddb::get_token($dbh, $ENV{REMOTE_USER});
$token = '' unless($token);
$username = $ENV{REMOTE_USER};
- rddb::closedb($dbh);
+ RHRD::rddb::closedb($dbh);
}
} else {
$errorstring = 'no username defined - are you logged in?';
diff --git a/lib/rddb.pm b/lib/rddb.pm
deleted file mode 100755
index c48add5..0000000
--- a/lib/rddb.pm
+++ /dev/null
@@ -1,186 +0,0 @@
-#!/usr/bin/perl
-#
-# rhwebimport
-#
-# Copyright (C) 2014-2015 Christian Pointner <equinox@helsinki.at>
-#
-# This file is part of rhwebimport.
-#
-# rhwebimport is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# any later version.
-#
-# rhwebimport is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with rhwebimport. If not, see <http://www.gnu.org/licenses/>.
-#
-
-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);
-
- $dbh->do(qq{SET CHARACTER SET utf8;})
- or return (undef, 'ERROR', "Database Error: " . $dbh->errstr);
-
- return ($dbh, 'OK', 'success');
-}
-
-sub closedb
-{
- my $dbh = shift;
- $dbh->disconnect();
-}
-
-sub get_token
-{
- my ($dbh, $username) = @_;
-
- my $sql = qq{select PASSWORD from USERS where LOGIN_NAME = ?;};
- my $sth = $dbh->prepare($sql)
- or return (undef, 'ERROR', "Database Error: " . $dbh->errstr);
-
- $sth->execute($username)
- or return (undef, 'ERROR', "Database Error: " . $sth->errstr);
-
- my ($token) = $sth->fetchrow_array;
- $sth->finish();
-
- unless(defined $token) {
- return (undef, 'ERROR', "user '" . $username . "' not known by rivendell")
- }
- return ($token, 'OK', 'success');
-}
-
-sub check_token
-{
- my ($dbh, $username, $token) = @_;
-
- my $sql = qq{select PASSWORD from USERS where LOGIN_NAME = ?;};
- my $sth = $dbh->prepare($sql)
- or return (undef, 'ERROR', "Database Error: " . $dbh->errstr);
-
- $sth->execute($username)
- or return (undef, 'ERROR', "Database Error: " . $sth->errstr);
-
- my ($token_result) = $sth->fetchrow_array;
- $sth->finish();
-
- unless(defined $token_result) {
- return (undef, 'ERROR', "user '" . $username . "' not known by rivendell")
- }
-
- if($token_result eq $token) {
- return (1, 'OK', 'success');
- }
- return (0, 'ERROR', "wrong password");
-}
-
-sub get_showtitle_and_log
-{
- my ($dbh, $showid) = @_;
-
- my $sql = qq{select TITLE,MACROS from CART where NUMBER = ?;};
- my $sth = $dbh->prepare($sql)
- or return (undef, undef, 'ERROR', "Database Error: " . $dbh->errstr);
-
- $sth->execute($showid)
- or return (undef, undef, 'ERROR', "Database Error: " . $sth->errstr);
-
- my ($title, $macros) = $sth->fetchrow_array;
- $sth->finish();
-
- unless(defined $title) {
- return (undef, undef, 'ERROR', "Show with ID=" . $showid . " not found!")
- }
- unless(defined $macros) {
- return (undef, undef, 'ERROR', "Show with ID=" . $showid . " has no macro!");
- }
-
- unless($macros =~ /^LL 1 ([^ ]+) 0\!$/) {
- return (undef, undef, 'ERROR', "Show with ID=" . $showid . " has invalid macro: '" . $macros . "'");
- }
- my $log = $1;
-
- return ($title, $log, 'OK', 'success');
-}
-
-sub get_dropboxes
-{
- my ($dbh, $username) = @_;
-
- my $sql = qq{select USER_PERMS.GROUP_NAME,DROPBOXES.TO_CART,DROPBOXES.NORMALIZATION_LEVEL,DROPBOXES.AUTOTRIM_LEVEL,DROPBOXES.SET_USER_DEFINED,GROUPS.DEFAULT_LOW_CART,GROUPS.DEFAULT_HIGH_CART,GROUPS.DESCRIPTION from USER_PERMS, DROPBOXES, GROUPS where USER_PERMS.USER_NAME=? and DROPBOXES.GROUP_NAME=USER_PERMS.GROUP_NAME and DROPBOXES.GROUP_NAME=GROUPS.NAME and DROPBOXES.STATION_NAME=?;};
-
- my $sth = $dbh->prepare($sql)
- or return (undef, 'ERROR', "Database Error: " . $dbh->errstr);
-
- $sth->execute($username, 'import-dropbox') # TODO: hardcoded value
- or return (undef, 'ERROR', "Database Error: " . $sth->errstr);
-
- my @allowed_dbs;
- while(my ($group, $to_cart, $normlevel, $trimlevel, $params, $lowcart, $highcart, $groupdesc) = $sth->fetchrow_array()) {
- my @p = split(';', $params);
-
- my $entry = {};
- $entry->{'GROUP'} = $group;
- $entry->{'GROUPDESC'} = $groupdesc;
- $entry->{'GROUPLOWCART'} = int $lowcart;
- $entry->{'GROUPHIGHCART'} = int $highcart;
- $entry->{'NORMLEVEL'} = int $normlevel;
- $entry->{'TRIMLEVEL'} = int $trimlevel;
- $entry->{'PARAM'} = $params;
- if($p[0] eq "S") {
- $entry->{'TYPE'} = 'show';
- $entry->{'SHOWID'} = $to_cart;
-
- my ($title, $log, $status, $errorstring) = get_showtitle_and_log($dbh, $to_cart);
- unless (defined $title && defined $log) {
- return (undef, $status, $errorstring);
- }
- $entry->{'SHOWTITLE'} = $title;
- $entry->{'SHOWLOG'} = $log;
-
- $entry->{'SHOWRHYTHM'} = $p[1];
- $entry->{'SHOWDOW'} = int $p[2];
- $entry->{'SHOWDOW'} = 0 unless $entry->{'SHOWDOW'} < 7;
- substr($p[3], 2, 0) = ':';
- $entry->{'SHOWSTARTTIME'} = $p[3];
- $entry->{'SHOWLEN'} = int $p[4];
- } elsif($p[0] eq "J") {
- $entry->{'TYPE'} = 'jingle';
- $entry->{'JINGLETITLE'} = $groupdesc;
- } elsif($p[0] eq "M") {
- $entry->{'TYPE'} = 'musicpool';
- $entry->{'MUSICPOOLTITLE'} = $groupdesc;
- }
-
- push @allowed_dbs, $entry;
- }
- $sth->finish();
-
- return @allowed_dbs;
-}
-
-
-return 1;
diff --git a/rh-bin/listdropboxes.cgi b/rh-bin/listdropboxes.cgi
index 69ade9f..53da91b 100755
--- a/rh-bin/listdropboxes.cgi
+++ b/rh-bin/listdropboxes.cgi
@@ -22,9 +22,7 @@
use strict;
use CGI;
-use File::Basename;
-use lib dirname( __FILE__ ) . '/../lib';
-use rddb;
+use RHRD::rddb;
my $status = 'ERROR';
my $errorstring = 'unknown';
@@ -36,13 +34,13 @@ my $username = $q->param('LOGIN_NAME');
my $token = $q->param('PASSWORD');
my $dbh;
-($dbh, $status, $errorstring) = rddb::opendb();
+($dbh, $status, $errorstring) = RHRD::rddb::opendb();
if(defined $dbh) {
my $result;
- ($result, $status, $errorstring) = rddb::check_token($dbh, $username, $token);
+ ($result, $status, $errorstring) = RHRD::rddb::check_token($dbh, $username, $token);
if($result == 1) {
$responsecode = 200;
- @dropboxes = rddb::get_dropboxes($dbh, $username);
+ @dropboxes = RHRD::rddb::get_dropboxes($dbh, $username);
unless (defined $dropboxes[0]) {
$responsecode = 500;
$status = $dropboxes[1];
@@ -53,7 +51,7 @@ if(defined $dbh) {
} else {
$responsecode = 500;
}
- rddb::closedb($dbh);
+ RHRD::rddb::closedb($dbh);
}
print "Content-type: application/xml; charset=UTF-8\n\n";