package com.smtaiserver.smtaiserver.web;
|
|
import java.io.IOException;
|
|
import javax.servlet.Filter;
|
import javax.servlet.FilterChain;
|
import javax.servlet.ServletException;
|
import javax.servlet.ServletOutputStream;
|
import javax.servlet.ServletRequest;
|
import javax.servlet.ServletResponse;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
import com.smtservlet.core.SMTRequest;
|
import com.smtservlet.util.SMTJsonWriter;
|
import com.smtservlet.util.SMTStatic;
|
|
|
|
public class SMTAIServerWebFilter implements Filter {
|
|
static Logger _logger = LogManager.getLogger(SMTAIServerWebFilter.class);
|
@Override
|
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
|
{
|
try
|
{
|
String Origin = ((HttpServletRequest)servletRequest).getHeader("Origin");
|
HttpServletResponse resp = (HttpServletResponse)servletResponse;
|
resp.addHeader("Access-Control-Allow-Origin", SMTStatic.isNullOrEmpty(Origin) ? "*" : Origin);
|
resp.addHeader("Access-Control-Allow-Credentials", "true");
|
resp.addHeader("Access-Control-Allow-Headers", System.getProperty("smt_http_allow_headers", "hswatersession,referrer-policy,content-type,authorization"));
|
resp.setContentType("application/json;charset=utf-8");
|
//resp.setHeader("Pragma","No-cache");
|
//resp.setHeader("Cache-Control","no-cache");
|
//resp.setDateHeader("Expires", 0);
|
HttpServletRequest request = (HttpServletRequest)servletRequest;
|
|
String swaggerUIFlag = System.getProperty("swagger_ui", "true");
|
if(swaggerUIFlag == null)
|
swaggerUIFlag = "";
|
if(!"true".equals(swaggerUIFlag))
|
{
|
String servPath = request.getRequestURI();
|
|
if(servPath.equals("/swagger-ui.html") || servPath.startsWith("/webjars/") ||
|
servPath.startsWith("/swagger-raw.html") || servPath.equals("/swagger-resources/configuration/security"))
|
{
|
resp.setStatus(404);
|
resp.setContentType("text/plain;charset=utf-8");
|
ServletOutputStream os = resp.getOutputStream();
|
os.println("404 : swagger_ui=[" + swaggerUIFlag + "]");
|
os.flush();
|
return;
|
}
|
}
|
filterChain.doFilter(servletRequest,servletResponse);
|
|
}
|
catch(Exception ex)
|
{
|
Throwable realEX = ex.getCause();
|
if(realEX == null)
|
realEX = ex;
|
|
_logger.fatal("doFilter exception", realEX);
|
|
ServletOutputStream os = servletResponse.getOutputStream();
|
try
|
{
|
SMTJsonWriter jsonWr = new SMTJsonWriter(false);
|
jsonWr.addKeyValue("json_ok", false);
|
jsonWr.addKeyValue("json_msg", realEX.getMessage());
|
jsonWr.addKeyValue("json_error", realEX.getMessage());
|
os.write(jsonWr.getFullJson().getBytes("UTF-8"));
|
}
|
finally
|
{
|
os.close();
|
}
|
}
|
finally
|
{
|
SMTRequest.destroyInstance((HttpServletRequest)servletRequest);
|
}
|
}
|
|
}
|