Changeset 31864 for main/trunk

Show
Ignore:
Timestamp:
09.08.2017 20:24:33 (2 years ago)
Author:
ak19
Message:

1. Modified GLI and perl to set proxy_on, proxy_host and proxy_port for unix too, whereas in the past, only http(s)_proxy ENV vars were set by GLI for unix. If the env vars are not set, then perl assumes it's the wget setup for windows and passes the proxy vars that were set by GLI as flags to wget. If the env vars were set, then perl should run wget without setting the proxy vars as flags to wget, and wget will use the proxying info in the environment. So now, the decision as to whether proxy vars are set or not will result in context specific suggestion messages to the user when the Server Info button was pressed and if the URL could not be accessed for whatever reason. 2. Modified GLI code to not use proxy if proxying is toggled off, but use proxy when it's toggled back on. (Previously, if proxying was set at any point during a GLI session, then GLI remembered that even when proxying was turned off thereafter.)

Location:
main/trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/gli/src/org/greenstone/gatherer/gui/DownloadPane.java

    r31860 r31864  
    766766 
    767767        if(user_pass.indexOf("@") != -1) { 
    768              
    769         // Write the use proxy command - we don't do this anymore, instead we set environment variables - hopefully these can't be spied on like the following can (using ps) - actually the environment stuff didn't work for windows, so lets go back to this 
    770         if (Utility.isWindows()) { 
    771             
     768        
    772769           arg.setValue("true"); // proxy_on argument 
    773770           arg.setAssigned(true); 
     
    780777           arg.setValue(proxy_port); 
    781778           arg.setAssigned(true); 
     779 
     780         
     781        // Write the use proxy command - we don't do this anymore, instead we set environment variables - hopefully these can't be spied on like the following can (using ps) - actually the environment stuff didn't work for windows, so lets go back to this 
     782        if (Utility.isWindows()) { 
    782783         
    783784           arg = current_download.getArgument("user_name"); 
     
    799800        } 
    800801        else{ 
     802        // unset proxy_on argument 
     803        arg = current_download.getArgument("proxy_on"); 
     804        arg.setValue("false");  
     805        arg.setAssigned(false); 
    801806        return false; 
    802807        } 
    803808 
     809    } else { 
     810        // unset proxy_on argument 
     811        arg = current_download.getArgument("proxy_on"); 
     812        arg.setValue("false");  
     813        arg.setAssigned(false); 
    804814    } 
    805815     
     
    830840        String str_url = ""; 
    831841        if( arg_url!= null && arg_url.isAssigned()) { 
    832         str_url = arg_url.getValue(); 
     842        str_url = arg_url.getValue();        
     843        /* 
     844        String redirected_url = getRedirectURL(str_url); // work out the real URL 
     845        if(!str_url.equals(redirected_url)) { 
     846            arg_url.setValue(redirected_url); 
     847        } 
     848        */ 
    833849        } 
    834850 
     
    842858        no_check_cert_arg.setAssigned(false); // only assigned Arguments have values 
    843859        } 
    844          
    845          
    846         //str_url = getRedirectURL(str_url); // work out the real URL 
    847860 
    848861        server_info = new ServerInfoDialog(str_url ,proxy_url, mode,(Download)download_map.get(mode)); 
  • main/trunk/greenstone2/perllib/downloaders/WebDownload.pm

    r31861 r31864  
    4040use strict; # every perl program should have this! 
    4141no strict 'refs'; # make an exception so we can use variables as filehandles 
    42 no strict 'subs'; 
     42no strict 'subs'; # to pass STDERR/STDOUT to functions 
     43 
    4344use gsprintf 'gsprintf'; 
    4445 
     
    192193    my $strBaseCMD = $strOptions." --tries=2 -q -O - \"$self->{'url'}\""; 
    193194 
    194     #print STDOUT "\n@@@@ GETTING server_info with WGET CMD: $strBaseCMD\n\n"; 
    195      
    196195    my $strIdentifyText = $self->useWget($strBaseCMD); 
    197196     
     
    200199    print STDERR "Server information is unavailable.\n"; 
    201200 
     201    #&util::print_env(STDERR, "https_proxy", "http_proxy"); 
     202     
    202203    if ($self->{'proxy_on'} && $self->{'proxy_host'} && $self->{'proxy_port'}) { # if proxying set, the settings may be wrong 
    203204        &gsprintf::gsprintf_multiline(STDERR, "{WebDownload.proxied_connect_failed_info}\n", $self->{'proxy_host'}, $self->{'proxy_port'}); 
  • main/trunk/greenstone2/perllib/downloaders/WgetDownload.pm

    r31860 r31864  
    169169    my ($self) = @_; 
    170170    my $strOptions = ""; 
    171      
    172     if ($self->{'proxy_on'} && $self->{'proxy_host'} && $self->{'proxy_port'}) 
    173     { 
    174  
    175     if($self->{'url'} =~ m/^https\:/) { 
     171 
     172    # If http_proxy ENV VARS are not set, but proxy Perl vars are set, then we're on Windows 
     173    # and need to use the proxy vars as flags to wget 
     174    # If http_proxy Env Vars are set, then we're on Linux, wget will use the http(s) proxy 
     175    # env vars and we shouldn't be passing any proxy perl vars as flags 
     176     
     177    # Truth in Perl: https://home.ubalt.edu/abento/452/perl/perltruth.html 
     178    # http://www.perlmonks.org/?node=what%20is%20true%20and%20false%20in%20Perl%3F 
     179     
     180    if (!$ENV{'http_proxy'} && !$ENV{'https_proxy'}) { 
     181    if ($self->{'proxy_on'} && $self->{'proxy_host'} && $self->{'proxy_port'}) 
     182    { 
     183         
     184        if($self->{'url'} =~ m/^https\:/) { 
    176185        $strOptions .= " -e https_proxy=$self->{'proxy_host'}:$self->{'proxy_port'} ";   
    177     } else { 
     186        } else { 
    178187        $strOptions .= " -e http_proxy=$self->{'proxy_host'}:$self->{'proxy_port'} "; 
    179     }    
    180  
    181     if ($self->{'user_name'} && $self->{'user_password'}) 
    182     { 
    183         $strOptions .= "--proxy-user=$self->{'user_name'}"." --proxy-passwd=$self->{'user_password'}"; 
    184     } 
    185     } 
    186  
    187     if ($self->{'proxy_on'}) { 
    188     $strOptions .= " --proxy "; 
    189     } 
    190  
    191     if($self->{'no_check_certificate'}) { #&& $self->{'url'} =~ m/^https\:/) { # URL may be http that gets redirected to https 
    192      
     188        }    
     189         
     190        if ($self->{'user_name'} && $self->{'user_password'}) 
     191        { 
     192        $strOptions .= "--proxy-user=$self->{'user_name'}"." --proxy-passwd=$self->{'user_password'}"; 
     193        } 
     194    } 
     195 
     196    if ($self->{'proxy_on'}) { 
     197        $strOptions .= " --proxy "; 
     198    } 
     199    } 
     200 
     201    if($self->{'no_check_certificate'}) { #&& $self->{'url'} =~ m/^https\:/) { # URL may be http that gets redirected to https, so if no_check_certificate is on, turn it on even if URL is http 
     202 
    193203    $strOptions .= " --no-check-certificate "; 
    194204    } 
     
    259269    my $wget_file_path = &FileUtils::filenameConcatenate($ENV{'GSDLHOME'}, "bin", $ENV{'GSDLOS'}, "wget"); 
    260270    $command = "\"$wget_file_path\" $cmdWget"; 
    261     #print STDOUT "Command is: $command\n"; 
    262  
     271    #print STDOUT "Command is: $command\n"; # displayed in GLI output 
     272    #print STDERR "Command is: $command\n"; # goes into ServerInfoDialog 
     273     
    263274    # Wget's output needs to be monitored to find out when it has naturally terminated. 
    264275    # Wget's output is sent to its STDERR so we can't use open2 without doing 2>&1.