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

SSH keep-alive support

Former-commit-id: ec9bd792
上级 0203c5c4
......@@ -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_keep_alive;
public static String model_struct_Cascade;
public static String model_struct_Check;
public static String model_struct_Clustered;
......
......@@ -742,6 +742,7 @@ model_ssh_configurator_label_password=Password
model_ssh_configurator_label_port=Port
model_ssh_configurator_label_private_key=Private Key
model_ssh_configurator_label_user_name=User Name
model_ssh_configurator_label_keep_alive=Keep-Alive interval (sec)
model_struct_Cascade=Cascade
model_struct_Check=Check
model_struct_Clustered=Clustered
......
......@@ -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_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_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
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\:
......
......@@ -29,6 +29,8 @@ public class SSHConstants {
public static final String PROP_PORT = "port";
public static final String PROP_AUTH_TYPE = "authType";
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 {
PASSWORD,
......
......@@ -48,6 +48,7 @@ public class SSHTunnelConfiguratorUI implements IObjectPropertyConfigurator<DBWH
private Button savePasswordCheckbox;
private Label privateKeyLabel;
private Composite pkControlGroup;
private Spinner keepAliveText;
@Override
public void createControl(Composite parent)
......@@ -109,6 +110,8 @@ public class SSHTunnelConfiguratorUI implements IObjectPropertyConfigurator<DBWH
UIUtils.createPlaceholder(composite,1);
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
......@@ -130,6 +133,11 @@ public class SSHTunnelConfiguratorUI implements IObjectPropertyConfigurator<DBWH
passwordText.setText(CommonUtils.getString(configuration.getPassword()));
savePasswordCheckbox.setSelection(configuration.isSavePassword());
String kaString = configuration.getProperties().get(SSHConstants.PROP_ALIVE_INTERVAL);
if (!CommonUtils.isEmpty(kaString)) {
keepAliveText.setSelection(Integer.parseInt(kaString));
}
updatePrivateKeyVisibility();
}
......@@ -148,6 +156,12 @@ public class SSHTunnelConfiguratorUI implements IObjectPropertyConfigurator<DBWH
configuration.setUserName(userNameText.getText());
configuration.setPassword(passwordText.getText());
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()
......
......@@ -66,6 +66,8 @@ public class SSHTunnelImpl implements DBWTunnel {
String sshHost = properties.get(SSHConstants.PROP_HOST);
String sshPort = properties.get(SSHConstants.PROP_PORT);
String sshUser = configuration.getUserName();
String aliveInterval = properties.get(SSHConstants.PROP_ALIVE_INTERVAL);
//String aliveCount = properties.get(SSHConstants.PROP_ALIVE_COUNT);
if (CommonUtils.isEmpty(sshHost)) {
throw new DBException("SSH host not specified");
}
......@@ -121,6 +123,9 @@ public class SSHTunnelImpl implements DBWTunnel {
session.connect();
try {
session.setPortForwardingL(localPort, dbHost, dbPort);
if (!CommonUtils.isEmpty(aliveInterval)) {
session.setServerAliveInterval(Integer.parseInt(aliveInterval));
}
} catch (JSchException e) {
closeTunnel(monitor, connectionInfo);
throw e;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册