Files

127 lines
4.6 KiB
Java
Raw Permalink Normal View History

2016-02-27 15:22:35 +08:00
package customskinloader.utils;
2019-01-05 00:12:42 +08:00
import java.io.IOException;
2016-11-06 12:00:36 +08:00
import java.net.InetAddress;
2019-01-05 00:12:42 +08:00
import java.net.Socket;
2016-11-06 12:00:36 +08:00
import java.net.UnknownHostException;
2016-10-18 21:48:07 +08:00
import java.security.cert.X509Certificate;
2021-04-24 10:33:18 +08:00
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
2016-10-18 21:48:07 +08:00
2016-10-01 13:28:04 +08:00
import org.apache.commons.lang3.StringUtils;
2016-02-27 15:22:35 +08:00
2016-02-27 16:37:05 +08:00
public class HttpUtil0 {
2018-02-12 12:20:28 +08:00
public static boolean isLocal(String url){
2021-04-24 10:33:18 +08:00
return url != null && !url.startsWith("http://") && !url.startsWith("https://");
2018-02-12 12:20:28 +08:00
}
//From: http://blog.csdn.net/xiyushiyi/article/details/46685387
public static void ignoreHttpsCertificate(){
HostnameVerifier doNotVerify = new HostnameVerifier() {
2016-10-18 21:48:07 +08:00
2018-02-12 12:20:28 +08:00
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[] {};
}
public void checkClientTrusted(X509Certificate[] chain, String authType){}
public void checkServerTrusted(X509Certificate[] chain, String authType){}
}};
2016-10-18 21:48:07 +08:00
2018-02-12 12:20:28 +08:00
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
2019-01-05 00:12:42 +08:00
//HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultSSLSocketFactory(new SSLSocketFactoryFacade());
2018-02-12 12:20:28 +08:00
HttpsURLConnection.setDefaultHostnameVerifier(doNotVerify);
} catch (Exception e) {
e.printStackTrace();
}
}
public static String parseAddress(String address) {
if(StringUtils.isEmpty(address))
return null;
String[] addresses=address.split(":");
InetAddress add;
try {
add = InetAddress.getByName(addresses[0]);
} catch (UnknownHostException e) {
e.printStackTrace();
return null;
}
return add.getHostAddress()+(addresses.length==2 ? addresses[1] : "25565");
}
public static boolean isLanServer(String standardAddress){
if(StringUtils.isEmpty(standardAddress))
return true;
String[] addresses=standardAddress.split(":");
int numIp=getNumIp(addresses[0]);
return numIp==0||numIp==getNumIp("127.0.0.1")||
(numIp>=getNumIp("192.168.0.0")&&numIp<=getNumIp("192.168.255.255"))||
(numIp>=getNumIp("10.0.0.0")&&numIp<=getNumIp("10.255.255.255"))||
(numIp>=getNumIp("172.16.0.0")&&numIp<=getNumIp("172.31.255.255"));
}
public static int getNumIp(String ip){
int num=0;
String[] ips=ip.split("\\.");
if(ips.length!=4)
return 0;
for(int i=0;i<4;i++)
num+=Integer.parseInt(ips[i])*(256^(3-i));
return num;
}
2019-01-05 00:12:42 +08:00
//https://stackoverflow.com/questions/30817934/extended-server-name-sni-extension-not-sent-with-jdk1-8-0-but-send-with-jdk1-7
public static class SSLSocketFactoryFacade extends SSLSocketFactory {
SSLSocketFactory sslsf;
public SSLSocketFactoryFacade() {
sslsf = (SSLSocketFactory) SSLSocketFactory.getDefault();;
}
@Override
public String[] getDefaultCipherSuites() {
return sslsf.getDefaultCipherSuites();
}
@Override
public String[] getSupportedCipherSuites() {
return sslsf.getSupportedCipherSuites();
}
@Override
public Socket createSocket(Socket socket, String s, int i, boolean b) throws IOException {
return sslsf.createSocket(socket, s, i, b);
}
@Override
public Socket createSocket(String s, int i) throws IOException, UnknownHostException {
return sslsf.createSocket(s, i);
}
@Override
public Socket createSocket(String s, int i, InetAddress inetAddress, int i1) throws IOException, UnknownHostException {
return sslsf.createSocket(s, i, inetAddress, i1);
}
@Override
public Socket createSocket(InetAddress inetAddress, int i) throws IOException {
return createSocket(inetAddress, i);
}
@Override
public Socket createSocket(InetAddress inetAddress, int i, InetAddress inetAddress1, int i1) throws IOException {
return createSocket(inetAddress, i, inetAddress1, i1);
}
}
2021-07-25 15:48:50 +08:00
}