From: TrillGates Date: Tue, 3 Aug 2021 13:01:28 +0000 (+0800) Subject: completed server set ip . X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=e9876e48b1dc222860cb77d0117cd46fbdf775cd;p=protocol_srv.git completed server set ip . --- diff --git a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java index e0557b33..3c377a3f 100644 --- a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java +++ b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java @@ -482,8 +482,12 @@ public class ICSmsManager extends BroadcastReceiver { ICLogger.i(sms + " len " + tmp.length); if (tmp.length == 2) { if (tmp[1].equals("reset#")) { - Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); - reply = "reset ServerIP to " + protocolAPIHelper.getDefaultServerIP() + ":" + protocolAPIHelper.getDefaultServerPort() + " success! "; + Config.setCustomServer(mContext, + false, protocolAPIHelper.getDefaultServerIP(), + protocolAPIHelper.getDefaultServerPort()); + reply = "reset ServerIP to " + + protocolAPIHelper.getDefaultServerIP() + ":" + + protocolAPIHelper.getDefaultServerPort() + " success! "; Config.loadServerSettings(runtime); CoreService.getInstance().disconnect_server(); CoreService.getInstance().ReConnectToServer(); diff --git a/app/src/main/java/com/ic/protocols/protocol_s123.java b/app/src/main/java/com/ic/protocols/protocol_s123.java index dcc38806..d8a43309 100644 --- a/app/src/main/java/com/ic/protocols/protocol_s123.java +++ b/app/src/main/java/com/ic/protocols/protocol_s123.java @@ -30,6 +30,7 @@ import com.enqualcomm.support.provider.ICGlobalSettingsProvider; import com.enqualcomm.support.provider.ICMembersProvider; import com.enqualcomm.support.provider.WebSmsProvider; import com.enqualcomm.support.service.HeartRateManager; +import com.enqualcomm.support.utils.APNUtil; import com.enqualcomm.support.utils.CameraUtil; import com.enqualcomm.support.utils.Connection; import com.enqualcomm.support.utils.ICAudioManager; @@ -201,6 +202,10 @@ public class protocol_s123 { APPH, BPSS,//短信命令 APSS, + BPAP,//APN指令下发 + APAP, + BPIP,//设置服务器IP(域名)端口 + APIP, UNKNOWN_CMD, } @@ -328,6 +333,10 @@ public class protocol_s123 { cmdMap.put(CMD_TYPE.APPH, "APPH"); cmdMap.put(CMD_TYPE.BPSS, "BPSS"); cmdMap.put(CMD_TYPE.APSS, "APSS"); + cmdMap.put(CMD_TYPE.BPAP, "BPAP"); + cmdMap.put(CMD_TYPE.APAP, "APAP"); + cmdMap.put(CMD_TYPE.BPIP, "BPIP"); + cmdMap.put(CMD_TYPE.APIP, "APIP"); } @@ -3387,6 +3396,14 @@ public class protocol_s123 { ICLogger.d("收到服务器短信指令."); handleBPSS(cmd); break; + case BPAP: + ICLogger.d("收到服务器APN设置的指令."); + handleBPAP(cmd); + break; + case BPIP: + ICLogger.d("收到服务器设置IP的指令."); + handleBPIP(cmd); + break; case APTM: break; case APCH: @@ -3494,6 +3511,85 @@ public class protocol_s123 { return ret; } + /** + * 处理服务器设置IP和端口号 + * + * @param cmd + */ + private void handleBPIP(String cmd) { + try { + //IWBPIP,353456789012345,080835,1,172.128.20.111:9999 + //IW:标识符 + //BPIP : 命令字符 + //353456789012345:IMEI号,设备唯一ID + //080835 :指令流水号 + //1: 服务器通道类型,1通信消息服务器通道,2软件升级消息服务器通道 + String[] split = cmd.split(CMDSPLIT); + if (split.length == 5) { + String id = split[2]; + String type = split[3]; + String ipAndPort = split[4]; + if (ipAndPort.contains(":")) { + String[] ipAndPortArray = ipAndPort.split(":"); + String ip = ipAndPortArray[0]; + String port = ipAndPortArray[1]; + Config.setCustomServer(mRuntime.getContextProxy().context, true, ip, + Integer.parseInt(port)); + //172.128.20.111:9999: IP(域名):端口 + //响应IWAPIP,080835,1,172.128.20.111:9999 + //1:表示设备接受数据成功,0表示设备接受数据失败. + responseWithId(cmdMap.get(CMD_TYPE.APIP), id, type, ipAndPort); + //以下内容必须在后回复的后面,否则就发送不了。 + Config.loadServerSettings(mRuntime); + CoreService.getInstance().disconnect_server(); + CoreService.getInstance().ReConnectToServer(); + } + } else { + ICLogger.d("parse failed==> " + cmd); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 处理APN下发的指令 + * IW:标识符 + * BPAP : 命令字符 + * 353456789012345:IMEI号,设备唯一ID + * 080835 :指令流水号 + * 460: MCC + * 01:MNC + * CMNET: APN名称 + * cmnet:apn + * user: 用户名,没有要留空位 + * password:密码, 没有要留空位 + * + * @param cmd + */ + private void handleBPAP(String cmd) { + //IWBPAP,353456789012345,080835,460,01,CMNET,cmnet,user,password + String[] split = cmd.split(CMDSPLIT); + if (split.length == 9) { + String id = split[2]; + //APNUtil.addVPN(apnName, apn, mcc, mnc, user, password, mContext) + //获取数据 + String mcc = split[3]; + String mnc = split[4]; + String apnName = split[5]; + String apn = split[6]; + String user = split[7]; + String password = split[8]; + boolean isSuccess = APNUtil.addVPN(apnName, apn, mcc, mnc, user, password, mRuntime.getContextProxy().context); + ICLogger.d("is set apn success==> " + isSuccess); + //回复后台 + // 1:表示设备接受数据成功,0表示设备接受数据失败 + responseWithId(cmdMap.get(CMD_TYPE.APAP), id, "1"); + } else { + ICLogger.d("parse error ==> " + cmd); + } + } + /** * 解析短信指令,解析出来以后走mms的路子 * @@ -3513,18 +3609,23 @@ public class protocol_s123 { ICLogger.d("content == > " + content); ICSmsManager.handleSms(mRuntime, content, null, null); //回复 - responseWithId(cmdMap.get(CMD_TYPE.APSS), id); + // 1:表示设备接受数据成功,0表示设备接受数据失败 + responseWithId(cmdMap.get(CMD_TYPE.APSS), id, "1"); } else { ICLogger.d("handleBPSS==parse error==> " + cmd); } } } - private void responseWithId(String cmd, String id) { - StringMessage stringMessage = genStringMessage(cmd, - new StringBuffer(CMDHEADER).append(cmd) - .append(CMDSPLIT).append(id) - .append(CMDEND).toString()); + private void responseWithId(String cmd, String id, String... args) { + StringBuilder append = new StringBuilder(CMDHEADER).append(cmd) + .append(CMDSPLIT).append(id); + for (String arg : args) { + append.append(CMDSPLIT).append(arg); + } + append.append(CMDEND); + ICLogger.d("response content ==> " + append.toString()); + StringMessage stringMessage = genStringMessage(cmd, append.toString()); mConnection.send(stringMessage); } @@ -3543,8 +3644,9 @@ public class protocol_s123 { String value = split[3]; //更新数据库 updateSettingValue("is_dial_enable", value); + //1 : 表示设备可以拨号 0:表示设备不可拨号, 用于同步平台设置。 //返回结果 - responseWithId(cmdMap.get(CMD_TYPE.APPH), id); + responseWithId(cmdMap.get(CMD_TYPE.APPH), id, value); } catch (Exception e) { e.printStackTrace(); } diff --git a/local.properties b/local.properties index 6594581d..8bb06342 100644 --- a/local.properties +++ b/local.properties @@ -5,4 +5,4 @@ # For customization when using a Version Control System, please read the # header note. #Fri Jul 02 14:52:39 CST 2021 -sdk.dir=D\:\\android\\Android\\sdk +sdk.dir=E\:\\Android\\Sdk