Aqara Home v2.4.1版本的 MD5 值为:529779ac2bc0131db52a1fc3098d2b35

以下内容为反编译后的 j0.java 源代码,内容仅作参考


package k.u.c.d.d;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.os.Build;
import android.text.TextUtils;
import com.alibaba.fastjson.JSONObject;
import com.github.druk.rx2dnssd.BonjourService;
import com.github.druk.rx2dnssd.Rx2DnssdBindable;
import com.google.android.material.badge.BadgeDrawable;
import com.lumi.lumidevsdk.LumiDevSDK;
import com.lumiunited.aqara.device.adddevicepage.bean.LANDeviceEntity;
import com.lumiunited.aqara.service.bean.HomeEntity;
import com.lumiunited.aqara.service.bean.RoomsEntity;
import com.taobao.accs.utl.BaseMonitor;
import com.umeng.socialize.net.utils.SocializeProtocolConstants;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.SocketTimeoutException;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import k.u.c.d.d.j0;
import k.u.c.i.m1;
import k.u.c.x.j3;
public class j0 {

    public static class a implements k.u.c.d.j.n<String> {
        public final p.a.m0 a;

        public a(p.a.m0 m0Var) {
            this.a = m0Var;
        }

        @Override
        public void onSuccess(String str) {
            this.a.onSuccess(str);
        }

        @Override
        public void onFailed(int i2, String str) {
            this.a.onError(new k.u.c.d.d.r0.c(i2, str));
        }
    }

    public static class b implements k.u.c.d.j.n<String> {
        public final p.a.m0 a;
        public final String b;

        public b(p.a.m0 m0Var, String str) {
            this.a = m0Var;
            this.b = str;
        }

        @Override
        public void onSuccess(String str) {
            this.a.onSuccess(this.b);
        }

        @Override
        public void onFailed(int i2, String str) {
            this.a.onSuccess(this.b);
        }
    }

    public static p.a.k0<String> a(final String str, final String str2, final String str3, final String str4, final Network network) {
        return p.a.k0.a(new p.a.o0() {
            @Override
            public final void subscribe(p.a.m0 m0Var) {
                j0.a(str4, str, str2, str3, network, m0Var);
            }
        }).b(p.a.e1.b.b());
    }

    public static p.a.k0<String> b(final String str, final String str2, final String str3, final Network network) {
        return p.a.k0.a(new p.a.o0() {
            @Override
            public final void subscribe(p.a.m0 m0Var) {
                j0.b(str, str2, str3, network, m0Var);
            }
        }).b(p.a.e1.b.b());
    }

