diff options
-rw-r--r-- | README | 2 | ||||
-rwxr-xr-x | authtoken.json | 10 | ||||
-rwxr-xr-x | lib/rddb.pm | 186 | ||||
-rwxr-xr-x | rh-bin/listdropboxes.cgi | 12 |
4 files changed, 10 insertions, 200 deletions
@@ -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"; |