Package org.archive.cdxserver

Source Code of org.archive.cdxserver.BaseCDXServer

package org.archive.cdxserver;

import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.archive.cdxserver.auth.AllAccessAuth;
import org.archive.cdxserver.auth.AuthChecker;
import org.archive.cdxserver.auth.AuthToken;
import org.archive.url.UrlSurtRangeComputer;
import org.archive.url.WaybackURLKeyMaker;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Controller;

@Controller
public class BaseCDXServer implements InitializingBean {
 
  public final static String CDX_AUTH_TOKEN = "cdx_auth_token";

  protected String cookieAuthToken = CDX_AUTH_TOKEN;
 
  protected UrlSurtRangeComputer urlSurtRangeComputer;
  protected WaybackURLKeyMaker canonicalizer = null;
  protected AuthChecker authChecker;
  protected String ajaxAccessControl;
 
  protected boolean surtMode = false;

  public boolean isSurtMode() {
    return surtMode;
  }

  public void setSurtMode(boolean surtMode) {
    this.surtMode = surtMode;
  }
 
  public String getCookieAuthToken() {
    return cookieAuthToken;
  }

  public void setCookieAuthToken(String cookieAuthToken) {
    this.cookieAuthToken = cookieAuthToken;
  }

  @Override
  public void afterPropertiesSet() throws Exception {
    if (authChecker == null) {
      authChecker = new AllAccessAuth();
    }
   
    canonicalizer = new WaybackURLKeyMaker(surtMode);
    urlSurtRangeComputer = new UrlSurtRangeComputer(surtMode);
  }
 
  public String canonicalize(String url, boolean surt) throws UnsupportedEncodingException, URISyntaxException
  {
    if ((canonicalizer == null) || (url == null) || url.isEmpty()) {
      return url;
    }
   
    url = java.net.URLDecoder.decode(url, "UTF-8");
   
    if (surt) {
      return url;
    }
   
    int slashIndex = url.indexOf('/');
    // If true, assume this is already a SURT and skip
    if ((slashIndex > 0) && url.charAt(slashIndex - 1) == ')') {
      return url;
    }
           
    return canonicalizer.makeKey(url);
  }
 
  protected void prepareResponse(HttpServletResponse response)
  {
    response.setContentType("text/plain; charset=\"UTF-8\"");
  }
 
  protected void handleAjax(HttpServletRequest request, HttpServletResponse response)
  {
      String origin = request.getHeader("Origin");
     
      if (origin == null) {
          return;
      }
     
      response.setHeader("Access-Control-Allow-Credentials", "true");
      response.setHeader("Access-Control-Allow-Origin", origin);
  }
   
  public AuthChecker getAuthChecker() {
    return authChecker;
  }

  public void setAuthChecker(AuthChecker authChecker) {
    this.authChecker = authChecker;
  }

    public String getAjaxAccessControl() {
        return ajaxAccessControl;
    }

    public void setAjaxAccessControl(String ajaxAccessControl) {
        this.ajaxAccessControl = ajaxAccessControl;
    }
   
    protected AuthToken createAuthToken(HttpServletRequest request)
    {
      return new AuthToken(extractAuthToken(request, cookieAuthToken));
    }
   
    protected String extractAuthToken(HttpServletRequest request, String cookieAuthToken) {
    Cookie[] cookies = request.getCookies();

    if (cookies == null) {
      return null;
    }

    for (Cookie cookie : cookies) {
      if (cookie.getName().equals(cookieAuthToken)) {
        return cookie.getValue();
      }
    }

    return null;
  }
}
TOP

Related Classes of org.archive.cdxserver.BaseCDXServer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.