导航菜单

页面标题

页面副标题

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

正在查看: Plus 12 v10.13.1.1 应用的 ConnectionsManager$MozillaDnsLoadTask.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.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
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$MozillaDnsLoadTask extends AsyncTask<Void, Void, NativeByteBuffer> {
    public int currentAccount;
    public int responseDate;

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

    @Override
    public NativeByteBuffer doInBackground(Void... voids) {
        ByteArrayOutputStream byteArrayOutputStream;
        InputStream inputStream;
        int read;
        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://mozilla.cloudflare-dns.com/dns-query?name=" + str + "&type=TXT&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.addRequestProperty("accept", "application/dns-json");
            openConnection.setConnectTimeout(5000);
            openConnection.setReadTimeout(5000);
            openConnection.connect();
            InputStream inputStream2 = openConnection.getInputStream();
            try {
                this.responseDate = (int) (openConnection.getDate() / 1000);
                ByteArrayOutputStream byteArrayOutputStream2 = new ByteArrayOutputStream();
                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$MozillaDnsLoadTask.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 th) {
                            FileLog.e(th);
                        }
                    }
                    try {
                        byteArrayOutputStream2.close();
                    } catch (Exception unused) {
                    }
                    return nativeByteBuffer;
                } catch (Throwable th2) {
                    byteArrayOutputStream = byteArrayOutputStream2;
                    th = th2;
                    inputStream = inputStream2;
                    try {
                        FileLog.e(th, false);
                        if (inputStream != null) {
                            try {
                                inputStream.close();
                            } catch (Throwable th3) {
                                FileLog.e(th3);
                            }
                        }
                        if (byteArrayOutputStream != null) {
                            try {
                                byteArrayOutputStream.close();
                            } catch (Exception unused2) {
                            }
                        }
                        return null;
                    } catch (Throwable th4) {
                        if (inputStream != null) {
                            try {
                                inputStream.close();
                            } catch (Throwable th5) {
                                FileLog.e(th5);
                            }
                        }
                        if (byteArrayOutputStream != null) {
                            try {
                                byteArrayOutputStream.close();
                            } catch (Exception unused3) {
                            }
                        }
                        throw th4;
                    }
                }
            } catch (Throwable th6) {
                th = th6;
                inputStream = inputStream2;
                byteArrayOutputStream = null;
            }
        } catch (Throwable th7) {
            th = th7;
            byteArrayOutputStream = null;
            inputStream = null;
        }
    }

    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$MozillaDnsLoadTask.this.lambda$onPostExecute$1(result);
            }
        });
    }

    public void lambda$onPostExecute$1(NativeByteBuffer nativeByteBuffer) {
        FileLog.d("5. currentTask = null");
        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);
        } else if (BuildVars.LOGS_ENABLED) {
            FileLog.d("failed to get mozilla txt result");
        }
    }
}