    public static void a(String str, String str2, String str3, String str4, Network network, p.a.m0 m0Var) throws Exception {
        String str5;
        String str6 = "";
        if (TextUtils.isEmpty(str)) {
            m0Var.onError(new k.u.c.d.d.r0.c(-1, "get device IP failed"));
            return;
        }
        JSONObject jSONObject = new JSONObject();
        jSONObject.put("cid", (Object) " ");
        jSONObject.put("ssid", (Object) str2);
        jSONObject.put("passwd", (Object) str3);
        jSONObject.put("lang", (Object) k.u.c.d.a.p.a().getResources().getConfiguration().locale.getLanguage());
        jSONObject.put("bindKey", (Object) str4);
        jSONObject.put("country_domain", (Object) k.u.c.r.l.d.g());
        jSONObject.put(k.u.c.i.f3.g.f2, (Object) LumiDevSDK.getTimeZone());
        byte[] encryptedInfo = LumiDevSDK.getEncryptedInfo(jSONObject.toString());
        boolean z2 = false;
        k.d.a.b("biu biu biu ----->> send data to gateway :", jSONObject.toJSONString());
        DatagramSocket datagramSocket = new DatagramSocket();
        datagramSocket.setSoTimeout(5000);
        try {
            try {
                String[] split = str.split(":");
                int parseInt = Integer.parseInt(split[1]);
                InetAddress byName = InetAddress.getByName(split[0]);
                DatagramPacket datagramPacket = new DatagramPacket(encryptedInfo, encryptedInfo.length, byName, parseInt);
                if (network != null) {
                    if (Build.VERSION.SDK_INT >= 22) {
                        network.bindSocket(datagramSocket);
                    } else {
                        z2 = ConnectivityManager.setProcessDefaultNetwork(network);
                    }
                }
                DatagramPacket datagramPacket2 = new DatagramPacket(new byte[102400], 102400);
                datagramSocket.send(datagramPacket);
                datagramSocket.receive(datagramPacket2);
                str5 = new String(LumiDevSDK.getDecryptedInfo(datagramPacket2.getData(), datagramPacket2.getLength()));
                try {
                    JSONObject jSONObject2 = new JSONObject();
                    jSONObject2.put(BaseMonitor.COUNT_ACK, (Object) 1);
                    byte[] encryptedInfo2 = LumiDevSDK.getEncryptedInfo(jSONObject2.toString());
                    datagramSocket.send(new DatagramPacket(encryptedInfo2, encryptedInfo2.length, byName, 10008));
                } catch (SocketTimeoutException e2) {
                    e = e2;
                    str6 = str5;
                    if (str6.isEmpty()) {
                        m0Var.onError(new k.u.c.d.d.r0.c(4, e.getMessage()));
                    }
                    datagramSocket.close();
                } catch (Exception e3) {
                    e = e3;
                    str6 = str5;
                    m0Var.onError(new k.u.c.d.d.r0.c(-1, e.getMessage()));
                    datagramSocket.close();
                }
            } finally {
                datagramSocket.close();
                if (0 != 0) {
                    ConnectivityManager.setProcessDefaultNetwork(null);
                }
            }
        } catch (SocketTimeoutException e4) {
            e = e4;
        } catch (Exception e5) {
            e = e5;
        }
        m0Var.onSuccess(str5);
    }

    public static void b(String str, String str2, String str3, Network network, p.a.m0 m0Var) throws Exception {
        String str4;
        String str5 = "";
        String deviceGatewayIPAddress = LumiDevSDK.getDeviceGatewayIPAddress();
        if (TextUtils.isEmpty(deviceGatewayIPAddress)) {
            m0Var.onError(new k.u.c.d.d.r0.c(-1, "get device IP failed"));
            return;
        }
        InetAddress byName = InetAddress.getByName(deviceGatewayIPAddress);
        JSONObject jSONObject = new JSONObject();
        jSONObject.put("cid", (Object) " ");
        jSONObject.put("ssid", (Object) str);
        jSONObject.put("passwd", (Object) str2);
        jSONObject.put("lang", (Object) k.u.c.d.a.p.a().getResources().getConfiguration().locale.getLanguage());
        jSONObject.put("bindKey", (Object) str3);
        jSONObject.put("country_domain", (Object) k.u.c.r.l.d.g());
        jSONObject.put(k.u.c.i.f3.g.f2, (Object) LumiDevSDK.getTimeZone());
        byte[] encryptedInfo = LumiDevSDK.getEncryptedInfo(jSONObject.toString());
        boolean z2 = false;
        k.d.a.b("biu biu biu ----->> send data to gateway :", jSONObject.toJSONString());
        DatagramSocket datagramSocket = new DatagramSocket();
        datagramSocket.setSoTimeout(5000);
        try {
            try {
                DatagramPacket datagramPacket = new DatagramPacket(encryptedInfo, encryptedInfo.length, byName, 10008);
                if (network != null) {
                    if (Build.VERSION.SDK_INT >= 22) {
                        network.bindSocket(datagramSocket);
                    } else {
                        z2 = ConnectivityManager.setProcessDefaultNetwork(network);
                    }
                }
                DatagramPacket datagramPacket2 = new DatagramPacket(new byte[102400], 102400);
                datagramSocket.send(datagramPacket);
                datagramSocket.receive(datagramPacket2);
                str4 = new String(LumiDevSDK.getDecryptedInfo(datagramPacket2.getData(), datagramPacket2.getLength()));
            } finally {
                datagramSocket.close();
                if (0 != 0) {
                    ConnectivityManager.setProcessDefaultNetwork(null);
                }
            }
        } catch (SocketTimeoutException e2) {
            e = e2;
        } catch (Exception e3) {
            e = e3;
        }
        try {
            JSONObject jSONObject2 = new JSONObject();
            jSONObject2.put(BaseMonitor.COUNT_ACK, (Object) 1);
            byte[] encryptedInfo2 = LumiDevSDK.getEncryptedInfo(jSONObject2.toString());
            datagramSocket.send(new DatagramPacket(encryptedInfo2, encryptedInfo2.length, byName, 10008));
        } catch (SocketTimeoutException e4) {
            str5 = str4;
            e = e4;
            if (str5.isEmpty()) {
                m0Var.onError(new k.u.c.d.d.r0.c(4, e.getMessage()));
            }
            datagramSocket.close();
        } catch (Exception e5) {
            str5 = str4;
            e = e5;
            m0Var.onError(new k.u.c.d.d.r0.c(-1, e.getMessage()));
            datagramSocket.close();
        }
        m0Var.onSuccess(str4);
    }

