Fast Orange v3.5.3版本的 MD5 值为:33b91aba50c566533dfd683a85f79158

以下内容为反编译后的 NetsKt.java 源代码,内容仅作参考


package com.github.shadowsocks.ktx;

import android.os.Build;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.google.shortcuts.utils.ShortcutUtils;
import com.free.vpn.proxy.hotspot.cc3;
import com.free.vpn.proxy.hotspot.ct4;
import com.free.vpn.proxy.hotspot.data.model.billing.xiguapay.XiguapayCreateRequest;
import com.free.vpn.proxy.hotspot.jf2;
import com.free.vpn.proxy.hotspot.s00;
import com.free.vpn.proxy.hotspot.t00;
import com.free.vpn.proxy.hotspot.x74;
import com.free.vpn.proxy.hotspot.zm2;
import com.free.vpn.proxy.hotspot.zs4;
import com.github.shadowsocks.Core;
import com.github.shadowsocks.bg.VpnService;
import com.github.shadowsocks.database.DataStore;
import com.github.shadowsocks.fmt.AbstractBean;
import com.github.shadowsocks.plugin.PluginContract;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import kotlin.Metadata;
import libcore.URL;
import okhttp3.ConnectionSpec;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;

@Metadata(d1 = {"\u0000b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0006\n\u0002\u0010\b\n\u0002\b\u0004\n\u0002\u0010\u000e\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0010 \n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0006\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\u0012\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u0011\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0002\b\u0007\n\u0002\u0018\u0002\n\u0002\b\u0003\u001a\u0006\u0010\u001c\u001a\u00020\u0010\u001a\u0006\u0010\u001d\u001a\u00020\u001e\u001a\u0006\u0010\u001f\u001a\u00020\b\u001a\u0016\u0010 \u001a\n \u0002*\u0004\u0018\u00010\u00010\u00012\u0006\u0010!\u001a\u00020\"\u001a\u0006\u0010#\u001a\u00020$\u001a#\u0010%\u001a\u00020&*\u00020\u00172\u0012\u0010'\u001a\n\u0012\u0006\b\u0001\u0012\u00020\r0(\"\u00020\r¢\u0006\u0002\u0010)\u001a\n\u0010*\u001a\u00020+*\u00020\r\u001a\u0014\u0010,\u001a\u0004\u0018\u00010\r*\u00020\u00172\u0006\u0010-\u001a\u00020\r\u001a\u001c\u0010.\u001a\u00020\r*\u00020\u001e2\u0006\u0010/\u001a\u00020\r2\b\b\u0002\u00100\u001a\u00020+\u001a\n\u00101\u001a\u00020\r*\u00020\r\u001a\n\u00102\u001a\u00020\r*\u000203\u001a\n\u00104\u001a\u00020\r*\u000203\u001a\n\u00105\u001a\u00020\r*\u000203\"\u0019\u0010\u0000\u001a\n \u0002*\u0004\u0018\u00010\u00010\u0001¢\u0006\b\n\u0000\u001a\u0004\b\u0003\u0010\u0004\"\u0019\u0010\u0005\u001a\n \u0002*\u0004\u0018\u00010\u00010\u0001¢\u0006\b\n\u0000\u001a\u0004\b\u0006\u0010\u0004\"\u000e\u0010\u0007\u001a\u00020\bX\u0086T¢\u0006\u0002\n\u0000\"\u000e\u0010\t\u001a\u00020\bX\u0086T¢\u0006\u0002\n\u0000\"\u000e\u0010\n\u001a\u00020\bX\u0086T¢\u0006\u0002\n\u0000\"\u000e\u0010\u000b\u001a\u00020\bX\u0086T¢\u0006\u0002\n\u0000\"\u000e\u0010\f\u001a\u00020\rX\u0086T¢\u0006\u0002\n\u0000\"\u000e\u0010\u000e\u001a\u00020\rX\u0086T¢\u0006\u0002\n\u0000\"\u0011\u0010\u000f\u001a\u00020\u0010¢\u0006\b\n\u0000\u001a\u0004\b\u0011\u0010\u0012\"\u000e\u0010\u0013\u001a\u00020\u0010X\u0082.¢\u0006\u0002\n\u0000\"4\u0010\u0016\u001a\b\u0012\u0004\u0012\u00020\r0\u0015*\u00020\u00172\f\u0010\u0014\u001a\b\u0012\u0004\u0012\u00020\r0\u00158F@FX\u0086\u000e¢\u0006\f\u001a\u0004\b\u0018\u0010\u0019\"\u0004\b\u001a\u0010\u001b¨\u00066"}, d2 = {"INET6_TUN", "Ljava/net/InetAddress;", "kotlin.jvm.PlatformType", "getINET6_TUN", "()Ljava/net/InetAddress;", "INET_TUN", "getINET_TUN", "IPPROTO_ICMP", "", "IPPROTO_ICMPv6", "IPPROTO_TCP", "IPPROTO_UDP", "USER_AGENT", "", "USER_AGENT_ORIGIN", "okHttpClient", "Lokhttp3/OkHttpClient;", "getOkHttpClient", "()Lokhttp3/OkHttpClient;", "proxyClient", "value", "", "pathSegments", "Llibcore/URL;", "getPathSegments", "(Llibcore/URL;)Ljava/util/List;", "setPathSegments", "(Llibcore/URL;Ljava/util/List;)V", "createProxyClient", "linkBuilder", "Lokhttp3/HttpUrl$Builder;", "mkPort", "parseAddress", "addressArray", "", "requireProxy", "Ljava/net/Proxy;", "addPathSegments", "", "segments", "", "(Llibcore/URL;[Ljava/lang/String;)V", "isIpAddress", "", "queryParameter", XiguapayCreateRequest.K_TOKEN, "toLink", "scheme", "appendDefaultPort", "unwrapHost", "wrapOriginUri", "Lcom/github/shadowsocks/fmt/AbstractBean;", "wrapUri", "wrapUriWithOriginHost", "shadowsocks_release"}, k = 2, mv = {1, 8, 0}, xi = ConstraintLayout.LayoutParams.Table.LAYOUT_CONSTRAINT_VERTICAL_CHAINSTYLE)
public final class NetsKt {
    public static final int IPPROTO_ICMP = 1;
    public static final int IPPROTO_ICMPv6 = 58;
    public static final int IPPROTO_TCP = 6;
    public static final int IPPROTO_UDP = 17;
    public static final String USER_AGENT = "curl/7.74.0";
    public static final String USER_AGENT_ORIGIN = "SS/1.0";
    private static OkHttpClient proxyClient;
    private static final OkHttpClient okHttpClient = new OkHttpClient.Builder().followRedirects(true).followSslRedirects(true).connectionSpecs(zm2.d0(ConnectionSpec.CLEARTEXT, ConnectionSpec.RESTRICTED_TLS)).build();
    private static final InetAddress INET_TUN = InetAddress.getByName(VpnService.PRIVATE_VLAN4_CLIENT);
    private static final InetAddress INET6_TUN = InetAddress.getByName(VpnService.PRIVATE_VLAN6_CLIENT);

