导航菜单

页面标题

页面副标题

Plus 12 v10.13.1.1 - ConnectionsManager$GoogleDnsLoadTask.java 源代码

正在查看: Plus 12 v10.13.1.1 应用的 ConnectionsManager$GoogleDnsLoadTask.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package org.telegram.tgnet;

import android.os.AsyncTask;
import android.util.Base64;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import javax.net.ssl.SSLException;
import org.json.JSONArray;
import org.json.JSONObject;
import org.telegram.messenger.AccountInstance;
import org.telegram.messenger.BuildConfig;
import org.telegram.messenger.BuildVars;
import org.telegram.messenger.FileLog;
import org.telegram.messenger.R;
import org.telegram.messenger.Utilities;

public class ConnectionsManager$GoogleDnsLoadTask extends AsyncTask<Void, Void, NativeByteBuffer> {
    public int currentAccount;
    public int responseDate;

    public ConnectionsManager$GoogleDnsLoadTask(int instance) {
        this.currentAccount = instance;
    }

    @Override
    public NativeByteBuffer doInBackground(Void... voids) {
        ByteArrayOutputStream byteArrayOutputStream;
        InputStream inputStream;
        InputStream inputStream2;
        ByteArrayOutputStream byteArrayOutputStream2;
        int read;
        boolean z = false;
        try {
            String str = ConnectionsManager.native_isTestBackend(this.currentAccount) != 0 ? "tapv3.stel.com" : AccountInstance.getInstance(this.currentAccount).getMessagesController().dcDomainName;
            int nextInt = Utilities.random.nextInt(R.styleable.AppCompatTheme_viewInflaterClass) + 13;
            StringBuilder sb = new StringBuilder(nextInt);
            for (int i = 0; i < nextInt; i++) {
                sb.append("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Utilities.random.nextInt(62)));
            }
            URLConnection openConnection = new URL("https://dns.google.com/resolve?name=" + str + "&type=ANY&random_padding=" + ((Object) sb)).openConnection();
            openConnection.addRequestProperty("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0 like Mac OS X) AppleWebKit/602.1.38 (KHTML, like Gecko) Version/10.0 Mobile/14A5297c Safari/602.1");
            openConnection.setConnectTimeout(5000);
            openConnection.setReadTimeout(5000);
            openConnection.connect();
            inputStream2 = openConnection.getInputStream();
            try {
                this.responseDate = (int) (openConnection.getDate() / 1000);
                byteArrayOutputStream2 = new ByteArrayOutputStream();
            } catch (Throwable th) {
                th = th;
                inputStream = inputStream2;
                byteArrayOutputStream = null;
            }
        } catch (Throwable th2) {
            th = th2;
            byteArrayOutputStream = null;
            inputStream = null;
        }
        try {
            byte[] bArr = new byte[32768];
            while (!isCancelled() && (read = inputStream2.read(bArr)) > 0) {
                byteArrayOutputStream2.write(bArr, 0, read);
            }
            JSONArray jSONArray = new JSONObject(new String(byteArrayOutputStream2.toByteArray())).getJSONArray("Answer");
            int length = jSONArray.length();
            ArrayList arrayList = new ArrayList(length);
            for (int i2 = 0; i2 < length; i2++) {
                JSONObject jSONObject = jSONArray.getJSONObject(i2);
                if (jSONObject.getInt("type") == 16) {
                    arrayList.add(jSONObject.getString("data"));
                }
            }
            Collections.sort(arrayList, new Comparator() {
                @Override
                public final int compare(Object obj, Object obj2) {
                    int lambda$doInBackground$0;
                    lambda$doInBackground$0 = ConnectionsManager$GoogleDnsLoadTask.lambda$doInBackground$0((String) obj, (String) obj2);
                    return lambda$doInBackground$0;
                }
            });
            StringBuilder sb2 = new StringBuilder();
            for (int i3 = 0; i3 < arrayList.size(); i3++) {
                sb2.append(((String) arrayList.get(i3)).replace("\"", BuildConfig.APP_CENTER_HASH));
            }
            byte[] decode = Base64.decode(sb2.toString(), 0);
            NativeByteBuffer nativeByteBuffer = new NativeByteBuffer(decode.length);
            nativeByteBuffer.writeBytes(decode);
            if (inputStream2 != null) {
                try {
                    inputStream2.close();
                } catch (Throwable th3) {
                    FileLog.e(th3);
                }
            }
            try {
                byteArrayOutputStream2.close();
            } catch (Exception unused) {
            }
            return nativeByteBuffer;
        } catch (Throwable th4) {
            byteArrayOutputStream = byteArrayOutputStream2;
            th = th4;
            inputStream = inputStream2;
            try {
                if (!(th instanceof SocketTimeoutException) && !(th instanceof SSLException)) {
                    z = true;
                }
                FileLog.e(th, z);
                if (inputStream != null) {
                    try {
                        inputStream.close();
                    } catch (Throwable th5) {
                        FileLog.e(th5);
                    }
                }
                if (byteArrayOutputStream != null) {
                    try {
                        byteArrayOutputStream.close();
                    } catch (Exception unused2) {
                    }
                }
                return null;
            } catch (Throwable th6) {
                if (inputStream != null) {
                    try {
                        inputStream.close();
                    } catch (Throwable th7) {
                        FileLog.e(th7);
                    }
                }
                if (byteArrayOutputStream != null) {
                    try {
                        byteArrayOutputStream.close();
                    } catch (Exception unused3) {
                    }
                }
                throw th6;
            }
        }
    }

    public static int lambda$doInBackground$0(String str, String str2) {
        int length = str.length();
        int length2 = str2.length();
        if (length > length2) {
            return -1;
        }
        return length < length2 ? 1 : 0;
    }

    @Override
    public void onPostExecute(final NativeByteBuffer result) {
        Utilities.stageQueue.postRunnable(new Runnable() {
            @Override
            public final void run() {
                ConnectionsManager$GoogleDnsLoadTask.this.lambda$onPostExecute$1(result);
            }
        });
    }

    public void lambda$onPostExecute$1(NativeByteBuffer nativeByteBuffer) {
        FileLog.d("3. currentTask = null, result = " + nativeByteBuffer);
        ConnectionsManager.-$$Nest$sfputcurrentTask((AsyncTask) null);
        if (nativeByteBuffer != null) {
            int i = this.currentAccount;
            ConnectionsManager.native_applyDnsConfig(i, nativeByteBuffer.address, AccountInstance.getInstance(i).getUserConfig().getClientPhone(), this.responseDate);
            return;
        }
        if (BuildVars.LOGS_ENABLED) {
            FileLog.d("failed to get google result");
            FileLog.d("start mozilla task");
        }
        ConnectionsManager$MozillaDnsLoadTask connectionsManager$MozillaDnsLoadTask = new ConnectionsManager$MozillaDnsLoadTask(this.currentAccount);
        connectionsManager$MozillaDnsLoadTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null, null, null);
        FileLog.d("4. currentTask = mozilla");
        ConnectionsManager.-$$Nest$sfputcurrentTask(connectionsManager$MozillaDnsLoadTask);
    }
}