Fast Orange v3.5.3版本的 MD5 值为:33b91aba50c566533dfd683a85f79158
以下内容为反编译后的 ValidatorsKt.java 源代码,内容仅作参考
package com.github.shadowsocks.ktx;
import com.free.vpn.proxy.hotspot.br1;
import com.free.vpn.proxy.hotspot.cc3;
import com.free.vpn.proxy.hotspot.ct4;
import com.free.vpn.proxy.hotspot.da;
import com.free.vpn.proxy.hotspot.q00;
import com.free.vpn.proxy.hotspot.u93;
import com.free.vpn.proxy.hotspot.vf3;
import com.free.vpn.proxy.hotspot.x74;
import com.free.vpn.proxy.hotspot.zs4;
import com.github.shadowsocks.core.R;
import com.github.shadowsocks.fmt.AbstractBean;
import com.github.shadowsocks.fmt.http.HttpBean;
import com.github.shadowsocks.fmt.internal.ConfigBean;
import com.github.shadowsocks.fmt.shadowsocks.ShadowsocksBean;
import com.github.shadowsocks.fmt.shadowsocksr.ShadowsocksRBean;
import com.github.shadowsocks.fmt.socks.SOCKSBean;
import com.github.shadowsocks.fmt.trojan.TrojanBean;
import com.github.shadowsocks.fmt.v2ray.StandardV2RayBean;
import com.github.shadowsocks.fmt.v2ray.VLESSBean;
import com.github.shadowsocks.fmt.v2ray.VMessBean;
import com.github.shadowsocks.group.RawUpdater;
import com.github.shadowsocks.plugin.PluginConfiguration;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import kotlin.Metadata;
@Metadata(d1 = {"\u0000\u0012\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0005\u001a\n\u0010\u0002\u001a\u00020\u0001*\u00020\u0000\"\u0017\u0010\u0004\u001a\u00020\u00038\u0006¢\u0006\f\n\u0004\b\u0004\u0010\u0005\u001a\u0004\b\u0006\u0010\u0007¨\u0006\b"}, d2 = {"Lcom/github/shadowsocks/fmt/AbstractBean;", "Lcom/github/shadowsocks/ktx/ValidateResult;", "isInsecure", "Lcom/free/vpn/proxy/hotspot/vf3;", "ssSecureList", "Lcom/free/vpn/proxy/hotspot/vf3;", "getSsSecureList", "()Lcom/free/vpn/proxy/hotspot/vf3;", "shadowsocks_release"}, k = 2, mv = {1, 8, 0})
public final class ValidatorsKt {
private static final vf3 ssSecureList = new vf3("(gcm|poly1305)");
public static final vf3 getSsSecureList() {
return ssSecureList;
}
public static final ValidateResult isInsecure(AbstractBean abstractBean) {
Object obj;
Object obj2;
Object obj3;
boolean z;
boolean z2;
boolean z3;
zs4.o(abstractBean, "<this>");
if (cc3.a(ct4.a, abstractBean.serverAddress)) {
String str = abstractBean.serverAddress;
long N = u93.N(str);
long N2 = u93.N("10.0.0.0");
long N3 = u93.N("10.255.255.255");
long N4 = u93.N("172.16.0.0");
long N5 = u93.N("172.31.255.255");
long N6 = u93.N("192.168.0.0");
long N7 = u93.N("192.168.255.255");
boolean z4 = true;
if (N >= N2 && N <= N3) {
z = true;
} else {
z = false;
}
if (!z) {
if (N >= N4 && N <= N5) {
z2 = true;
} else {
z2 = false;
}
if (!z2) {
if (N >= N6 && N <= N7) {
z3 = true;
} else {
z3 = false;
}
if (!z3 && !"127.0.0.1".equals(str)) {
z4 = false;
}
}
}
}
if (!da.E0(new String[]{"localhost", "::"}, abstractBean.serverAddress)) {
if (abstractBean instanceof ShadowsocksBean) {
ShadowsocksBean shadowsocksBean = (ShadowsocksBean) abstractBean;
if (x74.a1(shadowsocksBean.getPlugin()) || zs4.h(new PluginConfiguration(shadowsocksBean.getPlugin()).getSelected(), "obfs-local")) {
String method = shadowsocksBean.getMethod();
vf3 vf3Var = ssSecureList;
vf3Var.getClass();
zs4.o(method, "input");
if (!vf3Var.a.matcher(method).find()) {
return new ResultInsecure(R.raw.shadowsocks_stream_cipher);
}
}
} else {
if (abstractBean instanceof ShadowsocksRBean) {
return new ResultDeprecated(R.raw.shadowsocksr);
}
if (abstractBean instanceof HttpBean) {
if (!((HttpBean) abstractBean).getTls()) {
return new ResultInsecure(R.raw.not_encrypted);
}
} else if (abstractBean instanceof SOCKSBean) {
if (!((SOCKSBean) abstractBean).getTls()) {
return new ResultInsecure(R.raw.not_encrypted);
}
} else if (abstractBean instanceof VMessBean) {
VMessBean vMessBean = (VMessBean) abstractBean;
if (da.E0(new String[]{"", "none"}, vMessBean.getSecurity()) && da.E0(new String[]{"none", "zero"}, vMessBean.getEncryption())) {
return new ResultInsecure(R.raw.not_encrypted);
}
if (zs4.h(vMessBean.getType(), StandardV2RayBean.TYPE_KCP) && x74.a1(vMessBean.getMKcpSeed())) {
return new ResultInsecure(R.raw.mkcp_no_seed);
}
} else if (abstractBean instanceof VLESSBean) {
VLESSBean vLESSBean = (VLESSBean) abstractBean;
if (da.E0(new String[]{"", "none"}, vLESSBean.getSecurity())) {
return new ResultInsecure(R.raw.not_encrypted);
}
if (zs4.h(vLESSBean.getType(), StandardV2RayBean.TYPE_KCP) && x74.a1(vLESSBean.getMKcpSeed())) {
return new ResultInsecure(R.raw.mkcp_no_seed);
}
if (zs4.h(vLESSBean.getSecurity(), StandardV2RayBean.SECURITY_XTLS)) {
return new ResultDeprecated(R.raw.xtls);
}
} else if (abstractBean instanceof TrojanBean) {
if (zs4.h(((TrojanBean) abstractBean).getSecurity(), StandardV2RayBean.SECURITY_XTLS)) {
return new ResultDeprecated(R.raw.xtls);
}
} else if (abstractBean instanceof ConfigBean) {
try {
List<AbstractBean> parseJSON = RawUpdater.INSTANCE.parseJSON(new br1(((ConfigBean) abstractBean).getContent()));
ArrayList arrayList = new ArrayList(q00.A0(parseJSON, 10));
Iterator<T> it = parseJSON.iterator();
while (it.hasNext()) {
arrayList.add(isInsecure((AbstractBean) it.next()));
}
Iterator it2 = arrayList.iterator();
while (true) {
obj = null;
if (it2.hasNext()) {
obj2 = it2.next();
if (((ValidateResult) obj2) instanceof ResultInsecure) {
break;
}
} else {
obj2 = null;
break;
}
}
ValidateResult validateResult = (ValidateResult) obj2;
if (validateResult == null) {
Iterator it3 = arrayList.iterator();
while (true) {
if (it3.hasNext()) {
obj3 = it3.next();
if (((ValidateResult) obj3) instanceof ResultDeprecated) {
break;
}
} else {
obj3 = null;
break;
}
}
validateResult = (ValidateResult) obj3;
if (validateResult == null) {
Iterator it4 = arrayList.iterator();
while (true) {
if (!it4.hasNext()) {
break;
}
Object next = it4.next();
if (((ValidateResult) next) instanceof ResultLocal) {
obj = next;
break;
}
}
validateResult = (ValidateResult) obj;
}
}
if (validateResult != null) {
return validateResult;
}
} catch (Exception unused) {
}
}
}
if (abstractBean.getAllowInsecure()) {
return new ResultInsecure(R.raw.insecure);
}
return ResultSecure.INSTANCE;
}
return ResultLocal.INSTANCE;
}
}