AdGuard v4.4.135版本的 MD5 值为:95950267eaafbda3588f0934f48b2e36
以下内容为反编译后的 a.java 源代码,内容仅作参考
package v1;
import ch.qos.logback.core.rolling.helper.DateTokenConverter;
import ch.qos.logback.core.rolling.helper.IntegerTokenConverter;
import com.adguard.android.storage.y;
import com.adguard.corelibs.network.Protocol;
import j.k;
import java.net.InetSocketAddress;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.jvm.internal.n;
import kotlin.jvm.internal.p;
import kotlin.jvm.internal.v;
import mc.l;
@Metadata(d1 = {"\u0000X\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010$\n\u0002\u0010\b\n\u0002\u0010 \n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0002\b\b\n\u0002\u0010\u0002\n\u0002\b\b\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\u0018\u00002\u00020\u0001B+\u0012\u0006\u0010\u001e\u001a\u00020\u001b\u0012\u0006\u0010)\u001a\u00020(\u0012\u0012\u0010!\u001a\u000e\u0012\u0004\u0012\u00020\u0007\u0012\u0004\u0012\u00020\u00120\u001f¢\u0006\u0004\b*\u0010+J\u0006\u0010\u0003\u001a\u00020\u0002J\u0080\u0001\u0010\u0010\u001a\u00020\u00022\u0018\u0010\b\u001a\u0014\u0012\u0004\u0012\u00020\u0005\u0012\n\u0012\b\u0012\u0004\u0012\u00020\u00070\u00060\u00042\f\u0010\n\u001a\b\u0012\u0004\u0012\u00020\t0\u00062\f\u0010\u000b\u001a\b\u0012\u0004\u0012\u00020\u00070\u00062\u0018\u0010\f\u001a\u0014\u0012\u0004\u0012\u00020\u0005\u0012\n\u0012\b\u0012\u0004\u0012\u00020\u00070\u00060\u00042\f\u0010\r\u001a\b\u0012\u0004\u0012\u00020\u00050\u00062\f\u0010\u000e\u001a\b\u0012\u0004\u0012\u00020\u00050\u00062\f\u0010\u000f\u001a\b\u0012\u0004\u0012\u00020\t0\u0006J\u0010\u0010\u0013\u001a\u00020\u00122\u0006\u0010\u0011\u001a\u00020\u0007H\u0002J*\u0010\u0014\u001a\u00020\u00122\u0006\u0010\u0011\u001a\u00020\u00072\u0018\u0010\b\u001a\u0014\u0012\u0004\u0012\u00020\u0005\u0012\n\u0012\b\u0012\u0004\u0012\u00020\u00070\u00060\u0004H\u0002J\u001e\u0010\u0016\u001a\u00020\u00122\u0006\u0010\u0011\u001a\u00020\u00072\f\u0010\u0015\u001a\b\u0012\u0004\u0012\u00020\t0\u0006H\u0002J\u001e\u0010\u0017\u001a\u00020\u00122\u0006\u0010\u0011\u001a\u00020\u00072\f\u0010\u000b\u001a\b\u0012\u0004\u0012\u00020\u00070\u0006H\u0002J8\u0010\u0018\u001a\u00020\u00122\u0006\u0010\u0011\u001a\u00020\u00072\u0018\u0010\f\u001a\u0014\u0012\u0004\u0012\u00020\u0005\u0012\n\u0012\b\u0012\u0004\u0012\u00020\u00070\u00060\u00042\f\u0010\r\u001a\b\u0012\u0004\u0012\u00020\u00050\u0006H\u0002J\u001e\u0010\u0019\u001a\u00020\u00122\u0006\u0010\u0011\u001a\u00020\u00072\f\u0010\r\u001a\b\u0012\u0004\u0012\u00020\u00050\u0006H\u0002J\u001e\u0010\u001a\u001a\u00020\u00122\u0006\u0010\u0011\u001a\u00020\u00072\f\u0010\u000e\u001a\b\u0012\u0004\u0012\u00020\u00050\u0006H\u0002R\u0014\u0010\u001e\u001a\u00020\u001b8\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u001c\u0010\u001dR \u0010!\u001a\u000e\u0012\u0004\u0012\u00020\u0007\u0012\u0004\u0012\u00020\u00120\u001f8\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u0019\u0010 R\u0014\u0010$\u001a\u00020\"8\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u001a\u0010#R\u001a\u0010'\u001a\b\u0012\u0004\u0012\u00020\u00070%8\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u0014\u0010&¨\u0006,"}, d2 = {"Lv1/a;", "", "", "j", "", "", "", "", "excludedUidsWithPackageNames", "Lk1/b;", "dnsRedirectRules", "networksToExclude", "excludedForQuicUidsWithPackageNames", "quicPorts", "redirectPorts", "suitableRedirectRulesExceptDns", "g", "iptables", "", "h", DateTokenConverter.CONVERTER_KEY, "redirectRules", IntegerTokenConverter.CONVERTER_KEY, "f", "e", "b", "c", "Luh/c;", "a", "Luh/c;", "log", "Lkotlin/Function1;", "Lmc/l;", "runCommand", "Lv1/i;", "Lv1/i;", "kit", "Lh9/b;", "Lh9/b;", "iptablesPathBox", "Lcom/adguard/android/storage/y$y;", "equipment", "<init>", "(Luh/c;Lcom/adguard/android/storage/y$y;Lmc/l;)V", "base_release"}, k = 1, mv = {1, 8, 0})
public final class a {
public final uh.c f25613a;
public final l<String, Unit> f25614b;
public final i f25615c;
public final h9.b<String> f25616d;
@Metadata(k = 3, mv = {1, 8, 0}, xi = 48)
public class C1078a {
public static final int[] f25617a;
static {
int[] iArr = new int[Protocol.values().length];
try {
iArr[Protocol.TCP.ordinal()] = 1;
} catch (NoSuchFieldError unused) {
}
try {
iArr[Protocol.UDP.ordinal()] = 2;
} catch (NoSuchFieldError unused2) {
}
f25617a = iArr;
}
}
@Metadata(d1 = {"\u0000\b\n\u0002\u0010\u000e\n\u0002\b\u0002\u0010\u0001\u001a\u0004\u0018\u00010\u0000H\n¢\u0006\u0004\b\u0001\u0010\u0002"}, d2 = {"", "a", "()Ljava/lang/String;"}, k = 3, mv = {1, 8, 0})
public static final class b extends p implements mc.a<String> {
public final y.AbstractC0087y f25619g;
public b(y.AbstractC0087y abstractC0087y) {
super(0);
this.f25619g = abstractC0087y;
}
@Override
public final String invoke() {
return a.this.f25615c.f("/system/bin/iptables", new v(this.f25619g) {
@Override
public Object get() {
return ((y.AbstractC0087y) this.receiver).d();
}
});
}
}
public a(uh.c log, y.AbstractC0087y equipment, l<? super String, Unit> runCommand) {
n.g(log, "log");
n.g(equipment, "equipment");
n.g(runCommand, "runCommand");
this.f25613a = log;
this.f25614b = runCommand;
this.f25615c = new i(log, equipment);
this.f25616d = new h9.b<>(-1L, false, false, new b(equipment), 6, null);
}
public final void b(String str, List<Integer> list) {
for (Number number : list) {
int intValue = number.intValue();
l<String, Unit> lVar = this.f25614b;
lVar.invoke(str + " -A ADGUARD_OUTPUT -p udp --dport " + intValue + " -j REJECT");
}
}
public final void c(String str, List<Integer> list) {
for (Number number : list) {
int intValue = number.intValue();
l<String, Unit> lVar = this.f25614b;
lVar.invoke(str + " -A ADGUARD_INPUT -p tcp --dport " + intValue + " '!' -i lo -j REJECT --reject-with tcp-reset");
}
}
public final void d(String str, Map<Integer, ? extends List<String>> map) {
for (Map.Entry<Integer, ? extends List<String>> entry : map.entrySet()) {
int intValue = entry.getKey().intValue();
l<String, Unit> lVar = this.f25614b;
lVar.invoke(str + " -t nat -A ADGUARD_OUTPUT -m owner --uid-owner " + intValue + " -j RETURN");
l<String, Unit> lVar2 = this.f25614b;
lVar2.invoke(str + " -A ADGUARD_OUTPUT -m owner --uid-owner " + intValue + " -j RETURN");
}
}
public final void e(String str, Map<Integer, ? extends List<String>> map, List<Integer> list) {
for (Map.Entry<Integer, ? extends List<String>> entry : map.entrySet()) {
int intValue = entry.getKey().intValue();
for (Number number : list) {
int intValue2 = number.intValue();
l<String, Unit> lVar = this.f25614b;
lVar.invoke(str + " -A ADGUARD_OUTPUT -p udp -m owner --uid-owner " + intValue + " --dport " + intValue2 + " -j RETURN");
}
}
}
public final void f(String str, List<String> list) {
Iterator<T> it = list.iterator();
while (it.hasNext()) {
l<String, Unit> lVar = this.f25614b;
lVar.invoke(str + " -t nat -A ADGUARD_OUTPUT -d " + ((String) it.next()) + " -j RETURN");
}
l<String, Unit> lVar2 = this.f25614b;
lVar2.invoke(str + " -t nat -A ADGUARD_OUTPUT -d 127.0.0.1 -j RETURN");
}
public final boolean g(Map<Integer, ? extends List<String>> excludedUidsWithPackageNames, List<k1.b> dnsRedirectRules, List<String> networksToExclude, Map<Integer, ? extends List<String>> excludedForQuicUidsWithPackageNames, List<Integer> quicPorts, List<Integer> redirectPorts, List<k1.b> suitableRedirectRulesExceptDns) {
n.g(excludedUidsWithPackageNames, "excludedUidsWithPackageNames");
n.g(dnsRedirectRules, "dnsRedirectRules");
n.g(networksToExclude, "networksToExclude");
n.g(excludedForQuicUidsWithPackageNames, "excludedForQuicUidsWithPackageNames");
n.g(quicPorts, "quicPorts");
n.g(redirectPorts, "redirectPorts");
n.g(suitableRedirectRulesExceptDns, "suitableRedirectRulesExceptDns");
this.f25613a.info("Request 'configure system IPv4 routes' received");
String str = this.f25616d.get();
if (str == null) {
this.f25613a.warn("The 'iptables' file is not found, can't configure");
return false;
}
h(str);
d(str, excludedUidsWithPackageNames);
i(str, dnsRedirectRules);
f(str, networksToExclude);
e(str, excludedForQuicUidsWithPackageNames, quicPorts);
b(str, quicPorts);
c(str, redirectPorts);
i(str, suitableRedirectRulesExceptDns);
this.f25613a.info("System IPv4 routes have been configured successfully");
return true;
}
public final void h(String str) {
l<String, Unit> lVar = this.f25614b;
lVar.invoke(str + " -t nat -N ADGUARD_OUTPUT");
l<String, Unit> lVar2 = this.f25614b;
lVar2.invoke(str + " -t nat -I OUTPUT -j ADGUARD_OUTPUT");
l<String, Unit> lVar3 = this.f25614b;
lVar3.invoke(str + " -N ADGUARD_OUTPUT");
l<String, Unit> lVar4 = this.f25614b;
lVar4.invoke(str + " -I OUTPUT -j ADGUARD_OUTPUT");
l<String, Unit> lVar5 = this.f25614b;
lVar5.invoke(str + " -N ADGUARD_INPUT");
l<String, Unit> lVar6 = this.f25614b;
lVar6.invoke(str + " -I INPUT -j ADGUARD_INPUT");
}
public final void i(String str, List<k1.b> list) {
for (k1.b bVar : list) {
InetSocketAddress f10 = bVar.f();
if (f10 != null) {
int port = f10.getPort();
String c10 = bVar.c();
if (c10 == null) {
c10 = "0.0.0.0/0";
}
String a10 = k.a(bVar.d());
int i10 = C1078a.f25617a[bVar.e().ordinal()];
if (i10 == 1) {
l<String, Unit> lVar = this.f25614b;
lVar.invoke(str + " -t nat -A ADGUARD_OUTPUT -p tcp -d " + c10 + " --dport " + a10 + " -j REDIRECT --to " + port);
} else if (i10 == 2) {
l<String, Unit> lVar2 = this.f25614b;
lVar2.invoke(str + " -t nat -A ADGUARD_OUTPUT -p udp -d " + c10 + " --dport " + a10 + " -j REDIRECT --to " + port);
}
}
}
}
public final boolean j() {
this.f25613a.info("Request 'reset system IPv4 routes' received");
String str = this.f25616d.get();
if (str == null) {
this.f25613a.warn("The 'iptables' file is not found, can't reset");
return false;
}
l<String, Unit> lVar = this.f25614b;
lVar.invoke(str + " -t nat -D OUTPUT -j ADGUARD_OUTPUT");
l<String, Unit> lVar2 = this.f25614b;
lVar2.invoke(str + " -t nat -F ADGUARD_OUTPUT");
l<String, Unit> lVar3 = this.f25614b;
lVar3.invoke(str + " -t nat -X ADGUARD_OUTPUT");
l<String, Unit> lVar4 = this.f25614b;
lVar4.invoke(str + " -D OUTPUT -j ADGUARD_OUTPUT");
l<String, Unit> lVar5 = this.f25614b;
lVar5.invoke(str + " -F ADGUARD_OUTPUT");
l<String, Unit> lVar6 = this.f25614b;
lVar6.invoke(str + " -X ADGUARD_OUTPUT");
l<String, Unit> lVar7 = this.f25614b;
lVar7.invoke(str + " -D INPUT -j ADGUARD_INPUT");
l<String, Unit> lVar8 = this.f25614b;
lVar8.invoke(str + " -F ADGUARD_INPUT");
l<String, Unit> lVar9 = this.f25614b;
lVar9.invoke(str + " -X ADGUARD_INPUT");
this.f25613a.info("System IPv4 routes have been reset successfully");
boolean z10 = true & true;
return true;
}
}