You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
3.1 KiB
95 lines
3.1 KiB
package com.fr.plugin.xxxx.report.ecode; |
|
|
|
import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider; |
|
import com.fr.decision.webservice.v10.config.ConfigService; |
|
import com.fr.intelli.record.Focus; |
|
import com.fr.intelli.record.Original; |
|
import com.fr.log.FineLoggerFactory; |
|
import com.fr.plugin.context.PluginContexts; |
|
import com.fr.plugin.xxxx.report.ecode.filter.DecodeFilter; |
|
import com.fr.plugin.transform.FunctionRecorder; |
|
import com.fr.record.analyzer.EnableMetrics; |
|
import com.fr.stable.StringUtils; |
|
import com.fr.stable.fun.Authorize; |
|
import com.fr.web.utils.WebUtils; |
|
|
|
import javax.servlet.FilterChain; |
|
import javax.servlet.ServletException; |
|
import javax.servlet.http.HttpServletRequest; |
|
import javax.servlet.http.HttpServletResponse; |
|
import java.io.IOException; |
|
|
|
/** |
|
* @Author fr.open |
|
* @Date 2021/8/1 |
|
* @Description |
|
**/ |
|
@FunctionRecorder |
|
@Authorize(callSignKey = Constants.PLUGIN_ID) |
|
@EnableMetrics |
|
public class GlobalFilter extends AbstractGlobalRequestFilterProvider { |
|
@Override |
|
public String filterName() { |
|
return "global"; |
|
} |
|
|
|
@Override |
|
@Focus(id = Constants.PLUGIN_ID, text = "report加密", source = Original.PLUGIN) |
|
public String[] urlPatterns() { |
|
if (PluginContexts.currentContext().isAvailable()) { |
|
String servletPathName = "decision"; |
|
try { |
|
servletPathName = ConfigService.getInstance().getBasicParam().getServletPathName(); |
|
} catch (Exception e) { |
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
|
} |
|
return new String[]{ |
|
"/" + servletPathName + "/v10/attach/upload", |
|
"/" + servletPathName + "/v10/dataset/upload", |
|
"/" + servletPathName + "/view/report", |
|
|
|
}; |
|
}else { |
|
return new String[0]; |
|
} |
|
} |
|
|
|
@Override |
|
public void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain filterChain) { |
|
|
|
if (isDncode(req)) { |
|
new DecodeFilter().doFilter(req, res, filterChain); |
|
return; |
|
} |
|
/*if(isEncode(req)){ |
|
new EncodeFilter().doFilter(req,res,filterChain); |
|
return; |
|
}*/ |
|
|
|
try { |
|
filterChain.doFilter(req, res); |
|
} catch (IOException e) { |
|
FineLoggerFactory.getLogger().error(e.getMessage()); |
|
} catch (ServletException e) { |
|
FineLoggerFactory.getLogger().error(e.getMessage()); |
|
} |
|
} |
|
|
|
private boolean isDncode(HttpServletRequest req){ |
|
if(req.getRequestURI().endsWith("attach/upload")){ |
|
return true; |
|
} |
|
if(req.getRequestURI().endsWith("/dataset/upload")){ |
|
return true; |
|
} |
|
String op = WebUtils.getHTTPRequestParameter(req, "op"); |
|
String cmd = WebUtils.getHTTPRequestParameter(req, "cmd"); |
|
if(StringUtils.equals("fr_attach", op) && StringUtils.equals("ah_upload", cmd)){ |
|
return true; |
|
}if(StringUtils.equals("fr_write", op) && StringUtils.equals("imp_w_excel_data", cmd)){ |
|
return true; |
|
} |
|
return false; |
|
} |
|
|
|
}
|
|
|