导航菜单

页面标题

页面副标题

050 IP Phone v2.3.0 - v.java 源代码

正在查看: 050 IP Phone v2.3.0 应用的 v.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package i5;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import javax.net.SocketFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class v extends b {
    private static final p7.a g = s5.d.a(v.class);
    private static List<Socket> h = new ArrayList();
    private boolean e;
    private Socket f;

    class a implements X509TrustManager {
        a() {
        }

        @Override
        public void checkClientTrusted(X509Certificate[] x509CertificateArr, String str) {
        }

        @Override
        public void checkServerTrusted(X509Certificate[] x509CertificateArr, String str) {
        }

        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }
    }

    protected v(Socket socket, InetAddress inetAddress, int i, InetAddress inetAddress2, int i8, boolean z) {
        super("tls", inetAddress, i, inetAddress2, i8);
        this.f = socket;
        this.e = z;
        try {
            synchronized (h) {
                h.add(socket);
            }
            if (socket instanceof SSLSocket) {
                ((SSLSocket) socket).startHandshake();
            }
            p7.a aVar = g;
            if (aVar.c() && (socket instanceof SSLSocket)) {
                SSLSession session = ((SSLSocket) socket).getSession();
                aVar.a("tls connector created,cipher_suite=[" + session.getCipherSuite() + "],peer_host=[" + session.getPeerHost() + "],peer_port=[" + session.getPeerPort() + "],protocol=[" + session.getProtocol() + "]");
            }
            synchronized (h) {
                h.remove(socket);
            }
        } catch (Throwable th) {
            synchronized (h) {
                h.remove(socket);
                throw th;
            }
        }
    }

    public static v m(Socket socket) {
        return new v(socket, socket.getLocalAddress(), socket.getLocalPort(), socket.getInetAddress(), socket.getPort(), false);
    }

    private static SocketFactory n(boolean z) {
        return z ? o() : (SSLSocketFactory) SSLSocketFactory.getDefault();
    }

    private static SSLSocketFactory o() {
        try {
            TrustManager[] trustManagerArr = {new a()};
            SSLContext sSLContext = SSLContext.getInstance("TLS");
            sSLContext.init(null, trustManagerArr, null);
            return sSLContext.getSocketFactory();
        } catch (Exception e) {
            p7.a aVar = g;
            if (aVar.c()) {
                aVar.b("Failed to initialize TLS socket", e);
            }
            if (e instanceof IOException) {
                throw ((IOException) e);
            }
            throw new IOException("Failed to initialize TLS socket");
        }
    }

    public static List<Socket> p() {
        ArrayList arrayList;
        synchronized (h) {
            arrayList = new ArrayList(h);
        }
        return arrayList;
    }

    public static v q(SocketFactory socketFactory, String[] strArr, SocketAddress socketAddress, SocketAddress socketAddress2, int i, int i8) {
        Socket createSocket = socketFactory.createSocket();
        if ((createSocket instanceof SSLSocket) && strArr != null && strArr.length > 0) {
            ((SSLSocket) createSocket).setEnabledCipherSuites(strArr);
        }
        if (i8 >= 0 && i8 <= 255) {
            ((SSLSocket) createSocket).setTrafficClass(i8);
        }
        createSocket.bind(socketAddress);
        if (i < 0) {
            createSocket.connect(socketAddress2);
        } else {
            createSocket.connect(socketAddress2, i);
        }
        InetAddress localAddress = createSocket.getLocalAddress();
        int localPort = createSocket.getLocalPort();
        InetAddress inetAddress = createSocket.getInetAddress();
        int port = createSocket.getPort();
        int soTimeout = createSocket.getSoTimeout();
        try {
            createSocket.setSoTimeout(i);
            return new v(createSocket, localAddress, localPort, inetAddress, port, true);
        } finally {
            createSocket.setSoTimeout(soTimeout);
        }
    }

    public static v r(boolean z, String[] strArr, SocketAddress socketAddress, SocketAddress socketAddress2, int i, int i8) {
        return q(n(z), strArr, socketAddress, socketAddress2, i, i8);
    }

    @Override
    public String a() {
        return "tls";
    }

    @Override
    public int b() {
        return 2;
    }

    @Override
    public void close() {
        p7.a aVar = g;
        if (aVar.c()) {
            aVar.a("closing connector,local=[" + k() + "],remote=[" + l() + "]");
        }
        Socket socket = this.f;
        if (socket != null) {
            try {
                socket.close();
            } catch (Exception e) {
                p7.a aVar2 = g;
                if (aVar2.c()) {
                    aVar2.b("Failed to close socket", e);
                }
            }
        }
        super.close();
    }

    @Override
    public void e(int i) {
        p7.a aVar = g;
        if (aVar.c()) {
            aVar.a("setting traffic class,tc=[" + i + "]");
        }
        this.f.setTrafficClass(i);
    }

    @Override
    public OutputStream f() {
        return this.f.getOutputStream();
    }

    @Override
    public InputStream g() {
        return this.f.getInputStream();
    }
}