    public static p.a.k0<String> b(final String str, final String str2, final String str3, final String str4, final Network network) {
        return p.a.k0.a(new p.a.o0() {
            @Override
            public final void subscribe(p.a.m0 m0Var) {
                j0.b(str, str2, str4, str3, network, m0Var);
            }
        }).b(p.a.e1.b.b());
    }

    public static p.a.k0<String> a(String str, String str2, String str3) {
        final JSONObject jSONObject = new JSONObject();
        jSONObject.put("wifi", (Object) str);
        jSONObject.put("pwd", (Object) str2);
        jSONObject.put("cid", (Object) " ");
        if (!TextUtils.isEmpty(str3)) {
            jSONObject.put("bindKey", (Object) str3);
        }
        jSONObject.put("country_domain", (Object) k.u.c.r.l.d.g());
        k.d.a.b("message to http gateway", jSONObject.toString());
        return p.a.k0.a(new p.a.o0() {
            @Override
            public final void subscribe(p.a.m0 m0Var) {
                l0.i().b("http://192.168.5.1:4567/example", JSONObject.this.toString(), (HashMap<String, String>) null, (k.u.c.d.j.n<String>) new j0.a(m0Var));
            }
        }).b((p.a.x0.o) new p.a.x0.o() {
            @Override
            public final Object apply(Object obj) {
                p.a.q0 a2;
                a2 = p.a.k0.a(new p.a.o0() {
                    @Override
                    public final void subscribe(p.a.m0 m0Var) {
                        m1.d().b(new j0.b(m0Var, r1));
                    }
                });
                return a2;
            }
        });
    }

