Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 0 additions & 39 deletions properties/advanced-dialog.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@
static const char *advanced_keys[] = {
NM_SSH_KEY_PORT,
NM_SSH_KEY_TUNNEL_MTU,
NM_SSH_KEY_EXTRA_OPTS,
NM_SSH_KEY_REMOTE_DEV,
NM_SSH_KEY_TAP_DEV,
NM_SSH_KEY_REMOTE_USERNAME,
Expand Down Expand Up @@ -107,16 +106,6 @@ tunmtu_toggled_cb (GtkWidget *check, gpointer user_data)
gtk_widget_set_sensitive (widget, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check)));
}

static void
extra_opts_toggled_cb (GtkWidget *check, gpointer user_data)
{
GtkBuilder *builder = (GtkBuilder *) user_data;
GtkWidget *widget;

widget = GTK_WIDGET (gtk_builder_get_object (builder, "extra_opts_entry"));
gtk_widget_set_sensitive (widget, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check)));
}

static void
remote_dev_toggled_cb (GtkWidget *check, gpointer user_data)
{
Expand Down Expand Up @@ -233,25 +222,6 @@ advanced_dialog_new (GHashTable *hash)
gtk_widget_set_sensitive (widget, FALSE);
}

widget = GTK_WIDGET (gtk_builder_get_object (builder, "extra_opts_checkbutton"));
g_assert (widget);
g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (extra_opts_toggled_cb), builder);

value = g_hash_table_lookup (hash, NM_SSH_KEY_EXTRA_OPTS);
if (value && strlen (value)) {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);

widget = GTK_WIDGET (gtk_builder_get_object (builder, "extra_opts_entry"));
gtk_entry_set_text (GTK_ENTRY (widget), value);
gtk_widget_set_sensitive (widget, TRUE);
} else {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);

widget = GTK_WIDGET (gtk_builder_get_object (builder, "extra_opts_entry"));
gtk_entry_set_text (GTK_ENTRY (widget), NM_SSH_DEFAULT_EXTRA_OPTS);
gtk_widget_set_sensitive (widget, FALSE);
}

widget = GTK_WIDGET (gtk_builder_get_object (builder, "remote_dev_checkbutton"));
g_assert (widget);
g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (remote_dev_toggled_cb), builder);
Expand Down Expand Up @@ -339,15 +309,6 @@ advanced_dialog_new_hash_from_dialog (GtkWidget *dialog, GError **error)
g_hash_table_insert (hash, g_strdup (NM_SSH_KEY_PORT), g_strdup_printf ("%d", port));
}

widget = GTK_WIDGET (gtk_builder_get_object (builder, "extra_opts_checkbutton"));
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) {
const gchar *extra_options;

widget = GTK_WIDGET (gtk_builder_get_object (builder, "extra_opts_entry"));
extra_options = gtk_entry_get_text (GTK_ENTRY (widget));
g_hash_table_insert (hash, g_strdup (NM_SSH_KEY_EXTRA_OPTS), g_strdup(extra_options));
}

