[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