[PATCH v2] Allow specifying server in configuration file
Daniel Lenski
dlenski at gmail.com
Thu Apr 12 19:35:22 PDT 2018
On Tue, Apr 3, 2018 at 5:03 PM, Max Rees <maxcrees at me.com> wrote:
> On Apr 04 12:10 AM, David Woodhouse wrote:
>> I'd probably be inclined to suggest we should accept whatever comes
>> last. We don't reject multiple '--server xxx' options, do we? It allows
>> the value in the config file to be overridden on the command line.
>
> Here is an updated version of the patch that always takes the last
> argument without a corresponding --option (if there is such an argument
> present) as the server URL regardless of any previous options.
>
> Max
>
> From fa9c058ed259e2d76fe35c993b155e6bd6c49f50 Mon Sep 17 00:00:00 2001
> From: Max Rees <maxcrees at me.com>
> Date: Mon, 2 Apr 2018 01:28:16 -0400
> Subject: [PATCH] Allow specifying server in configuration file
>
> This allows the configuration file to have an entry of the form:
> server https://server[:port][/group]
> similar to the CLI invocation.
>
> Signed-off-by: Max Rees <maxcrees at me.com>
> ---
> main.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/main.c b/main.c
> index d09efd5..7d41811 100644
> --- a/main.c
> +++ b/main.c
> @@ -187,6 +187,7 @@ enum {
> OPT_HTTP_AUTH,
> OPT_LOCAL_HOSTNAME,
> OPT_PROTOCOL,
> + OPT_SERVER,
> OPT_PASSTOS,
> };
>
> @@ -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("server", 1, OPT_SERVER),
> #ifdef OPENCONNECT_GNUTLS
> OPTION("gnutls-debug", 1, OPT_GNUTLS_DEBUG),
> #endif
> @@ -1164,6 +1166,10 @@ int main(int argc, char **argv)
> if (openconnect_set_protocol(vpninfo, config_arg))
> exit(1);
> break;
> + case OPT_SERVER:
> + if (openconnect_parse_url(vpninfo, config_arg))
> + exit(1);
> + break;
> case OPT_JUNIPER:
> fprintf(stderr, "WARNING: Juniper Network Connect support is experimental.\n");
> fprintf(stderr, "It will probably be superseded by Junos Pulse support.\n");
> @@ -1457,7 +1463,7 @@ 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) {
> + } else if (optind > argc - 1 && !vpninfo->hostname) {
> fprintf(stderr, _("No server specified\n"));
> usage();
> }
> @@ -1513,7 +1519,10 @@ int main(int argc, char **argv)
> if (config_lookup_host(vpninfo, argv[optind]))
> exit(1);
>
> - if (!vpninfo->hostname) {
> + /* The last argument without a corresponding --option is taken
> + * to be the server URL and overrides any --server option on the
> + * command line or from a --config */
> + if (!vpninfo->hostname || optind < argc) {
> char *url = strdup(argv[optind]);
>
> if (openconnect_parse_url(vpninfo, url))
> --
> 2.15.0
Works for me.
Acked-by: Daniel Lenski <dlenski at gmail.com>
More information about the openconnect-devel
mailing list