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

📄 hack.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:   Hack.java

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

import java.io.File;
import java.io.PrintStream;
import java.net.URI;
import java.net.URL;
import java.util.Iterator;
import java.util.List;
import org.gudy.azureus2.core3.disk.DiskManager;
import org.gudy.azureus2.core3.disk.DiskManagerFileInfo;
import org.gudy.azureus2.core3.download.DownloadManager;
import org.gudy.azureus2.core3.download.DownloadManagerStats;
import org.gudy.azureus2.core3.tracker.client.TRTrackerAnnouncer;
import org.gudy.azureus2.ui.console.ConsoleInput;

// Referenced classes of package org.gudy.azureus2.ui.console.commands:
//			TorrentCommand, CommandCollection, IConsoleCommand, TorrentSubCommand

public class Hack extends TorrentCommand
{
	private static class HackDownloadSpeed extends TorrentSubCommand
	{

		public String getCommandDescriptions()
		{
			return "downloadspeed\td\tSet max download speed [in kbps]of a torrent (0 for unlimited).";
		}

		public boolean performCommand(ConsoleInput ci, DownloadManager dm, List args)
		{
			if (args.isEmpty())
			{
				ci.out.println((new StringBuilder()).append("> Command 'hack': Not enough parameters for subcommand '").append(getCommandName()).append("'").toString());
				return false;
			} else
			{
				int newSpeed = Math.max(-1, Integer.parseInt((String)args.get(0)));
				dm.getStats().setDownloadRateLimitBytesPerSecond(newSpeed * 1024);
				return true;
			}
		}

		public HackDownloadSpeed()
		{
			super("downloadspeed", "d");
		}
	}

	private static class HackFile extends TorrentSubCommand
	{

		public void printHelpExtra(PrintStream out, List args)
		{
			out.println("hack <torrent id> file <#> <priority>");
			out.println();
			out.println("<#> Number of the file.");
			out.println();
			out.println("<priority> can be one of the following:");
			out.println("normal\t\tn\tNormal Priority");
			out.println("high\t\th|+\tHigh Priority");
			out.println("nodownload\t!|-\tDon't download this file.");
			out.println("> -----");
		}

		public boolean performCommand(ConsoleInput ci, DownloadManager dm, List args)
		{
			if (args.size() < 2)
			{
				ci.out.println("> Command 'hack': Not enough parameters for subcommand 'file'.");
				return false;
			}
			DiskManager disk = dm.getDiskManager();
			DiskManagerFileInfo files[] = disk.getFiles();
			int file = Integer.parseInt((String)args.get(0));
			String c = (String)args.get(1);
			if (c.equalsIgnoreCase("normal") || c.equalsIgnoreCase("n"))
			{
				files[file - 1].setSkipped(false);
				files[file - 1].setPriority(false);
				ci.out.println((new StringBuilder()).append("> Set file '").append(files[file - 1].getFile(true).getName()).append("' to normal priority.").toString());
				break MISSING_BLOCK_LABEL_404;
			}
			if (c.equalsIgnoreCase("high") || c.equalsIgnoreCase("h") || c.equalsIgnoreCase("+"))
			{
				files[file - 1].setSkipped(false);
				files[file - 1].setPriority(true);
				ci.out.println((new StringBuilder()).append("> Set file '").append(files[file - 1].getFile(true).getName()).append("' to high priority.").toString());
				break MISSING_BLOCK_LABEL_404;
			}
			if (c.equalsIgnoreCase("nodownload") || c.equalsIgnoreCase("!") || c.equalsIgnoreCase("-"))
			{
				files[file - 1].setSkipped(true);
				files[file - 1].setPriority(false);
				ci.out.println((new StringBuilder()).append("> Stopped to download file '").append(files[file - 1].getFile(true).getName()).append("'.").toString());
				break MISSING_BLOCK_LABEL_404;
			}
			ci.out.println((new StringBuilder()).append("> Command 'hack': Unknown priority '").append(c).append("' for command parameter 'file'.").toString());
			return false;
			return true;
			Exception e;
			e;
			ci.out.println((new StringBuilder()).append("> Command 'hack': Exception while executing subcommand 'file': ").append(e.getMessage()).toString());
			return false;
		}

		public String getCommandDescriptions()
		{
			return "file\t\tf\tModify priority of a single file of a batch torrent.";
		}

		public HackFile()
		{
			super("file", "f");
		}
	}

	private static class HackHost extends TorrentSubCommand
	{