    public static final void addPathSegments(URL url, String... strArr) {
        zs4.o(url, "<this>");
        zs4.o(strArr, "segments");
        ArrayList I1 = t00.I1(getPathSegments(url));
        s00.I0(I1, strArr);
        setPathSegments(url, I1);
    }

    public static final OkHttpClient createProxyClient() {
        if (!Core.INSTANCE.getStarted()) {
            return okHttpClient;
        }
        if (proxyClient == null) {
            proxyClient = okHttpClient.newBuilder().proxy(requireProxy()).build();
        }
        OkHttpClient okHttpClient2 = proxyClient;
        if (okHttpClient2 != null) {
            return okHttpClient2;
        }
        zs4.s0("proxyClient");
        throw null;
    }

    public static final InetAddress getINET6_TUN() {
        return INET6_TUN;
    }

    public static final InetAddress getINET_TUN() {
        return INET_TUN;
    }

    public static final OkHttpClient getOkHttpClient() {
        return okHttpClient;
    }

    public static final List<String> getPathSegments(URL url) {
        zs4.o(url, "<this>");
        String path = url.getPath();
        zs4.n(path, PluginContract.COLUMN_PATH);
        List p1 = x74.p1(path, new String[]{ShortcutUtils.CAPABILITY_PARAM_SEPARATOR});
        ArrayList arrayList = new ArrayList();
        for (Object obj : p1) {
            if (!x74.a1((String) obj)) {
                arrayList.add(obj);
            }
        }
        return arrayList;
    }

    public static final boolean isIpAddress(String str) {
        zs4.o(str, "<this>");
        if (!cc3.a(ct4.a, str) && !ct4.a(str)) {
            return false;
        }
        return true;
    }

    public static final HttpUrl.Builder linkBuilder() {
        return new HttpUrl.Builder().scheme("https");
    }

