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

📄 torrentcommand.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:   TorrentCommand.java

package org.gudy.azureus2.ui.console.commands;

import com.aelitis.azureus.core.AzureusCore;
import java.io.PrintStream;
import java.util.Iterator;
import java.util.List;
import org.gudy.azureus2.core3.download.DownloadManager;
import org.gudy.azureus2.core3.download.DownloadManagerState;
import org.gudy.azureus2.core3.global.GlobalManager;
import org.gudy.azureus2.core3.tracker.host.TRHost;
import org.gudy.azureus2.core3.tracker.host.TRHostTorrent;
import org.gudy.azureus2.core3.util.TorrentUtils;
import org.gudy.azureus2.ui.console.ConsoleInput;
import org.gudy.azureus2.ui.console.UserProfile;

// Referenced classes of package org.gudy.azureus2.ui.console.commands:
//			IConsoleCommand

public abstract class TorrentCommand extends IConsoleCommand
{

	private final String action;

	public TorrentCommand(String main_name, String short_name, String action)
	{
		super(main_name, short_name);
		this.action = action;
	}

	protected String getAction()
	{
		return action;
	}

	protected abstract boolean performCommand(ConsoleInput consoleinput, DownloadManager downloadmanager, List list);

	protected boolean performCommand(ConsoleInput ci, TRHostTorrent torrent, List args)
	{
		return false;
	}

	public void execute(String commandName, ConsoleInput ci, List args)
	{
		if (!args.isEmpty())
		{
			String subcommand = (String)args.remove(0);
			if (ci.torrents.isEmpty())
				ci.out.println((new StringBuilder()).append("> Command '").append(getCommandName()).append("': No torrents in list (Maybe you forgot to 'show torrents' first).").toString());
			else
				try
				{
					int number = Integer.parseInt(subcommand);
					if (number > 0 && number <= ci.torrents.size())
					{
						DownloadManager dm = (DownloadManager)ci.torrents.get(number - 1);
						String name;
						if (dm.getDisplayName() == null)
							name = "?";
						else
							name = dm.getDisplayName();
						performCommandIfAllowed(ci, args, dm, (new StringBuilder()).append("#").append(subcommand).toString(), name);
					} else
					{
						ci.out.println((new StringBuilder()).append("> Command '").append(getCommandName()).append("': Torrent #").append(subcommand).append(" unknown.").toString());
					}
				}
				catch (NumberFormatException e)
				{
					if ("all".equalsIgnoreCase(subcommand))
					{
						String name;
						DownloadManager dm;
						for (Iterator torrent = ci.torrents.iterator(); torrent.hasNext(); performCommandIfAllowed(ci, args, dm, subcommand, name))
						{
							dm = (DownloadManager)torrent.next();
							if (dm.getDisplayName() == null)
								name = "?";
							else
								name = dm.getDisplayName();
						}

					} else
					if ("hash".equalsIgnoreCase(subcommand))
					{
						String hash = (String)args.remove(0);
						List torrents = ci.getGlobalManager().getDownloadManagers();
						boolean foundit = false;
						Iterator torrent = torrents.iterator();
						do
						{
							if (!torrent.hasNext())
								break;
							DownloadManager dm = (DownloadManager)torrent.next();
							if (!hash.equals(TorrentUtils.nicePrintTorrentHash(dm.getTorrent(), true)))
								continue;
							String name;
							if (dm.getDisplayName() == null)
								name = "?";
							else
								name = dm.getDisplayName();
							performCommandIfAllowed(ci, args, dm, hash, name);
							foundit = true;
							break;
						} while (true);
						if (!foundit)
						{
							TRHost host = ci.getCore().getTrackerHost();
							if (host != null)
							{
								TRHostTorrent h_torrents[] = host.getTorrents();
								int i = 0;
								do
								{
									if (i >= h_torrents.length)
										break;
									TRHostTorrent ht = h_torrents[i];
									if (hash.equals(TorrentUtils.nicePrintTorrentHash(ht.getTorrent(), true)))
									{
										String name = TorrentUtils.getLocalisedName(ht.getTorrent());
										performCommandIfAllowed(ci, args, ht, hash, name);
										foundit = true;
										break;
									}
									i++;
								} while (true);
							}
						}
						if (!foundit)
							ci.out.println((new StringBuilder()).append("> Command '").append(getCommandName()).append("': Hash '").append(hash).append("' unknown.").toString());
					} else
					{
						ci.out.println((new StringBuilder()).append("> Command '").append(getCommandName()).append("': Subcommand '").append(subcommand).append("' unknown.").toString());
					}
				}
		} else
		{
			ci.out.println((new StringBuilder()).append("> Missing subcommand for '").append(getCommandName()).append("'").toString());
			printHelp(ci.out, args);
		}
	}

	private void performCommandIfAllowed(ConsoleInput ci, List args, DownloadManager dm, String desc, String name)
	{
		if (!"admin".equals(ci.getUserProfile().getUserType()))
			if ("user".equals(ci.getUserProfile().getUserType()))
			{
				String owner = dm.getDownloadState().getAttribute("user");
				if (!ci.getUserProfile().getUsername().equals(owner))
				{
					ci.out.println((new StringBuilder()).append("> ").append(getAction()).append(" torrent ").append(desc).append(" (").append(name).append(") failed: Permission Denied. Users can only modify their own torrents").toString());
					return;
				}
			} else
			{
				ci.out.println((new StringBuilder()).append("> ").append(getAction()).append(" torrent ").append(desc).append(" (").append(name).append(") failed: Permission Denied. Guests cannot modify torrents").toString());
				return;
			}
		if (performCommand(ci, dm, args))
			ci.out.println((new StringBuilder()).append("> ").append(getAction()).append(" Torrent ").append(desc).append(" (").append(name).append(") succeeded.").toString());
		else
			ci.out.println((new StringBuilder()).append("> ").append(getAction()).append(" Torrent ").append(desc).append(" (").append(name).append(") failed.").toString());
	}

	private void performCommandIfAllowed(ConsoleInput ci, List args, TRHostTorrent torrent, String desc, String name)
	{
		if (!"admin".equals(ci.getUserProfile().getUserType()) && !"user".equals(ci.getUserProfile().getUserType()))
		{
			ci.out.println((new StringBuilder()).append("> ").append(getAction()).append(" torrent ").append(desc).append(" (").append(name).append(") failed: Permission Denied. Guests cannot modify torrents").toString());
			return;
		}
		if (performCommand(ci, torrent, args))
			ci.out.println((new StringBuilder()).append("> ").append(getAction()).append(" Torrent ").append(desc).append(" (").append(name).append(") succeeded.").toString());
		else
			ci.out.println((new StringBuilder()).append("> ").append(getAction()).append(" Torrent ").append(desc).append(" (").append(name).append(") failed.").toString());
	}

	public void printHelpExtra(PrintStream out, List args)
	{
		out.println((new StringBuilder()).append("> ").append(getCommandName()).append(" syntax: ").append(getCommandName()).append(" (<#>|all|hash <hash>)").toString());
	}
}

⌨️ 快捷键说明

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