summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README8
-rwxr-xr-xrh-bin/authtoken.json47
-rwxr-xr-xrh-bin/listdropboxes.cgi115
3 files changed, 86 insertions, 84 deletions
diff --git a/README b/README
index 7d34026..bf51043 100644
--- a/README
+++ b/README
@@ -31,8 +31,8 @@ LICENSE
Installation
============
-# sudo aptitude install apache2 libapache2-mod-perl2 libconfig-inifiles-perl libdbd-mysql-perl libjson-pp-perl libxml-quote-perl librhrd-perl libjs-jquery rivendell-server
-# sudo a2enmod ssl authnz_ldap perl proxy_wstunnel
+# sudo aptitude install apache2 libapache2-mod-fcgid libconfig-inifiles-perl libcgi-fast-perl libdbd-mysql-perl libjson-pp-perl libxml-quote-perl librhrd-perl libjs-jquery rivendell-server
+# sudo a2enmod ssl authnz_ldap fcgid proxy_wstunnel
# sudo /etc/init.d/apache2 restart
add the following to /etc/apache2/mods-endabled/ldap.conf:
@@ -51,9 +51,7 @@ add the following to the virtualhost config:
Alias /rh-bin/ /var/www/rhwebimport/rh-bin/
<Directory /var/www/rhwebimport/rh-bin/>
- SetHandler perl-script
- PerlResponseHandler ModPerl::Registry
- PerlOptions +ParseHeaders
+ SetHandler fcgid-script
Options +ExecCGI
Require all granted
diff --git a/rh-bin/authtoken.json b/rh-bin/authtoken.json
index 3e698ac..be799d1 100755
--- a/rh-bin/authtoken.json
+++ b/rh-bin/authtoken.json
@@ -22,31 +22,34 @@
#
use strict;
+use CGI::Fast;
use RHRD::rddb;
use JSON;
-my $status = 'ERROR';
-my $errorstring = 'unknown';
-my $username = '';
-my $token = '';
-if(defined $ENV{REMOTE_USER}) {
- my $dbh;
- ($dbh, $status, $errorstring) = RHRD::rddb::opendb();
- if(defined $dbh) {
- ($token, $status, $errorstring) = RHRD::rddb::get_token($dbh, $ENV{REMOTE_USER});
- $token = '' unless($token);
- $username = $ENV{REMOTE_USER};
- RHRD::rddb::closedb($dbh);
+while (my $q = CGI::Fast->new) {
+ my $status = 'ERROR';
+ my $errorstring = 'unknown';
+ my $username = '';
+ my $token = '';
+ if(defined $ENV{REMOTE_USER}) {
+ my $dbh;
+ ($dbh, $status, $errorstring) = RHRD::rddb::opendb();
+ if(defined $dbh) {
+ ($token, $status, $errorstring) = RHRD::rddb::get_token($dbh, $ENV{REMOTE_USER});
+ $token = '' unless($token);
+ $username = $ENV{REMOTE_USER};
+ RHRD::rddb::closedb($dbh);
+ }
+ } else {
+ $errorstring = 'no username defined - are you logged in?';
}
-} else {
- $errorstring = 'no username defined - are you logged in?';
-}
-my %answer;
-$answer{'status'} = $status;
-$answer{'errorstring'} = $errorstring;
-$answer{'username'} = $username;
-$answer{'token'} = $token;
+ my %answer;
+ $answer{'status'} = $status;
+ $answer{'errorstring'} = $errorstring;
+ $answer{'username'} = $username;
+ $answer{'token'} = $token;
-print "Content-type: application/json; charset=UTF-8\n\n";
-print encode_json \%answer;
+ print "Content-type: application/json; charset=UTF-8\n\n";
+ print encode_json \%answer;
+}
diff --git a/rh-bin/listdropboxes.cgi b/rh-bin/listdropboxes.cgi
index a0104c0..03dc4ee 100755
--- a/rh-bin/listdropboxes.cgi
+++ b/rh-bin/listdropboxes.cgi
@@ -22,74 +22,75 @@
#
use strict;
-use CGI;
+use CGI::Fast;
use POSIX;
use XML::Quote;
use RHRD::rddb;
-my $status = 'ERROR';
-my $errorstring = 'unknown';
-my $responsecode = 500;
-my @dropboxes = ();
+while (my $q = CGI::Fast->new) {
+ my $status = 'ERROR';
+ my $errorstring = 'unknown';
+ my $responsecode = 500;
+ my @dropboxes = ();
-my $q = CGI->new;
-my $username = $q->param('LOGIN_NAME');
-my $token = $q->param('PASSWORD');
+ my $username = $q->param('LOGIN_NAME');
+ my $token = $q->param('PASSWORD');
-my $dbh;
-($dbh, $status, $errorstring) = RHRD::rddb::opendb();
-if(defined $dbh) {
- my $result;
- ($result, $status, $errorstring) = RHRD::rddb::check_token($dbh, $username, $token);
- if($result == 1) {
- $responsecode = 200;
- @dropboxes = RHRD::rddb::get_dropboxes($dbh, $username);
- unless (defined $dropboxes[0]) {
+ my $dbh;
+ ($dbh, $status, $errorstring) = RHRD::rddb::opendb();
+ if(defined $dbh) {
+ my $result;
+ ($result, $status, $errorstring) = RHRD::rddb::check_token($dbh, $username, $token);
+ if($result == 1) {
+ $responsecode = 200;
+ @dropboxes = RHRD::rddb::get_dropboxes($dbh, $username);
+ unless (defined $dropboxes[0]) {
+ $responsecode = 500;
+ $status = $dropboxes[1];
+ $errorstring = $dropboxes[2];
+ }
+ } elsif($result == 0) {
+ $responsecode = 403;
+ } else {
$responsecode = 500;
- $status = $dropboxes[1];
- $errorstring = $dropboxes[2];
}
- } elsif($result == 0) {
- $responsecode = 403;
- } else {
- $responsecode = 500;
+ RHRD::rddb::closedb($dbh);
}
- RHRD::rddb::closedb($dbh);
-}
-print "Content-type: application/xml; charset=UTF-8\n\n";
+ print "Content-type: application/xml; charset=UTF-8\n\n";
-if($responsecode != 200) {
- print "<RDWebResult>\n";
- print " <ResponseCode>" . xml_quote($responsecode) . "</ResponseCode>\n";
- print " <ErrorString>" . xml_quote($errorstring) . "</ErrorString>\n";
- print "</RDWebResult>\n";
-} else {
- print "<dropboxList>\n";
- for my $href (@dropboxes) {
- print " <dropbox>\n";
- print " <group>" . xml_quote($href->{'GROUP'}) . "</group>\n";
- print " <group-description>" . xml_quote($href->{'GROUPDESC'}) . "</group-description>\n";
- print " <group-low-cart>" . xml_quote($href->{'GROUPLOWCART'}) . "</group-low-cart>\n";
- print " <group-high-cart>" . xml_quote($href->{'GROUPHIGHCART'}) . "</group-high-cart>\n";
- print " <normalization-level>" . floor($href->{'NORMLEVEL'}/100) . "</normalization-level>\n";
- print " <autotrim-level>" . floor($href->{'TRIMLEVEL'}/100) . "</autotrim-level>\n";
- print " <parameters>" . xml_quote($href->{'PARAM'}) . "</parameters>\n";
- print " <type>" . xml_quote($href->{'TYPE'}) . "</type>\n";
- if($href->{'TYPE'} eq "show") {
- print " <show-id>" . xml_quote($href->{'SHOWID'}) . "</show-id>\n";
- print " <show-title>" . xml_quote($href->{'SHOWTITLE'}) . "</show-title>\n";
- print " <show-log>" . xml_quote($href->{'SHOWLOG'}) . "</show-log>\n";
- print " <show-rhythm>" . xml_quote($href->{'SHOWRHYTHM'}) . "</show-rhythm>\n";
- print " <show-dayofweek>" . xml_quote($href->{'SHOWDOW'}) . "</show-dayofweek>\n";
- print " <show-starttime>" . xml_quote($href->{'SHOWSTARTTIME'}) . "</show-starttime>\n";
- print " <show-length>" . xml_quote($href->{'SHOWLEN'}) . "</show-length>\n";
- } elsif($href->{'TYPE'} eq "jingle") {
- print " <jingle-title>" . xml_quote($href->{'JINGLETITLE'}) . "</jingle-title>\n";
- } elsif($href->{'TYPE'} eq "musicpool") {
- print " <musicpool-title>" . xml_quote($href->{'MUSICPOOLTITLE'}) . "</musicpool-title>\n";
+ if($responsecode != 200) {
+ print "<RDWebResult>\n";
+ print " <ResponseCode>" . xml_quote($responsecode) . "</ResponseCode>\n";
+ print " <ErrorString>" . xml_quote($errorstring) . "</ErrorString>\n";
+ print "</RDWebResult>\n";
+ } else {
+ print "<dropboxList>\n";
+ for my $href (@dropboxes) {
+ print " <dropbox>\n";
+ print " <group>" . xml_quote($href->{'GROUP'}) . "</group>\n";
+ print " <group-description>" . xml_quote($href->{'GROUPDESC'}) . "</group-description>\n";
+ print " <group-low-cart>" . xml_quote($href->{'GROUPLOWCART'}) . "</group-low-cart>\n";
+ print " <group-high-cart>" . xml_quote($href->{'GROUPHIGHCART'}) . "</group-high-cart>\n";
+ print " <normalization-level>" . floor($href->{'NORMLEVEL'}/100) . "</normalization-level>\n";
+ print " <autotrim-level>" . floor($href->{'TRIMLEVEL'}/100) . "</autotrim-level>\n";
+ print " <parameters>" . xml_quote($href->{'PARAM'}) . "</parameters>\n";
+ print " <type>" . xml_quote($href->{'TYPE'}) . "</type>\n";
+ if($href->{'TYPE'} eq "show") {
+ print " <show-id>" . xml_quote($href->{'SHOWID'}) . "</show-id>\n";
+ print " <show-title>" . xml_quote($href->{'SHOWTITLE'}) . "</show-title>\n";
+ print " <show-log>" . xml_quote($href->{'SHOWLOG'}) . "</show-log>\n";
+ print " <show-rhythm>" . xml_quote($href->{'SHOWRHYTHM'}) . "</show-rhythm>\n";
+ print " <show-dayofweek>" . xml_quote($href->{'SHOWDOW'}) . "</show-dayofweek>\n";
+ print " <show-starttime>" . xml_quote($href->{'SHOWSTARTTIME'}) . "</show-starttime>\n";
+ print " <show-length>" . xml_quote($href->{'SHOWLEN'}) . "</show-length>\n";
+ } elsif($href->{'TYPE'} eq "jingle") {
+ print " <jingle-title>" . xml_quote($href->{'JINGLETITLE'}) . "</jingle-title>\n";
+ } elsif($href->{'TYPE'} eq "musicpool") {
+ print " <musicpool-title>" . xml_quote($href->{'MUSICPOOLTITLE'}) . "</musicpool-title>\n";
+ }
+ print " </dropbox>\n";
}
- print " </dropbox>\n";
+ print "</dropboxList>\n";
}
- print "</dropboxList>\n";
}