		public boolean performCommand(ConsoleInput ci, DownloadManager dm, List args)
		{
			if (args.isEmpty())
			{
				ci.out.println("> Command 'hack': Not enough parameters for subcommand parameter 'host'.");
				return false;
			}
			TRTrackerAnnouncer client = dm.getTrackerClient();
			try
			{
				URI uold = new URI(client.getTrackerUrl().toString());
				URI unew = new URI(uold.getScheme(), uold.getUserInfo(), (String)args.get(0), uold.getPort(), uold.getPath(), uold.getQuery(), uold.getFragment());
				client.setTrackerUrl(new URL(unew.toString()));
				ci.out.println((new StringBuilder()).append("> Set Tracker URL for '").append(dm.getSaveLocation()).append("' to '").append(unew.toString()).append("'").toString());
			}
			catch (Exception e)
			{
				ci.out.println((new StringBuilder()).append("> Command 'hack': Assembling new tracker url failed: ").append(e.getMessage()).toString());
				return false;
			}
			return true;
		}

		public String getCommandDescriptions()
		{
			return "host\t\th\tChange the host.";
		}

		public HackHost()
		{
			super("host", "h");
		}
	}

	private static class HackPort extends TorrentSubCommand
	{

		public boolean performCommand(ConsoleInput ci, DownloadManager dm, List args)
		{
			if (args.isEmpty())
			{
				ci.out.println("> Command 'hack': Not enough parameters for subcommand parameter 'port'.");
				return false;
			}
			TRTrackerAnnouncer client = dm.getTrackerClient();
			try
			{
				URI uold = new URI(client.getTrackerUrl().toString());
				String portStr = (String)args.get(0);
				URI unew = new URI(uold.getScheme(), uold.getUserInfo(), uold.getHost(), Integer.parseInt(portStr), uold.getPath(), uold.getQuery(), uold.getFragment());
				client.setTrackerUrl(new URL(unew.toString()));
				ci.out.println((new StringBuilder()).append("> Set Tracker URL for '").append(dm.getSaveLocation()).append("' to '").append(unew.toString()).append("'").toString());
			}
			catch (Exception e)
			{
				ci.out.println((new StringBuilder()).append("> Command 'hack': Assembling new tracker url failed: ").append(e.getMessage()).toString());
				return false;
			}
			return true;
		}

		public String getCommandDescriptions()
		{
			return "port\t\tp\tChange the port.";
		}

		public HackPort()
		{
			super("port", "p");
		}
	}

	private static class HackTracker extends TorrentSubCommand
	{

		private final CommandCollection subCommands = new CommandCollection();

		public void printHelpExtra(PrintStream out, List args)
		{
			out.println("hack <torrent id> tracker [command] <new value>");
			out.println();
			out.println("[command] can be one of the following:");
			TorrentSubCommand cmd;
			for (Iterator iter = subCommands.iterator(); iter.hasNext(); out.println(cmd.getCommandDescriptions()))
				cmd = (TorrentSubCommand)iter.next();

			out.println();
			out.println("You can also omit [command] and only give a new full URL (just like the [command] 'url').");
			out.println("> -----");
		}

		public boolean performCommand(ConsoleInput ci, DownloadManager dm, List args)
		{
			if (args.isEmpty())
			{
				ci.out.println((new StringBuilder()).append("> Command 'hack': Not enough parameters for subcommand '").append(getCommandName()).append("'").toString());
				return false;
			}
			String trackercommand = (String)args.remove(0);
			TRTrackerAnnouncer client = dm.getTrackerClient();
			if (client == null)
			{
				ci.out.println("> Command 'hack': Tracker interface not available.");
				return false;
			}
			TorrentSubCommand cmd = (TorrentSubCommand)subCommands.get(trackercommand);
			if (cmd == null)
			{
				args.add(trackercommand);
				cmd = (TorrentSubCommand)subCommands.get("url");
			}
			return cmd.performCommand(ci, dm, args);
		}

		public String getCommandDescriptions()
		{
			return "tracker\t\tt\tModify Tracker URL of a torrent.";
		}

		public HackTracker()
		{
			super("tracker", "t");
			subCommands.add(new HackHost());
			subCommands.add(new HackPort());
			subCommands.add(new HackURL());
		}
	}

	private static class HackURL extends TorrentSubCommand
	{

