package games.strategy.engine.lobby.server;
import java.util.Set;
import games.strategy.engine.framework.headlessGameServer.HeadlessGameServer;
import games.strategy.engine.message.MessageContext;
import games.strategy.engine.message.RemoteName;
import games.strategy.net.INode;
import games.strategy.net.IServerMessenger;
public class RemoteHostUtils implements IRemoteHostUtils {
private final INode m_serverNode;
private final IServerMessenger m_serverMessenger;
public static RemoteName getRemoteHostUtilsName(final INode node) {
return new RemoteName(IRemoteHostUtils.class,
"games.strategy.engine.lobby.server.RemoteHostUtils:" + node.toString());
}
public RemoteHostUtils(final INode serverNode, final IServerMessenger gameServerMessenger) {
m_serverNode = serverNode;
m_serverMessenger = gameServerMessenger;
}
@Override
public String getConnections() {
if (!MessageContext.getSender().equals(m_serverNode)) {
return "Not accepted!";
}
if (m_serverMessenger != null) {
final StringBuilder sb = new StringBuilder("Connected: " + m_serverMessenger.isConnected() + "\n" + "Nodes: \n");
final Set<INode> nodes = m_serverMessenger.getNodes();
if (nodes == null) {
sb.append(" null\n");
} else {
for (final INode node : nodes) {
sb.append(" ").append(node).append("\n");
}
}
return sb.toString();
}
return "Not a server.";
}
@Override
public String getChatLogHeadlessHostBot(final String hashedPassword, final String salt) {
if (!MessageContext.getSender().equals(m_serverNode)) {
return "Not accepted!";
}
final HeadlessGameServer instance = HeadlessGameServer.getInstance();
if (instance == null) {
return "Not a headless host bot!";
}
return instance.remoteGetChatLog(hashedPassword, salt);
}
@Override
public String mutePlayerHeadlessHostBot(final String playerNameToBeMuted, final int minutes,
final String hashedPassword, final String salt) {
if (!MessageContext.getSender().equals(m_serverNode)) {
return "Not accepted!";
}
final HeadlessGameServer instance = HeadlessGameServer.getInstance();
if (instance == null) {
return "Not a headless host bot!";
}
return instance.remoteMutePlayer(playerNameToBeMuted, minutes, hashedPassword, salt);
}
@Override
public String bootPlayerHeadlessHostBot(final String playerNameToBeBooted, final String hashedPassword,
final String salt) {
if (!MessageContext.getSender().equals(m_serverNode)) {
return "Not accepted!";
}
final HeadlessGameServer instance = HeadlessGameServer.getInstance();
if (instance == null) {
return "Not a headless host bot!";
}
return instance.remoteBootPlayer(playerNameToBeBooted, hashedPassword, salt);
}
@Override
public String banPlayerHeadlessHostBot(final String playerNameToBeBanned, final int hours,
final String hashedPassword, final String salt) {
if (!MessageContext.getSender().equals(m_serverNode)) {
return "Not accepted!";
}
final HeadlessGameServer instance = HeadlessGameServer.getInstance();
if (instance == null) {
return "Not a headless host bot!";
}
return instance.remoteBanPlayer(playerNameToBeBanned, hours, hashedPassword, salt);
}
@Override
public String stopGameHeadlessHostBot(final String hashedPassword, final String salt) {
if (!MessageContext.getSender().equals(m_serverNode)) {
return "Not accepted!";
}
final HeadlessGameServer instance = HeadlessGameServer.getInstance();
if (instance == null) {
return "Not a headless host bot!";
}
return instance.remoteStopGame(hashedPassword, salt);
}
@Override
public String shutDownHeadlessHostBot(final String hashedPassword, final String salt) {
if (!MessageContext.getSender().equals(m_serverNode)) {
return "Not accepted!";
}
final HeadlessGameServer instance = HeadlessGameServer.getInstance();
if (instance == null) {
return "Not a headless host bot!";
}
return instance.remoteShutdown(hashedPassword, salt);
}
@Override
public String getSalt() {
if (!MessageContext.getSender().equals(m_serverNode)) {
return "Not accepted!";
}
final HeadlessGameServer instance = HeadlessGameServer.getInstance();
if (instance == null) {
return "Not a headless host bot!";
}
return instance.getSalt();
}
}