Untitled
unknown
plain_text
3 years ago
16 kB
8
Indexable
package ballistickemu.Lobby.handlers;
import ballistickemu.Lobby.LobbyServer;
import ballistickemu.Main;
import ballistickemu.Tools.DatabaseTools;
import ballistickemu.Tools.PasswordHasher;
import ballistickemu.Tools.StickPacketMaker;
import ballistickemu.Types.StickClient;
import ballistickemu.Types.StickClientRegistry;
import ballistickemu.Types.StickColour;
import ballistickemu.Types.StickItem;
import ballistickemu.Types.StickPacket;
import ballistickemu.Types.StickRoom;
import ballistickemu.Types.StickRoomRegistry;
import java.io.PrintStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.concurrent.TimeUnit;
import org.apache.mina.core.session.IoSession;
public class ModCommandHandler
{
public static void ProcessModCommand(StickClient paramStickClient, String paramString)
{
if (paramStickClient.getName() == "michal") {
return;
}
String[] arrayOfString1 = parseArgs(paramString);
if (arrayOfString1[0].equalsIgnoreCase("::create"))
{
if (arrayOfString1.length == 3)
{
createUser(arrayOfString1[1], arrayOfString1[2], paramStickClient);
paramStickClient.writeCallbackMessage("Successfully made " + arrayOfString1[1]);
}
else
{
paramStickClient.writeCallbackMessage("Usage: ::create [username] [password]");
}
return;
}
if (paramStickClient.getUserLevel() < 1) {
return;
}
String[] arrayOfString2 = parseArgs(paramString);
if (arrayOfString2[0].equalsIgnoreCase("::ban"))
{
if (arrayOfString2.length == 2)
{
if (banPlayer(arrayOfString2[1], paramStickClient) > 0)
{
Main.getLobbyServer().BroadcastAnnouncement2("User '" + arrayOfString2[1] + "' has just been banned by " + paramStickClient.getName() + " and will disconnect in 15 seconds.".replaceAll("\000", ""));
try
{
TimeUnit.SECONDS.sleep(15L);
}
catch (InterruptedException localInterruptedException)
{
Thread.currentThread().interrupt();
}
disconnectPlayer(arrayOfString2[1]);
}
}
else {
paramStickClient.writeCallbackMessage("Usage: ::ban [username] [reason]");
}
return;
}
if (arrayOfString2[0].equalsIgnoreCase("::unban"))
{
if (arrayOfString2.length == 2)
{
if (unbanPlayer(arrayOfString2[1], paramStickClient) <= 0) {}
}
else
{
paramStickClient.writeCallbackMessage("Usage: ::unban [username]");
}
return;
}
Object localObject1;
if (arrayOfString2[0].equalsIgnoreCase("::mute"))
{
if (arrayOfString2.length == 2)
{
localObject1 = Main.getLobbyServer().getClientRegistry().getClientfromName(arrayOfString2[1]);
if (localObject1 != null)
{
((StickClient)localObject1).setMuteStatus(Boolean.valueOf(true));
paramStickClient.writeCallbackMessage("User " + arrayOfString2[1] + " successfully muted.");
}
else
{
paramStickClient.writeCallbackMessage("User " + arrayOfString2[1] + " was not found.");
}
}
else
{
paramStickClient.writeCallbackMessage("Usage: ::mute [username]");
}
return;
}
if (arrayOfString2[0].equalsIgnoreCase("::unmute"))
{
if (arrayOfString2.length == 2)
{
localObject1 = Main.getLobbyServer().getClientRegistry().getClientfromName(arrayOfString2[1]);
if (localObject1 != null)
{
((StickClient)localObject1).setMuteStatus(Boolean.valueOf(false));
paramStickClient.writeCallbackMessage("User " + arrayOfString2[1] + " successfully unmuted.");
}
else
{
paramStickClient.writeCallbackMessage("User " + arrayOfString2[1] + " was not found.");
}
}
else
{
paramStickClient.writeCallbackMessage("Usage: ::unmute [username]");
}
return;
}
if (arrayOfString2[0].equalsIgnoreCase("::deleteroom"))
{
if (arrayOfString2.length >= 2)
{
localObject1 = Main.getLobbyServer().getRoomRegistry().GetRoomFromName(paramString.substring(13).replaceAll("\000", ""));
if (localObject1 != null)
{
((StickRoom)localObject1).killRoom();
}
else
{
paramStickClient.writeCallbackMessage("Room " + paramString.replaceAll("\000", "").substring(13) + " was not found.");
}
}
return;
}
if (arrayOfString2[0].equalsIgnoreCase("::disconnect"))
{
if (arrayOfString2.length == 2)
{
if (!disconnectPlayer(arrayOfString2[1]).booleanValue())
{
paramStickClient.writeCallbackMessage("User " + arrayOfString2[1] + " was not found.");
}
}
else {
paramStickClient.writeCallbackMessage("Usage: ::disconnect [username]");
}
return;
}
Object localObject2;
if (arrayOfString2[0].equalsIgnoreCase("::ip"))
{
if (arrayOfString2.length == 2)
{
localObject1 = Main.getLobbyServer().getClientRegistry().getClientfromName(arrayOfString2[1]);
if (localObject1 == null)
{
paramStickClient.writeCallbackMessage("User is not online!");
return;
}
localObject2 = localObject1.getIoSession().getRemoteAddress().toString().substring(1).split(":")[0];
paramStickClient.writeCallbackMessage(arrayOfString2[1] + "'s IP is " + (String)localObject2);
}
else
{
paramStickClient.writeCallbackMessage("Usage: ::ip [username]");
}
}
else {
if (arrayOfString2[0].equalsIgnoreCase("::ipban"))
{
localObject1 = Main.getLobbyServer().getClientRegistry().getClientfromName(arrayOfString2[1]);
if (localObject1 == null)
{
paramStickClient.writeCallbackMessage("Error IP Banning: User " + arrayOfString2[1] + " does not exist or is not online.");
return;
}
localObject2 = localObject1.getIoSession().getRemoteAddress().toString().substring(1).split(":")[0];
System.out.println("IP address for user " + arrayOfString2[1] + "is: " + (String)localObject2 + ".");
synchronized (DatabaseTools.lock)
{
try
{
PreparedStatement localPreparedStatement = DatabaseTools.getDbConnection().prepareStatement("INSERT INTO `ipbans` (`ip`, `playername`, `mod_responsible`) VALUES (?, ?, ?)");
localPreparedStatement.setString(1, (String)localObject2);
localPreparedStatement.setString(2, arrayOfString2[1]);
localPreparedStatement.setString(3, paramStickClient.getName());
localPreparedStatement.executeUpdate();
((StickClient)localObject1).getIoSession().close(false);
}
catch (SQLException localSQLException) {
System.out.println("Exception whilst inserting IP ban: " + localSQLException.toString());
}
}
return;
}
if (arrayOfString2[0].equalsIgnoreCase("::announce"))
{
if (paramString.length() > 10)
Main.getLobbyServer().BroadcastAnnouncement(paramString.substring(11).replaceAll("\000", ""));
return;
}
if (arrayOfString2[0].equalsIgnoreCase("::announce2"))
{
if (paramString.length() > 10)
Main.getLobbyServer().BroadcastAnnouncement2(paramString.substring(11).replaceAll("\000", ""));
return;
}
if (arrayOfString2[0].equalsIgnoreCase("::getAllPlayers"))
{
localObject1 = new StringBuilder();
((StringBuilder)localObject1).append("User list:");
for (localObject2 = Main.getLobbyServer().getClientRegistry().getAllClients().iterator(); ((Iterator)localObject2).hasNext();) { ??? = (StickClient)((Iterator)localObject2).next();
if (((StickClient)???).getName() != null)
((StringBuilder)localObject1).append(" " + ((StickClient)???).getName() + ",");
}
paramStickClient.writeCallbackMessage(((StringBuilder)localObject1).toString());
return;
}
if (arrayOfString2[0].equalsIgnoreCase("::help"))
{
paramStickClient.writeCallbackMessage("All mod commands are: ::disconnect, ::ban, ::unban, ::ip, ::announce, ::announce2, !modspinner, ::deleteroom, ::killserver, ::blend, ::mute, ::unmute, ::setgametime, ::resetgametime, ::ipban, ::getallplayers, /warn");
}
else if ((arrayOfString2[0].equalsIgnoreCase("::resetgametime")) && (paramStickClient.getRoom() != null))
{
localObject1 = paramStickClient.getRoom();
((StickRoom)localObject1).setRoundTime(300);
localObject2 = StickPacketMaker.getSendRoundDetail(((StickRoom)localObject1).getMapID(), ((StickRoom)localObject1).getCycleMode(), ((StickRoom)localObject1).GetCR().getAllClients().size(), ((StickRoom)localObject1).getCurrentRoundTime());
((StickRoom)localObject1).BroadcastToRoom((StickPacket)localObject2);
paramStickClient.writeCallbackMessage("Round time successfully reset.");
}
else {
if ((arrayOfString2[0].equalsIgnoreCase("::setgametime")) && (paramStickClient.getRoom() != null))
{
int i = -1;
if (arrayOfString2.length < 2)
{
paramStickClient.writeCallbackMessage("Syntax - ::setgametime [time in seconds]");
return;
}
try
{
i = Integer.valueOf(arrayOfString2[1]).intValue();
}
catch (NumberFormatException localNumberFormatException) {
paramStickClient.writeCallbackMessage("Please ensure you entered a correct numerical value.");
return;
}
if (i > -1)
{
StickRoom localStickRoom = paramStickClient.getRoom();
localStickRoom.setRoundTime(i);
??? = StickPacketMaker.getSendRoundDetail(localStickRoom.getMapID(), localStickRoom.getCycleMode(), localStickRoom.GetCR().getAllClients().size(), localStickRoom.getCurrentRoundTime());
localStickRoom.BroadcastToRoom((StickPacket)???);
paramStickClient.writeCallbackMessage("Round time successfully set as " + i + " seconds remaining.");
return;
}
paramStickClient.writeCallbackMessage("There was an error in resetting the round time.");
return;
}
if (arrayOfString2[0].equalsIgnoreCase("::killserver"))
{
System.out.printf("Server terminated at %s by moderator %s", new Object[] { Calendar.getInstance().getTime().toString(), paramStickClient.getName() });
System.exit(0);
}
else if (arrayOfString2[0].equalsIgnoreCase("::blend"))
{
if (paramStickClient.getLobbyStatus().booleanValue())
{
paramStickClient.setBlendedStatus(Boolean.valueOf(true));
Main.getLobbyServer().BroadcastPacket(StickPacketMaker.getClientInfo(paramStickClient.getUID(), paramStickClient.getName(), paramStickClient.getSelectedSpinner().getColour().getColour1AsString(), paramStickClient.getKills(), paramStickClient
.getDeaths(), paramStickClient.getWins(), paramStickClient.getLosses(), paramStickClient.getRounds(), paramStickClient.getPass().booleanValue() ? 1 : 0, 0));
paramStickClient.writeCallbackMessage("You will be now shown as normal player (relog to undo this)");
}
}
else if (arrayOfString2[0].equalsIgnoreCase("::unblend"))
{
if (paramStickClient.getLobbyStatus().booleanValue())
{
paramStickClient.setBlendedStatus(Boolean.valueOf(false));
Main.getLobbyServer().BroadcastPacket(StickPacketMaker.getClientInfo(paramStickClient.getUID(), paramStickClient.getName(), paramStickClient.getSelectedSpinner().getColour().getColour1AsString(), paramStickClient.getKills(), paramStickClient
.getDeaths(), paramStickClient.getWins(), paramStickClient.getLosses(), paramStickClient.getRounds(), paramStickClient.getPass().booleanValue() ? 1 : 0, 1));
paramStickClient.writeCallbackMessage("Unblended!");
}
}
}
}
}
private static String[] parseArgs(String paramString)
{
return paramString.split(" ");
}
public static int banPlayer(String paramString, StickClient paramStickClient)
{
PreparedStatement localPreparedStatement = null;
int i = -1;
synchronized (DatabaseTools.lock)
{
try
{
localPreparedStatement = DatabaseTools.getDbConnection().prepareStatement("UPDATE `users` set `ban` = '1' where `username` = ?");
localPreparedStatement.setString(1, paramString);
i = localPreparedStatement.executeUpdate();
}
catch (SQLException localSQLException) {
System.out.println("Exception during ban command: " + localSQLException.toString());
}
if (i == -1)
{
paramStickClient.writeCallbackMessage("There was an error banning " + paramString + ".");
}
else if (i == 0)
{
paramStickClient.writeCallbackMessage("User " + paramString + " does not exist.");
}
else
{
paramStickClient.writeCallbackMessage("User " + paramString + " was banned successfully.");
}
}
return i;
}
public static int unbanPlayer(String paramString, StickClient paramStickClient)
{
PreparedStatement localPreparedStatement = null;
int i = -1;
synchronized (DatabaseTools.lock)
{
try
{
localPreparedStatement = DatabaseTools.getDbConnection().prepareStatement("UPDATE `users` set `ban` = '0' where `username` = ?");
localPreparedStatement.setString(1, paramString);
i = localPreparedStatement.executeUpdate();
}
catch (SQLException localSQLException) {
System.out.println("Exception during unban command: " + localSQLException.toString());
}
if (i == -1)
{
paramStickClient.writeCallbackMessage("There was an error unbanning " + paramString + ".");
}
else if (i == 0)
{
paramStickClient.writeCallbackMessage("User " + paramString + " does not exist.");
}
else
{
paramStickClient.writeCallbackMessage("User " + paramString + " was unbanned successfully.");
}
}
return i;
}
public static int createUser(String paramString1, String paramString2, StickClient paramStickClient) {
PreparedStatement localPreparedStatement = null;
int i = -1;
try
{
String str = "";
str = PasswordHasher.generateHashedPassword(paramString2);
localPreparedStatement = DatabaseTools.getDbConnection().prepareStatement("INSERT INTO `users` (USERname,USERpass) VALUES (?,?)");
localPreparedStatement.setString(1, paramString1);
localPreparedStatement.setString(2, str);
i = localPreparedStatement.executeUpdate();
}
catch (Exception localException) {
System.out.println("Exception during create command: " + localException.toString());
}
return i;
}
private static Boolean disconnectPlayer(String paramString)
{
StickClient localStickClient = null;
int i = 0;
do
{
localStickClient = Main.getLobbyServer().getClientRegistry().getClientfromName(paramString);
if (localStickClient != null)
{
localStickClient.getIoSession().close(false);
}
i++;
} while (localStickClient != null);
return Boolean.valueOf(i > 0);
}
}Editor is loading...