		public boolean performCommand(ConsoleInput ci, DownloadManager dm, List args)
		{
			if (args.isEmpty())
			{
				ci.out.println("> Command 'hack': Not enough parameters for subcommand parameter 'url'.");
				return false;
			}
			TRTrackerAnnouncer client = dm.getTrackerClient();
			try
			{
				String uriStr = (String)args.get(0);
				URI uri = new URI(uriStr);
				client.setTrackerUrl(new URL(uri.toString()));
				ci.out.println((new StringBuilder()).append("> Set Tracker URL for '").append(dm.getSaveLocation()).append("' to '").append(uri).append("'").toString());
			}
			catch (Exception e)
			{
				ci.out.println((new StringBuilder()).append("> Command 'hack': Parsing tracker url failed: ").append(e.getMessage()).toString());
				return false;
			}
			return true;
		}

		public String getCommandDescriptions()
		{
			return "url\t\tu\tChange the full URL (Note: you have to include the '/announce' part).";
		}

		public HackURL()
		{
			super("url", "u");
		}
	}

	private static class HackUploadSpeed extends TorrentSubCommand
	{

		public String getCommandDescriptions()
		{
			return "uploadspeed\tu\tSet max upload speed [in kbps] of a torrent (0 for unlimited).";
		}

		public boolean performCommand(ConsoleInput ci, DownloadManager dm, List args)
		{
			if (args.isEmpty())
			{
				ci.out.println((new StringBuilder()).append("> Command 'hack': Not enough parameters for subcommand '").append(getCommandName()).append("'").toString());
				return false;
			} else
			{
				int newSpeed = Math.max(-1, Integer.parseInt((String)args.get(0)));
				dm.getStats().setUploadRateLimitBytesPerSecond(newSpeed * 1024);
				return true;
			}
		}

		public HackUploadSpeed()
		{
			super("uploadspeed", "u");
		}
	}

	private static class HackUploads extends TorrentSubCommand
	{

		public String getCommandDescriptions()
		{
			return "uploads\tv\tSet max upload slots of a torrent.";
		}

		public boolean performCommand(ConsoleInput ci, DownloadManager dm, List args)
		{
			if (args.isEmpty())
			{
				ci.out.println((new StringBuilder()).append("> Command 'hack': Not enough parameters for subcommand '").append(getCommandName()).append("'").toString());
				return false;
			} else
			{
				int newSlots = Math.max(-1, Integer.parseInt((String)args.get(0)));
				dm.setMaxUploads(newSlots);
				return true;
			}
		}

		public HackUploads()
		{
			super("uploads", "v");
		}
	}


	private final CommandCollection subCommands = new CommandCollection();

	public Hack()
	{
		super("hack", "#", "Hacking");
		subCommands.add(new HackFile());
		subCommands.add(new HackTracker());
		subCommands.add(new HackDownloadSpeed());
		subCommands.add(new HackUploadSpeed());
		subCommands.add(new HackUploads());
	}

	public String getCommandDescriptions()
	{
		return "hack [<various options>]\t#\tModify torrent settings. Use without parameters for further help.";
	}

	public void printHelpExtra(PrintStream out, List args)
	{
		out.println("> -----");
		out.println("'hack' syntax:");
		if (args.size() > 0)
		{
			String command = (String)args.remove(0);
			IConsoleCommand cmd = subCommands.get(command);
			if (cmd != null)
				cmd.printHelp(out, args);
			return;
		}
		out.println("hack <torrent id> <command> <command options>");
		out.println();
		out.println("<torrent id> can be one of the following:");
		out.println("<#>\t\tNumber of a torrent. You have to use 'show torrents' first as the number is taken from there.");
		out.println("hash <hash>\tApplied to torrent with the hash <hash> as given in the xml output or extended torrent info ('show <#>').");
		out.println("help\t\tDetailed help for <command>");
		out.println();
		out.println("Available <command>s:");
		TorrentSubCommand cmd;
		for (Iterator iter = subCommands.iterator(); iter.hasNext(); out.println(cmd.getCommandDescriptions()))
			cmd = (TorrentSubCommand)iter.next();

		out.println("> -----");
	}

	protected boolean performCommand(ConsoleInput ci, DownloadManager dm, List args)
	{
		if (args.isEmpty())
		{
			ci.out.println((new StringBuilder()).append("> Not enough parameters for command '").append(getCommandName()).append("'.").toString());
			return false;
		}
		String subCommandName = (String)args.remove(0);
		TorrentSubCommand cmd = (TorrentSubCommand)subCommands.get(subCommandName);
		if (cmd != null)
		{
			return cmd.performCommand(ci, dm, args);
		} else
		{
			ci.out.println((new StringBuilder()).append("> Command 'hack': Command parameter '").append(subCommandName).append("' unknown.").toString());
			return false;
		}
	}
}

⌨️ 快捷键说明

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