    public static void b(String str, String str2, String str3, String str4, Network network, p.a.m0 m0Var) throws Exception {
        String str5;
        String deviceGatewayIPAddress = LumiDevSDK.getDeviceGatewayIPAddress();
        if (TextUtils.isEmpty(deviceGatewayIPAddress)) {
            m0Var.onError(new k.u.c.d.d.r0.c(-1, "get device IP failed"));
            return;
        }
        InetAddress byName = InetAddress.getByName(deviceGatewayIPAddress);
        JSONObject jSONObject = new JSONObject();
        jSONObject.put("ssid", (Object) str);
        jSONObject.put("passwd", (Object) str2);
        jSONObject.put("positionId", (Object) str3);
        jSONObject.put("uid", (Object) q0.b().a().getUserId());
        jSONObject.put("cid", (Object) " ");
        jSONObject.put("lang", (Object) k.u.c.d.a.p.a().getResources().getConfiguration().locale.getLanguage());
        jSONObject.put("country_domain", (Object) k.u.c.r.l.d.g());
        jSONObject.put("bindKey", (Object) str4);
        jSONObject.put(k.u.c.i.f3.g.f2, (Object) LumiDevSDK.getTimeZone());
        byte[] encryptedInfo = LumiDevSDK.getEncryptedInfo(jSONObject.toString());
        boolean z2 = false;
        k.d.a.b("biu biu biu ----->> send sendMsg2GatewayByUDPWithPosition data to gateway :", jSONObject.toJSONString());
        DatagramSocket datagramSocket = new DatagramSocket();
        datagramSocket.setSoTimeout(5000);
        try {
            try {
                DatagramPacket datagramPacket = new DatagramPacket(encryptedInfo, encryptedInfo.length, byName, 10008);
                if (network != null) {
                    if (Build.VERSION.SDK_INT >= 22) {
                        network.bindSocket(datagramSocket);
                    } else {
                        z2 = ConnectivityManager.setProcessDefaultNetwork(network);
                    }
                }
                DatagramPacket datagramPacket2 = new DatagramPacket(new byte[102400], 102400);
                datagramSocket.send(datagramPacket);
                datagramSocket.receive(datagramPacket2);
                str5 = new String(LumiDevSDK.getDecryptedInfo(datagramPacket2.getData(), datagramPacket2.getLength()));
                datagramSocket.close();
                if (z2) {
                    ConnectivityManager.setProcessDefaultNetwork(null);
                }
            } catch (SocketTimeoutException e2) {
                m0Var.onError(new k.u.c.d.d.r0.c(4, e2.getMessage()));
                datagramSocket.close();
            } catch (Exception e3) {
                m0Var.onError(new k.u.c.d.d.r0.c(-1, e3.getMessage()));
                datagramSocket.close();
            }
            m0Var.onSuccess(str5);
        } catch (Throwable th) {
            datagramSocket.close();
            if (z2) {
                ConnectivityManager.setProcessDefaultNetwork(null);
            }
            throw th;
        }
    }

    public static void a(Context context, String str, String str2, String str3, k.u.c.d.j.n nVar) {
        k.d.a.d("gatewayFastLink # ");
        if (context != null) {
            JSONObject jSONObject = new JSONObject();
            jSONObject.put("ssid", (Object) str);
            jSONObject.put("passwd", (Object) str2);
            jSONObject.put("uid", (Object) q0.b().a().getUserId());
            jSONObject.put("cid", (Object) " ");
            jSONObject.put("lang", (Object) context.getResources().getConfiguration().locale.getLanguage());
            jSONObject.put("country_domain", (Object) k.u.c.r.l.d.g());
            if (str3 != null) {
                jSONObject.put("bindKey", (Object) str3);
            }
            jSONObject.put(k.u.c.i.f3.g.f2, (Object) a());
            RoomsEntity j2 = j3.E().j();
            HomeEntity c = j3.E().c();
            if (j2 != null && j2.getRoomId() != null) {
                jSONObject.put("positionId", (Object) j2.getRoomId());
            } else if (c == null || c.getRooms().size() <= 0) {
                if (c != null) {
                    jSONObject.put("positionId", (Object) c.getHomeId());
                } else if (j3.E().f() != null) {
                    jSONObject.put("positionId", (Object) j3.E().f());
                }
            } else {
                RoomsEntity roomsEntity = null;
                Iterator<RoomsEntity> it = c.getRooms().iterator();
                while (true) {
                    if (!it.hasNext()) {
                        break;
                    }
                    RoomsEntity next = it.next();
                    if (next.getRoomId() != null) {
                        if (next.isDefault()) {
                            roomsEntity = next;
                            break;
                        } else if (roomsEntity == null) {
                            roomsEntity = next;
                        }
                    }
                }
                if (roomsEntity != null) {
                    jSONObject.put("positionId", (Object) roomsEntity.getRoomId());
                }
            }
        }
    }

    public static p.a.k0<String> a(final String str, final String str2, final String str3, final Network network) {
        return p.a.k0.a(new p.a.o0() {
            @Override
            public final void subscribe(p.a.m0 m0Var) {
                j0.a(str3, str, str2, network, m0Var);
            }
        }).b(p.a.e1.b.b());
    }

