⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trblockingserver.java

📁 java 文件下载器。可自定义
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   TRBlockingServer.java

package org.gudy.azureus2.core3.tracker.server.impl.tcp.blocking;

import com.aelitis.azureus.core.networkmanager.admin.NetworkAdmin;
import java.net.*;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.ipfilter.IpFilter;
import org.gudy.azureus2.core3.logging.*;
import org.gudy.azureus2.core3.security.SESecurityManager;
import org.gudy.azureus2.core3.tracker.server.TRTrackerServerException;
import org.gudy.azureus2.core3.tracker.server.impl.tcp.TRTrackerServerTCP;
import org.gudy.azureus2.core3.util.AEThread;
import org.gudy.azureus2.core3.util.Debug;

// Referenced classes of package org.gudy.azureus2.core3.tracker.server.impl.tcp.blocking:
//			TRBlockingServerProcessor

public class TRBlockingServer extends TRTrackerServerTCP
{

	private static final LogIDs LOGID;
	private ServerSocket server_socket;
	private volatile boolean closed;

	public TRBlockingServer(String _name, int _port, InetAddress _bind_ip, boolean _ssl, boolean _apply_ip_filter, boolean _start_up_ready)
		throws TRTrackerServerException
	{
		boolean ok;
		super(_name, _port, _ssl, _apply_ip_filter, _start_up_ready);
		ok = false;
		InetAddress bind_ip = NetworkAdmin.getSingleton().getSingleHomedServiceBindAddress();
		String tr_bind_ip = COConfigurationManager.getStringParameter("Bind IP for Tracker", "");
		if (tr_bind_ip.length() >= 7)
			try
			{
				bind_ip = InetAddress.getByName(tr_bind_ip);
			}
			catch (Throwable e)
			{
				Debug.printStackTrace(e);
			}
		if (_ssl)
		{
			if (_port == 0)
				throw new TRTrackerServerException("port of 0 not currently supported for SSL");
			try
			{
				SSLServerSocketFactory factory = SESecurityManager.getSSLServerSocketFactory();
				if (factory == null)
					throw new TRTrackerServerException("TRTrackerServer: failed to get SSL factory");
				SSLServerSocket ssl_server_socket;
				if (bind_ip == null)
					ssl_server_socket = (SSLServerSocket)factory.createServerSocket(getPort(), 128);
				else
					ssl_server_socket = (SSLServerSocket)factory.createServerSocket(getPort(), 128, bind_ip);
				String cipherSuites[] = ssl_server_socket.getSupportedCipherSuites();
				ssl_server_socket.setEnabledCipherSuites(cipherSuites);
				ssl_server_socket.setNeedClientAuth(false);
				ssl_server_socket.setReuseAddress(true);
				server_socket = ssl_server_socket;
				Thread accept_thread = new AEThread("TRTrackerServer:accept.loop(ssl)") {

					final TRBlockingServer this$0;

					public void runSupport()
					{
						acceptLoop(server_socket);
					}

			
			{
				this$0 = TRBlockingServer.this;
				super(x0);
			}
				};
				accept_thread.setDaemon(true);
				accept_thread.start();
				Logger.log(new LogEvent(LOGID, (new StringBuilder()).append("TRTrackerServer: SSL listener established on port ").append(getPort()).toString()));
				ok = true;
			}
			catch (Throwable e)
			{
				Logger.logTextResource(new LogAlert(false, 3, "Tracker.alert.listenfail"), new String[] {
					(new StringBuilder()).append("").append(getPort()).toString()
				});
				Logger.log(new LogEvent(LOGID, (new StringBuilder()).append("TRTrackerServer: SSL listener failed on port ").append(getPort()).toString(), e));
				if (e instanceof TRTrackerServerException)
					throw (TRTrackerServerException)e;
				else
					throw new TRTrackerServerException((new StringBuilder()).append("TRTrackerServer: accept fails: ").append(e.toString()).toString());
			}
		} else
		{
			try
			{
				int port = getPort();
				ServerSocket ss;
				if (_bind_ip != null)
					ss = new ServerSocket(port, 1024, _bind_ip);
				else
				if (bind_ip == null)
					ss = new ServerSocket(port, 1024);
				else
					ss = new ServerSocket(port, 1024, bind_ip);
				if (port == 0)
					setPort(ss.getLocalPort());
				ss.setReuseAddress(true);
				server_socket = ss;
				Thread accept_thread = new AEThread("TRTrackerServer:accept.loop") {

					final TRBlockingServer this$0;

					public void runSupport()
					{
						acceptLoop(server_socket);
					}

			
			{
				this$0 = TRBlockingServer.this;
				super(x0);
			}
				};
				accept_thread.setDaemon(true);
				accept_thread.start();
				Logger.log(new LogEvent(LOGID, (new StringBuilder()).append("TRTrackerServer: listener established on port ").append(getPort()).toString()));
				ok = true;
			}
			catch (Throwable e)
			{
				Logger.logTextResource(new LogAlert(false, 3, "Tracker.alert.listenfail"), new String[] {
					(new StringBuilder()).append("").append(getPort()).toString()
				});
				throw new TRTrackerServerException("TRTrackerServer: accept fails", e);
			}
		}
		if (!ok)
			destroySupport();
		break MISSING_BLOCK_LABEL_604;
		Exception exception;
		exception;
		if (!ok)
			destroySupport();
		throw exception;
	}

	protected void acceptLoop(ServerSocket ss)
	{
		long successfull_accepts = 0L;
		long failed_accepts = 0L;
		do
		{
			if (closed)
				break;
			try
			{
				Socket socket = ss.accept();
				successfull_accepts++;
				String ip = socket.getInetAddress().getHostAddress();
				if (!isIPFilterEnabled() || !ip_filter.isInRange(ip, "Tracker", null))
					runProcessor(new TRBlockingServerProcessor(this, socket));
				else
					socket.close();
				continue;
			}
			catch (Throwable e)
			{
				if (closed)
					continue;
				failed_accepts++;
				Logger.log(new LogEvent(LOGID, (new StringBuilder()).append("TRTrackerServer: listener failed on port ").append(getPort()).toString(), e));
			}
			if (failed_accepts <= 100L || successfull_accepts != 0L)
				continue;
			Logger.logTextResource(new LogAlert(false, 3, "Network.alert.acceptfail"), new String[] {
				(new StringBuilder()).append("").append(getPort()).toString(), "TCP"
			});
			break;
		} while (true);
	}

	protected void closeSupport()
	{
		closed = true;
		try
		{
			server_socket.close();
		}
		catch (Throwable e) { }
		destroySupport();
	}

	static 
	{
		LOGID = LogIDs.TRACKER;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -