导航菜单

页面标题

页面副标题

Telegram v11.13.0 - ConnectionsManager$ResolveHostByNameTask.java 源代码

正在查看: Telegram v11.13.0 应用的 ConnectionsManager$ResolveHostByNameTask.java JAVA 源代码文件

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


package org.telegram.tgnet;

import android.os.AsyncTask;
import android.os.SystemClock;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONObject;
import org.telegram.messenger.FileLog;
import org.telegram.messenger.LiteMode;
import org.telegram.messenger.MediaDataController;

public class ConnectionsManager$ResolveHostByNameTask extends AsyncTask {
    private ArrayList addresses = new ArrayList();
    private String currentHostName;

    public ConnectionsManager$ResolveHostByNameTask(String str) {
        this.currentHostName = str;
    }

    public void addAddress(long j) {
        if (this.addresses.contains(Long.valueOf(j))) {
            return;
        }
        this.addresses.add(Long.valueOf(j));
    }

    @Override
    public ConnectionsManager$ResolvedDomain doInBackground(Void... voidArr) {
        InputStream inputStream;
        ByteArrayOutputStream byteArrayOutputStream;
        JSONArray jSONArray;
        int length;
        try {
            URLConnection openConnection = new URL("https://www.google.com/resolve?name=" + this.currentHostName + "&type=A").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("Host", "dns.google.com");
            openConnection.setConnectTimeout(MediaDataController.MAX_STYLE_RUNS_COUNT);
            openConnection.setReadTimeout(2000);
            openConnection.connect();
            inputStream = openConnection.getInputStream();
            try {
                byteArrayOutputStream = new ByteArrayOutputStream();
            } catch (Throwable th) {
                th = th;
                byteArrayOutputStream = null;
            }
        } catch (Throwable th2) {
            th = th2;
            inputStream = null;
            byteArrayOutputStream = null;
        }
        try {
            byte[] bArr = new byte[LiteMode.FLAG_CHAT_SCALE];
            while (true) {
                int read = inputStream.read(bArr);
                if (read <= 0) {
                    break;
                }
                byteArrayOutputStream.write(bArr, 0, read);
            }
            JSONObject jSONObject = new JSONObject(new String(byteArrayOutputStream.toByteArray()));
            if (!jSONObject.has("Answer") || (length = (jSONArray = jSONObject.getJSONArray("Answer")).length()) <= 0) {
                try {
                    inputStream.close();
                } catch (Throwable th3) {
                    FileLog.e(th3, false);
                }
                try {
                    byteArrayOutputStream.close();
                } catch (Exception unused) {
                }
                return null;
            }
            ArrayList arrayList = new ArrayList(length);
            for (int i = 0; i < length; i++) {
                arrayList.add(jSONArray.getJSONObject(i).getString("data"));
            }
            ConnectionsManager$ResolvedDomain connectionsManager$ResolvedDomain = new ConnectionsManager$ResolvedDomain(arrayList, SystemClock.elapsedRealtime());
            try {
                inputStream.close();
            } catch (Throwable th4) {
                FileLog.e(th4, false);
            }
            try {
                byteArrayOutputStream.close();
            } catch (Exception unused2) {
            }
            return connectionsManager$ResolvedDomain;
        } catch (Throwable th5) {
            th = th5;
            try {
                FileLog.e(th, false);
                if (inputStream != null) {
                    try {
                        inputStream.close();
                    } catch (Throwable th6) {
                        FileLog.e(th6, false);
                    }
                }
                if (byteArrayOutputStream != null) {
                    try {
                        byteArrayOutputStream.close();
                    } catch (Exception unused3) {
                    }
                }
                try {
                    InetAddress byName = InetAddress.getByName(this.currentHostName);
                    ArrayList arrayList2 = new ArrayList(1);
                    arrayList2.add(byName.getHostAddress());
                    return new ConnectionsManager$ResolvedDomain(arrayList2, SystemClock.elapsedRealtime());
                } catch (Exception e) {
                    FileLog.e(e, false);
                }
            } catch (Throwable th7) {
                if (inputStream != null) {
                    try {
                        inputStream.close();
                    } catch (Throwable th8) {
                        FileLog.e(th8, false);
                    }
                }
                if (byteArrayOutputStream != null) {
                    try {
                        byteArrayOutputStream.close();
                    } catch (Exception unused4) {
                    }
                }
                throw th7;
            }
        }
    }

    @Override
    public void onPostExecute(ConnectionsManager$ResolvedDomain connectionsManager$ResolvedDomain) {
        int i = 0;
        if (connectionsManager$ResolvedDomain != null) {
            ConnectionsManager.access$000().put(this.currentHostName, connectionsManager$ResolvedDomain);
            int size = this.addresses.size();
            while (i < size) {
                ConnectionsManager.native_onHostNameResolved(this.currentHostName, ((Long) this.addresses.get(i)).longValue(), connectionsManager$ResolvedDomain.getAddress());
                i++;
            }
        } else {
            int size2 = this.addresses.size();
            while (i < size2) {
                ConnectionsManager.native_onHostNameResolved(this.currentHostName, ((Long) this.addresses.get(i)).longValue(), "");
                i++;
            }
        }
        ConnectionsManager.access$100().remove(this.currentHostName);
    }
}