    public static void a(String str, String str2, String str3, Network network, p.a.m0 m0Var) throws Exception {
        boolean z2;
        int parseInt;
        InetAddress byName;
        DatagramPacket datagramPacket;
        k.d.a.b("biu biu ------>> haha-->> sendMessage2GatewayByIP:", str, str2, Thread.currentThread().getName());
        if (!TextUtils.isEmpty(str) && !TextUtils.isEmpty(str2)) {
            String str4 = "";
            JSONObject jSONObject = new JSONObject();
            jSONObject.put("cid", (Object) " ");
            jSONObject.put("lang", (Object) str3);
            jSONObject.put("country_domain", (Object) k.u.c.r.l.d.g());
            jSONObject.put("baseUrl", (Object) k.u.c.d.g.c.a(k.u.c.r.l.c.k().b()));
            jSONObject.put("bindKey", (Object) str2);
            jSONObject.put(k.u.c.i.f3.g.f2, (Object) LumiDevSDK.getTimeZone());
            k.d.a.b("biu biu biu ----->> send data to gateway :", jSONObject.toJSONString(), str);
            byte[] encryptedInfo = LumiDevSDK.getEncryptedInfo(jSONObject.toString());
            DatagramSocket datagramSocket = new DatagramSocket();
            datagramSocket.setSoTimeout(2000);
            try {
                try {
                    String[] split = str.split(":");
                    parseInt = Integer.parseInt(split[1]);
                    byName = InetAddress.getByName(split[0]);
                    datagramPacket = new DatagramPacket(encryptedInfo, encryptedInfo.length, byName, parseInt);
                } catch (Throwable th) {
                    th = th;
                    k.d.a.b("biu biu ------->> final ");
                    datagramSocket.close();
                    if (encryptedInfo != null) {
                        ConnectivityManager.setProcessDefaultNetwork(null);
                    }
                    throw th;
                }
            } catch (SocketTimeoutException e2) {
                e = e2;
                z2 = false;
            } catch (Exception e3) {
                e = e3;
                z2 = false;
            } catch (Throwable th2) {
                th = th2;
                encryptedInfo = null;
                k.d.a.b("biu biu ------->> final ");
                datagramSocket.close();
                if (encryptedInfo != null) {
                }
                throw th;
            }
            if (network != null) {
                if (Build.VERSION.SDK_INT >= 22) {
                    network.bindSocket(datagramSocket);
                } else {
                    z2 = ConnectivityManager.setProcessDefaultNetwork(network);
                    DatagramPacket datagramPacket2 = new DatagramPacket(new byte[102400], 102400);
                    datagramSocket.send(datagramPacket);
                    datagramSocket.receive(datagramPacket2);
                    String str5 = new String(LumiDevSDK.getDecryptedInfo(datagramPacket2.getData(), datagramPacket2.getLength()));
                    JSONObject jSONObject2 = new JSONObject();
                    jSONObject2.put(BaseMonitor.COUNT_ACK, (Object) 1);
                    byte[] encryptedInfo2 = LumiDevSDK.getEncryptedInfo(jSONObject2.toString());
                    datagramSocket.send(new DatagramPacket(encryptedInfo2, encryptedInfo2.length, byName, parseInt));
                    k.d.a.b("biu biu ------->> final ");
                    datagramSocket.close();
                    if (z2) {
                        ConnectivityManager.setProcessDefaultNetwork(null);
                    }
                    m0Var.onSuccess(str5);
                    return;
                }
            }
            z2 = false;
            DatagramPacket datagramPacket22 = new DatagramPacket(new byte[102400], 102400);
            datagramSocket.send(datagramPacket);
            datagramSocket.receive(datagramPacket22);
            String str52 = new String(LumiDevSDK.getDecryptedInfo(datagramPacket22.getData(), datagramPacket22.getLength()));
            JSONObject jSONObject22 = new JSONObject();
            jSONObject22.put(BaseMonitor.COUNT_ACK, (Object) 1);
            byte[] encryptedInfo22 = LumiDevSDK.getEncryptedInfo(jSONObject22.toString());
            datagramSocket.send(new DatagramPacket(encryptedInfo22, encryptedInfo22.length, byName, parseInt));
            k.d.a.b("biu biu ------->> final ");
            datagramSocket.close();
            if (z2) {
            }
            m0Var.onSuccess(str52);
            return;
        }
        m0Var.onError(new k.u.c.d.d.r0.c(-1, "empty device IP or bindkey"));
    }

