|
|
@@ -1,17 +1,28 @@
|
|
|
package com.zswl.dataservice.service.openApi;
|
|
|
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
+import com.zswl.dataservice.auth.OpenAPIContext;
|
|
|
import com.zswl.dataservice.dao.openApi.BlackListDao;
|
|
|
import com.zswl.dataservice.dao.openApi.OpenApiRequestLogDao;
|
|
|
+import com.zswl.dataservice.dataConfig.OpenAPIConfig;
|
|
|
+import com.zswl.dataservice.domain.openApi.OpenApiRequestLog;
|
|
|
import com.zswl.dataservice.service.base.RedisService;
|
|
|
import com.zswl.dataservice.service.user.OperationLogsService;
|
|
|
import com.zswl.dataservice.type.OperationLogType;
|
|
|
+import com.zswl.dataservice.utils.DateUtils;
|
|
|
+import com.zswl.dataservice.utils.HttpUtils;
|
|
|
import com.zswl.dataservice.utils.mqtt.type.LogsLevel;
|
|
|
import com.zswl.dataservice.utils.net.IPUtil;
|
|
|
import com.zswl.dataservice.utils.os.SystemUtil;
|
|
|
+import com.zswl.dataservice.utils.result.ResultContent;
|
|
|
+import jakarta.servlet.ServletInputStream;
|
|
|
+import jakarta.servlet.ServletOutputStream;
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
import lombok.SneakyThrows;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.aspectj.apache.bcel.classfile.Module;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.context.ApplicationContext;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -19,7 +30,12 @@ import org.springframework.web.context.request.RequestContextHolder;
|
|
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
import org.springframework.web.util.ContentCachingRequestWrapper;
|
|
|
+import org.springframework.web.util.ContentCachingResponseWrapper;
|
|
|
|
|
|
+import java.io.BufferedReader;
|
|
|
+import java.io.InputStreamReader;
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.util.Date;
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
import java.util.concurrent.Executors;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
@@ -68,13 +84,14 @@ public class OpenApiVerifyService {
|
|
|
@SneakyThrows
|
|
|
public boolean verify(HttpServletRequest request, HttpServletResponse response, Object object) {
|
|
|
log.info("---------------------openAPI验证----------------------");
|
|
|
- String method = request.getMethod();
|
|
|
- String sessionId = request.getRequestedSessionId();
|
|
|
- log.info("sessionId: {}", sessionId);
|
|
|
- String remoteIp = IPUtil.getRemoteIp(request);
|
|
|
+ OpenAPIContext.setTime(System.currentTimeMillis());
|
|
|
if (request instanceof ContentCachingRequestWrapper) {
|
|
|
ContentCachingRequestWrapper contentCachingRequestWrapper = (ContentCachingRequestWrapper) request;
|
|
|
- log.info("body {}", contentCachingRequestWrapper.getContentAsString());
|
|
|
+ String requestStr = contentCachingRequestWrapper.getContentAsString();
|
|
|
+ log.info("body {}", requestStr);
|
|
|
+ String authorization = request.getHeader("authorization");
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
@@ -87,8 +104,43 @@ public class OpenApiVerifyService {
|
|
|
* @param handler
|
|
|
* @param modelAndView
|
|
|
*/
|
|
|
- public void saveLog(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
|
|
|
- log.info("saveLog");
|
|
|
+ @SneakyThrows
|
|
|
+ public void saveLog(HttpServletRequest request, HttpServletResponse response,
|
|
|
+ Object handler, ModelAndView modelAndView) {
|
|
|
+ OpenApiRequestLog openApiRequestLog = new OpenApiRequestLog();
|
|
|
+ JSONObject param = HttpUtils.getRequestObj(request);
|
|
|
+ if (param != null) {
|
|
|
+ openApiRequestLog.setRequestBody(param);
|
|
|
+ openApiRequestLog.setAppId(param.getStr("appId"));
|
|
|
+ }
|
|
|
+ Long startTime = OpenAPIContext.getTime();
|
|
|
+ openApiRequestLog.setResponseTime(System.currentTimeMillis());
|
|
|
+ if (startTime != null) {
|
|
|
+ openApiRequestLog.setRequestTime(startTime);
|
|
|
+ openApiRequestLog.setRequestTimeStr(DateUtils.paresTime(startTime, DateUtils.FORMAT_LONG));
|
|
|
+ openApiRequestLog.setUserTime(System.currentTimeMillis() - startTime);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ openApiRequestLog.setUa(request.getHeader("User-Agent"));
|
|
|
+ openApiRequestLog.setIp(IPUtil.getRemoteIp(request));
|
|
|
+ openApiRequestLog.setUrl(request.getRequestURI());
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ openApiRequestLog.setAuthorization(request.getHeader("authorization"));
|
|
|
+ openApiRequestLog.setTTL(new Date(System.currentTimeMillis() + OpenAPIConfig.logTTL));
|
|
|
+ if (response instanceof ContentCachingResponseWrapper) {
|
|
|
+ ContentCachingResponseWrapper responseWrapper = (ContentCachingResponseWrapper) response;
|
|
|
+ byte[] bytes = responseWrapper.getContentAsByteArray();
|
|
|
+ ResultContent resultContent = HttpUtils.toBean(new String(bytes), ResultContent.class);
|
|
|
+ if (resultContent != null) {
|
|
|
+ openApiRequestLog.setIsSuccess(resultContent.isSuccess());
|
|
|
+ openApiRequestLog.setErrorMsg(resultContent.getMsg());
|
|
|
+ }
|
|
|
+ openApiRequestLog.setResponseBody(resultContent);
|
|
|
+ responseWrapper.copyBodyToResponse();
|
|
|
+ }
|
|
|
+ openApiRequestLogDao.save(openApiRequestLog);
|
|
|
}
|
|
|
|
|
|
public boolean isInBlackList(HttpServletRequest request) {
|