diff options
-rw-r--r-- | README | 8 | ||||
-rwxr-xr-x | rh-bin/authtoken.json | 47 | ||||
-rwxr-xr-x | rh-bin/listdropboxes.cgi | 115 |
3 files changed, 86 insertions, 84 deletions
@@ -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"; } |