⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compressionfilter.java

📁 这是linux下ssl vpn的实现程序
💻 JAVA
字号:
package com.sslexplorer.core.filters;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.sslexplorer.core.CoreServlet;
import com.sslexplorer.core.CoreUtil;
import com.sslexplorer.security.Constants;
import com.sslexplorer.security.User;

public class CompressionFilter implements Filter {

    private FilterConfig config = null;

    protected int compressionThreshold;

    final static Log log = LogFactory.getLog(CompressionFilter.class);

    /* (non-Javadoc)
     * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
     */
    public void init(FilterConfig filterConfig) {
        config = filterConfig;
        compressionThreshold = 0;
        if (filterConfig != null) {
            String str = filterConfig.getInitParameter("compressionThreshold");
            if (str != null) {
                compressionThreshold = Integer.parseInt(str);
            } else {
                compressionThreshold = 0;
            }
        }
    }

    /* (non-Javadoc)
     * @see javax.servlet.Filter#destroy()
     */
    public void destroy() {
        this.config = null;
    }

    /* (non-Javadoc)
     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
     */
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        boolean supportCompression = false;
        if (request instanceof HttpServletRequest && !Boolean.FALSE.equals(request.getAttribute(Constants.REQ_ATTR_COMPRESS))) {
            boolean compressionEnabled = false;
            try {
                User user = CoreServlet.getServlet().getLogonController().getUser((HttpServletRequest) request);
                compressionEnabled = CoreServlet.getServlet().getPropertyDatabase().getPropertyBoolean(
                    CoreUtil.getCurrentPropertyProfileId(((HttpServletRequest) request).getSession()),
                    user == null ? null : user.getPrincipalName(), "webServer.compression");
            } catch (Exception ex) {
            }
            if (compressionEnabled) {
                Enumeration e = ((HttpServletRequest) request).getHeaders("Accept-Encoding");
                while (e.hasMoreElements()) {
                    String name = (String) e.nextElement();
                    if (name.indexOf("gzip") != -1) {
                        supportCompression = true;
                    }
                }
            }
        }
        if (supportCompression && response instanceof HttpServletResponse) {
//            CompressionResponseWrapper wrappedResponse = new CompressionResponseWrapper((HttpServletResponse) response);
//            wrappedResponse.setCompressionThreshold(compressionThreshold);
//            chain.doFilter(request, wrappedResponse);
            GZIPResponseWrapper wrappedResponse =
                new GZIPResponseWrapper((HttpServletResponse)response);
              chain.doFilter(request, wrappedResponse);
              wrappedResponse.finishResponse();
        } else {
            chain.doFilter(request, response);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -