use of games.strategy.net.INode in project triplea by triplea-game.
the class LobbyGamePanel method stopGameHeadlessHostBot.
private void stopGameHeadlessHostBot() {
final int selectedIndex = gameTable.getSelectedRow();
if (selectedIndex == -1) {
return;
}
final int result = JOptionPane.showConfirmDialog(null, "Are you sure you want to perform a remote stop game on this host?", "Remote Stopgame Headless Host Bot", JOptionPane.OK_CANCEL_OPTION);
if (result != JOptionPane.OK_OPTION) {
return;
}
final INode lobbyWatcherNode = getLobbyWatcherNodeForTableRow(selectedIndex);
final IModeratorController controller = (IModeratorController) messengers.getRemoteMessenger().getRemote(AbstractModeratorController.getModeratorControllerName());
final JLabel label = new JLabel("Enter Host Remote Access Password, (Leave blank for no password).");
final JPasswordField passwordField = new JPasswordField();
final JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(label, BorderLayout.NORTH);
panel.add(passwordField, BorderLayout.CENTER);
final int selectedOption = JOptionPane.showOptionDialog(getTopLevelAncestor(), panel, "Host Remote Access Password?", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null);
if (selectedOption != JOptionPane.OK_OPTION || passwordField.getPassword() == null) {
return;
}
final String password = new String(passwordField.getPassword());
final String salt = controller.getHeadlessHostBotSalt(lobbyWatcherNode);
final String hashedPassword = hashPassword(password, salt);
final String response = controller.stopGameHeadlessHostBot(lobbyWatcherNode, hashedPassword, salt);
JOptionPane.showMessageDialog(null, (response == null ? "Successfully attempted stop of current game on host" : "Failed: " + response));
}
use of games.strategy.net.INode in project triplea by triplea-game.
the class LobbyGamePanel method getHostInfo.
private void getHostInfo() {
final int selectedIndex = gameTable.getSelectedRow();
if (selectedIndex == -1) {
return;
}
final INode lobbyWatcherNode = getLobbyWatcherNodeForTableRow(selectedIndex);
final IModeratorController controller = (IModeratorController) messengers.getRemoteMessenger().getRemote(AbstractModeratorController.getModeratorControllerName());
final String text = controller.getInformationOn(lobbyWatcherNode);
final String connections = controller.getHostConnections(lobbyWatcherNode);
final JTextPane textPane = new JTextPane();
textPane.setEditable(false);
textPane.setText(text + "\n\n" + connections);
JOptionPane.showMessageDialog(null, textPane, "Player Info", JOptionPane.INFORMATION_MESSAGE);
}
use of games.strategy.net.INode in project triplea by triplea-game.
the class ModeratorController method getChatLogHeadlessHostBot.
@Override
public String getChatLogHeadlessHostBot(final INode node, final String hashedPassword, final String salt) {
assertUserIsAdmin();
if (serverMessenger.getServerNode().equals(node)) {
throw new IllegalStateException("Cannot do this for server node");
}
final INode modNode = MessageContext.getSender();
final String mac = getNodeMacAddress(node);
final RemoteName remoteName = RemoteHostUtils.getRemoteHostUtilsName(node);
final IRemoteHostUtils remoteHostUtils = (IRemoteHostUtils) allMessengers.getRemoteMessenger().getRemote(remoteName);
final String response = remoteHostUtils.getChatLogHeadlessHostBot(hashedPassword, salt);
logger.info(String.format(((response == null || response.equals("Invalid password!")) ? "Failed" : "Successful") + " Remote get Chat Log of Headless HostBot. " + "Host: %s IP: %s Mac: %s Mod Username: %s Mod IP: %s Mod Mac: %s", node.getName(), node.getAddress().getHostAddress(), mac, modNode.getName(), modNode.getAddress().getHostAddress(), getNodeMacAddress(modNode)));
return response;
}
use of games.strategy.net.INode in project triplea by triplea-game.
the class ModeratorController method shutDownHeadlessHostBot.
@Override
public String shutDownHeadlessHostBot(final INode node, final String hashedPassword, final String salt) {
assertUserIsAdmin();
if (serverMessenger.getServerNode().equals(node)) {
throw new IllegalStateException("Cannot shutdown server node");
}
final INode modNode = MessageContext.getSender();
final String mac = getNodeMacAddress(node);
logger.info(String.format("Started Remote Shutdown of Headless HostBot. Host: %s IP: %s Mac: %s Mod Username: %s Mod IP: %s Mod Mac: %s", node.getName(), node.getAddress().getHostAddress(), mac, modNode.getName(), modNode.getAddress().getHostAddress(), getNodeMacAddress(modNode)));
final RemoteName remoteName = RemoteHostUtils.getRemoteHostUtilsName(node);
final IRemoteHostUtils remoteHostUtils = (IRemoteHostUtils) allMessengers.getRemoteMessenger().getRemote(remoteName);
final String response = remoteHostUtils.shutDownHeadlessHostBot(hashedPassword, salt);
logger.info(String.format((response == null ? "Successful" : "Failed (" + response + ")") + " Remote Shutdown of Headless HostBot. " + "Username: %s IP: %s Mac: %s Mod Username: %s Mod IP: %s Mod Mac: %s", node.getName(), node.getAddress().getHostAddress(), mac, modNode.getName(), modNode.getAddress().getHostAddress(), getNodeMacAddress(modNode)));
return response;
}
use of games.strategy.net.INode in project triplea by triplea-game.
the class ModeratorController method banPlayerHeadlessHostBot.
@Override
public String banPlayerHeadlessHostBot(final INode node, final String playerNameToBeBanned, final int hours, final String hashedPassword, final String salt) {
assertUserIsAdmin();
if (serverMessenger.getServerNode().equals(node)) {
throw new IllegalStateException("Cannot do this for server node");
}
final INode modNode = MessageContext.getSender();
final String mac = getNodeMacAddress(node);
final RemoteName remoteName = RemoteHostUtils.getRemoteHostUtilsName(node);
final IRemoteHostUtils remoteHostUtils = (IRemoteHostUtils) allMessengers.getRemoteMessenger().getRemote(remoteName);
final String response = remoteHostUtils.banPlayerHeadlessHostBot(playerNameToBeBanned, hours, hashedPassword, salt);
logger.info(String.format((response == null ? "Successful" : "Failed (" + response + ")") + " Remote Ban of " + playerNameToBeBanned + " for " + hours + "hours In Headless HostBot. Host: %s IP: %s Mac: %s Mod Username: %s Mod IP: %s Mod Mac: %s", node.getName(), node.getAddress().getHostAddress(), mac, modNode.getName(), modNode.getAddress().getHostAddress(), getNodeMacAddress(modNode)));
return response;
}
Aggregations