|
@@ -30,17 +30,30 @@ public class BillingModelFrame {
|
|
|
* @param deviceConnectionMsg
|
|
* @param deviceConnectionMsg
|
|
|
*/
|
|
*/
|
|
|
public void checkBillingModel(DeviceConnectionMsg deviceConnectionMsg){
|
|
public void checkBillingModel(DeviceConnectionMsg deviceConnectionMsg){
|
|
|
|
|
+
|
|
|
byte[] params = checkModel(deviceConnectionMsg);
|
|
byte[] params = checkModel(deviceConnectionMsg);
|
|
|
- String key = redisCache.getCacheObject(RedisConstant.KEYS+deviceConnectionMsg.getDeviceId());
|
|
|
|
|
|
|
|
|
|
- byte[] encrypt = new byte[0];
|
|
|
|
|
- try {
|
|
|
|
|
- encrypt = Encrytion.aesEncrypt(params, key.getBytes());
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- e.printStackTrace();
|
|
|
|
|
|
|
+ if(deviceConnectionMsg.getIs18()){
|
|
|
|
|
+ String key = redisCache.getCacheObject(RedisConstant.KEYS+deviceConnectionMsg.getDeviceId());
|
|
|
|
|
+ byte[] encrypt = new byte[0];
|
|
|
|
|
+ try {
|
|
|
|
|
+ encrypt = Encrytion.aesEncrypt(params, key.getBytes());
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ byte[] spliceing = FrameDataSplicing.spliceing(deviceConnectionMsg.getMessageCount(), DeviceSendYkc.BILLING_MODEL_VALIDATE_REQUEST.getFrameType(), DeviceSendYkc.BILLING_MODEL_VALIDATE_REQUEST.getEncryptFlag(), encrypt, encrypt.length, deviceConnectionMsg.getIs18());
|
|
|
|
|
+ try {
|
|
|
|
|
+ deviceConnectionMsg.getOutputStream().write(spliceing);
|
|
|
|
|
+ deviceConnectionMsg.getOutputStream().flush();
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ deviceConnectionMsg.incrementMessageCount();
|
|
|
|
|
+ return;
|
|
|
}
|
|
}
|
|
|
- byte[] spliceing = FrameDataSplicing.spliceing(deviceConnectionMsg.getMessageCount(), DeviceSendYkc.BILLING_MODEL_VALIDATE_REQUEST.getFrameType(), DeviceSendYkc.BILLING_MODEL_VALIDATE_REQUEST.getEncryptFlag(), encrypt, encrypt.length);
|
|
|
|
|
|
|
|
|
|
|
|
+ //非1.8版本不加密
|
|
|
|
|
+ byte[] spliceing = FrameDataSplicing.spliceing(deviceConnectionMsg.getMessageCount(), DeviceSendYkc.BILLING_MODEL_VALIDATE_REQUEST.getFrameType(), 0, params, params.length, deviceConnectionMsg.getIs18());
|
|
|
try {
|
|
try {
|
|
|
deviceConnectionMsg.getOutputStream().write(spliceing);
|
|
deviceConnectionMsg.getOutputStream().write(spliceing);
|
|
|
deviceConnectionMsg.getOutputStream().flush();
|
|
deviceConnectionMsg.getOutputStream().flush();
|
|
@@ -48,6 +61,8 @@ public class BillingModelFrame {
|
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
|
}
|
|
}
|
|
|
deviceConnectionMsg.incrementMessageCount();
|
|
deviceConnectionMsg.incrementMessageCount();
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
private byte[] checkModel(DeviceConnectionMsg deviceConnectionMsg){
|
|
private byte[] checkModel(DeviceConnectionMsg deviceConnectionMsg){
|
|
|
String deviceId = deviceConnectionMsg.getDeviceId();
|
|
String deviceId = deviceConnectionMsg.getDeviceId();
|
|
@@ -68,11 +83,22 @@ public class BillingModelFrame {
|
|
|
*/
|
|
*/
|
|
|
public void getBillingModel(DeviceConnectionMsg deviceConnectionMsg){
|
|
public void getBillingModel(DeviceConnectionMsg deviceConnectionMsg){
|
|
|
byte[] params = getModelParams(deviceConnectionMsg);
|
|
byte[] params = getModelParams(deviceConnectionMsg);
|
|
|
- String key = redisCache.getCacheObject(RedisConstant.KEYS+deviceConnectionMsg.getDeviceId());
|
|
|
|
|
|
|
+ if(deviceConnectionMsg.getIs18()){
|
|
|
|
|
+ String key = redisCache.getCacheObject(RedisConstant.KEYS+deviceConnectionMsg.getDeviceId());
|
|
|
|
|
+ try {
|
|
|
|
|
+ byte[] encrypt = Encrytion.aesEncrypt(params, key.getBytes());
|
|
|
|
|
+ byte[] spliceing = FrameDataSplicing.spliceing(deviceConnectionMsg.getMessageCount(), DeviceSendYkc.BILLING_MODEL_REQUEST.getFrameType(), DeviceSendYkc.BILLING_MODEL_REQUEST.getEncryptFlag(), encrypt, encrypt.length, deviceConnectionMsg.getIs18());
|
|
|
|
|
+ deviceConnectionMsg.getOutputStream().write(spliceing);
|
|
|
|
|
+ deviceConnectionMsg.getOutputStream().flush();
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ deviceConnectionMsg.incrementMessageCount();
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
- byte[] encrypt = Encrytion.aesEncrypt(params, key.getBytes());
|
|
|
|
|
- byte[] spliceing = FrameDataSplicing.spliceing(deviceConnectionMsg.getMessageCount(), DeviceSendYkc.BILLING_MODEL_REQUEST.getFrameType(), DeviceSendYkc.BILLING_MODEL_REQUEST.getEncryptFlag(), encrypt, encrypt.length);
|
|
|
|
|
|
|
+ byte[] spliceing = FrameDataSplicing.spliceing(deviceConnectionMsg.getMessageCount(), DeviceSendYkc.BILLING_MODEL_REQUEST.getFrameType(), 0, params, params.length, deviceConnectionMsg.getIs18());
|
|
|
deviceConnectionMsg.getOutputStream().write(spliceing);
|
|
deviceConnectionMsg.getOutputStream().write(spliceing);
|
|
|
deviceConnectionMsg.getOutputStream().flush();
|
|
deviceConnectionMsg.getOutputStream().flush();
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
@@ -95,16 +121,29 @@ public class BillingModelFrame {
|
|
|
*/
|
|
*/
|
|
|
public void resp(DeviceConnectionMsg deviceConnectionMsg,byte res){
|
|
public void resp(DeviceConnectionMsg deviceConnectionMsg,byte res){
|
|
|
byte[] params = params(deviceConnectionMsg.getDeviceId(),res);
|
|
byte[] params = params(deviceConnectionMsg.getDeviceId(),res);
|
|
|
- String key = redisCache.getCacheObject(RedisConstant.KEYS+deviceConnectionMsg.getDeviceId());
|
|
|
|
|
|
|
+ if(deviceConnectionMsg.getIs18()){
|
|
|
|
|
+ String key = redisCache.getCacheObject(RedisConstant.KEYS+deviceConnectionMsg.getDeviceId());
|
|
|
|
|
+ try {
|
|
|
|
|
+ byte[] encrypt = Encrytion.aesEncrypt(params, key.getBytes());
|
|
|
|
|
+ byte[] spliceing = FrameDataSplicing.spliceing(deviceConnectionMsg.getMessageCount(), DeviceSendYkc.BILLING_MODEL_SETTING_RESPONSE.getFrameType(), DeviceSendYkc.BILLING_MODEL_SETTING_RESPONSE.getEncryptFlag(), encrypt, encrypt.length, deviceConnectionMsg.getIs18());
|
|
|
|
|
+ deviceConnectionMsg.getOutputStream().write(spliceing);
|
|
|
|
|
+ deviceConnectionMsg.getOutputStream().flush();
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ deviceConnectionMsg.incrementMessageCount();
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
try {
|
|
try {
|
|
|
- byte[] encrypt = Encrytion.aesEncrypt(params, key.getBytes());
|
|
|
|
|
- byte[] spliceing = FrameDataSplicing.spliceing(deviceConnectionMsg.getMessageCount(), DeviceSendYkc.BILLING_MODEL_SETTING_RESPONSE.getFrameType(), DeviceSendYkc.BILLING_MODEL_SETTING_RESPONSE.getEncryptFlag(), encrypt, encrypt.length);
|
|
|
|
|
|
|
+ byte[] spliceing = FrameDataSplicing.spliceing(deviceConnectionMsg.getMessageCount(), DeviceSendYkc.BILLING_MODEL_SETTING_RESPONSE.getFrameType(), 0, params, params.length, deviceConnectionMsg.getIs18());
|
|
|
deviceConnectionMsg.getOutputStream().write(spliceing);
|
|
deviceConnectionMsg.getOutputStream().write(spliceing);
|
|
|
deviceConnectionMsg.getOutputStream().flush();
|
|
deviceConnectionMsg.getOutputStream().flush();
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
|
}
|
|
}
|
|
|
deviceConnectionMsg.incrementMessageCount();
|
|
deviceConnectionMsg.incrementMessageCount();
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private byte[] params(String pileCode,byte res){
|
|
private byte[] params(String pileCode,byte res){
|