    public static final int mkPort() {
        Socket socket = new Socket();
        socket.setReuseAddress(true);
        socket.bind(new InetSocketAddress(0));
        int localPort = socket.getLocalPort();
        socket.close();
        return localPort;
    }

    public static final InetAddress parseAddress(byte[] bArr) {
        zs4.o(bArr, "addressArray");
        return InetAddress.getByAddress(bArr);
    }

    public static final String queryParameter(URL url, String str) {
        zs4.o(url, "<this>");
        zs4.o(str, XiguapayCreateRequest.K_TOKEN);
        String queryParameterNotBlank = url.queryParameterNotBlank(str);
        zs4.n(queryParameterNotBlank, "it");
        if (!x74.a1(queryParameterNotBlank)) {
            return queryParameterNotBlank;
        }
        return null;
    }

    public static final Proxy requireProxy() {
        return Build.VERSION.SDK_INT > 23 ? new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("127.0.0.1", DataStore.INSTANCE.getSocksPort())) : new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", DataStore.INSTANCE.getHttpPort()));
    }

    public static final void setPathSegments(URL url, List<String> list) {
        zs4.o(url, "<this>");
        zs4.o(list, "value");
        url.setPath(t00.h1(list, ShortcutUtils.CAPABILITY_PARAM_SEPARATOR, null, null, null, 62));
    }

    public static final String toLink(HttpUrl.Builder builder, String str, boolean z) {
        boolean z2;
        zs4.o(builder, "<this>");
        zs4.o(str, "scheme");
        HttpUrl build = builder.build();
        int defaultPort = HttpUrl.INSTANCE.defaultPort(build.scheme());
        if (z && build.port() == defaultPort) {
            build = build.newBuilder().port(14514).build();
            z2 = true;
        } else {
            z2 = false;
        }
        String l1 = x74.l1(build.getUrl(), jf2.C(build.scheme(), "://"), str.concat("://"));
        if (z2) {
            return x74.l1(l1, ":14514", ":" + defaultPort);
        }
        return l1;
    }

    public static String toLink$default(HttpUrl.Builder builder, String str, boolean z, int i, Object obj) {
        if ((i & 2) != 0) {
            z = true;
        }
        return toLink(builder, str, z);
    }

    public static final String unwrapHost(String str) {
        zs4.o(str, "<this>");
        if (x74.r1(str, "[", false) && x74.O0(str, "]", false)) {
            String substring = str.substring(1, str.length() - 1);
            zs4.n(substring, "this as java.lang.String…ing(startIndex, endIndex)");
            return unwrapHost(substring);
        }
        return str;
    }

    public static final String wrapOriginUri(AbstractBean abstractBean) {
        Integer num;
        StringBuilder sb;
        String str;
        zs4.o(abstractBean, "<this>");
        if (ct4.a(abstractBean.serverAddress)) {
            String str2 = abstractBean.serverAddress;
            num = abstractBean.serverPort;
            sb = new StringBuilder("[");
            sb.append(str2);
            str = "]:";
        } else {
            String str3 = abstractBean.serverAddress;
            num = abstractBean.serverPort;
            sb = new StringBuilder();
            sb.append(str3);
            str = ":";
        }
        sb.append(str);
        sb.append(num);
        return sb.toString();
    }

    public static final String wrapUri(AbstractBean abstractBean) {
        int i;
        StringBuilder sb;
        String str;
        zs4.o(abstractBean, "<this>");
        if (ct4.a(abstractBean.finalAddress)) {
            String str2 = abstractBean.finalAddress;
            i = abstractBean.finalPort;
            sb = new StringBuilder("[");
            sb.append(str2);
            str = "]:";
        } else {
            String str3 = abstractBean.finalAddress;
            i = abstractBean.finalPort;
            sb = new StringBuilder();
            sb.append(str3);
            str = ":";
        }
        sb.append(str);
        sb.append(i);
        return sb.toString();
    }

    public static final String wrapUriWithOriginHost(AbstractBean abstractBean) {
        int i;
        StringBuilder sb;
        String str;
        zs4.o(abstractBean, "<this>");
        if (ct4.a(abstractBean.serverAddress)) {
            String str2 = abstractBean.serverAddress;
            i = abstractBean.finalPort;
            sb = new StringBuilder("[");
            sb.append(str2);
            str = "]:";
        } else {
            String str3 = abstractBean.serverAddress;
            i = abstractBean.finalPort;
            sb = new StringBuilder();
            sb.append(str3);
            str = ":";
        }
        sb.append(str);
        sb.append(i);
        return sb.toString();
    }
}