正在查看: Easycash v3.75.13 应用的 DNSParseOPT.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Easycash v3.75.13 应用的 DNSParseOPT.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.lingyue.easycash.net.dns;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.text.TextUtils;
import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.WorkerThread;
import com.fintopia.lender.module.network.ServerApiConfig;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.lingyue.easycash.ECServerApiConfig;
import com.lingyue.easycash.EasyCashApplication;
import com.lingyue.easycash.activity.o2;
import com.lingyue.easycash.net.dns.DNSParseOPT;
import com.lingyue.easycash.net.dns.NetWorkOPTConfig;
import com.lingyue.idnbaselib.utils.EcActivityLifecycleCallback;
import com.lingyue.idnbaselib.utils.GsonUtil;
import com.lingyue.supertoolkit.customtools.CollectionUtils;
import com.lingyue.supertoolkit.resourcetools.ContextProvider;
import com.lingyue.supertoolkit.resourcetools.SharedPreferenceUtils;
import com.lingyue.supertoolkit.rxjavatools.RxUtil;
import com.open.sentryconfig.SentryConfig;
import com.open.sentryconfig.network.DNSParseType;
import com.open.sentryconfig.network.WrapDnsParse;
import io.reactivex.Flowable;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
import io.sentry.ISpan;
import io.sentry.ITransaction;
import io.sentry.Scope;
import io.sentry.ScopeCallback;
import io.sentry.Sentry;
import io.sentry.SpanStatus;
import java.io.Serializable;
import java.net.InetAddress;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import kotlin.Pair;
import kotlin.Triple;
import okhttp3.Dns;
import org.reactivestreams.Publisher;
public class DNSParseOPT {
private boolean a;
private final Context b;
private final Gson c;
private final Map<String, PreLoadDNS> d;
private final Map<String, InetAddress> e;
private volatile boolean f;
private volatile NetWorkOPTConfig.PreLoadDnsConfig g;
final List<HostIpAddress> h;
private Disposable i;
private final Dns j;
class AnonymousClass1 implements Dns {
AnonymousClass1() {
}
public Pair b(String str, ITransaction iTransaction) throws UnknownHostException {
return DNSParseOPT.this.L(str);
}
@NonNull
public List<InetAddress> lookup(@NonNull final String str) throws UnknownHostException {
return SentryConfig.x().l0(str, new WrapDnsParse() {
@Override
public final Pair a(ITransaction iTransaction) {
Pair b;
b = DNSParseOPT.AnonymousClass1.this.b(str, iTransaction);
return b;
}
});
}
}
private static class HostIpAddress {
String a;
byte[] b;
public HostIpAddress(@NonNull String str, @NonNull byte[] bArr) {
this.a = str;
this.b = bArr;
}
}
private static class SingletonHolder {
private static final DNSParseOPT a = new DNSParseOPT(null);
private SingletonHolder() {
}
}
DNSParseOPT(AnonymousClass1 anonymousClass1) {
this();
}
public static Publisher A(Set set, Long l) throws Exception {
return Flowable.I(set);
}
public static PreLoadDNS B(ITransaction iTransaction, NetWorkOPTConfig.PreLoadDnsConfig preLoadDnsConfig, String str) throws Exception {
List list = null;
ISpan y2 = !iTransaction.isFinished() ? iTransaction.y(str, "dns.parse.preParse") : null;
long j = -1;
try {
list = Dns.a.lookup(str);
j = TimeUnit.SECONDS.toMillis(30L) + System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(preLoadDnsConfig.refreshInterval);
if (y2 != null) {
String str2 = "";
if (!CollectionUtils.f(list)) {
str2 = GsonUtil.b().t(list) + "";
}
y2.l("result", str2);
SpanStatus spanStatus = SpanStatus.OK;
y2.o(spanStatus);
iTransaction.a(str, spanStatus.name());
}
} catch (Exception e) {
if (y2 != null) {
iTransaction.a(str, e.getClass().getSimpleName());
y2.o(SpanStatus.INTERNAL_ERROR);
}
}
return new PreLoadDNS(str, list, j);
}
public static PreLoadDNS C(Throwable th) throws Exception {
return new PreLoadDNS();
}
public static Publisher D(final ITransaction iTransaction, final NetWorkOPTConfig.PreLoadDnsConfig preLoadDnsConfig, String str) throws Exception {
return Flowable.M(str).Q(Schedulers.d()).N(new Function() {
public final Object apply(Object obj) {
DNSParseOPT.PreLoadDNS B;
B = DNSParseOPT.B(iTransaction, preLoadDnsConfig, (String) obj);
return B;
}
}).W(new Function() {
public final Object apply(Object obj) {
DNSParseOPT.PreLoadDNS C;
C = DNSParseOPT.C((Throwable) obj);
return C;
}
});
}
public void E(PreLoadDNS preLoadDNS) throws Exception {
if (preLoadDNS.isValid()) {
this.d.put(preLoadDNS.host, preLoadDNS);
this.e.put(preLoadDNS.host, preLoadDNS.preLoadAddress.get(0));
}
}
public void F(NetWorkOPTConfig.PreLoadDnsConfig preLoadDnsConfig, NetWorkOPTConfig.PreLoadDnsConfig preLoadDnsConfig2) throws Exception {
SharedPreferenceUtils.J(EasyCashApplication.getInstance(), "easy_cash_dns_pre_parse_config", this.c.t(preLoadDnsConfig));
}
public static void G(boolean z2, Scope scope) {
scope.A("fallbackDNSEnable", z2 + "");
}
public static void H(NetWorkOPTConfig.PreLoadDnsConfig preLoadDnsConfig, Scope scope) {
scope.A("preParseDNSEnable", preLoadDnsConfig.enable + "");
}
@SuppressLint({"CheckResult"})
private void I() {
this.e.putAll(r());
final ITransaction C = Sentry.C("DNSParseOPT_loadConfigFromCache", "DNSParseOPT");
Flowable.H(new Callable() {
@Override
public final Object call() {
Triple v;
v = DNSParseOPT.this.v(C);
return v;
}
}).l0(Schedulers.c()).g0(new Consumer() {
public final void accept(Object obj) {
DNSParseOPT.this.w((Triple) obj);
}
}, new Consumer() {
public final void accept(Object obj) {
DNSParseOPT.this.x(C, (Throwable) obj);
}
});
}
@Nullable
@WorkerThread
private HashMap<String, InetAddress> J() {
String s = SharedPreferenceUtils.s(this.b, "easy_cash_fall_back_dns", null);
if (TextUtils.isEmpty(s)) {
return null;
}
try {
return (HashMap) new Gson().l(s, new TypeToken<HashMap<String, InetAddress>>() {
}.e());
} catch (Exception unused) {
SharedPreferenceUtils.k(this.b, "easy_cash_fall_back_dns");
return null;
}
}
@WorkerThread
private NetWorkOPTConfig.PreLoadDnsConfig K(NetWorkOPTConfig.PreLoadDnsConfig preLoadDnsConfig) {
String s = SharedPreferenceUtils.s(this.b, "easy_cash_dns_pre_parse_config", null);
if (TextUtils.isEmpty(s)) {
return preLoadDnsConfig;
}
try {
return (NetWorkOPTConfig.PreLoadDnsConfig) new Gson().k(s, NetWorkOPTConfig.PreLoadDnsConfig.class);
} catch (Exception unused) {
SharedPreferenceUtils.J(this.b, "easy_cash_dns_pre_parse_config", null);
return preLoadDnsConfig;
}
}
public Pair<DNSParseType, List<InetAddress>> L(@NonNull String str) throws UnknownHostException {
PreLoadDNS preLoadDNS = this.d.get(str);
if (this.g.enable && preLoadDNS != null && preLoadDNS.isValid()) {
return new Pair<>(DNSParseType.HIT_CACHE, preLoadDNS.preLoadAddress);
}
try {
return new Pair<>(DNSParseType.SYSTEM, Dns.a.lookup(str));
} catch (UnknownHostException e) {
if (!this.f || !this.e.containsKey(str)) {
throw e;
}
ArrayList arrayList = new ArrayList();
arrayList.add(this.e.get(str));
return new Pair<>(DNSParseType.FALLBACK, arrayList);
}
}
private String M(String str, String str2) {
if (TextUtils.isEmpty(str)) {
return str2;
}
try {
return new URL(str).getHost();
} catch (Exception e) {
Sentry.h(e);
return str2;
}
}
private Set<String> N(List<String> list) {
HashSet hashSet = new HashSet();
hashSet.add(M(ECServerApiConfig.e().c(), "api.easycash.id"));
hashSet.add(M(ServerApiConfig.d().c(), "finapi.easycash.id"));
hashSet.add("event-tracking-api.easycash.id");
hashSet.add("indoi18n-web-cdn.easycash.id");
hashSet.add("www.easycash.id");
hashSet.add("web.easycash.id");
hashSet.add("indo-infra-config-admin-gray-service.easycash.id");
if (!CollectionUtils.f(list)) {
Iterator<String> it = list.iterator();
while (it.hasNext()) {
hashSet.add(it.next());
}
}
return hashSet;
}
@SuppressLint({"CheckResult"})
public void O(final NetWorkOPTConfig.PreLoadDnsConfig preLoadDnsConfig) {
P();
final Set<String> N = N(preLoadDnsConfig.preloadHosts);
final ITransaction C = Sentry.C("DNSParsePREParse", "dns.parse.preParse");
this.i = Flowable.K(0L, preLoadDnsConfig.getRefreshInterval(), TimeUnit.MINUTES).l0(Schedulers.c()).D(new Function() {
public final Object apply(Object obj) {
Publisher A;
A = DNSParseOPT.A(N, (Long) obj);
return A;
}
}).D(new Function() {
public final Object apply(Object obj) {
Publisher D;
D = DNSParseOPT.D(C, preLoadDnsConfig, (String) obj);
return D;
}
}).z(new Consumer() {
public final void accept(Object obj) {
DNSParseOPT.this.E((DNSParseOPT.PreLoadDNS) obj);
}
}).e(N.size()).Q(Schedulers.c()).g0(new Consumer() {
public final void accept(Object obj) {
DNSParseOPT.this.y(C, (List) obj);
}
}, new Consumer() {
public final void accept(Object obj) {
DNSParseOPT.z(C, (Throwable) obj);
}
});
}
public void P() {
RxUtil.b(this.i);
this.i = null;
}
@WorkerThread
private void Q(Map<String, InetAddress> map) {
if (CollectionUtils.g(map)) {
return;
}
SharedPreferenceUtils.J(this.b, "easy_cash_fall_back_dns", new Gson().t(new HashMap(map)));
}
@SuppressLint({"CheckResult"})
private void R(@NonNull final NetWorkOPTConfig.PreLoadDnsConfig preLoadDnsConfig) {
Flowable.M(preLoadDnsConfig).l0(Schedulers.c()).g0(new Consumer() {
public final void accept(Object obj) {
DNSParseOPT.this.F(preLoadDnsConfig, (NetWorkOPTConfig.PreLoadDnsConfig) obj);
}
}, new o2());
}
private void T(final boolean z2, boolean z3) {
if (!z3) {
SharedPreferenceUtils.E(this.b, "easy_cash_dns_fallback_switch", z2);
}
this.f = z2;
SentryConfig.x().v(new ScopeCallback() {
public final void a(Scope scope) {
DNSParseOPT.G(z2, scope);
}
});
}
private void U(final NetWorkOPTConfig.PreLoadDnsConfig preLoadDnsConfig, boolean z2) {
Disposable disposable;
if (preLoadDnsConfig == null) {
return;
}
if (!z2) {
R(preLoadDnsConfig);
}
SentryConfig.x().v(new ScopeCallback() {
public final void a(Scope scope) {
DNSParseOPT.H(NetWorkOPTConfig.PreLoadDnsConfig.this, scope);
}
});
this.g = preLoadDnsConfig;
if (!preLoadDnsConfig.enable) {
P();
} else if (!z2 || (disposable = this.i) == null || disposable.c()) {
O(preLoadDnsConfig);
}
}
private HashMap<String, InetAddress> r() {
HashMap<String, InetAddress> hashMap = new HashMap<>();
Iterator it = new ArrayList(this.h).iterator();
while (it.hasNext()) {
HostIpAddress hostIpAddress = (HostIpAddress) it.next();
try {
String str = hostIpAddress.a;
hashMap.put(str, InetAddress.getByAddress(str, hostIpAddress.b));
} catch (Exception e) {
Sentry.h(e);
}
}
return hashMap;
}
public static DNSParseOPT t() {
return SingletonHolder.a;
}
public Triple v(ITransaction iTransaction) throws Exception {
ISpan y2 = iTransaction.y("loadFallBackDNS", "loadFallBackDNS");
boolean m = SharedPreferenceUtils.m(this.b, "easy_cash_dns_fallback_switch", true);
HashMap<String, InetAddress> J = J();
SpanStatus spanStatus = SpanStatus.OK;
y2.o(spanStatus);
ISpan y3 = iTransaction.y("loadPreDNSConfig", "loadPreDNSConfig");
NetWorkOPTConfig.PreLoadDnsConfig preLoadDnsConfig = new NetWorkOPTConfig.PreLoadDnsConfig();
NetWorkOPTConfig.PreLoadDnsConfig K = K(preLoadDnsConfig);
if (K == preLoadDnsConfig) {
y3.o(SpanStatus.INTERNAL_ERROR);
} else {
y3.o(spanStatus);
}
iTransaction.o(spanStatus);
return new Triple(Boolean.valueOf(m), K, J);
}
public void w(Triple triple) throws Exception {
if (!CollectionUtils.g((Map) triple.c())) {
this.e.putAll((Map) triple.c());
}
T(((Boolean) triple.a()).booleanValue(), true);
U((NetWorkOPTConfig.PreLoadDnsConfig) triple.b(), true);
}
public void x(ITransaction iTransaction, Throwable th) throws Exception {
T(this.f, true);
U(this.g, true);
iTransaction.o(SpanStatus.INTERNAL_ERROR);
Sentry.h(new RuntimeException("DNSParseOPT loadConfigFromCache error", th));
}
public void y(ITransaction iTransaction, List list) throws Exception {
if (!iTransaction.isFinished()) {
iTransaction.o(SpanStatus.OK);
}
Q(this.e);
}
public static void z(ITransaction iTransaction, Throwable th) throws Exception {
if (iTransaction.isFinished()) {
return;
}
iTransaction.o(SpanStatus.INTERNAL_ERROR);
}
@SuppressLint({"CheckResult"})
public void S(NetWorkOPTConfig netWorkOPTConfig) {
if (netWorkOPTConfig == null) {
return;
}
T(netWorkOPTConfig.fallbackDnsIp, false);
U(netWorkOPTConfig.preLoadDNS, false);
}
public Dns s() {
return this.j;
}
public synchronized void u() {
if (this.a) {
return;
}
I();
EcActivityLifecycleCallback.f.g(new EcActivityLifecycleCallback.AppVisibilityListener() {
boolean a = true;
@Override
public void a(Activity activity) {
if (DNSParseOPT.this.g.enable) {
DNSParseOPT.this.P();
}
}
@Override
public void b(Activity activity) {
if (this.a) {
this.a = false;
} else if (DNSParseOPT.this.g.enable) {
DNSParseOPT dNSParseOPT = DNSParseOPT.this;
dNSParseOPT.O(dNSParseOPT.g);
}
}
});
this.a = true;
}
@SuppressLint({"CheckResult"})
private DNSParseOPT() {
this.a = false;
this.c = new Gson();
this.d = new ConcurrentHashMap();
this.e = new ConcurrentHashMap();
this.f = true;
this.g = new NetWorkOPTConfig.PreLoadDnsConfig();
this.h = new ArrayList(Arrays.asList(new HostIpAddress("api.easycash.id", new byte[]{-109, -117, -116, -66}), new HostIpAddress("finapi.easycash.id", new byte[]{-109, -117, -116, -66}), new HostIpAddress("event-tracking-api.easycash.id", new byte[]{-109, -117, -116, -66})));
this.j = new AnonymousClass1();
this.b = ContextProvider.c();
u();
}
@Keep
static class PreLoadDNS implements Serializable {
public String host;
public List<InetAddress> preLoadAddress;
public long validTime;
public PreLoadDNS() {
this.preLoadAddress = new ArrayList();
this.host = "";
this.validTime = -1L;
}
public boolean isValid() {
return !CollectionUtils.f(this.preLoadAddress) && System.currentTimeMillis() < this.validTime;
}
public PreLoadDNS(String str, List<InetAddress> list, long j) {
new ArrayList();
this.preLoadAddress = list;
this.host = str;
this.validTime = j;
}
}
}