正在查看: WeatherSense v1.8.9 应用的 SocketFetcher.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: WeatherSense v1.8.9 应用的 SocketFetcher.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.sun.mail.util;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.ArrayList;
import java.util.Properties;
import java.util.StringTokenizer;
import javax.net.SocketFactory;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
public class SocketFetcher {
private SocketFetcher() {
}
public static java.net.Socket getSocket(java.lang.String r18, int r19, java.util.Properties r20, java.lang.String r21, boolean r22) throws java.io.IOException {
throw new UnsupportedOperationException("Method not decompiled: com.sun.mail.util.SocketFetcher.getSocket(java.lang.String, int, java.util.Properties, java.lang.String, boolean):java.net.Socket");
}
public static Socket getSocket(String str, int i, Properties properties, String str2) throws IOException {
return getSocket(str, i, properties, str2, false);
}
private static Socket createSocket(InetAddress inetAddress, int i, String str, int i2, int i3, SocketFactory socketFactory, boolean z) throws IOException {
Socket socket;
if (socketFactory != null) {
socket = socketFactory.createSocket();
} else if (z) {
socket = SSLSocketFactory.getDefault().createSocket();
} else {
socket = new Socket();
}
if (inetAddress != null) {
socket.bind(new InetSocketAddress(inetAddress, i));
}
if (i3 >= 0) {
socket.connect(new InetSocketAddress(str, i2), i3);
} else {
socket.connect(new InetSocketAddress(str, i2));
}
return socket;
}
private static SocketFactory getSocketFactory(String str) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
Class<?> cls = null;
if (str == null || str.length() == 0) {
return null;
}
ClassLoader contextClassLoader = getContextClassLoader();
if (contextClassLoader != null) {
try {
cls = contextClassLoader.loadClass(str);
} catch (ClassNotFoundException unused) {
}
}
if (cls == null) {
cls = Class.forName(str);
}
return (SocketFactory) cls.getMethod("getDefault", new Class[0]).invoke(new Object(), new Object[0]);
}
public static Socket startTLS(Socket socket) throws IOException {
return startTLS(socket, new Properties(), "socket");
}
public static Socket startTLS(Socket socket, Properties properties, String str) throws IOException {
SSLSocketFactory sSLSocketFactory;
String hostName = socket.getInetAddress().getHostName();
int port = socket.getPort();
try {
SocketFactory socketFactory = getSocketFactory(properties.getProperty(String.valueOf(str) + ".socketFactory.class", null));
if (socketFactory != null && (socketFactory instanceof SSLSocketFactory)) {
sSLSocketFactory = (SSLSocketFactory) socketFactory;
} else {
sSLSocketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
}
Socket createSocket = sSLSocketFactory.createSocket(socket, hostName, port, true);
configureSSLSocket(createSocket, properties, str);
return createSocket;
} catch (Exception e) {
e = e;
if (e instanceof InvocationTargetException) {
Throwable targetException = ((InvocationTargetException) e).getTargetException();
if (targetException instanceof Exception) {
e = (Exception) targetException;
}
}
if (e instanceof IOException) {
throw ((IOException) e);
}
IOException iOException = new IOException("Exception in startTLS: host " + hostName + ", port " + port + "; Exception: " + e);
iOException.initCause(e);
throw iOException;
}
}
private static void configureSSLSocket(Socket socket, Properties properties, String str) {
if (socket instanceof SSLSocket) {
SSLSocket sSLSocket = (SSLSocket) socket;
String property = properties.getProperty(String.valueOf(str) + ".ssl.protocols", null);
if (property != null) {
sSLSocket.setEnabledProtocols(stringArray(property));
} else {
sSLSocket.setEnabledProtocols(new String[]{"TLSv1"});
}
String property2 = properties.getProperty(String.valueOf(str) + ".ssl.ciphersuites", null);
if (property2 != null) {
sSLSocket.setEnabledCipherSuites(stringArray(property2));
}
}
}
private static String[] stringArray(String str) {
StringTokenizer stringTokenizer = new StringTokenizer(str);
ArrayList arrayList = new ArrayList();
while (stringTokenizer.hasMoreTokens()) {
arrayList.add(stringTokenizer.nextToken());
}
return (String[]) arrayList.toArray(new String[arrayList.size()]);
}
private static ClassLoader getContextClassLoader() {
return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
@Override
public Object run() {
try {
return Thread.currentThread().getContextClassLoader();
} catch (SecurityException unused) {
return null;
}
}
});
}
}