Commit fec21403 by 杨伟程
parents 825cf87d 226c869e
package com.makeit.api.external.filter; //package com.makeit.api.external.filter;
//
import org.apache.commons.io.IOUtils; //import org.apache.commons.io.IOUtils;
//
import javax.servlet.ReadListener; //import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream; //import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest; //import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper; //import javax.servlet.http.HttpServletRequestWrapper;
import java.io.BufferedReader; //import java.io.BufferedReader;
import java.io.IOException; //import java.io.IOException;
import java.io.InputStreamReader; //import java.io.InputStreamReader;
//
/** ///**
* @Description: 解决request.getInputStream()只能读取一次的问题 // * @Description: 解决request.getInputStream()只能读取一次的问题
* @PackageName: net.dlet.dhdemo.utils.dhutils // * @PackageName: net.dlet.dhdemo.utils.dhutils
* @Name: MyRequestWrapper // * @Name: MyRequestWrapper
* @Author: cure // * @Author: cure
* @CreateDate: 2020/09/06 4:44 // * @CreateDate: 2020/09/06 4:44
* @ModifyUser: // * @ModifyUser:
* @ModifyDate: // * @ModifyDate:
* @ModifyDesc: 修改内容 // * @ModifyDesc: 修改内容
* @DayNameFull: 星期日 // * @DayNameFull: 星期日
* @ProjectName: dhdemo // * @ProjectName: dhdemo
* @Version: 1.0 // * @Version: 1.0
**/ // **/
public class MyRequestWrapper extends HttpServletRequestWrapper { //public class MyRequestWrapper extends HttpServletRequestWrapper {
//
private volatile byte[] body; // private volatile byte[] body;
//
public MyRequestWrapper(HttpServletRequest request) throws IOException { // public MyRequestWrapper(HttpServletRequest request) throws IOException {
super(request); // super(request);
body = IOUtils.toByteArray(super.getInputStream()); // body = IOUtils.toByteArray(super.getInputStream());
} // }
//
public byte[] getBody() { // public byte[] getBody() {
return body; // return body;
} // }
//
public void setBody(byte[] body) { // public void setBody(byte[] body) {
this.body = body; // this.body = body;
} // }
//
@Override // @Override
public BufferedReader getReader() throws IOException { // public BufferedReader getReader() throws IOException {
return new BufferedReader(new InputStreamReader(getInputStream())); // return new BufferedReader(new InputStreamReader(getInputStream()));
} // }
//
@Override // @Override
public ServletInputStream getInputStream() throws IOException { // public ServletInputStream getInputStream() throws IOException {
return new RequestBodyCachingInputStream(body); // return new RequestBodyCachingInputStream(body);
} // }
//
private class RequestBodyCachingInputStream extends ServletInputStream { // private class RequestBodyCachingInputStream extends ServletInputStream {
private byte[] body; // private byte[] body;
private int lastIndexRetrieved = -1; // private int lastIndexRetrieved = -1;
private ReadListener listener; // private ReadListener listener;
//
public RequestBodyCachingInputStream(byte[] body) { // public RequestBodyCachingInputStream(byte[] body) {
this.body = body; // this.body = body;
} // }
//
@Override // @Override
public int read() throws IOException { // public int read() throws IOException {
if (isFinished()) { // if (isFinished()) {
return -1; // return -1;
} // }
int i = body[lastIndexRetrieved + 1]; // int i = body[lastIndexRetrieved + 1];
lastIndexRetrieved++; // lastIndexRetrieved++;
if (isFinished() && listener != null) { // if (isFinished() && listener != null) {
try { // try {
listener.onAllDataRead(); // listener.onAllDataRead();
} catch (IOException e) { // } catch (IOException e) {
listener.onError(e); // listener.onError(e);
throw e; // throw e;
} // }
} // }
return i; // return i;
} // }
//
@Override // @Override
public boolean isFinished() { // public boolean isFinished() {
return lastIndexRetrieved == body.length - 1; // return lastIndexRetrieved == body.length - 1;
} // }
//
@Override // @Override
public boolean isReady() { // public boolean isReady() {
return isFinished(); // return isFinished();
} // }
//
@Override // @Override
public void setReadListener(ReadListener listener) { // public void setReadListener(ReadListener listener) {
if (listener == null) { // if (listener == null) {
throw new IllegalArgumentException("listener cann not be null"); // throw new IllegalArgumentException("listener cann not be null");
} // }
if (this.listener != null) { // if (this.listener != null) {
throw new IllegalArgumentException("listener has been set"); // throw new IllegalArgumentException("listener has been set");
} // }
this.listener = listener; // this.listener = listener;
if (!isFinished()) { // if (!isFinished()) {
try { // try {
listener.onAllDataRead(); // listener.onAllDataRead();
} catch (IOException e) { // } catch (IOException e) {
listener.onError(e); // listener.onError(e);
} // }
} else { // } else {
try { // try {
listener.onAllDataRead(); // listener.onAllDataRead();
} catch (IOException e) { // } catch (IOException e) {
listener.onError(e); // listener.onError(e);
} // }
} // }
} // }
//
@Override // @Override
public int available() throws IOException { // public int available() throws IOException {
return body.length - lastIndexRetrieved - 1; // return body.length - lastIndexRetrieved - 1;
} // }
//
@Override // @Override
public void close() throws IOException { // public void close() throws IOException {
lastIndexRetrieved = body.length - 1; // lastIndexRetrieved = body.length - 1;
body = null; // body = null;
} // }
} // }
} //}
\ No newline at end of file \ No newline at end of file
package com.makeit.api.external.filter; //package com.makeit.api.external.filter;
//
import org.springframework.stereotype.Component; //import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter; //import org.springframework.web.filter.OncePerRequestFilter;
//
import javax.servlet.FilterChain; //import javax.servlet.FilterChain;
import javax.servlet.ServletException; //import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; //import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; //import javax.servlet.http.HttpServletResponse;
import java.io.IOException; //import java.io.IOException;
//
/** ///**
* @Description: // * @Description:
* @PackageName: net.dlet.dhdemo.configure // * @PackageName: net.dlet.dhdemo.configure
* @Name: RequestReplaceFilter // * @Name: RequestReplaceFilter
* @Author: cure // * @Author: cure
* @CreateDate: 2020/09/06 4:58 // * @CreateDate: 2020/09/06 4:58
* @ModifyUser: // * @ModifyUser:
* @ModifyDate: // * @ModifyDate:
* @ModifyDesc: 修改内容 // * @ModifyDesc: 修改内容
* @DayNameFull: 星期日 // * @DayNameFull: 星期日
* @ProjectName: dhdemo // * @ProjectName: dhdemo
* @Version: 1.0 // * @Version: 1.0
**/ // **/
@Component //@Component
public class RequestReplaceFilter extends OncePerRequestFilter { //public class RequestReplaceFilter extends OncePerRequestFilter {
//
@Override // @Override
protected void doFilterInternal(HttpServletRequest request, // protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, // HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException { // FilterChain filterChain) throws ServletException, IOException {
if (!(request instanceof MyRequestWrapper)) { // if (!(request instanceof MyRequestWrapper)) {
request = new MyRequestWrapper(request); // request = new MyRequestWrapper(request);
} // }
filterChain.doFilter(request, response); // filterChain.doFilter(request, response);
} // }
} //}
//
//
\ No newline at end of file \ No newline at end of file
package com.makeit.api.external.filter; //package com.makeit.api.external.filter;
//
import com.makeit.api.external.util.RSAUtils; //import com.makeit.api.external.util.RSAUtils;
import com.makeit.utils.old.StringUtils; //import com.makeit.utils.old.StringUtils;
import org.slf4j.Logger; //import org.slf4j.Logger;
import org.slf4j.LoggerFactory; //import org.slf4j.LoggerFactory;
//
import javax.servlet.*; //import javax.servlet.*;
import javax.servlet.annotation.WebFilter; //import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest; //import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; //import javax.servlet.http.HttpServletResponse;
import java.io.IOException; //import java.io.IOException;
import java.nio.charset.StandardCharsets; //import java.nio.charset.StandardCharsets;
//
//
@WebFilter(urlPatterns = { "/iot/external/*"}) //@WebFilter(urlPatterns = { "/iot/external/*"})
public class SignAuthFilter implements Filter { //public class SignAuthFilter implements Filter {
//
private static Logger logger = LoggerFactory.getLogger(SignAuthFilter.class); // private static Logger logger = LoggerFactory.getLogger(SignAuthFilter.class);
//
//
//
@Override // @Override
public void init(FilterConfig filterConfig) { // public void init(FilterConfig filterConfig) {
} // }
//
@Override // @Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) // public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException { // throws IOException {
HttpServletRequest request = (HttpServletRequest) req; // HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res; // HttpServletResponse response = (HttpServletResponse) res;
try { // try {
String sign = request.getHeader("sign"); // String sign = request.getHeader("sign");
if (StringUtils.isEmpty(sign)) { // if (StringUtils.isEmpty(sign)) {
response.sendError(403, "Forbidden"); // response.sendError(403, "Forbidden");
return; // return;
} // }
logger.info("getted Authorization is ---> " + sign); // logger.info("getted Authorization is ---> " + sign);
//
// 获取客户端ip // // 获取客户端ip
/* String ip = IpUtil.getIpAddr(request); ///* String ip = IpUtil.getIpAddr(request);
logger.info("getted ip is ---> " + ip);*/ // logger.info("getted ip is ---> " + ip);*/
//
MyRequestWrapper requestWrapper = new MyRequestWrapper(request); // MyRequestWrapper requestWrapper = new MyRequestWrapper(request);
String bodyString = new String(requestWrapper.getBody(), StandardCharsets.UTF_8); // String bodyString = new String(requestWrapper.getBody(), StandardCharsets.UTF_8);
logger.info("getted requestbody data is ---> " + bodyString); // logger.info("getted requestbody data is ---> " + bodyString);
//
String decryptJson = RSAUtils.privateDecrypt(sign, RSAUtils.getPrivateKey(RSAUtils.PRIVATE_KEY), "UTF-8"); // String decryptJson = RSAUtils.privateDecrypt(sign, RSAUtils.getPrivateKey(RSAUtils.PRIVATE_KEY), "UTF-8");
//
boolean couldPass = decryptJson.equals(bodyString); // boolean couldPass = decryptJson.equals(bodyString);
if (couldPass) { // if (couldPass) {
// 放行 // // 放行
chain.doFilter(requestWrapper, response); // chain.doFilter(requestWrapper, response);
return; // return;
} // }
response.sendError(403, "Forbidden"); // response.sendError(403, "Forbidden");
} catch (Exception e) { // } catch (Exception e) {
logger.error("验证失败: -> " + e.getMessage(), e); // logger.error("验证失败: -> " + e.getMessage(), e);
response.sendError(403, "Forbidden"); // response.sendError(403, "Forbidden");
} // }
} // }
//
@Override // @Override
public void destroy() { // public void destroy() {
//
} // }
//
} //}
//
...@@ -11,6 +11,8 @@ public class DeviceProperties { ...@@ -11,6 +11,8 @@ public class DeviceProperties {
private Integer numberValue; private Integer numberValue;
@ApiModelProperty("属性名称") @ApiModelProperty("属性名称")
private String propertyName; private String propertyName;
@ApiModelProperty("属性")
private String property;
private Long timestamp; private Long timestamp;
private String type; private String type;
@ApiModelProperty("属性值") @ApiModelProperty("属性值")
......
...@@ -295,6 +295,7 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev ...@@ -295,6 +295,7 @@ public class PlatDeviceServiceImpl extends ServiceImpl<PlatDeviceMapper, PlatDev
for (String s : propertiesArr) { for (String s : propertiesArr) {
DeviceProperties deviceProperties = devicePropertiesOperateService.deviceRead(dto.getDeviceId(), s); DeviceProperties deviceProperties = devicePropertiesOperateService.deviceRead(dto.getDeviceId(), s);
if (deviceProperties != null) { if (deviceProperties != null) {
deviceProperties.setProperty(s);
devicePropertiesList.add(deviceProperties); devicePropertiesList.add(deviceProperties);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment