Ignore:
Timestamp:
2019-06-27T12:50:54+12:00 (5 years ago)
Author:
kjdon
Message:

moved the assoc file security code into its own function. now can add hmvf=0 to an assoc file link to force showing the t&c page. for testing purposes

File:
1 edited

Legend:

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

    r33212 r33241  
    7777  protected static final String SYSTEM_SUBACTION_DEACTIVATE = "deactivate";
    7878
    79   // if we are showing terms and conditions to user, this remembers who has accepted already
     79  // if we are showing terms and conditions to user, this remembers who has
     80  // accepted already
    8081  protected Hashtable<String, UserTimer> verifiedUserMap = null;
    8182  protected static final int verifiedUserTimeout = 24 * 60 * 60 * 1000;
     
    103104    HttpServletRequest hRequest = ((HttpServletRequest) request);
    104105    HttpSession hSession = hRequest.getSession();
    105     String session_id = hSession.getId();
    106106    ServletContext context = hSession.getServletContext();
    107107   
     
    116116      return;
    117117    }
    118     logger.error("in do Filter: "+url);
    119 
     118 
    120119    // Run security checks on files requested from a collection's index/assoc folder
    121120    if (url.contains(ASSOCIATED_FILE_PATH)) {
     121      // we need to do security checking here in case the documents are private
     122      // or if there is a terms and conditions page to be shown.
     123      // Also, assoc files urls now contain the library name in them.
     124      // e.g. greenstone3/library/sites/localsite/collect/collname/index/assoc/Hashxxx/doc.pdf
     125      // so they are not a true link to a file. We remove the
     126      // 'library' then forward the request to the new url.
     127      securityCheckAssocFiles(url, hRequest, response);
     128      return;
     129    }
     130
     131    // if we are asking for an interface file, and it doesn't exist, then
     132    // try loading up the interfaceConfig file to find out what the base
     133    // interface was, then try looking in that interface for the file.
     134    if (url.contains(INTERFACE_PATH))
     135      {             
     136    String fileURL = url.replaceFirst(context.getContextPath(), "");
     137    File requestedFile = new File(context.getRealPath(fileURL));
     138
     139    if (!requestedFile.exists()) {
     140      String baseURL = getFileInBaseInterface(fileURL, context);
     141      if (baseURL != null) {
     142        File baseInterfaceFile = new File(context.getRealPath(baseURL));
     143        if (baseInterfaceFile.exists()) {
     144          request.getRequestDispatcher(baseURL).forward(request, response);
     145          // ServletOutputStream out = response.getOutputStream();
     146          // out.write(FileUtils.readFileToByteArray(baseInterfaceFile));
     147          // out.flush();
     148          // out.close();
     149          return;
     150        }
     151      }
     152    }
     153      }
     154    else
     155      {
     156    ArrayList<String> keywords = new ArrayList<String>();
     157    keywords.add(PAGE_PATH);
     158    keywords.add(BROWSE_PATH);
     159    keywords.add(SEARCH_PATH);
     160    keywords.add(DOCUMENT_PATH);
     161    //If we have a jsessionid on the end of our URL we want to ignore it
     162    int index;
     163    if ((index = url.indexOf(";jsessionid")) != -1)
     164      {
     165        url = url.substring(0, index);
     166      }
     167    String[] segments = url.split("/");
     168    for (int i = 0; i < segments.length; i++)
     169      {
     170        String[] additionalParameters = null;
     171        String[] defaultParamValues = null;
     172        //COLLECTION
     173        if (segments[i].equals(COLLECTION_PATH) && (i + 1) < segments.length) {
     174          int j=i+1;
     175          while(j+1 < segments.length && !keywords.contains(segments[j+1])) {
     176        j++;
     177          }
     178                     
     179          if (j>i+1) {
     180        // we had a group part
     181        String [] groups = Arrays.copyOfRange(segments, i+1, j);
     182        String group = StringUtils.join(groups, "/");
     183        gRequest.setParameter(GSParams.GROUP, group);
     184          }
     185          gRequest.setParameter(GSParams.COLLECTION, segments[j]);
     186        }
     187        // GROUP
     188        else if(segments[i].equals(GROUP_PATH) && (i + 1) < segments.length)
     189          {
     190        // assume for now, no other path parts for group links
     191        int j= segments.length - 1;
     192        String group;
     193        if (j==i+1) {
     194          group = segments[j];
     195        } else {
     196          String [] groups = Arrays.copyOfRange(segments, i+1, j+1);
     197          group = StringUtils.join(groups, "/");
     198        }
     199        gRequest.setParameter(GSParams.GROUP, group);
     200        gRequest.setParameter(GSParams.ACTION, "p");
     201        gRequest.setParameter(GSParams.SUBACTION, "home");
     202                       
     203          }
     204        //DOCUMENT
     205        else if (segments[i].equals(DOCUMENT_PATH) && (i + 1) < segments.length)
     206          {
     207        gRequest.setParameter(GSParams.DOCUMENT, segments[i + 1]);
     208                       
     209        additionalParameters = new String[] { GSParams.ACTION };
     210        defaultParamValues = new String[] { "d" };
     211        if ((i+2) < segments.length && segments[i+2].equals("print")) {
     212          gRequest.setParameter(GSParams.SUBACTION, "print");
     213          gRequest.setParameter("ed", "1");
     214                         
     215        }
     216                   
     217          }
     218        //PAGE
     219        else if (segments[i].equals(PAGE_PATH) && (i + 1) < segments.length)
     220          {
     221        gRequest.setParameter(GSParams.SUBACTION, segments[i + 1]);
     222
     223        additionalParameters = new String[] { GSParams.ACTION };
     224        defaultParamValues = new String[] { "p" };
     225          }
     226        //SYSTEM
     227        else if (segments[i].equals(SYSTEM_PATH) && (i + 1) < segments.length)
     228          {
     229        String sa = segments[i + 1];
     230        if (sa.equals(SYSTEM_SUBACTION_CONFIGURE) || sa.equals(SYSTEM_SUBACTION_RECONFIGURE))
     231          {
     232            sa = "c";
     233          }
     234        else if (sa.equals(SYSTEM_SUBACTION_ACTIVATE))
     235          {
     236            sa = "a";
     237          }
     238        else if (sa.equals(SYSTEM_SUBACTION_DEACTIVATE))
     239          {
     240            sa = "d";
     241          }
     242
     243        if (sa.equals("c") && (i + 2) < segments.length)
     244          {
     245            gRequest.setParameter(GSParams.SYSTEM_CLUSTER, segments[i + 2]);
     246          }
     247
     248        if (sa.equals("a") && (i + 2) < segments.length)
     249          {
     250            gRequest.setParameter(GSParams.SYSTEM_MODULE_TYPE, "collection");
     251            gRequest.setParameter(GSParams.SYSTEM_MODULE_NAME, segments[i + 2]);
     252          }
     253
     254        if (sa.equals("d") && (i + 2) < segments.length)
     255          {
     256            gRequest.setParameter(GSParams.SYSTEM_CLUSTER, segments[i + 2]);
     257          }
     258
     259        gRequest.setParameter(GSParams.SUBACTION, sa);
     260
     261        additionalParameters = new String[] { GSParams.ACTION };
     262        defaultParamValues = new String[] { "s" };
     263          }
     264        //ADMIN
     265        else if (segments[i].equals("admin") && (i + 1) < segments.length)
     266          {
     267        String pageName = segments[i + 1];
     268
     269        gRequest.setParameter("s1.authpage", pageName);
     270
     271        additionalParameters = new String[] { GSParams.ACTION, GSParams.REQUEST_TYPE, GSParams.SUBACTION, GSParams.SERVICE };
     272        defaultParamValues = new String[] { "g", "r", "authen", "Authentication" };
     273          }
     274        //BROWSE
     275        else if (segments[i].equals(BROWSE_PATH) && (i + 1) < segments.length)
     276          {
     277        String cl = "";
     278        for (int j = 1; (i + j) < segments.length; j++)
     279          {
     280            String currentSegment = segments[i + j].replace("CL", "").replace("cl", "");
     281            if (currentSegment.contains("."))
     282              {
     283            String[] subsegments = currentSegment.split("\\.");
     284            for (String subsegment : subsegments)
     285              {
     286                subsegment = subsegment.replace("CL", "").replace("cl", "");
     287
     288                if (cl.length() > 0)
     289                  {
     290                cl += ".";
     291                  }
     292
     293                if (subsegment.length() > 0)
     294                  {
     295                cl += subsegment;
     296                  }
     297              }
     298            continue;
     299              }
     300            if (!currentSegment.matches("^(CL|cl)?\\d+$"))
     301              {
     302            continue;
     303              }
     304
     305            if (cl.length() > 0)
     306              {
     307            cl += ".";
     308              }
     309
     310            cl += currentSegment;
     311          }
     312
     313        gRequest.setParameter("cl", "CL" + cl);
     314
     315        additionalParameters = new String[] { GSParams.ACTION, GSParams.REQUEST_TYPE, GSParams.SERVICE };
     316        defaultParamValues = new String[] { "b", "s", "ClassifierBrowse" };
     317          }
     318        //QUERY
     319        else if (segments[i].equals(SEARCH_PATH))
     320          {
     321        String serviceName = "";
     322        if ((i + 1) < segments.length)
     323          {
     324            serviceName = segments[i + 1];
     325            gRequest.setParameter("s", serviceName);
     326
     327            additionalParameters = new String[] { GSParams.ACTION, GSParams.SUBACTION, GSParams.REQUEST_TYPE };
     328            defaultParamValues = new String[] { "q", "", "d" };
     329          }
     330        if ((i + 2) < segments.length)
     331          {
     332            if (serviceName.equals("TextQuery") || serviceName.equals("RawQuery"))
     333              {
     334
     335            gRequest.setParameter("s1.query", segments[i + 2]);
     336              }
     337            else if (serviceName.equals("FieldQuery"))
     338              {
     339            gRequest.setParameter("s1.fqv", segments[i + 2]);
     340              }
     341            else if (serviceName.equals("AdvancedFieldQuery"))
     342              {
     343            gRequest.setParameter("s1.fqv", segments[i + 2]);
     344              }
     345          }
     346          }
     347        if (additionalParameters != null)
     348          {
     349        for (int j = 0; j < additionalParameters.length; j++)
     350          {
     351            if (gRequest.getParameter(additionalParameters[j]) == null)
     352              {
     353            gRequest.setParameter(additionalParameters[j], defaultParamValues[j]);
     354              }
     355          }
     356          }
     357      }
     358      }
     359
     360    chain.doFilter(gRequest, response);
     361  }
     362
     363  private boolean isURLRestricted(String url)
     364  {
     365    for (String restrictedURL : _restrictedURLs)
     366      {
     367    if (url.matches(".*" + restrictedURL + ".*"))
     368      {
     369        return true;
     370      }
     371      }
     372
     373    return false;
     374  }
     375
     376  private String getFileInBaseInterface(String fileURL, ServletContext context) {
     377    int interfaceNameStart = fileURL.indexOf(INTERFACE_PATH) + INTERFACE_PATH.length();
     378    int interfaceNameEnd = fileURL.indexOf("/", interfaceNameStart);
     379    String interfaceName = fileURL.substring(interfaceNameStart, interfaceNameEnd);
     380    String interfacesDir = fileURL.substring(0, interfaceNameStart);
     381    File interfaceConfigFile = new File(context.getRealPath(interfacesDir + interfaceName + "/interfaceConfig.xml"));
     382   
     383    if (interfaceConfigFile.exists()) {
    122384     
    123     // now we need to get library name from the path, which is like
     385      Document interfaceConfigDoc = XMLConverter.getDOM(interfaceConfigFile);
     386     
     387      String baseInterface = interfaceConfigDoc.getDocumentElement().getAttribute("baseInterface");
     388      if (baseInterface.length() > 0)
     389    {
     390      return fileURL.replace("/" + interfaceName + "/", "/" + baseInterface + "/");
     391    }
     392    }
     393      return null;
     394  }
     395     
     396
     397  private void securityCheckAssocFiles(String url, HttpServletRequest request, ServletResponse response) throws IOException, ServletException {
     398    HttpSession session = request.getSession();
     399    String session_id = session.getId();
     400    ServletContext context = session.getServletContext();
     401
     402        // now we need to get library name from the path, which is like
    124403    // /greenstone3/library/sites/localsite/collect/collname/index/assoc/...
    125404    String library_name = url.replaceFirst(context.getContextPath(), "");
     
    255534    // if got here have no groups that we need to belong to
    256535    // do we have human verify thing?
    257     if (verifiable_file) {
    258       // we are asking for the main document - lets check human verify
     536    if (verifiable_file && !securityResponse.getAttribute(GSXML.VERIFY_ATT).equals("") ) {
     537      // we are asking for the main document, and we have been asked to verify the user
    259538      logger.error("KATH verifiable file is true");
    260       if (!securityResponse.getAttribute(GSXML.VERIFY_ATT).equals("")) {
    261         // have we done the test previously?
    262         boolean already_verified = false;
     539     
     540      // have we done the test previously?
     541      boolean already_verified = false;
     542      String hmvf_response = request.getParameter(GSParams.VERIFIED);
     543      if (hmvf_response != null && hmvf_response.equals("0")) {
     544        // force the t&c
     545      } else {
    263546        if (verifiedUserMap == null) {
    264547          // we haven't done this at all, set up the map
     
    272555        }
    273556        logger.error("KATH already verified = "+already_verified);
    274 
     557         
    275558        if (!already_verified) {
    276559          // have we just  done the test?
    277           String hmvf_response = gRequest.getParameter(GSParams.VERIFIED);
     560          //String hmvf_response = request.getParameter(GSParams.VERIFIED);
    278561          // hmvf param will be set by form if the verify page was submitted
    279562          if (hmvf_response != null && hmvf_response.equals("1")) {
    280563        logger.error("user has submitted the form, check recaptcha response");
    281564        if (!securityResponse.getAttribute(GSXML.SITE_KEY_ATT).equals("")) {
    282           String recaptcha_response = gRequest.getParameter(Authentication.RECAPTCHA_RESPONSE_PARAM);
     565          String recaptcha_response = request.getParameter(Authentication.RECAPTCHA_RESPONSE_PARAM);
    283566          String secret_key = securityResponse.getAttribute(GSXML.SECRET_KEY_ATT);
    284567          int result = Authentication.verifyRecaptcha(secret_key, recaptcha_response);
     
    286569          if (result == Authentication.NO_ERROR) {
    287570            logger.error("RECAPTCHA SUCCESS, hopefully going to the document");
    288 
     571            already_verified = true;
    289572           
    290573          } else {
     
    294577            String new_url = context.getContextPath()+"/"+ library_name+"?a=p&sa=error&c="+collection+"&ec=recap_fail";             
    295578            ((HttpServletResponse)response).sendRedirect(new_url);
    296                        
     579           
    297580            return;
    298581          }
    299 
    300           // store the fact that user has verified
    301           UserTimer timer = new UserTimer(verifiedUserTimeout, session_id);
    302           verifiedUserMap.put(session_id, timer);
    303           timer.start();
     582           
     583           
    304584         
    305585        }
    306                        
    307           } else {
    308         // hmvf param is not set - we haven't shown them the form yet
    309         // we need to display the verify page
    310         logger.error("KATH display verify page");
    311         //String new_url = context.getContextPath()+"/"+ context.getAttribute("LibraryName")+"?a=p&sa=verify&c="+collection+"&url="+url;
    312         String new_url = context.getContextPath()+"/"+ library_name+"?a=p&sa=verify&c="+collection+"&url="+url;             
    313         ((HttpServletResponse)response).sendRedirect(new_url);
    314         return;
    315           }
     586        already_verified = true;
     587        // store the fact that user has verified
     588        UserTimer timer = new UserTimer(verifiedUserTimeout, session_id);
     589        verifiedUserMap.put(session_id, timer);
     590        timer.start();
     591       
     592          } // hmvf = 1
    316593        }
    317       } // end if we are asked to verify it
    318     } // end if verifiable file
     594      }
     595      if (!already_verified) {
     596        // hmvf param is not set - we haven't shown them the form yet
     597        // or we have been asked to force the T&C
     598        // we need to display the verify page
     599        logger.error("KATH display verify page");
     600        //String new_url = context.getContextPath()+"/"+ context.getAttribute("LibraryName")+"?a=p&sa=verify&c="+collection+"&url="+url;
     601        String new_url = context.getContextPath()+"/"+ library_name+"?a=p&sa=verify&c="+collection+"&url="+url;             
     602        ((HttpServletResponse)response).sendRedirect(new_url);
     603        return;
     604      }
     605    } // end if verifiable file && need to verify
    319606   
    320607           
     
    330617
    331618    return;
    332     }
    333     else if (url.contains(INTERFACE_PATH))
    334       {             
    335     String fileURL = url.replaceFirst(context.getContextPath(), "");
    336     File requestedFile = new File(context.getRealPath(fileURL));
    337 
    338     if (!requestedFile.exists())
    339       {
    340         int interfaceNameStart = fileURL.indexOf(INTERFACE_PATH) + INTERFACE_PATH.length();
    341         int interfaceNameEnd = fileURL.indexOf("/", interfaceNameStart);
    342         String interfaceName = fileURL.substring(interfaceNameStart, interfaceNameEnd);
    343         String interfacesDir = fileURL.substring(0, interfaceNameStart);
    344         File interfaceConfigFile = new File(context.getRealPath(interfacesDir + interfaceName + "/interfaceConfig.xml"));
    345 
    346         if (interfaceConfigFile.exists())
    347           {
    348         Document interfaceConfigDoc = XMLConverter.getDOM(interfaceConfigFile);
    349 
    350         String baseInterface = interfaceConfigDoc.getDocumentElement().getAttribute("baseInterface");
    351         if (baseInterface.length() > 0)
    352           {
    353             File baseInterfaceFile = new File(context.getRealPath(fileURL.replace("/" + interfaceName + "/", "/" + baseInterface + "/")));
    354             if (baseInterfaceFile.exists())
    355               {
    356             ServletOutputStream out = response.getOutputStream();
    357             out.write(FileUtils.readFileToByteArray(baseInterfaceFile));
    358             out.flush();
    359             out.close();
    360             return;
    361               }
    362           }
    363           }
    364       }
    365       }
    366     else
    367       {
    368     ArrayList<String> keywords = new ArrayList<String>();
    369     keywords.add(PAGE_PATH);
    370     keywords.add(BROWSE_PATH);
    371     keywords.add(SEARCH_PATH);
    372     keywords.add(DOCUMENT_PATH);
    373     //If we have a jsessionid on the end of our URL we want to ignore it
    374     int index;
    375     if ((index = url.indexOf(";jsessionid")) != -1)
    376       {
    377         url = url.substring(0, index);
    378       }
    379     String[] segments = url.split("/");
    380     for (int i = 0; i < segments.length; i++)
    381       {
    382         String[] additionalParameters = null;
    383         String[] defaultParamValues = null;
    384         //COLLECTION
    385         if (segments[i].equals(COLLECTION_PATH) && (i + 1) < segments.length) {
    386           int j=i+1;
    387           while(j+1 < segments.length && !keywords.contains(segments[j+1])) {
    388         j++;
    389           }
    390                      
    391           if (j>i+1) {
    392         // we had a group part
    393         String [] groups = Arrays.copyOfRange(segments, i+1, j);
    394         String group = StringUtils.join(groups, "/");
    395         gRequest.setParameter(GSParams.GROUP, group);
    396           }
    397           gRequest.setParameter(GSParams.COLLECTION, segments[j]);
    398         }
    399         // GROUP
    400         else if(segments[i].equals(GROUP_PATH) && (i + 1) < segments.length)
    401           {
    402         // assume for now, no other path parts for group links
    403         int j= segments.length - 1;
    404         String group;
    405         if (j==i+1) {
    406           group = segments[j];
    407         } else {
    408           String [] groups = Arrays.copyOfRange(segments, i+1, j+1);
    409           group = StringUtils.join(groups, "/");
    410         }
    411         gRequest.setParameter(GSParams.GROUP, group);
    412         gRequest.setParameter(GSParams.ACTION, "p");
    413         gRequest.setParameter(GSParams.SUBACTION, "home");
    414                        
    415           }
    416         //DOCUMENT
    417         else if (segments[i].equals(DOCUMENT_PATH) && (i + 1) < segments.length)
    418           {
    419         gRequest.setParameter(GSParams.DOCUMENT, segments[i + 1]);
    420                        
    421         additionalParameters = new String[] { GSParams.ACTION };
    422         defaultParamValues = new String[] { "d" };
    423         if ((i+2) < segments.length && segments[i+2].equals("print")) {
    424           gRequest.setParameter(GSParams.SUBACTION, "print");
    425           gRequest.setParameter("ed", "1");
    426                          
    427         }
    428                    
    429           }
    430         //PAGE
    431         else if (segments[i].equals(PAGE_PATH) && (i + 1) < segments.length)
    432           {
    433         gRequest.setParameter(GSParams.SUBACTION, segments[i + 1]);
    434 
    435         additionalParameters = new String[] { GSParams.ACTION };
    436         defaultParamValues = new String[] { "p" };
    437           }
    438         //SYSTEM
    439         else if (segments[i].equals(SYSTEM_PATH) && (i + 1) < segments.length)
    440           {
    441         String sa = segments[i + 1];
    442         if (sa.equals(SYSTEM_SUBACTION_CONFIGURE) || sa.equals(SYSTEM_SUBACTION_RECONFIGURE))
    443           {
    444             sa = "c";
    445           }
    446         else if (sa.equals(SYSTEM_SUBACTION_ACTIVATE))
    447           {
    448             sa = "a";
    449           }
    450         else if (sa.equals(SYSTEM_SUBACTION_DEACTIVATE))
    451           {
    452             sa = "d";
    453           }
    454 
    455         if (sa.equals("c") && (i + 2) < segments.length)
    456           {
    457             gRequest.setParameter(GSParams.SYSTEM_CLUSTER, segments[i + 2]);
    458           }
    459 
    460         if (sa.equals("a") && (i + 2) < segments.length)
    461           {
    462             gRequest.setParameter(GSParams.SYSTEM_MODULE_TYPE, "collection");
    463             gRequest.setParameter(GSParams.SYSTEM_MODULE_NAME, segments[i + 2]);
    464           }
    465 
    466         if (sa.equals("d") && (i + 2) < segments.length)
    467           {
    468             gRequest.setParameter(GSParams.SYSTEM_CLUSTER, segments[i + 2]);
    469           }
    470 
    471         gRequest.setParameter(GSParams.SUBACTION, sa);
    472 
    473         additionalParameters = new String[] { GSParams.ACTION };
    474         defaultParamValues = new String[] { "s" };
    475           }
    476         //ADMIN
    477         else if (segments[i].equals("admin") && (i + 1) < segments.length)
    478           {
    479         String pageName = segments[i + 1];
    480 
    481         gRequest.setParameter("s1.authpage", pageName);
    482 
    483         additionalParameters = new String[] { GSParams.ACTION, GSParams.REQUEST_TYPE, GSParams.SUBACTION, GSParams.SERVICE };
    484         defaultParamValues = new String[] { "g", "r", "authen", "Authentication" };
    485           }
    486         //BROWSE
    487         else if (segments[i].equals(BROWSE_PATH) && (i + 1) < segments.length)
    488           {
    489         String cl = "";
    490         for (int j = 1; (i + j) < segments.length; j++)
    491           {
    492             String currentSegment = segments[i + j].replace("CL", "").replace("cl", "");
    493             if (currentSegment.contains("."))
    494               {
    495             String[] subsegments = currentSegment.split("\\.");
    496             for (String subsegment : subsegments)
    497               {
    498                 subsegment = subsegment.replace("CL", "").replace("cl", "");
    499 
    500                 if (cl.length() > 0)
    501                   {
    502                 cl += ".";
    503                   }
    504 
    505                 if (subsegment.length() > 0)
    506                   {
    507                 cl += subsegment;
    508                   }
    509               }
    510             continue;
    511               }
    512             if (!currentSegment.matches("^(CL|cl)?\\d+$"))
    513               {
    514             continue;
    515               }
    516 
    517             if (cl.length() > 0)
    518               {
    519             cl += ".";
    520               }
    521 
    522             cl += currentSegment;
    523           }
    524 
    525         gRequest.setParameter("cl", "CL" + cl);
    526 
    527         additionalParameters = new String[] { GSParams.ACTION, GSParams.REQUEST_TYPE, GSParams.SERVICE };
    528         defaultParamValues = new String[] { "b", "s", "ClassifierBrowse" };
    529           }
    530         //QUERY
    531         else if (segments[i].equals(SEARCH_PATH))
    532           {
    533         String serviceName = "";
    534         if ((i + 1) < segments.length)
    535           {
    536             serviceName = segments[i + 1];
    537             gRequest.setParameter("s", serviceName);
    538 
    539             additionalParameters = new String[] { GSParams.ACTION, GSParams.SUBACTION, GSParams.REQUEST_TYPE };
    540             defaultParamValues = new String[] { "q", "", "d" };
    541           }
    542         if ((i + 2) < segments.length)
    543           {
    544             if (serviceName.equals("TextQuery") || serviceName.equals("RawQuery"))
    545               {
    546 
    547             gRequest.setParameter("s1.query", segments[i + 2]);
    548               }
    549             else if (serviceName.equals("FieldQuery"))
    550               {
    551             gRequest.setParameter("s1.fqv", segments[i + 2]);
    552               }
    553             else if (serviceName.equals("AdvancedFieldQuery"))
    554               {
    555             gRequest.setParameter("s1.fqv", segments[i + 2]);
    556               }
    557           }
    558           }
    559         if (additionalParameters != null)
    560           {
    561         for (int j = 0; j < additionalParameters.length; j++)
    562           {
    563             if (gRequest.getParameter(additionalParameters[j]) == null)
    564               {
    565             gRequest.setParameter(additionalParameters[j], defaultParamValues[j]);
    566               }
    567           }
    568           }
    569       }
    570       }
    571 
    572     chain.doFilter(gRequest, response);
    573   }
    574 
    575   private boolean isURLRestricted(String url)
    576   {
    577     for (String restrictedURL : _restrictedURLs)
    578       {
    579     if (url.matches(".*" + restrictedURL + ".*"))
    580       {
    581         return true;
    582       }
    583       }
    584 
    585     return false;
    586   }
     619  }
     620
     621
     622
    587623
    588624  private String queryMRforDOCID(MessageRouter gsRouter, String collection, String assocfiledir) {
Note: See TracChangeset for help on using the changeset viewer.