欢欲药 v1.1.4版本的 MD5 值为:7d0994a905ec6c6aceeef0cd822647fc
以下内容为反编译后的 NetworkConfig.java 源代码,内容仅作参考
package im.czepdgxadm.tgnet;
import android.os.Process;
import android.text.TextUtils;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.security.yunceng.android.sdk.YunCeng;
import com.csm.shield.GameShield;
import com.google.android.exoplayer2.util.Log;
import com.google.gson.Gson;
import com.king.zxing.util.LogUtils;
import com.qiniu.android.dns.DnsManager;
import com.qiniu.android.dns.IResolver;
import com.qiniu.android.dns.NetworkInfo;
import com.qiniu.android.dns.Record;
import com.qiniu.android.dns.dns.DohResolver;
import im.czepdgxadm.messenger.AndroidUtilities;
import im.czepdgxadm.messenger.BuildVars;
import im.czepdgxadm.messenger.FileLog;
import im.czepdgxadm.messenger.NotificationCenter;
import im.czepdgxadm.messenger.UserConfig;
import im.czepdgxadm.ui.hui.friendscircle_v1.view.expandTextView.model.UUIDUtils;
import im.czepdgxadm.ui.utils.AesUtils;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
public class NetworkConfig {
private static final int ENV_LOCAL = 1000;
private static final int ENV_LOCAL_TEST = 1001;
private static final int ENV_NONE = 0;
private static final int ENV_ONLINE = 1002;
private static final int ENV_ONLINE_GREY = 1004;
private static final int ENV_ONLINE_TEST = 1003;
private DnsManager dnsManager;
private boolean inited;
private boolean inited_doh;
private boolean initing;
private boolean initing_doh;
public static final String[] IP_DEFALUT_ONLINE = {"127.0.0.1", "0000"};
public static final String[] HOST = {"https://8.212.19.176/dns-query", "https://8.212.57.169/dns-query"};
private static volatile NetworkConfig sInstance = new NetworkConfig();
public static String gameAppId = "CIMSEAEYgqvynQMoiPO+rQYwqwU6qwXYgdfKzsaBmZKUk5WTkpaSkpGPgcLT0/zKx4GZgcaVxZGQxcHFjpPHm8WOl5vBwo7CwcaQjsWWlsWVx5HAk5uQwYGPgdDAy8bH/NHWz8aBmfjYgdfa08aBmYHn7O7i6u388fbv5oGPgdXCz9bGgZmBwcDAk5KOgOuAjoDxkpOAmMvX19OZjIyA6Ob6gI3HxsXGzdDGjsqNzcbXjIDo5vqAgd6P2IHX2tPGgZmB5+zu4urt/PH27+aBj4HVws/WxoGZgdfAk5KOgO6AjoDxkpOAmMvX19OZjIyA6Ob6gI3FwtDXxtDXzcbX1MzRyI3NxteMgOjm+oCB3o/Ygdfa08aBmYHn7O7i6u388fbv5oGPgdXCz9bGgZmB0MCTk5KOgO6AjoDxkpOAmMvX19OZjIyA6Ob6gI3HxsXGzdDGjsqNzcbXjIDo5vqAgd6P2IHX2tPGgZmB5+zu4urt/PH27+aBj4HVws/WxoGZgcLT09DLysbPx5OSjoDngI6A8ZKTgJjL19fTmYyMgOjm+oCNxcLQ18bQ183G19TM0ciNzcbXjIDo5vqAgd6P2IHX2tPGgZmB6vP85+rx5uD3gY+B1cLP1saBmfiBkpGTjZSajZqSjZKVmZuRm5GB/t6P2IHX2tPGgZmB6vP85+rx5uD3gY+B1cLP1saBmfiBkpGTjZSVjZeRjZGSlpmbkZuRgf7ej9iB19rTxoGZgerz/Ofq8ebg94GPgdXCz9bGgZn4gZKRk42Rlo2QjZKXmpmbkZuRgf7ej9iB19rTxoGZgerz/Ofq8ebg94GPgdXCz9bGgZn4gZKRk42Rl42UjZKam5mbkZuRgf7ej9iB19rTxoGZgerz/Ofq8ebg94GPgdXCz9bGgZn4gZeUjZGXkI2SkJuNkpuUmZuRm5GB/t7+3g==";
private String dohDomain = "cn.399.com";
private ArrayList<NetBean> connInfos = new ArrayList<>();
private int sCurrentConnection = -1;
protected int currentAccount = UserConfig.selectedAccount;
private boolean start = true;
private int gamePort = 9528;
private int gameStart = 0;
@Retention(RetentionPolicy.SOURCE)
private @interface EnvNode {
}
public static NetworkConfig getInstance() {
NetworkConfig localInstance = sInstance;
if (localInstance == null) {
synchronized (NetworkConfig.class) {
localInstance = sInstance;
if (localInstance == null) {
NetworkConfig networkConfig = new NetworkConfig();
localInstance = networkConfig;
sInstance = networkConfig;
}
}
}
return localInstance;
}
public static void setIpPortDefaultAddress() {
String[] cfg;
if (BuildVars.RELEASE_VERSION) {
cfg = IP_DEFALUT_ONLINE;
} else {
cfg = getInstance().initNetconfig(1001);
}
if (BuildVars.DEBUG_VERSION) {
Log.i("connection", "java NetWorkConfig setIpPortDefaultAddress ===> address = " + (cfg != null ? Arrays.toString(cfg) : "null"));
}
if (cfg != null && cfg[0] != null && cfg[1] != null) {
for (int a = 0; a < 3; a++) {
ConnectionsManager.native_setIpPortDefaultAddress(a, cfg[0], Integer.parseInt(cfg[1]));
}
}
}
private NetworkConfig() {
}
public void applyNetconfig(int instance) {
String[] cfg;
if (BuildVars.RELEASE_VERSION) {
cfg = initNetconfig(1002);
} else {
cfg = initNetconfig(1002);
}
if (BuildVars.DEBUG_VERSION) {
Log.i("connection", "java NetWorkConfig applyNetconfig ===> address = " + (cfg != null ? Arrays.toString(cfg) : "null"));
}
if (cfg != null && cfg[0] != null && cfg[1] != null) {
ConnectionsManager.getInstance(instance).applyDatacenterAddress(2, cfg[0], Integer.parseInt(cfg[1]));
ConnectionsManager.getInstance(instance).resumeNetworkMaybe();
}
}
public void initUrlDOH() {
this.initing_doh = true;
try {
try {
String[] strArr = HOST;
IResolver[] resolvers = {new DohResolver(strArr[0]), new DohResolver(strArr[1])};
DnsManager dnsManager = new DnsManager(NetworkInfo.normal, resolvers);
this.dnsManager = dnsManager;
Record[] records = dnsManager.queryRecords(this.dohDomain);
String recordsStr = JSONObject.toJSONString(records);
LogUtils.e("doh获取成功====" + recordsStr);
if (records != null && records.length > 0) {
for (Record record : records) {
String ipAddress = record.value;
NetBean netBean = new NetBean(null, ipAddress, IP_DEFALUT_ONLINE[1]);
this.connInfos.add(netBean);
}
}
this.inited_doh = true;
this.sCurrentConnection = -1;
setServer2();
} catch (Exception e) {
e.printStackTrace();
}
} finally {
this.initing_doh = false;
}
}
private void setServer2() {
AndroidUtilities.runOnUIThread(new Runnable() {
@Override
public final void run() {
NetworkConfig.this.m1034lambda$setServer2$0$imczepdgxadmtgnetNetworkConfig();
}
});
}
public void m1034lambda$setServer2$0$imczepdgxadmtgnetNetworkConfig() {
String server2 = this.inited ? "oss+server 2" : "server 2";
if (this.inited_doh) {
server2 = "doh+" + server2;
}
NotificationCenter.getInstance(this.currentAccount).postNotificationName(NotificationCenter.getBackupIpStatus, server2);
}
private String[] initNetconfig(int node) {
if (this.start) {
this.start = false;
AndroidUtilities.runOnUIThread(new Runnable() {
@Override
public final void run() {
NetworkConfig.this.m1033lambda$initNetconfig$1$imczepdgxadmtgnetNetworkConfig();
}
});
}
switch (node) {
case 1000:
return new String[]{"47.104.243.76", "31537"};
case 1001:
return new String[]{"192.168.1.184", "31443"};
case 1002:
String[] address = getGameShieldConfig();
if (address == null || address.length != 2 || TextUtils.isEmpty(address[0]) || TextUtils.isEmpty(address[1])) {
return null;
}
return address;
case 1003:
return new String[]{"183.230.11.65", "55555"};
case 1004:
return new String[]{"36.255.220.245", "31443"};
default:
return null;
}
}
public void m1033lambda$initNetconfig$1$imczepdgxadmtgnetNetworkConfig() {
NotificationCenter.getInstance(this.currentAccount).postNotificationName(NotificationCenter.getBackupIpStatus, "server 1");
}
private String[] initRemoteNetconfig() {
synchronized (UUIDUtils.getUuid()) {
if (this.inited) {
return selecteRemoteConnInfo();
}
if (this.initing) {
return null;
}
return selecteRemoteConnInfo();
}
}
private synchronized String[] selecteRemoteConnInfo() {
String[] str;
this.gameStart++;
FileLog.d("游戏盾 准备去连接---> " + this.gameStart);
if (this.gameStart >= 1 && (str = getGameShieldConfig()) != null) {
FileLog.d("游戏盾 getGameShieldConfig---> " + str[0] + " : " + str[1]);
return str;
}
if (this.connInfos.size() == 0) {
return null;
}
if (this.sCurrentConnection == -1) {
this.sCurrentConnection = 0;
}
NetBean netBean = this.connInfos.get(this.sCurrentConnection);
LogUtils.e("连接信息====" + new Gson().toJson(this.connInfos));
if (this.sCurrentConnection != this.connInfos.size() - 1) {
this.sCurrentConnection++;
return new String[]{netBean.getdDomain(), netBean.getdPort()};
}
this.sCurrentConnection = -1;
this.inited = false;
this.inited_doh = false;
this.connInfos = new ArrayList<>();
return null;
}
private synchronized void initRemoteConnInfos() {
Throwable th;
Exception exc;
InputStream httpConnectionStream;
ByteArrayOutputStream bos;
String[] split;
int i = 1;
this.initing = true;
InputStream httpConnectionStream2 = null;
ByteArrayOutputStream bos2 = null;
char c = 0;
try {
try {
URL url = new URL("https://cnwiocnw512dw.oss-accelerate.aliyuncs.com/acewefwevwe.txt");
LogUtils.e("initRemoteConnInfos-------" + url);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.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");
conn.setRequestMethod("GET");
conn.setReadTimeout(5000);
conn.setConnectTimeout(5000);
conn.connect();
if (conn.getResponseCode() == 200) {
try {
httpConnectionStream2 = conn.getInputStream();
try {
byte[] bytes = new byte[1024];
bos2 = new ByteArrayOutputStream();
while (true) {
try {
int len = httpConnectionStream2.read(bytes);
if (len == -1) {
break;
} else {
bos2.write(bytes, 0, len);
}
} catch (Exception e) {
e = e;
} catch (Throwable th2) {
th = th2;
}
}
String txt = new String(bos2.toByteArray());
byte[] rets = AesUtils.decryptYunceng(txt);
String retStr = new String(rets);
LogUtils.e("oss获取成功====" + retStr);
String[] arrConn = retStr.split(",", 3);
int i2 = 0;
while (i2 < arrConn.length) {
String connInfo = arrConn[i2];
if (i2 != arrConn.length - i) {
String[] split2 = connInfo.split(LogUtils.COLON, 2);
httpConnectionStream = httpConnectionStream2;
try {
NetBean netBean = new NetBean(null, split2[c], split2[1]);
this.connInfos.add(netBean);
bos = bos2;
} catch (Exception e2) {
e = e2;
httpConnectionStream2 = httpConnectionStream;
FileLog.e(e);
this.initing = false;
if (httpConnectionStream2 != null) {
try {
httpConnectionStream2.close();
} catch (Exception e3) {
FileLog.e(e3);
}
}
if (bos2 != null) {
try {
bos2.close();
} catch (Exception e4) {
exc = e4;
Exception e5 = exc;
FileLog.e(e5);
}
}
} catch (Throwable th3) {
th = th3;
httpConnectionStream2 = httpConnectionStream;
this.initing = false;
if (httpConnectionStream2 != null) {
try {
httpConnectionStream2.close();
} catch (Exception e6) {
FileLog.e(e6);
}
}
if (bos2 == null) {
throw th;
}
try {
bos2.close();
throw th;
} catch (Exception e7) {
FileLog.e(e7);
throw th;
}
}
} else {
httpConnectionStream = httpConnectionStream2;
try {
split = connInfo.split("#", 3);
bos = bos2;
} catch (Exception e8) {
e = e8;
httpConnectionStream2 = httpConnectionStream;
FileLog.e(e);
this.initing = false;
if (httpConnectionStream2 != null) {
}
if (bos2 != null) {
}
} catch (Throwable th4) {
th = th4;
httpConnectionStream2 = httpConnectionStream;
this.initing = false;
if (httpConnectionStream2 != null) {
}
if (bos2 == null) {
}
}
try {
NetBean netBean2 = new NetBean(split[0], split[1], split[2]);
this.connInfos.add(netBean2);
} catch (Exception e9) {
e = e9;
httpConnectionStream2 = httpConnectionStream;
bos2 = bos;
FileLog.e(e);
this.initing = false;
if (httpConnectionStream2 != null) {
}
if (bos2 != null) {
}
} catch (Throwable th5) {
th = th5;
httpConnectionStream2 = httpConnectionStream;
bos2 = bos;
this.initing = false;
if (httpConnectionStream2 != null) {
}
if (bos2 == null) {
}
}
}
i2++;
httpConnectionStream2 = httpConnectionStream;
bos2 = bos;
i = 1;
c = 0;
}
httpConnectionStream = httpConnectionStream2;
bos = bos2;
this.inited = true;
this.sCurrentConnection = -1;
setServer2();
httpConnectionStream2 = httpConnectionStream;
bos2 = bos;
} catch (Exception e10) {
e = e10;
} catch (Throwable th6) {
th = th6;
}
} catch (Exception e11) {
e = e11;
} catch (Throwable th7) {
th = th7;
}
}
this.initing = false;
if (httpConnectionStream2 != null) {
try {
httpConnectionStream2.close();
} catch (Exception e12) {
FileLog.e(e12);
}
}
if (bos2 != null) {
try {
bos2.close();
} catch (Exception e13) {
exc = e13;
Exception e52 = exc;
FileLog.e(e52);
}
}
} catch (Throwable th8) {
th = th8;
}
} catch (Exception e14) {
e = e14;
}
}
private String[] getYuncengConfig(String groupName, String dDomain, String dPort) {
StringBuffer ip = new StringBuffer();
StringBuffer port = new StringBuffer();
int ret = YunCeng.getProxyTcpByDomain("Default", groupName, dDomain, dPort, ip, port);
if (ret == 0) {
return new String[]{ip.toString(), port.toString()};
}
FileLog.e("YunCeng get next ip failed: " + ret);
return null;
}
private String[] getGameShieldConfig() {
int listenPort = GameShield.getListenPort(this.gamePort);
Process.myPid();
FileLog.e("游戏盾端口: " + listenPort);
return listenPort <= 0 ? new String[]{"127.0.0.1", this.gamePort + ""} : new String[]{"127.0.0.1", listenPort + ""};
}
}