Patch: Add URL config option
Dmitrii Sutiagin
f3flight at gmail.com
Thu May 18 14:25:00 PDT 2017
Hi David,
Q: I'm a little confused by the motivation — why does adding that
'--url' before the <server> argument really make anything easier?
A: The value here is the ability to define <server> in a config file.
That's the sole purpose of the patch. I added a new argument "--url" for
this. Specifying both --url and <server> does not make sense, but still
allowed - did not want to put unnecessary restrictions and to keep
backward compatibility. Defining <server> in config allows to use syntax
like "openconnect --config=XXX" to run openconnect, which in turn is
useful for portability and for systemd units, allowing to set up
openconnect similarly to openvpn:
https://wiki.archlinux.org/index.php/OpenVPN#systemd_service_configuration
It makes sense to also ship a .service file similar to openvpn, but that
would be a separate commit (and I'd need to figure out where to put such
file in the repo...).
Here is the patch once again:
############################################
commit 52e665b7bf8e8f08d78a36e84ff67c0ef5183ee1
Author: Dmitrii Sutiagin <f3flight at gmail.com>
Date: Thu May 18 12:49:40 2017 -0700
Add URL config option
This new option allows putting <server> argument into a config file,
which in turn allows cleaner setups of systemd units / automation.
If --url is used then argument can be omitted.
If both --url and <server> are specified then <server> is used.
Signed-off-by: Dmitrii Sutiagin <f3flight at gmail.com>
diff --git a/main.c b/main.c
index 7869f72..eab4f41 100644
--- a/main.c
+++ b/main.c
@@ -188,6 +188,7 @@ enum {
OPT_LOCAL_HOSTNAME,
OPT_PROTOCOL,
OPT_PASSTOS,
+ OPT_URL,
};
#ifdef __sun__
@@ -269,6 +270,7 @@ static const struct option long_options[] = {
OPTION("dump-http-traffic", 0, OPT_DUMP_HTTP),
OPTION("no-system-trust", 0, OPT_NO_SYSTEM_TRUST),
OPTION("protocol", 1, OPT_PROTOCOL),
+ OPTION("url", 1, OPT_URL),
#ifdef OPENCONNECT_GNUTLS
OPTION("gnutls-debug", 1, OPT_GNUTLS_DEBUG),
#endif
@@ -867,6 +869,7 @@ static void usage(void)
printf(" --resolve=HOST:IP %s\n", _("Use IP when
connecting to HOST"));
printf(" --os=STRING %s\n", _("OS type
(linux,linux-64,win,...) to report"));
printf(" --dtls-local-port=PORT %s\n", _("Set local port
for DTLS datagrams"));
+ printf(" --url=URL %s\n", _("Set URL to connect
to. If set, <server> argument can be omitted"));
print_supported_protocols_usage();
printf("\n");
@@ -1068,6 +1071,7 @@ int main(int argc, char **argv)
oc_token_mode_t token_mode = OC_TOKEN_MODE_NONE;
int reconnect_timeout = 300;
int ret;
+ char *url = NULL;
#ifdef HAVE_NL_LANGINFO
char *charset;
#endif
@@ -1431,6 +1435,9 @@ int main(int argc, char **argv)
case OPT_TIMESTAMP:
timestamp = 1;
break;
+ case OPT_URL:
+ url = keep_config_arg();
+ break;
#ifdef OPENCONNECT_GNUTLS
case OPT_GNUTLS_DEBUG:
gnutls_global_set_log_level(atoi(config_arg));
@@ -1448,9 +1455,12 @@ int main(int argc, char **argv)
if (optind < argc - 1) {
fprintf(stderr, _("Too many arguments on command line\n"));
usage();
- } else if (optind > argc - 1) {
- fprintf(stderr, _("No server specified\n"));
- usage();
+ } else if (optind == argc - 1) {
+ url = strdup(argv[optind]);
+ }
+ if (!(url && strlen(url))) {
+ fprintf(stderr, _("No URL or server specified\n"));
+ usage();
}
if (!vpninfo->sslkey)
@@ -1501,16 +1511,12 @@ int main(int argc, char **argv)
if (vpninfo->sslkey && do_passphrase_from_fsid)
openconnect_passphrase_from_fsid(vpninfo);
- if (config_lookup_host(vpninfo, argv[optind]))
+ if (config_lookup_host(vpninfo, url))
exit(1);
if (!vpninfo->hostname) {
- char *url = strdup(argv[optind]);
-
if (openconnect_parse_url(vpninfo, url))
exit(1);
-
- free(url);
}
/* Historically, the path in the URL superseded the one in the
############################################
On 05/18/2017 01:34 PM, David Woodhouse wrote:
> On Thu, 2017-05-18 at 13:00 -0700, Dmitry Sutyagin wrote:
>> Hi everyone, I wanted to contribute with the following patch:
>>
>> ############################################
>> commit 52e665b7bf8e8f08d78a36e84ff67c0ef5183ee1
>> Author: Dmitrii Sutiagin <f3flight at gmail.com>
>> Date: Thu May 18 12:49:40 2017 -0700
>>
>> Add URL config option
>>
>> This new option allows putting argument into a config file,
>> which in turn allows cleaner setups of systemd units / automation.
>> If --url is used then argument can be omitted.
>> If both --url and are specified then is used.
>>
>> Signed-off-by: Dmitrii Sutiagin <f3flight at gmail.com>
>
> Hi Dmitry, thanks for the patch. Unfortunately it was whitespace-
> damaged so won't apply. Can you try sending it from a better mail
> client? You can send it to yourself first, then save it to a file and
> try to apply what you receive.
>
> I'm a little confused by the motivation — why does adding that '--url'
> before the <server> argument really make anything easier?
>
More information about the openconnect-devel
mailing list