diff --git a/Mage.Server.Console/src/main/java/mage/server/console/ConnectDialog.java b/Mage.Server.Console/src/main/java/mage/server/console/ConnectDialog.java index caf262e0ff7..b0046e18c54 100644 --- a/Mage.Server.Console/src/main/java/mage/server/console/ConnectDialog.java +++ b/Mage.Server.Console/src/main/java/mage/server/console/ConnectDialog.java @@ -32,6 +32,7 @@ public class ConnectDialog extends JDialog { public ConnectDialog() { initComponents(); cbProxyType.setModel(new DefaultComboBoxModel(Connection.ProxyType.values())); + setVisible(false); } public void showDialog(ConsoleFrame console) { @@ -39,8 +40,8 @@ public class ConnectDialog extends JDialog { this.txtServer.setText(ConsoleFrame.getPreferences().get("serverAddress", "localhost")); this.txtPort.setText(ConsoleFrame.getPreferences().get("serverPort", Integer.toString(17171))); this.chkAutoConnect.setSelected(Boolean.parseBoolean(ConsoleFrame.getPreferences().get("autoConnect", "false"))); - this.txtProxyServer.setText(ConsoleFrame.getPreferences().get("proxyAddress", "localhost")); - this.txtProxyPort.setText(ConsoleFrame.getPreferences().get("proxyPort", Integer.toString(17171))); + this.txtProxyServer.setText(ConsoleFrame.getPreferences().get("proxyAddress", "")); + this.txtProxyPort.setText(ConsoleFrame.getPreferences().get("proxyPort", Integer.toString(0))); this.cbProxyType.setSelectedItem(Connection.ProxyType.valueOf(ConsoleFrame.getPreferences().get("proxyType", "NONE").toUpperCase(Locale.ENGLISH))); this.txtProxyUserName.setText(ConsoleFrame.getPreferences().get("proxyUsername", "")); this.txtPasswordField.setText(ConsoleFrame.getPreferences().get("proxyPassword", "")); @@ -71,7 +72,16 @@ public class ConnectDialog extends JDialog { private void saveSettings() { ConsoleFrame.getPreferences().put("serverAddress", txtServer.getText()); ConsoleFrame.getPreferences().put("serverPort", txtPort.getText()); - ConsoleFrame.getPreferences().put("autoConnect", Boolean.toString(chkAutoConnect.isSelected())); + if (chkAutoConnect.isSelected()) { + ConsoleFrame.getPreferences().putBoolean("autoConnect", true); + char[] input = txtPassword.getPassword(); + ConsoleFrame.getPreferences().put("password", new String(input)); + Arrays.fill(input, '0'); + } else { + ConsoleFrame.getPreferences().putBoolean("autoConnect", false); + ConsoleFrame.getPreferences().put("password", ""); + } + ConsoleFrame.getPreferences().put("proxyAddress", txtProxyServer.getText()); ConsoleFrame.getPreferences().put("proxyPort", txtProxyPort.getText()); ConsoleFrame.getPreferences().put("proxyType", cbProxyType.getSelectedItem().toString()); diff --git a/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java b/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java index 6be2097ec43..76131c32734 100644 --- a/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java +++ b/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java @@ -11,6 +11,7 @@ import org.apache.log4j.Logger; import javax.swing.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import java.util.Locale; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -63,6 +64,13 @@ public class ConsoleFrame extends javax.swing.JFrame implements MageClient { UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); session = new SessionImpl(this); connectDialog = new ConnectDialog(); + + // try auto connect + if (!autoConnect()) { + SwingUtilities.invokeLater(() -> { + connectDialog.showDialog(this); + }); + } } catch (Exception ex) { logger.fatal("", ex); } @@ -78,6 +86,29 @@ public class ConsoleFrame extends javax.swing.JFrame implements MageClient { return false; } + public boolean autoConnect() { + boolean needAutoConnect = Boolean.parseBoolean(ConsoleFrame.getPreferences().get("autoConnect", "false")); + boolean status = false; + if (needAutoConnect) { + String server = ConsoleFrame.getPreferences().get("serverAddress", "localhost"); + logger.info("Auto-connecting to " + server); + Connection newConnection = new Connection(); + newConnection.setHost(server); + newConnection.setPort(ConsoleFrame.getPreferences().getInt("serverPort", 17171)); + newConnection.setUsername(SessionImpl.ADMIN_NAME); + newConnection.setAdminPassword(ConsoleFrame.getPreferences().get("password", "")); + newConnection.setProxyType(Connection.ProxyType.valueOf(ConsoleFrame.getPreferences().get("proxyType", "NONE").toUpperCase(Locale.ENGLISH))); + if (!newConnection.getProxyType().equals(Connection.ProxyType.NONE)) { + newConnection.setProxyHost(ConsoleFrame.getPreferences().get("proxyAddress", "")); + newConnection.setProxyPort(ConsoleFrame.getPreferences().getInt("proxyPort", 0)); + newConnection.setProxyUsername(ConsoleFrame.getPreferences().get("proxyUsername", "")); + newConnection.setProxyPassword(ConsoleFrame.getPreferences().get("proxyPassword", "")); + } + status = connect(newConnection); + } + return status; + } + public void setStatusText(String status) { this.lblStatus.setText(status); }