Ignore:
Timestamp:
2012-04-12T13:56:09+12:00 (12 years ago)
Author:
sjm84
Message:

Several fixes for the URL filter

File:
1 edited

Legend:

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

    r25309 r25350  
    2828    private FilterConfig _filterConfig = null;
    2929    private static Logger _logger = Logger.getLogger(org.greenstone.gsdl3.core.URLFilter.class.getName());
    30    
     30
    3131    //Restricted URLs
    3232    protected static final String SITECONFIG_URL = "sites/[^/]+/siteConfig.xml";
     
    5858
    5959            String url = hRequest.getRequestURI().toString();
    60            
    61             if(isURLRestricted(url))
     60
     61            if (isURLRestricted(url))
    6262            {
    6363                response.getWriter().println("Access to this page is forbidden.");
    6464                return;
    6565            }
    66            
     66
    6767            if (url.contains("/index/assoc/"))
    6868            {
     
    135135
    136136                Element metaResponse = (Element) gsRouter.process(metaMessage);
    137                 GSXML.printXMLNode(metaResponse, true);
    138                
     137
    139138                NodeList metadataList = metaResponse.getElementsByTagName(GSXML.METADATA_ELEM);
    140                 if(metadataList.getLength() == 0)
     139                if (metadataList.getLength() == 0)
    141140                {
    142141                    _logger.error("Could not find the document related to this url");
     
    144143                else
    145144                {
    146                     Element metadata = (Element)metadataList.item(0);
     145                    Element metadata = (Element) metadataList.item(0);
    147146                    String document = metadata.getTextContent();
    148                    
     147
    149148                    //Get the security info for this collection
    150149                    Element securityMessage = gsDoc.createElement(GSXML.MESSAGE_ELEM);
     
    158157                    Element securityResponse = (Element) GSXML.getChildByTagName(gsRouter.process(securityMessage), GSXML.RESPONSE_ELEM);
    159158                    ArrayList<String> groups = GSXML.getGroupsFromSecurityResponse(securityResponse);
    160                    
     159
    161160                    if (!groups.contains(""))
    162161                    {
     
    164163                        for (String group : groups)
    165164                        {
    166                             if (((HttpServletRequest)request).isUserInRole(group))
     165                            if (((HttpServletRequest) request).isUserInRole(group))
    167166                            {
    168167                                found = true;
     
    170169                            }
    171170                        }
    172                        
    173                         if(!found)
     171
     172                        if (!found)
    174173                        {
    175174                            return;
     
    196195                        gRequest.setParameter(GSParams.DOCUMENT, segments[i + 1]);
    197196
    198                         additionalParameters = new String[] { GSParams.ACTION, GSParams.DOCUMENT_TYPE, DocumentAction.EXPAND_DOCUMENT_ARG };
    199                         defaultParamValues = new String[] { "d", "hierarchy", "1" };
     197                        additionalParameters = new String[] { GSParams.ACTION, GSParams.DOCUMENT_TYPE };
     198                        defaultParamValues = new String[] { "d", "hierarchy" };
    200199                    }
    201200                    //PAGE
     
    213212
    214213                        gRequest.setParameter("s1.authpage", pageName);
    215                        
     214
    216215                        additionalParameters = new String[] { GSParams.ACTION, GSParams.REQUEST_TYPE, GSParams.SUBACTION, GSParams.SERVICE };
    217216                        defaultParamValues = new String[] { "g", "r", "authen", "Authentication" };
     
    306305        }
    307306    }
    308    
     307
    309308    private boolean isURLRestricted(String url)
    310309    {
    311         for(String restrictedURL : _restrictedURLs)
    312         {
    313             if(url.matches(".*" + restrictedURL + ".*"))
     310        for (String restrictedURL : _restrictedURLs)
     311        {
     312            if (url.matches(".*" + restrictedURL + ".*"))
    314313            {
    315314                return true;
     
    341340        public String getParameter(String paramName)
    342341        {
    343             if (_newParams.containsKey(paramName))
    344             {
    345                 return _newParams.get(paramName)[0];
     342            if (super.getParameter(paramName) != null)
     343            {
     344                return super.getParameter(paramName);
    346345            }
    347346            else
    348347            {
    349                 return super.getParameter(paramName);
     348                if (_newParams.get(paramName) != null && _newParams.get(paramName)[0] != null)
     349                {
     350                    return _newParams.get(paramName)[0];
     351                }
     352                return null;
    350353            }
    351354        }
     
    353356        public String[] getParameterValues(String paramName)
    354357        {
    355             if (_newParams.containsKey(paramName))
     358            if (super.getParameterValues(paramName) != null)
     359            {
     360                return super.getParameterValues(paramName);
     361            }
     362            else
    356363            {
    357364                return _newParams.get(paramName);
    358             }
    359             else
    360             {
    361                 return super.getParameterValues(paramName);
    362365            }
    363366        }
Note: See TracChangeset for help on using the changeset viewer.