|
|
|
@@ -11,9 +11,14 @@ import com.iformall.enums.EnumBoxRegisterStatus; |
|
|
|
import com.iformall.service.kw.KwBoxCmdHistoryService; |
|
|
|
import com.iformall.service.kw.KwBoxService; |
|
|
|
|
|
|
|
import com.iformall.utils.HashUtil; |
|
|
|
import com.iformall.utils.Utility; |
|
|
|
import com.sun.crypto.provider.HmacSHA1; |
|
|
|
import io.netty.util.internal.StringUtil; |
|
|
|
import io.swagger.annotations.Api; |
|
|
|
import io.swagger.annotations.ApiOperation; |
|
|
|
import org.apache.commons.codec.digest.HmacAlgorithms; |
|
|
|
import org.apache.commons.codec.digest.HmacUtils; |
|
|
|
import org.slf4j.Logger; |
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
@@ -82,6 +87,7 @@ public class KwBoxV1Controller extends BaseController { |
|
|
|
record.setUpdateTime(new Date()); |
|
|
|
record.setRegisterTime(new Date()); |
|
|
|
record.setLastOnlineTime(new Date()); |
|
|
|
record.setComKey(Utility.generate32UUID()); |
|
|
|
record.setRegisterStatus(EnumBoxRegisterStatus.REGISTERED.getCode()); |
|
|
|
kwBoxService.saveOrUpdate(record); |
|
|
|
Map<String,Object> data = new HashMap<>(); |
|
|
|
@@ -98,7 +104,20 @@ public class KwBoxV1Controller extends BaseController { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private ResultData cmdLogin(String imei, String ccid, Date deviceTime, Map<String,Object> paramMap) |
|
|
|
private boolean checkSign(KwBox kwBox, Map<String,Object> paramMap, String sign) { |
|
|
|
HmacUtils hmacUtils = new HmacUtils(HmacAlgorithms.HMAC_SHA_1, kwBox.getComKey()); |
|
|
|
String content = JSONObject.toJSON(paramMap).toString(); |
|
|
|
String signCom = hmacUtils.hmacHex(content); |
|
|
|
|
|
|
|
boolean res = signCom.equalsIgnoreCase(sign); |
|
|
|
|
|
|
|
if (!res) { |
|
|
|
logger.warn("SIGN check failed." + "content:"+content +"\n" + "signCom:" + signCom); |
|
|
|
} |
|
|
|
return res; |
|
|
|
} |
|
|
|
|
|
|
|
private ResultData cmdLogin(String imei, String ccid, Date deviceTime, Map<String,Object> paramMap, String sign) |
|
|
|
{ |
|
|
|
KwBox kwBox = kwBoxService.findByImei(imei); |
|
|
|
|
|
|
|
@@ -108,6 +127,9 @@ public class KwBoxV1Controller extends BaseController { |
|
|
|
if (!kwBox.getRegisterStatus().equals(EnumBoxRegisterStatus.REGISTERED.getCode())) |
|
|
|
return new ResultData(ErrorCode.DEVICE_NOT_FOUND); |
|
|
|
|
|
|
|
if (!checkSign(kwBox, paramMap, sign)) |
|
|
|
return new ResultData(ErrorCode.DEVICE_SIGN_INVALID); |
|
|
|
|
|
|
|
saveCmd(kwBox.getTenantId(),KwBoxService.CMD_LOGIN,imei,ccid,deviceTime,paramMap); |
|
|
|
|
|
|
|
KwBox record = new KwBox(); |
|
|
|
@@ -124,7 +146,7 @@ public class KwBoxV1Controller extends BaseController { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private ResultData cmdHb(String imei, String ccid, Date deviceTime, Map<String,Object> paramMap) |
|
|
|
private ResultData cmdHb(String imei, String ccid, Date deviceTime, Map<String,Object> paramMap, String sign) |
|
|
|
{ |
|
|
|
KwBox kwBox = kwBoxService.findByImei(imei); |
|
|
|
if (kwBox == null) |
|
|
|
@@ -133,6 +155,9 @@ public class KwBoxV1Controller extends BaseController { |
|
|
|
if (!kwBox.getRegisterStatus().equals(EnumBoxRegisterStatus.REGISTERED.getCode())) |
|
|
|
return new ResultData(ErrorCode.DEVICE_NOT_FOUND); |
|
|
|
|
|
|
|
if (!checkSign(kwBox, paramMap, sign)) |
|
|
|
return new ResultData(ErrorCode.DEVICE_SIGN_INVALID); |
|
|
|
|
|
|
|
saveCmd(kwBox.getTenantId(),KwBoxService.CMD_HEARTBEAT,imei,ccid,deviceTime,paramMap); |
|
|
|
|
|
|
|
KwBox record = new KwBox(); |
|
|
|
@@ -178,7 +203,8 @@ public class KwBoxV1Controller extends BaseController { |
|
|
|
|
|
|
|
@ApiOperation("开物盒子V1") |
|
|
|
@PostMapping("command") |
|
|
|
public Result command(@RequestBody Map<String,Object> paramMap) { |
|
|
|
public Result command(@RequestBody Map<String,Object> paramMap,@RequestParam String sign) { |
|
|
|
|
|
|
|
|
|
|
|
String cmd = (String)paramMap.get(KwBoxService.PREFIX_CMD); |
|
|
|
if (StringUtil.isNullOrEmpty(cmd)) |
|
|
|
|