    public static LANDeviceEntity b(BonjourService bonjourService) throws Exception {
        k.d.a.b("MDNS发现:" + bonjourService.toString());
        LANDeviceEntity lANDeviceEntity = new LANDeviceEntity();
        lANDeviceEntity.setModel(bonjourService.getTxtRecords().get("md"));
        lANDeviceEntity.setAddress(((Inet4Address) Objects.requireNonNull(bonjourService.getInet4Address())).getHostAddress() + ":" + bonjourService.getPort());
        lANDeviceEntity.setName(bonjourService.getServiceName());
        lANDeviceEntity.setDid(bonjourService.getServiceName());
        return lANDeviceEntity;
    }

    public static p.a.k0<HashSet<LANDeviceEntity>> a(final Rx2DnssdBindable rx2DnssdBindable, final int i2) {
        return p.a.k0.a(new p.a.o0() {
            @Override
            public final void subscribe(p.a.m0 m0Var) {
                j0.a(Rx2DnssdBindable.this, i2, m0Var);
            }
        });
    }

    public static void a(Rx2DnssdBindable rx2DnssdBindable, int i2, final p.a.m0 m0Var) throws Exception {
        long j2 = i2;
        rx2DnssdBindable.browse(LumiDevSDK.MDNS_SERVICE_TYPE, "local.").a(rx2DnssdBindable.resolve()).a(rx2DnssdBindable.queryIPRecords()).c(p.a.e1.b.b()).o(j2, TimeUnit.SECONDS).a(p.a.s0.d.a.a()).c((p.a.x0.r) new p.a.x0.r() {
            @Override
            public final boolean test(Object obj) {
                return j0.a((BonjourService) obj);
            }
        }).v(new p.a.x0.o() {
            @Override
            public final Object apply(Object obj) {
                return j0.b((BonjourService) obj);
            }
        }).a(j2, TimeUnit.SECONDS).subscribe(new p.a.x0.g() {
            @Override
            public final void accept(Object obj) {
                j0.a(p.a.m0.this, (List) obj);
            }
        }, new p.a.x0.g() {
            @Override
            public final void accept(Object obj) {
                Throwable th = (Throwable) obj;
                p.a.m0.this.onSuccess(new HashSet(new HashSet()));
            }
        });
    }

    public static boolean a(BonjourService bonjourService) throws Exception {
        return !TextUtils.equals("true", (String) Objects.requireNonNull(bonjourService.getTxtRecords().get(SocializeProtocolConstants.PROTOCOL_KEY_PV)));
    }

    public static void a(p.a.m0 m0Var, List list) throws Exception {
        if (list.isEmpty()) {
            return;
        }
        Iterator it = list.iterator();
        while (it.hasNext()) {
            if (TextUtils.isEmpty(((LANDeviceEntity) it.next()).getAddress())) {
                it.remove();
            }
        }
        m0Var.onSuccess(new HashSet(list));
    }

    public static String a() {
        String str;
        String str2;
        Date date = new Date();
        int timezoneOffset = date.getTimezoneOffset() / 60;
        int abs = Math.abs(date.getTimezoneOffset() % 60);
        String str3 = "";
        if (timezoneOffset != 0) {
            StringBuilder sb = new StringBuilder();
            sb.append(Math.abs(timezoneOffset));
            if (abs != 0) {
                str2 = ":" + abs;
            } else {
                str2 = "";
            }
            sb.append(str2);
            str = sb.toString();
        } else {
            str = "";
        }
        if (TextUtils.isEmpty(str)) {
            StringBuilder sb2 = new StringBuilder();
            sb2.append(timezoneOffset < 0 ? "-" : BadgeDrawable.DEFAULT_EXCEED_MAX_BADGE_NUMBER_SUFFIX);
            if (Math.abs(timezoneOffset) < 10 && abs != 0) {
                str3 = "0";
            }
            sb2.append(str3);
            sb2.append(str);
            str = sb2.toString();
        }
        return "GMT" + str;
    }
}