admin: added auto-connection support in admin tools (#5388)

This commit is contained in:
Oleg Agafonov 2024-04-01 23:18:26 +04:00
parent 86ca3673ff
commit 27aa791ab9
2 changed files with 44 additions and 3 deletions

View file

@ -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());

View file

@ -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);
}