[OpenVPN][PATCH] --remote: split port and protocol into separate arguments (bug 712720)
- From: TJ <gnome iam tj>
- To: networkmanager-list gnome org
- Subject: [OpenVPN][PATCH] --remote: split port and protocol into separate arguments (bug 712720)
- Date: Wed, 20 Nov 2013 00:33:16 +0000
Please pull from:
git://iam.tj/network-manager-openvpn.git gnome712720
This patch is based on my branch "gnome712710" fixing the --remote separator issue.
When the remote gateway is specified as IP PORT [PROTO] the entire string would be passed as a single
argument on the openvpn command-line, which would cause openvpn to use any default port and
protocol settings it had rather than those specified.
This is hard to spot since checking the command-line using "ps" doesn't differentiate between spaces and
argument separators.
This patch parses the "remote ..." string, separating tokens with a space, and adds optional port and
protocol values to the comamnd-line correctly.
With this and the 712710 patch multiple comma-separated remote connections using different ports and
protocols can be specified in the Gateway text widget, e.g. "a.b.c.d 443 tcp,e.f.g.h 1194 udp"
Signed-off-by: TJ <gnome iam tj>
---
src/nm-openvpn-service.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/src/nm-openvpn-service.c b/src/nm-openvpn-service.c
index 3975643..257e5fd 100644
--- a/src/nm-openvpn-service.c
+++ b/src/nm-openvpn-service.c
@@ -905,11 +905,28 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
tmp = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_REMOTE);
if (tmp && strlen (tmp)) {
- char *tok;
+ char *tok, *tok2, *p;
while ((tok = strsep((char**)&tmp, ",")) != NULL) {
if (strlen(tok)) {
add_openvpn_arg (args, "--remote");
add_openvpn_arg (args, tok);
+ tmp2 = strdup(tok);
+ while ((tok2 = strsep((char **)&tmp2, " ")) != NULL) {
+ gboolean port = FALSE;
+ if (strlen(tok2)) {
+ for (p=tok2, port=TRUE; *p; p++) {
+ if (!isdigit(*p)) {
+ port = FALSE;
+ break;
+ }
+ }
+ if (port)
+ add_openvpn_arg (args, tok2);
+ else if ((strncmp("udp", tok2, 3) == 0 || strncmp("tcp",
tok2, 3) == 0))
+ add_openvpn_arg (args, tok2);
+ }
+ }
+ free((void *)tmp2);
}
}
}
--
1.8.1.2.433.g9808ce0.dirty
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]