AdGuard v4.4.135版本的 MD5 值为:95950267eaafbda3588f0934f48b2e36
以下内容为反编译后的 a.java 源代码,内容仅作参考
package l1;
import a9.g;
import android.content.Context;
import android.util.SparseArray;
import c0.h;
import ch.qos.logback.core.CoreConstants;
import ch.qos.logback.core.rolling.helper.DateTokenConverter;
import com.adguard.android.storage.RoutingMode;
import com.adguard.corelibs.network.OutboundProxyMode;
import com.adguard.dnslibs.proxy.Dns64Settings;
import com.adguard.dnslibs.proxy.DnsProxy;
import com.adguard.dnslibs.proxy.DnsProxySettings;
import com.adguard.dnslibs.proxy.ListenerSettings;
import com.adguard.dnslibs.proxy.OutboundProxySettings;
import com.adguard.dnslibs.proxy.ProxySettingsOverrides;
import com.adguard.dnslibs.proxy.UpstreamSettings;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.jvm.internal.l;
import kotlin.jvm.internal.n;
import kotlin.jvm.internal.p;
import uh.d;
import v6.f;
import y.b;
import zb.q;
import zb.r;
@Metadata(d1 = {"\u0000\u0080\u0001\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\b\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\t\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0006\bÆ\u0002\u0018\u00002\u00020\u0001B\t\b\u0002¢\u0006\u0004\b7\u00108JP\u0010\u0014\u001a\u00020\u00132\u0006\u0010\u0003\u001a\u00020\u00022\u0006\u0010\u0005\u001a\u00020\u00042\u0006\u0010\u0006\u001a\u00020\u00042\u0006\u0010\b\u001a\u00020\u00072\b\u0010\n\u001a\u0004\u0018\u00010\t2\u0006\u0010\f\u001a\u00020\u000b2\u0006\u0010\u000e\u001a\u00020\r2\u0006\u0010\u0010\u001a\u00020\u000f2\u0006\u0010\u0012\u001a\u00020\u0011J\u000e\u0010\u0015\u001a\u00020\u000b*\u0004\u0018\u00010\tH\u0002J&\u0010\u0019\u001a\b\u0012\u0004\u0012\u00020\u00180\u00172\u0006\u0010\u0005\u001a\u00020\u00042\u0006\u0010\u0006\u001a\u00020\u00042\u0006\u0010\u0016\u001a\u00020\u000bH\u0002J2\u0010 \u001a\b\u0012\u0004\u0012\u00020\u001f0\u00172\u0006\u0010\u001a\u001a\u00020\u00072\f\u0010\u001c\u001a\b\u0012\u0004\u0012\u00020\u001b0\u00172\f\u0010\u001e\u001a\b\u0012\u0004\u0012\u00020\u001b0\u001dH\u0002J\u0016\u0010!\u001a\b\u0012\u0004\u0012\u00020\u001b0\u00172\u0006\u0010\u001a\u001a\u00020\u0007H\u0002J*\u0010$\u001a\u0004\u0018\u00010#2\u0006\u0010\b\u001a\u00020\u00072\b\u0010\n\u001a\u0004\u0018\u00010\t2\f\u0010\"\u001a\b\u0012\u0004\u0012\u00020\u001b0\u0017H\u0002J6\u0010(\u001a\u0004\u0018\u00010'2\u0006\u0010\u001a\u001a\u00020\u00072\u0006\u0010%\u001a\u00020\u000b2\f\u0010&\u001a\b\u0012\u0004\u0012\u00020\u001b0\u00172\f\u0010\u001e\u001a\b\u0012\u0004\u0012\u00020\u001b0\u001dH\u0002J<\u0010*\u001a\b\u0012\u0004\u0012\u00020\u001f0\u00172\f\u0010)\u001a\b\u0012\u0004\u0012\u00020\u001b0\u00172\u0010\b\u0002\u0010\"\u001a\n\u0012\u0004\u0012\u00020\u001b\u0018\u00010\u00172\f\u0010\u001e\u001a\b\u0012\u0004\u0012\u00020\u001b0\u001dH\u0002J\u0012\u0010+\u001a\u00020\u000b*\b\u0012\u0004\u0012\u00020\u001b0\u0017H\u0002J\u0018\u0010,\u001a\b\u0012\u0004\u0012\u00020\u001b0\u0017*\b\u0012\u0004\u0012\u00020\u001b0\u0017H\u0002J6\u00100\u001a\b\u0012\u0004\u0012\u00020\u001b0\u0017*\b\u0012\u0004\u0012\u00020\u001b0\u00172\u0006\u0010-\u001a\u00020\u000b2\u0006\u0010.\u001a\u00020\u000b2\f\u0010/\u001a\b\u0012\u0004\u0012\u00020\u001b0\u0017H\u0002J\u000e\u00102\u001a\u0004\u0018\u000101*\u00020\tH\u0002R\u001c\u00106\u001a\n 4*\u0004\u0018\u000103038\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b(\u00105¨\u00069"}, d2 = {"Ll1/a;", "", "Landroid/content/Context;", CoreConstants.CONTEXT_SCOPE_VALUE, "", "port", "blockEchListenerPort", "Ly/b$f;", "paramsFromDnsFiltering", "Ld1/c;", "outboundProxyConfig", "", "activeIPv6InterfaceExist", "Lc0/h;", "filteringLogManager", "Ls1/p;", "statisticsManager", "Lcom/adguard/android/storage/RoutingMode;", "routingMode", "Lcom/adguard/dnslibs/proxy/DnsProxy;", "c", "l", "blockEch", "", "Lcom/adguard/dnslibs/proxy/ListenerSettings;", "f", "params", "", "fallbackUpstreams", "Landroid/util/SparseArray;", "ids", "Lcom/adguard/dnslibs/proxy/UpstreamSettings;", "e", DateTokenConverter.CONVERTER_KEY, "bootstrap", "Lcom/adguard/dnslibs/proxy/OutboundProxySettings;", "g", "needSetUpDns64", "upstreamsForDNS64", "Lcom/adguard/dnslibs/proxy/Dns64Settings;", "b", "upstreams", "h", "a", "j", "activeIpv6InterfaceExist", "ipv6FilteringEnabled", "defaultIPv4Upstreams", "m", "Lcom/adguard/dnslibs/proxy/OutboundProxySettings$Protocol;", "k", "Luh/c;", "kotlin.jvm.PlatformType", "Luh/c;", "log", "<init>", "()V", "base_release"}, k = 1, mv = {1, 8, 0})
public final class a {
public static final a f19850a = new a();
public static final uh.c f19851b = d.i(a.class);
@Metadata(k = 3, mv = {1, 8, 0}, xi = 48)
public class C0865a extends l implements mc.l<String, Unit> {
public C0865a(Object obj) {
super(1, obj, uh.c.class, "debug", "debug(Ljava/lang/String;)V", 0);
}
@Override
public Unit invoke(String str) {
w(str);
return Unit.INSTANCE;
}
public final void w(String str) {
((uh.c) this.receiver).debug(str);
}
}
@Metadata(d1 = {"\u0000\f\n\u0002\u0018\u0002\n\u0002\u0010\u0002\n\u0002\b\u0002\u0010\u0002\u001a\u00020\u0001*\u00020\u0000H\n¢\u0006\u0004\b\u0002\u0010\u0003"}, d2 = {"Lv6/e;", "", "a", "(Lv6/e;)V"}, k = 3, mv = {1, 8, 0})
public static final class b extends p implements mc.l<v6.e, Unit> {
public final List<String> f19852e;
public final List<String> f19853g;
public final List<String> f19854h;
public final List<String> f19855i;
public final boolean f19856j;
@Metadata(d1 = {"\u0000\f\n\u0002\u0010 \n\u0002\u0010\u000e\n\u0002\b\u0002\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00010\u0000H\n¢\u0006\u0004\b\u0002\u0010\u0003"}, d2 = {"", "", "a", "()Ljava/util/List;"}, k = 3, mv = {1, 8, 0})
public static final class C0866a extends p implements mc.a<List<? extends String>> {
public final List<String> f19857e;
public C0866a(List<String> list) {
super(0);
this.f19857e = list;
}
@Override
public final List<String> invoke() {
return q.m("Upstreams", String.valueOf(this.f19857e));
}
}
@Metadata(d1 = {"\u0000\f\n\u0002\u0010 \n\u0002\u0010\u000e\n\u0002\b\u0002\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00010\u0000H\n¢\u0006\u0004\b\u0002\u0010\u0003"}, d2 = {"", "", "a", "()Ljava/util/List;"}, k = 3, mv = {1, 8, 0})
public static final class C0867b extends p implements mc.a<List<? extends String>> {
public final List<String> f19858e;
public C0867b(List<String> list) {
super(0);
this.f19858e = list;
}
@Override
public final List<String> invoke() {
return q.m("Fallback upstreams", String.valueOf(this.f19858e));
}
}
@Metadata(d1 = {"\u0000\f\n\u0002\u0010 \n\u0002\u0010\u000e\n\u0002\b\u0002\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00010\u0000H\n¢\u0006\u0004\b\u0002\u0010\u0003"}, d2 = {"", "", "a", "()Ljava/util/List;"}, k = 3, mv = {1, 8, 0})
public static final class c extends p implements mc.a<List<? extends String>> {
public final List<String> f19859e;
public c(List<String> list) {
super(0);
this.f19859e = list;
}
@Override
public final List<String> invoke() {
return q.m("Boostrap upstreams", String.valueOf(this.f19859e));
}
}
@Metadata(d1 = {"\u0000\f\n\u0002\u0010 \n\u0002\u0010\u000e\n\u0002\b\u0002\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00010\u0000H\n¢\u0006\u0004\b\u0002\u0010\u0003"}, d2 = {"", "", "a", "()Ljava/util/List;"}, k = 3, mv = {1, 8, 0})
public static final class d extends p implements mc.a<List<? extends String>> {
public final List<String> f19860e;
public d(List<String> list) {
super(0);
this.f19860e = list;
}
@Override
public final List<String> invoke() {
return q.m("DNS64 upstreams", String.valueOf(this.f19860e));
}
}
@Metadata(d1 = {"\u0000\f\n\u0002\u0010 \n\u0002\u0010\u000e\n\u0002\b\u0002\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00010\u0000H\n¢\u0006\u0004\b\u0002\u0010\u0003"}, d2 = {"", "", "a", "()Ljava/util/List;"}, k = 3, mv = {1, 8, 0})
public static final class e extends p implements mc.a<List<? extends String>> {
public final boolean f19861e;
public e(boolean z10) {
super(0);
this.f19861e = z10;
}
@Override
public final List<String> invoke() {
return q.m("Need set up DNS64", String.valueOf(this.f19861e));
}
}
public b(List<String> list, List<String> list2, List<String> list3, List<String> list4, boolean z10) {
super(1);
this.f19852e = list;
this.f19853g = list2;
this.f19854h = list3;
this.f19855i = list4;
this.f19856j = z10;
}
public final void a(v6.e tablePrinter) {
n.g(tablePrinter, "$this$tablePrinter");
tablePrinter.h("DNSProxy configuration");
tablePrinter.i(new C0866a(this.f19852e));
tablePrinter.i(new C0867b(this.f19853g));
tablePrinter.i(new c(this.f19854h));
tablePrinter.i(new d(this.f19855i));
tablePrinter.i(new e(this.f19856j));
}
@Override
public Unit invoke(v6.e eVar) {
a(eVar);
return Unit.INSTANCE;
}
}
public static List i(a aVar, List list, List list2, SparseArray sparseArray, int i10, Object obj) {
if ((i10 & 2) != 0) {
list2 = q.j();
}
return aVar.h(list, list2, sparseArray);
}
public final boolean a(List<String> list) {
Object obj;
Iterator<T> it = list.iterator();
while (true) {
obj = null;
if (!it.hasNext()) {
break;
}
Object next = it.next();
if (g.h(g.f485a, (String) next, false, 2, null)) {
obj = next;
break;
}
}
return obj == null;
}
public final Dns64Settings b(b.f fVar, boolean z10, List<String> list, SparseArray<String> sparseArray) {
if (z10) {
Dns64Settings dns64Settings = new Dns64Settings();
dns64Settings.setUpstreams(i(f19850a, list, null, sparseArray, 2, null));
dns64Settings.setWaitTimeMs(fVar.B());
dns64Settings.setMaxTries(fVar.u());
return dns64Settings;
}
return null;
}
public final DnsProxy c(Context context, int i10, int i11, b.f paramsFromDnsFiltering, d1.c cVar, boolean z10, h filteringLogManager, s1.p statisticsManager, RoutingMode routingMode) {
n.g(context, "context");
n.g(paramsFromDnsFiltering, "paramsFromDnsFiltering");
n.g(filteringLogManager, "filteringLogManager");
n.g(statisticsManager, "statisticsManager");
n.g(routingMode, "routingMode");
SparseArray<String> sparseArray = new SparseArray<>();
boolean l10 = l(cVar);
List<String> j10 = j(paramsFromDnsFiltering.i());
List<String> A = paramsFromDnsFiltering.A();
List<String> m10 = m(!(A == null || A.isEmpty()) ? paramsFromDnsFiltering.A() : (l10 && paramsFromDnsFiltering.b()) ? paramsFromDnsFiltering.v() : paramsFromDnsFiltering.y(), z10, paramsFromDnsFiltering.C(), j10);
List<String> q10 = paramsFromDnsFiltering.q();
List<String> m11 = m(!(q10 == null || q10.isEmpty()) ? paramsFromDnsFiltering.q() : l10 ? paramsFromDnsFiltering.v() : paramsFromDnsFiltering.y(), z10, paramsFromDnsFiltering.C(), j10);
List<String> f10 = paramsFromDnsFiltering.f();
List<String> m12 = m(!(f10 == null || f10.isEmpty()) ? paramsFromDnsFiltering.f() : l10 ? paramsFromDnsFiltering.v() : routingMode == RoutingMode.LocalVpn ? paramsFromDnsFiltering.y() : paramsFromDnsFiltering.x(), z10, paramsFromDnsFiltering.C(), j10);
List<String> y10 = routingMode == RoutingMode.LocalVpn ? paramsFromDnsFiltering.y() : paramsFromDnsFiltering.x();
boolean a10 = a(y10);
List m13 = q.m("Name", "Value");
uh.c log = f19851b;
n.f(log, "log");
f.a(m13, new C0865a(log), new b(m10, m11, m12, y10, a10));
DnsProxySettings dnsProxySettings = new DnsProxySettings();
a aVar = f19850a;
dnsProxySettings.setListeners(aVar.f(i10, i11, paramsFromDnsFiltering.c()));
dnsProxySettings.setUpstreams(aVar.h(m10, m12, sparseArray));
dnsProxySettings.setFallbacks(aVar.e(paramsFromDnsFiltering, m11, sparseArray));
dnsProxySettings.setDns64(aVar.b(paramsFromDnsFiltering, a10, y10, sparseArray));
dnsProxySettings.setFilterParams(paramsFromDnsFiltering.r());
dnsProxySettings.setAdblockRulesBlockingMode(paramsFromDnsFiltering.a());
dnsProxySettings.setHostsRulesBlockingMode(paramsFromDnsFiltering.s());
dnsProxySettings.setFallbackDomains(aVar.d(paramsFromDnsFiltering));
dnsProxySettings.setDetectSearchDomains(paramsFromDnsFiltering.j());
dnsProxySettings.setBlockIpv6(paramsFromDnsFiltering.d());
dnsProxySettings.setIpv6Available(paramsFromDnsFiltering.C() && z10);
dnsProxySettings.setBlockedResponseTtlSecs(paramsFromDnsFiltering.e());
dnsProxySettings.setCustomBlockingIpv4(paramsFromDnsFiltering.g());
dnsProxySettings.setCustomBlockingIpv6(paramsFromDnsFiltering.h());
dnsProxySettings.setDnsCacheSize(paramsFromDnsFiltering.k());
dnsProxySettings.setOutboundProxy(aVar.g(paramsFromDnsFiltering, cVar, m12));
dnsProxySettings.setBlockEch(paramsFromDnsFiltering.c());
dnsProxySettings.setEnableHttp3(paramsFromDnsFiltering.z());
dnsProxySettings.setEnableServfailOnUpstreamsFailure(paramsFromDnsFiltering.n());
dnsProxySettings.setEnableFallbackOnUpstreamsFailure(paramsFromDnsFiltering.l());
dnsProxySettings.setEnableParallelUpstreamQueries(paramsFromDnsFiltering.m());
dnsProxySettings.setUpstreamTimeoutMs(paramsFromDnsFiltering.w());
return new DnsProxy(context, dnsProxySettings, new l1.b(sparseArray, filteringLogManager, statisticsManager));
}
public final List<String> d(b.f fVar) {
return fVar.o() ? q.j() : fVar.p();
}
public final List<UpstreamSettings> e(b.f fVar, List<String> list, SparseArray<String> sparseArray) {
return fVar.o() ? q.j() : i(this, list, null, sparseArray, 2, null);
}
public final List<ListenerSettings> f(int i10, int i11, boolean z10) {
ListenerSettings[] listenerSettingsArr = new ListenerSettings[5];
ListenerSettings listenerSettings = new ListenerSettings();
ListenerSettings.Protocol protocol = ListenerSettings.Protocol.TCP;
listenerSettings.setProtocol(protocol);
listenerSettings.setAddress("127.0.0.1");
listenerSettings.setPort(i10);
listenerSettings.setPersistent(true);
listenerSettings.setIdleTimeoutMs(CoreConstants.MILLIS_IN_ONE_DAY);
Unit unit = Unit.INSTANCE;
listenerSettingsArr[0] = listenerSettings;
ListenerSettings listenerSettings2 = new ListenerSettings();
ListenerSettings.Protocol protocol2 = ListenerSettings.Protocol.UDP;
listenerSettings2.setProtocol(protocol2);
listenerSettings2.setAddress("127.0.0.1");
listenerSettings2.setPort(i10);
listenerSettingsArr[1] = listenerSettings2;
ListenerSettings listenerSettings3 = new ListenerSettings();
listenerSettings3.setProtocol(protocol);
listenerSettings3.setAddress("::1");
listenerSettings3.setPort(i10);
listenerSettings3.setPersistent(true);
listenerSettings3.setIdleTimeoutMs(CoreConstants.MILLIS_IN_ONE_DAY);
listenerSettingsArr[2] = listenerSettings3;
ListenerSettings listenerSettings4 = new ListenerSettings();
listenerSettings4.setProtocol(protocol2);
listenerSettings4.setAddress("::1");
listenerSettings4.setPort(i10);
listenerSettingsArr[3] = listenerSettings4;
ListenerSettings listenerSettings5 = new ListenerSettings();
listenerSettings5.setProtocol(protocol);
listenerSettings5.setAddress("127.0.0.1");
listenerSettings5.setPort(i11);
listenerSettings5.setPersistent(true);
listenerSettings5.setIdleTimeoutMs(CoreConstants.MILLIS_IN_ONE_DAY);
ProxySettingsOverrides proxySettingsOverrides = new ProxySettingsOverrides();
proxySettingsOverrides.setBlockEch(Boolean.FALSE);
listenerSettings5.setSettingsOverrides(proxySettingsOverrides);
if (!z10) {
listenerSettings5 = null;
}
listenerSettingsArr[4] = listenerSettings5;
return q.o(listenerSettingsArr);
}
public final OutboundProxySettings g(b.f fVar, d1.c cVar, List<String> list) {
OutboundProxySettings.Protocol k10;
if (cVar == null || !cVar.f().c() || (k10 = k(cVar)) == null) {
return null;
}
String e10 = cVar.f().e();
int g10 = cVar.f().g();
OutboundProxySettings.AuthInfo authInfo = new OutboundProxySettings.AuthInfo(cVar.f().j(), cVar.f().d());
boolean z10 = true;
if (cVar.f().j().length() > 0) {
if (cVar.f().d().length() > 0) {
return new OutboundProxySettings(k10, e10, g10, list, !z10 ? authInfo : null, cVar.f().h(), fVar.t());
}
}
z10 = false;
return new OutboundProxySettings(k10, e10, g10, list, !z10 ? authInfo : null, cVar.f().h(), fVar.t());
}
public final List<UpstreamSettings> h(List<String> list, List<String> list2, SparseArray<String> sparseArray) {
int size = sparseArray.size();
ArrayList arrayList = new ArrayList(r.u(list, 10));
for (String str : list) {
size++;
UpstreamSettings upstreamSettings = new UpstreamSettings(str, list2, null, size);
uh.c cVar = f19851b;
int id2 = upstreamSettings.getId();
cVar.debug("Upstream " + str + " has been added to UpstreamSettings with id " + id2);
sparseArray.append(upstreamSettings.getId(), str);
arrayList.add(upstreamSettings);
}
return arrayList;
}
public final List<String> j(List<String> list) {
ArrayList arrayList = new ArrayList();
for (Object obj : list) {
if (g.h(g.f485a, (String) obj, false, 2, null)) {
arrayList.add(obj);
}
}
return arrayList;
}
public final OutboundProxySettings.Protocol k(d1.c cVar) {
OutboundProxySettings.Protocol protocol = null;
if (cVar.f().f() != OutboundProxyMode.DIRECT) {
if (cVar.f().f() == OutboundProxyMode.HTTPS_CONNECT) {
protocol = OutboundProxySettings.Protocol.HTTPS_CONNECT;
} else if (cVar.f().f() == OutboundProxyMode.HTTP_CONNECT) {
protocol = OutboundProxySettings.Protocol.HTTP_CONNECT;
} else if (cVar.f().f() == OutboundProxyMode.SOCKS4) {
protocol = OutboundProxySettings.Protocol.SOCKS4;
} else {
OutboundProxyMode f10 = cVar.f().f();
OutboundProxyMode outboundProxyMode = OutboundProxyMode.SOCKS5;
if (f10 == outboundProxyMode && !cVar.f().i()) {
protocol = OutboundProxySettings.Protocol.SOCKS5;
} else if (cVar.f().f() == outboundProxyMode && cVar.f().i()) {
protocol = OutboundProxySettings.Protocol.SOCKS5_UDP;
}
}
}
return protocol;
}
public final boolean l(d1.c cVar) {
boolean z10 = false;
if (cVar != null && cVar.f().f() == OutboundProxyMode.SOCKS5) {
if (cVar.f().i() && cVar.f().c()) {
z10 = true;
}
return z10;
}
return false;
}
public final List<String> m(List<String> list, boolean z10, boolean z11, List<String> list2) {
boolean z12 = true;
if (!(list instanceof Collection) || !list.isEmpty()) {
Iterator<T> it = list.iterator();
while (true) {
if (!it.hasNext()) {
break;
}
boolean z13 = false & false;
if (!g.l(g.f485a, (String) it.next(), false, 2, null)) {
z12 = false;
break;
}
}
}
return (!z12 || (z11 && z10)) ? list : list2;
}
}