Changeset 32988

Show
Ignore:
Timestamp:
05.04.2019 14:52:41 (6 months ago)
Author:
kjdon
Message:

1. added code to match document/HASHxxx/print - goes to a=d&sa=print, for a print version of the doc. 2. added code for humanverify. if humanverify is set for a colleciton, then any links to source docs (and currently any assocfiles - need to fix that) will go via a verify page, where user has to accvept terms and conditions and do a recaptcha

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/core/URLFilter.java

    r32657 r32988  
    1919import javax.servlet.http.HttpServletRequest; 
    2020import javax.servlet.http.HttpServletRequestWrapper; 
     21import javax.servlet.http.HttpServletResponse; 
    2122 
    2223import org.apache.commons.io.FileUtils; 
     
    2829import org.greenstone.gsdl3.util.UserContext; 
    2930import org.greenstone.gsdl3.util.XMLConverter; 
     31import org.greenstone.gsdl3.service.Authentication; 
    3032import org.w3c.dom.Document; 
    3133import org.w3c.dom.Element; 
     
    5254    protected static final String DOCUMENT_PATH = "document"; 
    5355    protected static final String COLLECTION_PATH = "collection"; 
    54   protected static final String GROUP_PATH = "group"; 
     56        protected static final String GROUP_PATH = "group"; 
    5557    protected static final String PAGE_PATH = "page"; 
    5658    protected static final String SYSTEM_PATH = "system"; 
    57   protected static final String BROWSE_PATH = "browse"; 
    58   protected static final String SEARCH_PATH = "search"; 
     59        protected static final String BROWSE_PATH = "browse"; 
     60        protected static final String SEARCH_PATH = "search"; 
    5961 
    6062    protected static final String METADATA_RETRIEVAL_SERVICE = "DocumentMetadataRetrieve"; 
     
    187189                    Element securityResponse = (Element) GSXML.getChildByTagName(gsRouter.process(securityMessage), GSXML.RESPONSE_ELEM); 
    188190                    ArrayList<String> groups = GSXML.getGroupsFromSecurityResponse(securityResponse); 
     191                    _logger.debug("security response = "+XMLConverter.getPrettyString(securityResponse)); 
    189192 
    190193                    if (!groups.contains("")) 
     
    202205                        if (!found) 
    203206                        { 
     207                          // this just returns nothing to the browser - get no error or anything, just an empty document 
     208                          // can we return an error page?? 
     209                          String new_url = context.getContextPath()+"/"+ context.getAttribute("LibraryName")+"?a=p&sa=error&c="+collection+"&ec=wrong_group"; 
     210                          ((HttpServletResponse)response).sendRedirect(new_url); 
    204211                            return; 
    205212                        } 
     213                    } 
     214                    // if got here have no groups. 
     215                    // do we have human verify thing? 
     216                    boolean human_verify = false; 
     217                     
     218                    if (!securityResponse.getAttribute("humanVerify").equals("")) { 
     219                      // have we already done the test? 
     220                      String hmvf_response = gRequest.getParameter("hmvf"); 
     221                      // hmvf param will be set by form 
     222                      if (hmvf_response != null) { 
     223                        if (!securityResponse.getAttribute("siteKey").equals("")) { 
     224                          String recaptcha_response = gRequest.getParameter("g-recaptcha-response"); 
     225                          String secret_key = securityResponse.getAttribute("secretKey"); 
     226                          int result = Authentication.verifyRecaptcha(secret_key, recaptcha_response); 
     227                          _logger.debug("recaptcha result code = "+result); 
     228                          if (result == Authentication.NO_ERROR) { 
     229                        _logger.debug("RECAPTCHA SUCCESS, hopefully going to the document"); 
     230                         
     231                          } else { 
     232                        _logger.error("something went wrong with recaptcha, error="+result); 
     233                        _logger.error(Authentication.getErrorKey(result)); 
     234                        // display error page 
     235                        String new_url = context.getContextPath()+"/"+ context.getAttribute("LibraryName")+"?a=p&sa=error&c="+collection+"&ec=recap_fail"; 
     236                        ((HttpServletResponse)response).sendRedirect(new_url); 
     237                         
     238                        return; 
     239                          } 
     240                        } 
     241                         
     242                      } else { 
     243                        // hmvf param is not set - we haven't shown them the form yet 
     244                        // we need to display the verify page 
     245                        String new_url = context.getContextPath()+"/"+ context.getAttribute("LibraryName")+"?a=p&sa=verify&c="+collection+"&url="+url; 
     246                        ((HttpServletResponse)response).sendRedirect(new_url); 
     247                        return; 
     248                      } 
    206249                    } 
    207250                } 
     
    294337                    { 
    295338                        gRequest.setParameter(GSParams.DOCUMENT, segments[i + 1]); 
    296  
     339                         
    297340                        additionalParameters = new String[] { GSParams.ACTION }; 
    298341                        defaultParamValues = new String[] { "d" }; 
     342                        if ((i+2) < segments.length && segments[i+2].equals("print")) { 
     343                          gRequest.setParameter(GSParams.SUBACTION, "print"); 
     344                          gRequest.setParameter("ed", "1"); 
     345                           
     346                        } 
     347                     
    299348                    } 
    300349                    //PAGE