文档库--搜索中心

This commit is contained in:
zhn
2022-03-15 13:51:59 +08:00
parent 5092a992aa
commit 4df94f312f
8 changed files with 330 additions and 282 deletions
@@ -352,22 +352,6 @@ public class JeroElasticsearchTemplate {
*/
public boolean delete(String indexName, String typeName, String dataId) {
String url = this.getBaseUrl(indexName, typeName).append("/").append(dataId).toString();
/* 返回结果(仅供参考)
{
"_index": "es_demo",
"_type": "docs",
"_id": "001",
"_version": 3,
"result": "deleted",
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"_seq_no": 28,
"_primary_term": 18
}
*/
try {
return "deleted".equals(RestUtil.delete(url).getString("result"));
} catch (org.springframework.web.client.HttpClientErrorException ex) {
@@ -395,6 +379,19 @@ public class JeroElasticsearchTemplate {
log.info("url:" + url + " ,return res: \n" + res.toJSONString());
return res;
}
/**
* 查询数据
* <p>
* 请求地址:POST http://{baseUrl}/{indexName}/{typeName}/_search
*/
public JSONObject search(String indexName, String typeName,JSONObject variables, JSONObject queryObject) {
String url = this.getBaseUrl(indexName, typeName).append("/_search").toString();
log.info("url:" + url + " ,search: " + queryObject.toJSONString());
JSONObject res = RestUtil.post(url,variables, queryObject);
log.info("url:" + url + " ,return res: \n" + res.toJSONString());
return res;
}
/**
* @param _source (源滤波器)指定返回的字段,传null返回所有字段
@@ -413,6 +410,25 @@ public class JeroElasticsearchTemplate {
json.put("size", size);
return json;
}
/**
* @param _source (源滤波器)指定返回的字段,传null返回所有字段
* @param query
* @param sort 排序字段
* @param from 从第几条数据开始
* @param size 返回条目数
* @return { "query": query }
*/
public JSONObject buildQuery(List<String> _source, JSONObject query,String sort, int from, int size) {
JSONObject json = new JSONObject();
if (_source != null) {
json.put("_source", _source);
}
json.put("query", query);
json.put("from", from);
json.put("size", size);
// json.put("sort", sort);
return json;
}
/**
* @return { "bool" : { "must": must, "must_not": mustNot, "should": should } }
@@ -1,100 +0,0 @@
package com.jero.config.safeFilter.cors;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Objects;
/**
* 设置响应信息
*/
@WebFilter(urlPatterns = {"/verifyCode/**"})
public class CorsFilter implements Filter {
private static final Log LOGGER = LogFactory.getLog(CorsFilter.class);
private int size = 0;
private String origin;
private String notFilter;
public CorsFilter(String origin, String notFilter) {
this.origin = origin;
this.notFilter = notFilter;
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
final String origin = ((HttpServletRequest) request).getHeader("Origin");
//请求头与系统的origin不通则咔嚓
// if (Objects.nonNull(origin) || this.origin.contains(origin)){
// return;
// }
if (Objects.nonNull(origin) && !this.origin.contains(origin)){
return;
}
//获取请求路径
String url = req.getRequestURL().toString();
String[] interfaceNameArr = notFilter.split(",");
if (!isMSBrowser(req)){
for (String name : interfaceNameArr) {
//如果包含,不需要判断Origin是否合法
if(url.contains(name)){
responseInfo(request, response, chain);
// return;
}
}
}
responseInfo(request, response, chain);
}
public boolean isMSBrowser(HttpServletRequest request) {
String[] IEBrowserSignals = {"MSIE", "Trident"};
String userAgent = request.getHeader("User-Agent");
for (String signal : IEBrowserSignals) {
if (userAgent.contains(signal)){
return true;
}
}
return false;
}
private void responseInfo(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// HttpServletResponse httpServletResponse = (HttpServletResponse) response;
// httpServletResponse.setHeader("Access-Control-Allow-Origin", origin);
// httpServletResponse.addHeader("Access-Control-Allow-Headers", "Authorization");
// httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true");
// httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, HEAD, OPTIONS, PUT, DELETE");
// httpServletResponse.setHeader("Access-Control-Max-Age", "3600");
// httpServletResponse.setHeader("Content-Security-Policy", "upgrade-insecure-requests;connect-src *");
// httpServletResponse.setHeader("X-Content-Type-Options", "nosniff");
// httpServletResponse.setHeader("X-XSS-Protection", "1;mode=block");
// httpServletResponse.setHeader("Access-Control-Allow-Headers", "Origin, Accept, x-auth-token, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, authorization");
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
}
@@ -1,126 +0,0 @@
package com.jero.config.safeFilter.csrf;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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 java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* CsrfFilter
*/
public class CsrfFilter implements Filter {
public CsrfFilter(String csrfList) {
this.csrfList = csrfList;
}
/**
* LOGGER
*/
private static final Log LOGGER = LogFactory.getLog(CsrfFilter.class);
/**
* 从配置文件读取的csrf白名单字符串
*/
private final String csrfList;
/**
* 白名单
*/
private List<String> whiteUrls;
/**
* size
*/
private int size = 0;
/**
* 读取文件
*
* @param filterConfig
*/
public void init(FilterConfig filterConfig) {
// 读取文件
String path = CsrfFilter.class.getResource("/").getFile();
// whiteUrls = FileUtil.readAsStringList(path + "csrfWhite.txt");
whiteUrls = Arrays.asList(csrfList.split(","));
size = whiteUrls.size();
}
/**
* @param request
* @param response
* @param chain
* @throws IOException
* @throws ServletException
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// try {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
// 获取请求url地址
String url = req.getRequestURL().toString();
String referurl = req.getHeader("Referer");
if (isWhiteReq(referurl)) {
chain.doFilter(request, response);
} else {
req.getRequestDispatcher("/").forward(req, res);
// 记录跨站请求日志
String log = "";
String date = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
String clientIp = RequestUtils.getClientIp(req);
log = "跨站请求---->>>" + clientIp + "||" + date + "||" + referurl + "||" + url;
LOGGER.warn(log);
}
// } catch (Exception e) {
// LOGGER.error("doFilter", e);
// }
}
/**
* 判断是否是白名单
*/
private boolean isWhiteReq(String referUrl) {
if (referUrl == null || "".equals(referUrl) || size == 0) {
return true;
} else {
String refHost = "";
referUrl = referUrl.toLowerCase();
if (referUrl.startsWith("http://")) {
refHost = referUrl.substring(7);
} else if (referUrl.startsWith("https://")) {
refHost = referUrl.substring(8);
}
for (String urlTemp : whiteUrls) {
if (refHost.contains(urlTemp.toLowerCase())) {
return true;
}
}
}
return false;
}
/**
* destroy
*/
public void destroy() {
}
}
@@ -1,37 +0,0 @@
package com.jero.config.safeFilter.csrf;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
public class RequestUtils {
public static final String LOGIN_USER = "LOGIN_USER";
public static final String LOGIN_USER_ID = "LOGIN_USER_ID";
public static final String LOGIN_ROLE_ID = "LOGIN_ROLE_ID";
/**
* 获取客户端IP地址
* @param request
* @return
*/
public static String getClientIp(HttpServletRequest request) {
String remoteAddr = "";
if (request != null) {
remoteAddr = request.getHeader("X-FORWARDED-FOR");
if (StringUtils.isEmpty(remoteAddr)) {
remoteAddr = request.getRemoteAddr();
}
}
return remoteAddr;
}
public static String getLoginUserId(HttpServletRequest request) {
return (String) request.getSession().getAttribute(LOGIN_USER_ID);
}
public static String getLoginRoleId(HttpServletRequest request) {
return (String) request.getSession().getAttribute(LOGIN_ROLE_ID);
}
}