package com.ejie.x38.webdav.security;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.bind.DatatypeConverter;
import org.springframework.web.filter.GenericFilterBean;
/**
* Servlet Filter implementation class Y31HttpBasicAuthenticationFilter
*/
public class WebDAVXLNetsAuthenticationFilter extends GenericFilterBean {
public String paramName = "c";
/**
* Default constructor.
*/
public WebDAVXLNetsAuthenticationFilter() {
}
public void setParamName(String paramName){
this.paramName = paramName;
}
@Override
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
String webdavXLNetsParam = httpRequest.getParameter(this.paramName);
WebDAVHttpServletRequestWrapper wrapedRequest = new WebDAVHttpServletRequestWrapper(httpRequest);
if (webdavXLNetsParam!=null){
// String param = new String(Base64.decodeBase64(webdavXLNetsParam));
String param = new String(DatatypeConverter.parseBase64Binary(webdavXLNetsParam));
String[] arrParam = param.split("&");
for (int i=0;i<arrParam.length;i++){
String[] paramKeyValue = arrParam[i].split("=");
// httpResponse.addCookie(new Cookie(paramKeyValue[0], paramKeyValue[1]));
wrapedRequest.addCookie(new Cookie(paramKeyValue[0], paramKeyValue[1]));
}
}
chain.doFilter(wrapedRequest, httpResponse);
}
}