hxb
2023-09-14 a8c3ca4f1d9433e914325222ae5f26da2f9e2489
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java
@@ -148,19 +148,29 @@
        EventDispatcher.getInstance().register(TopicConstant.GATEWAY_AUTH_BROADCAST, new EventListener() {
            @Override
            public void onMessage(Object msg) {
                LogUtils.i("收到网关认证信息: ");
                NetworkAccessBroadcastResponse bean = getNetworkAccessBroadcastResponse(msg);
                if (bean != null) {
                    //移除监听
                    EventDispatcher.getInstance().remove(TopicConstant.GATEWAY_AUTH_BROADCAST);
                    LogUtils.i("网关入网广播IP: " + bean.getIPAddress());
                    HDLLinkConfig.getInstance().setIpAddress(bean.getIPAddress());
                    String ipStr = bean.getIPAddress();
                    if (!TextUtils.isEmpty(ipStr)) {
                        sendAuthenticateRequest(ipStr, request, callBack);
                try {
                    LogUtils.i("收到网关认证信息: ");
                    NetworkAccessBroadcastResponse bean = getNetworkAccessBroadcastResponse(msg);
                    if (bean != null) {
                        LogUtils.i("网关入网广播IP: " + bean.getIPAddress());
                        if (!TextUtils.isEmpty(bean.getSlave_mac())) {
                            if (!bean.getSlave_mac().equals(request.getObjects().getDeviceMAC())) {
                                LogUtils.i("入网验证的mac和本机不一样,请求的MAC是"+bean.getSlave_mac()+" 本机的是"+request.getObjects().getDeviceMAC());
                                return;
                            }
                        }
                        //移除监听
                        EventDispatcher.getInstance().remove(TopicConstant.GATEWAY_AUTH_BROADCAST);
                        HDLLinkConfig.getInstance().setIpAddress(bean.getIPAddress());
                        String ipStr = bean.getIPAddress();
                        if (!TextUtils.isEmpty(ipStr)) {
                            sendAuthenticateRequest(ipStr, request, callBack);
                        }
                    }
                }
                }catch (Exception e){
                    LogUtils.e("入网验证异常",e.getMessage());
                }
            }
        });
    }
@@ -205,6 +215,7 @@
        request.setIp_address(authenticateDeviceInfoBean.getIPAddress());
        request.setMaster("false");
        request.setLocalEncrypt(false);
        request.setHomeId(HDLLinkConfig.getInstance().getHomeId());
        data.setObjects(request);
@@ -258,20 +269,25 @@
                            String localSecret = "";
                            String gatewayId = "";
                            String ipAddress = "";
                            String homeId="";
                            if (bean.getAuth() != null) {
                                localSecret = bean.getAuth().getLocalSecret();
                            }
                            if (bean.getObjects() != null) {
                                gatewayId = bean.getObjects().getGatewayID();
                                ipAddress = bean.getObjects().getIPAddress();
                                homeId=bean.getObjects().getHomeId();
                            }
                            if (ipAddress == null) {
                                ipAddress = bean.getIp_address();
                            }
                            if(!TextUtils.isEmpty(homeId)){
                                HDLLinkConfig.getInstance().setHomeId(homeId);
                            }
                            HDLLinkConfig.getInstance().setAuthBean(request.getAuth());
                            //判断网关是否已经注册到云端
                            Log.d("panlili", "HDLAuthSocket.java:onSucceed-----> " + localSecret);
                            Log.d("panlili", "认证成功----->localSecret= " + localSecret);
                            if (TextUtils.isEmpty(localSecret) && TextUtils.isEmpty(gatewayId)) {
                                //认证失败,网关未注册到云端
                                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_AUTH_ERROR_GATEWAY_NOT_REGISTERED));