📄 torrentcommand.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 + -