Changeset 36096 for main


Ignore:
Timestamp:
2022-03-10T19:01:59+13:00 (2 years ago)
Author:
kjdon
Message:

now allow for getting defaultservlet from gsdl3site.cfg - we may not have localsite and library, so don't assume that. used for remote gli in gs3.

Location:
main/trunk/greenstone2/common-src/cgi-bin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/common-src/cgi-bin/gliserver.pl

    r34577 r36096  
    112112    return;
    113113    }
    114 
    115114    if ($cmd eq "get-site-names" && $gsdl_cgi->greenstone_version() == 3) {
    116115    &get_site_names($gsdl_cgi);
    117116    return;
    118117    }
     118
     119    if ($cmd eq "get-default-servlet-path" && $gsdl_cgi->greenstone_version() == 3) {
     120    &get_default_servlet_path($gsdl_cgi);
     121    return;
     122    }
     123
    119124    # I assume this is so we can check handling of a time out
    120125    if ($cmd eq "timeout-test") {
    121126    while (1) { }
    122127    }
    123  
     128
    124129    # All other commands require a username, for locking and authentication
    125130    my $username = $gsdl_cgi->clean_param("un");
     
    136141    $gsdl_cgi->delete("ts");
    137142
     143    # these gs3 commands don't need site
     144    if ($gsdl_cgi->greenstone_version() != 2) {     
     145    if ($cmd eq "download-web-xml-file") {
     146        &download_web_xml_file($gsdl_cgi, $username, $timestamp);
     147        return;
     148    }
     149    if ($cmd eq "user-validation") {
     150        &user_validation($gsdl_cgi, $username, $timestamp);
     151        return;
     152    }
     153    }
     154
    138155    my $site; # undefined on declaration, see http://perldoc.perl.org/perlsyn.html
    139156
     
    147164    }
    148165
    149 
    150166    if ($cmd eq "delete-collection") {
    151167    &delete_collection($gsdl_cgi, $username, $timestamp, $site);
     
    196212    &file_exists($gsdl_cgi, $site);
    197213    return;
    198     }
    199     # cmds not in Greenstone 2:
    200     if ($gsdl_cgi->greenstone_version() != 2) {     
    201     if ($cmd eq "download-web-xml-file") {
    202         &download_web_xml_file($gsdl_cgi, $username, $timestamp, $site);
    203         return;
    204     }
    205     if ($cmd eq "user-validation") {
    206         &user_validation($gsdl_cgi, $username, $timestamp, $site);
    207         return;
    208     }
    209214    }
    210215   
     
    318323    # this is the only subroutine here that uses library servlet name param
    319324    my $library_servlet_name = $gsdl_cgi->clean_param("servlet");   
     325    if (!defined $library_servlet_name) {
     326    # try config default
     327    $library_servlet_name = $gsdl_cgi->get_default_servlet(); # might be null
     328    }
    320329    #if (!defined $library_servlet_name) {
    321330    #$library_servlet_name = "library";
    322331    #}
     332
    323333    $gsdl_cgi->delete("servlet");
    324334
     
    345355    }
    346356    $gsdl_cgi->checked_chdir($gsdl3home);   
    347     my $java_command="\"$java\" -classpath \"$java_classpath\" org.greenstone.gsdl3.util.ServletRealmCheck $java_args 2>&1";
     357    my $java_command="\"$java\" -classpath \"$java_classpath\" org.greenstone.gsdl3.util.ServletRealmCheck $java_args 2>&1";
     358
    348359    my $java_output = `$java_command`;
    349360    if ($java_output =~ m/^Authentication failed:/) { # $java_output contains the error message
    350     $gsdl_cgi->generate_error($java_output); # "\nJAVA_COMMAND: $java_command\n"
     361    $gsdl_cgi->generate_error($java_output . "\nJAVA_COMMAND: $java_command\n");
    351362    }
    352363    # TODO check for errors with running the java command
     
    428439# This routine, which uses the variable site, won't get called by GS2,
    429440sub user_validation{
    430     my ($gsdl_cgi, $username, $timestamp, $site) = @_;
     441    my ($gsdl_cgi, $username, $timestamp) = @_;
    431442   
    432443    # Users can be in any group to perform this action
    433     my $user_err = &authenticate_user($gsdl_cgi, $username, "", $site);
     444    my $user_err = &authenticate_user($gsdl_cgi, $username, "");
    434445     if (defined $user_err && $user_err!~ m/ERROR/){
    435446     if ($user_err!~ m/ERROR/){
     
    844855sub download_web_xml_file
    845856{
    846     my ($gsdl_cgi, $username, $timestamp, $site) = @_;
    847 
     857    my ($gsdl_cgi, $username, $timestamp) = @_;
     858 
    848859    # Users can be in any group to perform this action
    849     my $user_groups = &authenticate_user($gsdl_cgi, $username, "", $site);
    850 
     860    my $user_groups = &authenticate_user($gsdl_cgi, $username, "");
     861 
    851862    # language and region Environment Variable setting on the client side that was used to zip files.
    852863    my $lang_env = $gsdl_cgi->clean_param("lr") || "";
     
    891902
    892903    &put_file($gsdl_cgi, $zip_file_path, "application/zip");
    893 
    894904    unlink("$zip_file_path") unless $debugging_enabled;
    895905}
     
    899909{
    900910    my ($gsdl_cgi, $username, $timestamp, $site) = @_;
    901 
    902     my $script = $gsdl_cgi->clean_param("script");
     911      my $script = $gsdl_cgi->clean_param("script");
    903912    if ((!defined $script) || ($script =~ m/^\s*$/)) {
    904913    $gsdl_cgi->generate_error("No script specified.");
    905914    }
    906915    $gsdl_cgi->delete("script");
    907 
     916 
    908917    # Users can be in any group to perform this action
    909918    &authenticate_user($gsdl_cgi, $username, "", $site);
    910919    $gsdl_cgi->delete("ts"); ## two lines from GS3 version, doesn't seem to harm GS2
    911920    $gsdl_cgi->delete("pw");
    912    
     921 
    913922
    914923    my $perl_args = "";
     
    972981sub get_site_names
    973982{
    974     my ($gsdl_cgi, $username, $timestamp, $site) = @_;
     983    my ($gsdl_cgi) = @_;
    975984    my $sites_directory = &util::filename_cat($ENV{'GSDL3HOME'}, "sites");
    976985
     
    10091018}
    10101019
     1020sub get_default_servlet_path
     1021{
     1022    my ($gsdl_cgi) = @_;
     1023    my $default_servlet = $gsdl_cgi->get_default_servlet();
     1024    if ($default_servlet !~ /^\//) {
     1025        $default_servlet = "/".$default_servlet;
     1026    }
     1027    print STDOUT "Content-type:text/plain\n\n";
     1028    print STDOUT "$default_servlet\n";
     1029}
     1030
     1031
    10111032sub move_collection_file
    10121033{
     
    13061327        $gsdl_cgi->generate_error("ERROR. Filehandle undefined. No file uploaded (GS3 server).");
    13071328    } else {
     1329           
    13081330        while ($bread=read($fh, $buf, 1024)) {
    13091331        print FOUT $buf;
    13101332        }
    13111333    }
     1334
    13121335    }
    13131336    close(FOUT);
  • main/trunk/greenstone2/common-src/cgi-bin/gsdlCGI.pm

    r31989 r36096  
    242242
    243243
    244 
     244# Note, this can only be called while we are still in the cgi directory, not after chdir to gsdl.
    245245sub get_config_info {
    246246    my $self = shift @_;
    247247    my ($infotype, $optional) = @_;
    248248
    249     my $site_filename = $self->{'site_filename'};
    250     open (FILEIN, "<$site_filename")
    251     || $self->generate_error("Could not open $site_filename");
    252 
    253     my $config_content = "";
    254     while(defined (my $line = <FILEIN>)) {
    255     $config_content .= $line;
    256     }
    257     close(FILEIN);
    258 
    259     my ($loc) = ($config_content =~ m/^$infotype\s+((\".+\")|(\S+))\s*\n/m);
     249    if (! defined $self->{'config_file_content'}) {
     250    my $site_filename = $self->{'site_filename'};
     251    open (FILEIN, "<$site_filename")
     252        || $self->generate_error("Could not open $site_filename, to read $infotype");
     253   
     254    my $config_content = "";
     255    while(defined (my $line = <FILEIN>)) {
     256        $config_content .= $line;
     257    }
     258    close(FILEIN);
     259    $self->{'config_file_content'} = $config_content;
     260    }
     261   
     262#    my ($loc) = ($config_content =~ m/^$infotype\s+((\".+\")|(\S+))\s*\n/m);
     263     my ($loc) = ($self->{'config_file_content'} =~ m/^$infotype\s+((\".+\")|(\S+))\s*\n/m);
    260264    $loc =~ s/\"//g if defined $loc;
    261265
    262266    if ((!defined $loc) || ($loc =~ m/^\s*$/)) {
    263267    if((!defined $optional) || (!$optional)) {
    264         $self->generate_error("$infotype is not set in $site_filename");
     268        $self->generate_error("$infotype is not set in $self->{'site_filename'}");
    265269    }
    266270    }
     
    400404}
    401405
     406sub get_default_servlet {
     407    my $self = shift @_;
     408
     409    if (defined $self->{'default_servlet'} ){
     410    return $self->{'default_servlet'};
     411    }
     412
     413    my $optional = 1; # allows for absence of the field
     414    $self->{'default_servlet'} = $self->get_config_info("defaultservlet", $optional);
     415    if (!defined $self->{'default_servlet'}) # there was no config param
     416    {
     417    $self->{'default_servlet'} = ""; # so we don't need to look it up from the file next time
     418    }
     419    return $self->{'default_servlet'};
     420}
    402421sub setup_fedora_homes {
    403422    my $self = shift @_;
     
    517536    }
    518537    $ENV{'GSDL3HOME'} = $gsdl3home;
     538
    519539    }
    520540   
Note: See TracChangeset for help on using the changeset viewer.