正在查看: Telegram v11.13.0 应用的 ConnectionsManager$ResolveHostByNameTask.java JAVA 源代码文件
本页面展示 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);
}
}