翰林优商.apk(点击下载) / AndroidNetworkLibrary.java
package aegon.chrome.net;
import aegon.chrome.base.ApiCompatibilityUtils;
import aegon.chrome.base.ContextUtils;
import aegon.chrome.base.compat.ApiHelperForM;
import aegon.chrome.base.compat.ApiHelperForP;
import aegon.chrome.base.metrics.RecordHistogram;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.TrafficStats;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.ParcelFileDescriptor;
import android.os.Process;
import android.security.NetworkSecurityPolicy;
import android.util.Log;
import com.efs.sdk.base.core.util.NetworkUtil;
import com.kuaishou.weapon.p0.h;
import java.io.FileDescriptor;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
import java.net.SocketImpl;
import java.net.URLConnection;
import java.net.UnknownHostException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Set;
class AndroidNetworkLibrary {
private static final String TAG = "AndroidNetworkLibrary";
private static final Set<String> sAutoDohDotServers;
private static final Set<InetAddress> sAutoDohServers;
private static Boolean sHaveAccessNetworkState;
private static Boolean sHaveAccessWifiState;
public static class NetworkSecurityPolicyProxy {
private static NetworkSecurityPolicyProxy sInstance = new NetworkSecurityPolicyProxy();
public static NetworkSecurityPolicyProxy getInstance() {
return sInstance;
}
public static void setInstanceForTesting(NetworkSecurityPolicyProxy networkSecurityPolicyProxy) {
sInstance = networkSecurityPolicyProxy;
}
public boolean isCleartextTrafficPermitted() {
if (Build.VERSION.SDK_INT < 23) {
return true;
}
return NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted();
}
public boolean isCleartextTrafficPermitted(String str) {
return Build.VERSION.SDK_INT < 24 ? isCleartextTrafficPermitted() : NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted(str);
}
}
static class SetFileDescriptor {
private static final Method sFileDescriptorSetInt;
static {
try {
sFileDescriptorSetInt = FileDescriptor.class.getMethod("setInt$", Integer.TYPE);
} catch (NoSuchMethodException | SecurityException e) {
throw new RuntimeException("Unable to get FileDescriptor.setInt$", e);
}
}
private SetFileDescriptor() {
}
public static FileDescriptor createWithFd(int i) {
try {
FileDescriptor fileDescriptor = new FileDescriptor();
sFileDescriptorSetInt.invoke(fileDescriptor, Integer.valueOf(i));
return fileDescriptor;
} catch (IllegalAccessException e) {
throw new RuntimeException("FileDescriptor.setInt$() failed", e);
} catch (InvocationTargetException e2) {
throw new RuntimeException("FileDescriptor.setInt$() failed", e2);
}
}
}
static class SocketFd extends Socket {
static class SocketImplFd extends SocketImpl {
SocketImplFd(FileDescriptor fileDescriptor) {
this.fd = fileDescriptor;
}
/* access modifiers changed from: protected */
@Override // java.net.SocketImpl
public void accept(SocketImpl socketImpl) {
throw new RuntimeException("accept not implemented");
}
/* access modifiers changed from: protected */
@Override // java.net.SocketImpl
public int available() {
throw new RuntimeException("accept not implemented");
}
/* access modifiers changed from: protected */
@Override // java.net.SocketImpl
public void bind(InetAddress inetAddress, int i) {
throw new RuntimeException("accept not implemented");
}
/* access modifiers changed from: protected */
@Override // java.net.SocketImpl
public void close() {
}
/* access modifiers changed from: protected */
@Override // java.net.SocketImpl
public void connect(String str, int i) {
throw new RuntimeException("connect not implemented");
}
/* access modifiers changed from: protected */
@Override // java.net.SocketImpl
public void connect(InetAddress inetAddress, int i) {
throw new RuntimeException("connect not implemented");
}
/* access modifiers changed from: protected */
@Override // java.net.SocketImpl
public void connect(SocketAddress socketAddress, int i) {
throw new RuntimeException("connect not implemented");
}
/* access modifiers changed from: protected */
@Override // java.net.SocketImpl
public void create(boolean z) {
}
/* access modifiers changed from: protected */
@Override // java.net.SocketImpl
public InputStream getInputStream() {
throw new RuntimeException("getInputStream not implemented");
}
@Override // java.net.SocketOptions
public Object getOption(int i) {
throw new RuntimeException("getOption not implemented");
}
/* access modifiers changed from: protected */
@Override // java.net.SocketImpl
public OutputStream getOutputStream() {
throw new RuntimeException("getOutputStream not implemented");
}
/* access modifiers changed from: protected */
@Override // java.net.SocketImpl
public void listen(int i) {
throw new RuntimeException("listen not implemented");
}
/* access modifiers changed from: protected */
@Override // java.net.SocketImpl
public void sendUrgentData(int i) {
throw new RuntimeException("sendUrgentData not implemented");
}
@Override // java.net.SocketOptions
public void setOption(int i, Object obj) {
throw new RuntimeException("setOption not implemented");
}
}
SocketFd(FileDescriptor fileDescriptor) {
super(new SocketImplFd(fileDescriptor));
}
}
static {
HashSet hashSet = new HashSet();
sAutoDohServers = hashSet;
HashSet hashSet2 = new HashSet();
sAutoDohDotServers = hashSet2;
try {
hashSet.add(InetAddress.getByName("8.8.8.8"));
hashSet.add(InetAddress.getByName("8.8.4.4"));
hashSet.add(InetAddress.getByName("2001:4860:4860::8888"));
hashSet.add(InetAddress.getByName("2001:4860:4860::8844"));
hashSet.add(InetAddress.getByName("1.1.1.1"));
hashSet.add(InetAddress.getByName("1.0.0.1"));
hashSet.add(InetAddress.getByName("2606:4700:4700::1111"));
hashSet.add(InetAddress.getByName("2606:4700:4700::1001"));
hashSet.add(InetAddress.getByName("9.9.9.9"));
hashSet.add(InetAddress.getByName("149.112.112.112"));
hashSet.add(InetAddress.getByName("2620:fe::fe"));
hashSet.add(InetAddress.getByName("2620:fe::9"));
hashSet2.add("dns.google");
hashSet2.add("1dot1dot1dot1.cloudflare-dns.com");
hashSet2.add("cloudflare-dns.com");
hashSet2.add("dns.quad9.net");
} catch (UnknownHostException e) {
throw new RuntimeException("Failed to parse IP addresses", e);
}
}
AndroidNetworkLibrary() {
}
public static void addTestRootCertificate(byte[] bArr) {
X509Util.addTestRootCertificate(bArr);
}
public static void clearTestRootCertificates() {
X509Util.clearTestRootCertificates();
}
private static byte[][] getDnsServers() {
boolean z;
int i;
boolean z2;
Object newInstance;
if (!haveAccessNetworkState()) {
newInstance = Array.newInstance(byte.class, 0, 0);
} else {
ConnectivityManager connectivityManager = (ConnectivityManager) ContextUtils.getApplicationContext().getSystemService("connectivity");
if (connectivityManager == null) {
newInstance = Array.newInstance(byte.class, 0, 0);
} else {
Network activeNetwork = ApiHelperForM.getActiveNetwork(connectivityManager);
if (activeNetwork == null) {
newInstance = Array.newInstance(byte.class, 0, 0);
} else {
LinkProperties linkProperties = connectivityManager.getLinkProperties(activeNetwork);
if (linkProperties == null) {
newInstance = Array.newInstance(byte.class, 0, 0);
} else {
List<InetAddress> dnsServers = linkProperties.getDnsServers();
Iterator<InetAddress> it = dnsServers.iterator();
while (true) {
z = true;
if (!it.hasNext()) {
z2 = false;
break;
}
if (sAutoDohServers.contains(it.next())) {
z2 = true;
break;
}
}
if (isPrivateDnsActive(linkProperties)) {
String privateDnsServerName = getPrivateDnsServerName(linkProperties);
if (privateDnsServerName != null) {
z2 = sAutoDohDotServers.contains(privateDnsServerName.toLowerCase(Locale.US));
}
if (privateDnsServerName == null) {
z = false;
}
RecordHistogram.recordBooleanHistogram("Net.DNS.Android.DotExplicit", z);
RecordHistogram.recordBooleanHistogram("Net.DNS.Android.AutoDohPrivate", z2);
newInstance = Array.newInstance(byte.class, 1, 1);
} else {
RecordHistogram.recordBooleanHistogram("Net.DNS.Android.AutoDohPublic", z2);
byte[][] bArr = new byte[dnsServers.size()][];
for (i = 0; i < dnsServers.size(); i++) {
bArr[i] = dnsServers.get(i).getAddress();
}
return bArr;
}
}
}
}
}
return (byte[][]) newInstance;
}
private static boolean getIsCaptivePortal() {
ConnectivityManager connectivityManager;
Network activeNetwork;
NetworkCapabilities networkCapabilities;
return (Build.VERSION.SDK_INT < 23 || (connectivityManager = (ConnectivityManager) ContextUtils.getApplicationContext().getSystemService("connectivity")) == null || (activeNetwork = ApiHelperForM.getActiveNetwork(connectivityManager)) == null || (networkCapabilities = connectivityManager.getNetworkCapabilities(activeNetwork)) == null || !networkCapabilities.hasCapability(17)) ? false : true;
}
private static boolean getIsRoaming() {
NetworkInfo activeNetworkInfo = ((ConnectivityManager) ContextUtils.getApplicationContext().getSystemService("connectivity")).getActiveNetworkInfo();
if (activeNetworkInfo == null) {
return false;
}
return activeNetworkInfo.isRoaming();
}
public static String getMimeTypeFromExtension(String str) {
return URLConnection.guessContentTypeFromName("foo." + str);
}
private static String getNetworkCountryIso() {
return AndroidTelephonyManagerBridge.getInstance().getNetworkCountryIso();
}
private static String getNetworkOperator() {
return AndroidTelephonyManagerBridge.getInstance().getNetworkOperator();
}
private static String getPrivateDnsServerName(LinkProperties linkProperties) {
if (Build.VERSION.SDK_INT < 28 || linkProperties == null) {
return null;
}
return ApiHelperForP.getPrivateDnsServerName(linkProperties);
}
private static String getSimOperator() {
return AndroidTelephonyManagerBridge.getInstance().getSimOperator();
}
public static String getWifiSSID() {
String ssid;
WifiInfo wifiInfo = null;
if (haveAccessWifiState()) {
wifiInfo = ((WifiManager) ContextUtils.getApplicationContext().getSystemService(NetworkUtil.NETWORK_TYPE_WIFI)).getConnectionInfo();
} else {
Intent registerReceiver = ContextUtils.getApplicationContext().registerReceiver(null, new IntentFilter("android.net.wifi.STATE_CHANGE"));
if (registerReceiver != null) {
wifiInfo = (WifiInfo) registerReceiver.getParcelableExtra("wifiInfo");
}
}
return (wifiInfo == null || (ssid = wifiInfo.getSSID()) == null || ssid.equals("<unknown ssid>")) ? "" : ssid;
}
public static int getWifiSignalLevel(int i) {
int intExtra;
int calculateSignalLevel;
try {
Intent registerReceiver = ContextUtils.getApplicationContext().registerReceiver(null, new IntentFilter("android.net.wifi.RSSI_CHANGED"));
if (registerReceiver != null && (intExtra = registerReceiver.getIntExtra("newRssi", Integer.MIN_VALUE)) != Integer.MIN_VALUE && (calculateSignalLevel = WifiManager.calculateSignalLevel(intExtra, i)) >= 0 && calculateSignalLevel < i) {
return calculateSignalLevel;
}
return -1;
} catch (Exception | IllegalArgumentException unused) {
}
}
private static boolean haveAccessNetworkState() {
if (sHaveAccessNetworkState == null) {
sHaveAccessNetworkState = Boolean.valueOf(ApiCompatibilityUtils.checkPermission(ContextUtils.getApplicationContext(), h.b, Process.myPid(), Process.myUid()) == 0);
}
return sHaveAccessNetworkState.booleanValue();
}
private static boolean haveAccessWifiState() {
if (sHaveAccessWifiState == null) {
sHaveAccessWifiState = Boolean.valueOf(ApiCompatibilityUtils.checkPermission(ContextUtils.getApplicationContext(), h.d, Process.myPid(), Process.myUid()) == 0);
}
return sHaveAccessWifiState.booleanValue();
}
public static boolean haveOnlyLoopbackAddresses() {
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
if (networkInterfaces == null) {
return false;
}
while (networkInterfaces.hasMoreElements()) {
NetworkInterface nextElement = networkInterfaces.nextElement();
try {
if (nextElement.isUp() && !nextElement.isLoopback()) {
return false;
}
} catch (SocketException unused) {
}
}
return true;
} catch (Exception e) {
Log.w(TAG, "could not get network interfaces: " + e);
return false;
}
}
private static boolean isCleartextPermitted(String str) {
try {
return NetworkSecurityPolicyProxy.getInstance().isCleartextTrafficPermitted(str);
} catch (IllegalArgumentException unused) {
return NetworkSecurityPolicyProxy.getInstance().isCleartextTrafficPermitted();
}
}
static boolean isPrivateDnsActive(LinkProperties linkProperties) {
if (Build.VERSION.SDK_INT < 28 || linkProperties == null) {
return false;
}
return ApiHelperForP.isPrivateDnsActive(linkProperties);
}
private static void tagSocket(int i, int i2, int i3) {
FileDescriptor fileDescriptor;
ParcelFileDescriptor parcelFileDescriptor;
int threadStatsTag = TrafficStats.getThreadStatsTag();
if (i3 != threadStatsTag) {
TrafficStats.setThreadStatsTag(i3);
}
if (i2 != -1) {
ThreadStatsUid.set(i2);
}
if (Build.VERSION.SDK_INT < 23) {
parcelFileDescriptor = null;
fileDescriptor = SetFileDescriptor.createWithFd(i);
} else {
parcelFileDescriptor = ParcelFileDescriptor.adoptFd(i);
fileDescriptor = parcelFileDescriptor.getFileDescriptor();
}
SocketFd socketFd = new SocketFd(fileDescriptor);
TrafficStats.tagSocket(socketFd);
socketFd.close();
if (parcelFileDescriptor != null) {
parcelFileDescriptor.detachFd();
}
if (i3 != threadStatsTag) {
TrafficStats.setThreadStatsTag(threadStatsTag);
}
if (i2 != -1) {
ThreadStatsUid.clear();
}
}
public static AndroidCertVerifyResult verifyServerCertificates(byte[][] bArr, String str, String str2) {
try {
return X509Util.verifyServerCertificates(bArr, str, str2);
} catch (KeyStoreException unused) {
return new AndroidCertVerifyResult(-1);
} catch (NoSuchAlgorithmException unused2) {
return new AndroidCertVerifyResult(-1);
} catch (IllegalArgumentException unused3) {
return new AndroidCertVerifyResult(-1);
} catch (Throwable unused4) {
return new AndroidCertVerifyResult(-1);
}
}
}