2018-12-07 06:36:53 +08:00
|
|
|
/*! \file
|
|
|
|
|
|
|
|
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
|
|
|
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014,
|
|
|
|
2015, 2016, 2017, 2018
|
|
|
|
University Corporation for Atmospheric Research/Unidata.
|
|
|
|
|
|
|
|
See \ref copyright file for more info.
|
|
|
|
|
|
|
|
*/
|
2018-09-05 01:27:47 +08:00
|
|
|
#include "config.h"
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include "nctestserver.h"
|
|
|
|
|
|
|
|
/* Support stringification of -D macros */
|
|
|
|
#define XSTRINGIFY(s) #s
|
|
|
|
#define STRINGIFY(s) XSTRINGIFY(s)
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
usage: findtestserver dap2|dap4 suffix [serverlist]
|
|
|
|
|
|
|
|
Given a partial suffix path, try to find a
|
|
|
|
server for which a request to server + suffix
|
|
|
|
returns some kind of result using the
|
|
|
|
specified protocol. This indicates that the
|
|
|
|
server is up and running. Return the complete
|
|
|
|
url for the server plus the path.
|
|
|
|
If serverlist is present, then is should be a comma
|
|
|
|
separated list of servers (host+port) to try.
|
|
|
|
It defaults to REMOTETESTSERVERS.
|
|
|
|
*/
|
|
|
|
|
|
|
|
static void
|
|
|
|
usage()
|
|
|
|
{
|
|
|
|
fprintf(stderr,"usage: findtestserver dap2|dap4 suffix [serverlist]\n");
|
|
|
|
exit(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
main(int argc, char** argv)
|
|
|
|
{
|
2018-10-31 10:48:12 +08:00
|
|
|
char* url = NULL;
|
2018-09-05 01:27:47 +08:00
|
|
|
const char* servlet = NULL;
|
|
|
|
const char* proto = NULL;
|
2018-10-31 10:48:12 +08:00
|
|
|
char* serverlist = NULL;
|
2020-01-01 06:42:58 +08:00
|
|
|
enum KIND kind = NOKIND;
|
|
|
|
|
|
|
|
kind = kind;
|
|
|
|
proto = proto;
|
2018-09-05 01:27:47 +08:00
|
|
|
|
|
|
|
argc--; argv++;
|
|
|
|
if(argc < 2)
|
2018-12-07 06:36:53 +08:00
|
|
|
usage();
|
2018-09-05 01:27:47 +08:00
|
|
|
proto = strdup(argv[0]);
|
|
|
|
servlet = strdup(argv[1]);
|
|
|
|
if(argc >= 3)
|
|
|
|
serverlist = strdup(argv[2]);
|
|
|
|
|
|
|
|
#ifdef ENABLE_DAP
|
2020-01-01 06:42:58 +08:00
|
|
|
if(strcasecmp(proto,"thredds")==0)
|
|
|
|
kind = THREDDSKIND;
|
|
|
|
else
|
2018-09-05 01:27:47 +08:00
|
|
|
if(strcasecmp(proto,"dap2")==0)
|
2020-01-01 06:42:58 +08:00
|
|
|
kind = DAP2KIND;
|
2018-09-05 01:27:47 +08:00
|
|
|
else
|
|
|
|
#endif
|
|
|
|
#ifdef ENABLE_DAP4
|
|
|
|
if(strcasecmp(proto,"dap4")==0)
|
2020-01-01 06:42:58 +08:00
|
|
|
kind = DAP4KIND;
|
2018-09-05 01:27:47 +08:00
|
|
|
else
|
|
|
|
#endif
|
|
|
|
usage();
|
|
|
|
|
|
|
|
if(serverlist == NULL) {
|
|
|
|
#ifdef REMOTETESTSERVERS
|
|
|
|
serverlist = strdup(REMOTETESTSERVERS);
|
|
|
|
#endif
|
|
|
|
}
|
2020-01-01 06:42:58 +08:00
|
|
|
if(serverlist == NULL || strlen(serverlist) == 0) {
|
|
|
|
fprintf(stderr,"WARNING: Cannot determine a server list\n");
|
|
|
|
exit(0);
|
|
|
|
}
|
|
|
|
url = nc_findtestserver(servlet,serverlist);
|
2018-09-05 01:27:47 +08:00
|
|
|
if(url == NULL) {
|
2021-12-21 06:13:08 +08:00
|
|
|
url = strdup("");
|
2020-01-01 06:42:58 +08:00
|
|
|
fprintf(stderr,"not found: %s\n",servlet);
|
2018-09-05 01:27:47 +08:00
|
|
|
}
|
|
|
|
printf("%s",url);
|
|
|
|
fflush(stdout);
|
2018-10-31 10:48:12 +08:00
|
|
|
/* clean up */
|
2018-12-07 06:36:53 +08:00
|
|
|
free(serverlist);
|
2018-10-31 10:48:12 +08:00
|
|
|
free(url);
|
2018-09-05 01:27:47 +08:00
|
|
|
exit(0);
|
|
|
|
}
|