提交 039c276b 编写于 作者: J jurgen

SSH keep-alive support

Former-commit-id: ec9bd792
上级 0203c5c4
...@@ -1126,6 +1126,8 @@ public class CoreMessages extends NLS { ...@@ -1126,6 +1126,8 @@ public class CoreMessages extends NLS {
public static String model_ssh_configurator_label_user_name; public static String model_ssh_configurator_label_user_name;
public static String model_ssh_configurator_label_keep_alive;
public static String model_struct_Cascade; public static String model_struct_Cascade;
public static String model_struct_Check; public static String model_struct_Check;
public static String model_struct_Clustered; public static String model_struct_Clustered;
......
...@@ -742,6 +742,7 @@ model_ssh_configurator_label_password=Password ...@@ -742,6 +742,7 @@ model_ssh_configurator_label_password=Password
model_ssh_configurator_label_port=Port model_ssh_configurator_label_port=Port
model_ssh_configurator_label_private_key=Private Key model_ssh_configurator_label_private_key=Private Key
model_ssh_configurator_label_user_name=User Name model_ssh_configurator_label_user_name=User Name
model_ssh_configurator_label_keep_alive=Keep-Alive interval (sec)
model_struct_Cascade=Cascade model_struct_Cascade=Cascade
model_struct_Check=Check model_struct_Check=Check
model_struct_Clustered=Clustered model_struct_Clustered=Clustered
......
...@@ -784,6 +784,7 @@ model_ssh_configurator_label_host_ip=\u0425\u043E\u0441\u0442/IP ...@@ -784,6 +784,7 @@ model_ssh_configurator_label_host_ip=\u0425\u043E\u0441\u0442/IP
model_ssh_configurator_label_port=\u041F\u043E\u0440\u0442 model_ssh_configurator_label_port=\u041F\u043E\u0440\u0442
model_ssh_configurator_label_private_key=\u0421\u0435\u043A\u0440\u0435\u0442\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 model_ssh_configurator_label_private_key=\u0421\u0435\u043A\u0440\u0435\u0442\u043D\u044B\u0439 \u043A\u043B\u044E\u0447
model_ssh_configurator_label_user_name=\u0418\u043C\u044F \u043F\u043E\u043B\u044C\u0437-\u043B\u044F model_ssh_configurator_label_user_name=\u0418\u043C\u044F \u043F\u043E\u043B\u044C\u0437-\u043B\u044F
model_ssh_configurator_label_keep_alive=\u0418\u043D\u0442\u0435\u0440\u0432\u0430\u043B keep-alive (\u0441\u0435\u043A)
dialog_view_classpath_title=\u0421\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u0439 CLASSPATH dialog_view_classpath_title=\u0421\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u0439 CLASSPATH
editor_binary_hex_status_line_offset=\u0421\u043C\u0435\u0449\u0435\u043D\u0438\u0435\: editor_binary_hex_status_line_offset=\u0421\u043C\u0435\u0449\u0435\u043D\u0438\u0435\:
editor_binary_hex_status_line_selection=\u0412\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435\: editor_binary_hex_status_line_selection=\u0412\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435\:
......
...@@ -29,6 +29,8 @@ public class SSHConstants { ...@@ -29,6 +29,8 @@ public class SSHConstants {
public static final String PROP_PORT = "port"; public static final String PROP_PORT = "port";
public static final String PROP_AUTH_TYPE = "authType"; public static final String PROP_AUTH_TYPE = "authType";
public static final String PROP_KEY_PATH = "keyPath"; public static final String PROP_KEY_PATH = "keyPath";
public static final String PROP_ALIVE_INTERVAL = "aliveInterval";
public static final String PROP_ALIVE_COUNT = "aliveCount";
public static enum AuthType { public static enum AuthType {
PASSWORD, PASSWORD,
......
...@@ -48,6 +48,7 @@ public class SSHTunnelConfiguratorUI implements IObjectPropertyConfigurator<DBWH ...@@ -48,6 +48,7 @@ public class SSHTunnelConfiguratorUI implements IObjectPropertyConfigurator<DBWH
private Button savePasswordCheckbox; private Button savePasswordCheckbox;
private Label privateKeyLabel; private Label privateKeyLabel;
private Composite pkControlGroup; private Composite pkControlGroup;
private Spinner keepAliveText;
@Override @Override
public void createControl(Composite parent) public void createControl(Composite parent)
...@@ -109,6 +110,8 @@ public class SSHTunnelConfiguratorUI implements IObjectPropertyConfigurator<DBWH ...@@ -109,6 +110,8 @@ public class SSHTunnelConfiguratorUI implements IObjectPropertyConfigurator<DBWH
UIUtils.createPlaceholder(composite,1); UIUtils.createPlaceholder(composite,1);
savePasswordCheckbox = UIUtils.createCheckbox(composite, CoreMessages.model_ssh_configurator_checkbox_save_pass, false); savePasswordCheckbox = UIUtils.createCheckbox(composite, CoreMessages.model_ssh_configurator_checkbox_save_pass, false);
keepAliveText = UIUtils.createLabelSpinner(composite, CoreMessages.model_ssh_configurator_label_keep_alive, 0, 0, Integer.MAX_VALUE);
} }
@Override @Override
...@@ -130,6 +133,11 @@ public class SSHTunnelConfiguratorUI implements IObjectPropertyConfigurator<DBWH ...@@ -130,6 +133,11 @@ public class SSHTunnelConfiguratorUI implements IObjectPropertyConfigurator<DBWH
passwordText.setText(CommonUtils.getString(configuration.getPassword())); passwordText.setText(CommonUtils.getString(configuration.getPassword()));
savePasswordCheckbox.setSelection(configuration.isSavePassword()); savePasswordCheckbox.setSelection(configuration.isSavePassword());
String kaString = configuration.getProperties().get(SSHConstants.PROP_ALIVE_INTERVAL);
if (!CommonUtils.isEmpty(kaString)) {
keepAliveText.setSelection(Integer.parseInt(kaString));
}
updatePrivateKeyVisibility(); updatePrivateKeyVisibility();
} }
...@@ -148,6 +156,12 @@ public class SSHTunnelConfiguratorUI implements IObjectPropertyConfigurator<DBWH ...@@ -148,6 +156,12 @@ public class SSHTunnelConfiguratorUI implements IObjectPropertyConfigurator<DBWH
configuration.setUserName(userNameText.getText()); configuration.setUserName(userNameText.getText());
configuration.setPassword(passwordText.getText()); configuration.setPassword(passwordText.getText());
configuration.setSavePassword(savePasswordCheckbox.getSelection()); configuration.setSavePassword(savePasswordCheckbox.getSelection());
int kaInterval = keepAliveText.getSelection();
if (kaInterval <= 0) {
properties.remove(SSHConstants.PROP_ALIVE_INTERVAL);
} else {
properties.put(SSHConstants.PROP_ALIVE_INTERVAL, String.valueOf(kaInterval));
}
} }
private void updatePrivateKeyVisibility() private void updatePrivateKeyVisibility()
......
...@@ -66,6 +66,8 @@ public class SSHTunnelImpl implements DBWTunnel { ...@@ -66,6 +66,8 @@ public class SSHTunnelImpl implements DBWTunnel {
String sshHost = properties.get(SSHConstants.PROP_HOST); String sshHost = properties.get(SSHConstants.PROP_HOST);
String sshPort = properties.get(SSHConstants.PROP_PORT); String sshPort = properties.get(SSHConstants.PROP_PORT);
String sshUser = configuration.getUserName(); String sshUser = configuration.getUserName();
String aliveInterval = properties.get(SSHConstants.PROP_ALIVE_INTERVAL);
//String aliveCount = properties.get(SSHConstants.PROP_ALIVE_COUNT);
if (CommonUtils.isEmpty(sshHost)) { if (CommonUtils.isEmpty(sshHost)) {
throw new DBException("SSH host not specified"); throw new DBException("SSH host not specified");
} }
...@@ -121,6 +123,9 @@ public class SSHTunnelImpl implements DBWTunnel { ...@@ -121,6 +123,9 @@ public class SSHTunnelImpl implements DBWTunnel {
session.connect(); session.connect();
try { try {
session.setPortForwardingL(localPort, dbHost, dbPort); session.setPortForwardingL(localPort, dbHost, dbPort);
if (!CommonUtils.isEmpty(aliveInterval)) {
session.setServerAliveInterval(Integer.parseInt(aliveInterval));
}
} catch (JSchException e) { } catch (JSchException e) {
closeTunnel(monitor, connectionInfo); closeTunnel(monitor, connectionInfo);
throw e; throw e;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册