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;
    }
}