widget = GTK_WIDGET (gtk_builder_get_object (builder, "remote_dev_checkbutton"));
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) {
int remote_dev;
Expand Down
44 changes: 0 additions & 44 deletions properties/nm-ssh-dialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -246,50 +246,6 @@
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="extra_opts_hbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkCheckButton" id="extra_opts_checkbutton">
<property name="label" translatable="yes">Extra SSH options:</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="extra_opts_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">●</property>
<property name="text">-o ServerAliveInterval=10 -o TCPKeepAlive=yes</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
<property name="primary_icon_sensitive">True</property>
<property name="secondary_icon_sensitive">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="remote_dev_hbox">
<property name="visible">True</property>
Expand Down
35 changes: 1 addition & 34 deletions properties/nm-ssh.c
Original file line number Diff line number Diff line change
Expand Up @@ -1045,31 +1045,6 @@ import (NMVpnEditorPlugin *iface, const char *path, GError **error)
PARSE_IMPORT_KEY_WITH_DEFAULT_VALUE_INT (MTU_KEY, NM_SSH_KEY_TUNNEL_MTU, items, s_vpn, NM_SSH_DEFAULT_MTU)
PARSE_IMPORT_KEY_WITH_DEFAULT_VALUE_INT (REMOTE_DEV_KEY, NM_SSH_KEY_REMOTE_DEV, items, s_vpn, NM_SSH_DEFAULT_REMOTE_DEV)
PARSE_IMPORT_KEY_BOOL (DEV_TYPE_KEY, NM_SSH_KEY_TAP_DEV, items, s_vpn, "tap")

/* Some extra care required with extra_opts as we need to:
* 1. Use the whole line (might contain = chars in it)
* 2. Strip the single/double quotes */
if (!strncmp (items[0], EXTRA_OPTS_KEY, strlen (items[0]))) {
gchar *parsed_extra_opts = NULL;
gchar *unquoted_extra_opts = NULL;
/* Read the whole line, witout the EXTRA_OPTS= part */
parsed_extra_opts = g_strdup(*line + strlen(EXTRA_OPTS_KEY) + 1);

/* Check if string is quoted */
if ( (parsed_extra_opts[0] == '"' && parsed_extra_opts[strlen(parsed_extra_opts)-1] == '"') ||
/* String is quoted (would usually be), lets strip the quotes */
(parsed_extra_opts[0] == '\'' && parsed_extra_opts[strlen(parsed_extra_opts)-1] == '\'') ) {
/* Unquote string */
parsed_extra_opts[strlen(parsed_extra_opts)-1] = '\0';
unquoted_extra_opts = parsed_extra_opts + 1;
}
/* After all this effort, try to compare to the default value */
if (strncmp(unquoted_extra_opts, NM_SSH_DEFAULT_EXTRA_OPTS, strlen(unquoted_extra_opts)))
nm_setting_vpn_add_data_item (s_vpn, NM_SSH_KEY_EXTRA_OPTS, unquoted_extra_opts);
g_free (items);
g_free (parsed_extra_opts);
continue;
}
}

if (connection)
Expand Down Expand Up @@ -1104,7 +1079,6 @@ export (NMVpnEditorPlugin *iface,
const char *local_ip_6 = NULL;
const char *remote_ip_6 = NULL;
const char *netmask_6 = NULL;
const char *extra_opts = NULL;
const char *remote_dev = NULL;
const char *mtu = NULL;
const char *remote_username = NULL;
Expand Down Expand Up @@ -1189,12 +1163,6 @@ export (NMVpnEditorPlugin *iface,
else
mtu = g_strdup_printf("%d", NM_SSH_DEFAULT_MTU);

value = nm_setting_vpn_get_data_item (s_vpn, NM_SSH_KEY_EXTRA_OPTS);
if (value && strlen (value))
extra_opts = value;
else
extra_opts = g_strdup(NM_SSH_DEFAULT_EXTRA_OPTS);

value = nm_setting_vpn_get_data_item (s_vpn, NM_SSH_KEY_REMOTE_DEV);
if (value && strlen (value))
remote_dev = value;
Expand Down Expand Up @@ -1274,7 +1242,6 @@ export (NMVpnEditorPlugin *iface,
}
fprintf (f, "%s=%s\n", PORT_KEY, port);
fprintf (f, "%s=%s\n", MTU_KEY, mtu);
fprintf (f, "%s='%s'\n", EXTRA_OPTS_KEY, extra_opts);
fprintf (f, "%s=%s\n", REMOTE_DEV_KEY, remote_dev);

/* Assign tun/tap */
Expand All @@ -1286,7 +1253,7 @@ export (NMVpnEditorPlugin *iface,

/* The generic lines that will perform the connection */
fprintf (f, "\n");
fprintf(f, "ssh -f %s -o PreferredAuthentications=%s -o NumberOfPasswordPrompts=%d -o Tunnel=$TUNNEL_TYPE $EXTRA_OPTS -o TunnelDevice=$LOCAL_DEV:$REMOTE_DEV -o User=$REMOTE_USERNAME -o Port=$PORT -o HostName=$REMOTE $REMOTE \"%s $DEV_TYPE$REMOTE_DEV $REMOTE_IP netmask $NETMASK pointopoint $LOCAL_IP; %s\" && \\\n",
fprintf(f, "ssh -f %s -o PreferredAuthentications=%s -o NumberOfPasswordPrompts=%d -o Tunnel=$TUNNEL_TYPE -o ServerAliveInterval=10 -o TCPKeepAlive=yes -o TunnelDevice=$LOCAL_DEV:$REMOTE_DEV -o User=$REMOTE_USERNAME -o Port=$PORT -o HostName=$REMOTE $REMOTE \"%s $DEV_TYPE$REMOTE_DEV $REMOTE_IP netmask $NETMASK pointopoint $LOCAL_IP; %s\" && \\\n",
(key_file ? g_strconcat("-i ", key_file, NULL) : ""),
preferred_authentication,
password_prompt_nr,
Expand Down
1 change: 0 additions & 1 deletion properties/nm-ssh.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ void init_auth_widget (GtkBuilder *builder,
#define NETMASK_6_KEY "NETMASK_6"
#define PORT_KEY "PORT"
#define MTU_KEY "MTU"
#define EXTRA_OPTS_KEY "EXTRA_OPTS"
#define REMOTE_DEV_KEY "REMOTE_DEV"
#define DEV_TYPE_KEY "DEV_TYPE"
#define NO_DEFAULT_ROUTE_KEY "NO_DEFAULT_ROUTE"
Expand Down
2 changes: 0 additions & 2 deletions src/nm-ssh-service-defines.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
#define NM_SSH_KEY_NETMASK "netmask"
#define NM_SSH_KEY_PORT "port"
#define NM_SSH_KEY_TUNNEL_MTU "tunnel-mtu"
#define NM_SSH_KEY_EXTRA_OPTS "extra-opts"
#define NM_SSH_KEY_REMOTE_DEV "remote-dev"
#define NM_SSH_KEY_SSH_AUTH_SOCK "ssh-auth-sock"
#define NM_SSH_KEY_TAP_DEV "tap-dev"
Expand All @@ -52,7 +51,6 @@
#define NM_SSH_DEFAULT_PORT 22
#define NM_SSH_DEFAULT_MTU 1500
#define NM_SSH_DEFAULT_REMOTE_DEV 100
#define NM_SSH_DEFAULT_EXTRA_OPTS "-o ServerAliveInterval=10 -o TCPKeepAlive=yes"
#define NM_SSH_DEFAULT_REMOTE_USERNAME "root"

#define NM_SSH_AUTH_TYPE_SSH_AGENT "ssh-agent"
Expand Down
32 changes: 4 additions & 28 deletions src/nm-ssh-service.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,6 @@ static ValidProperty valid_properties[] = {
{ NM_SSH_KEY_NETMASK, G_TYPE_STRING, 0, 0, TRUE },
{ NM_SSH_KEY_PORT, G_TYPE_INT, 1, 65535, FALSE },
{ NM_SSH_KEY_TUNNEL_MTU, G_TYPE_INT, 1, 9000, FALSE },
{ NM_SSH_KEY_EXTRA_OPTS, G_TYPE_STRING, 0, 0, FALSE },
{ NM_SSH_KEY_REMOTE_DEV, G_TYPE_INT, 0, 255, FALSE },
{ NM_SSH_KEY_TAP_DEV, G_TYPE_BOOLEAN, 0, 0, FALSE },
{ NM_SSH_KEY_REMOTE_USERNAME, G_TYPE_STRING, 0, 0, FALSE },
Expand Down Expand Up @@ -717,25 +716,6 @@ add_ssh_arg (GPtrArray *args, const char *arg)
g_ptr_array_add (args, (gpointer) g_strdup (arg));
}

static void
add_ssh_extra_opts (GPtrArray *args, const char *extra_opts)
{
gchar **extra_opts_split;
gchar **iter;

/* Needs to separate arguements nicely */
extra_opts_split = g_strsplit (extra_opts, " ", 256);
iter = extra_opts_split;

/* Ensure it's a valid DNS name or IP address */
while (*iter) {
g_message("%s", *iter);
add_ssh_arg (args, *iter);
iter++;
}
g_strfreev (extra_opts_split);
}

static gboolean
get_ssh_arg_int (const char *arg, long int *retval)
{
Expand Down Expand Up @@ -964,14 +944,10 @@ nm_ssh_start_ssh_binary (NMSshPlugin *plugin,
g_free(known_hosts_file);
}

/* Extra SSH options */
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_SSH_KEY_EXTRA_OPTS);
if (tmp && strlen (tmp)) {
add_ssh_extra_opts (args, tmp);
} else {
/* Add default extra options */
add_ssh_extra_opts (args, NM_SSH_DEFAULT_EXTRA_OPTS);
}
add_ssh_arg (args, "-o");
add_ssh_arg (args, "ServerAliveInterval=10");
add_ssh_arg (args, "-o");
add_ssh_arg (args, "TCPKeepAlive=yes");

/* Device, either tun or tap */
add_ssh_arg (args, "-o");
Expand Down