fix relative path loading for https certificate/key/ca file

This commit is contained in:
kakwa 2016-09-11 23:55:38 +02:00
parent 502dd1d11f
commit 3080d00e45
2 changed files with 28 additions and 4 deletions

View File

@ -10,6 +10,7 @@
#define HTTP_OPTIONS 1
#define LOGLEVEL_OPTIONS 2
#define TSA_OPTIONS 3
#define PATH_HTTP_OPTIONS 4
#define MAIN_CONF_SECTION "main"
#define RFC3161_OPTIONS_LEN \
@ -23,20 +24,30 @@ typedef struct {
typedef struct {
uint64_t query_counter;
// flag for debugging
bool stdout_dbg;
// log level
int loglevel;
// number of threads
int numthreads;
// civetweb http parameters
const char *http_options[40];
ts_resp_ctx_wrapper *ts_ctx_pool;
// just to track for freeing later
CONF *conf;
char *cust_conf[20];
} rfc3161_context;
// definition of structure to describe
// section [ main ] attributes (name, type and default value)
struct rfc3161_option {
const char *name;
int type;
const char *default_value;
};
// declaration of section [ main ] parameters and their default values
static struct rfc3161_option rfc3161_options[] = {
{"num_threads", HTTP_OPTIONS, "10"},
{"run_as_user", HTTP_OPTIONS, NULL},
@ -44,10 +55,7 @@ static struct rfc3161_option rfc3161_options[] = {
{"enable_keep_alive", HTTP_OPTIONS, "no"},
{"listening_ports", HTTP_OPTIONS, "8080"},
{"request_timeout_ms", HTTP_OPTIONS, "30000"},
{"ssl_certificate", HTTP_OPTIONS, NULL},
{"ssl_verify_peer", HTTP_OPTIONS, "yes"},
{"ssl_ca_path", HTTP_OPTIONS, NULL},
{"ssl_ca_file", HTTP_OPTIONS, NULL},
{"ssl_verify_depth", HTTP_OPTIONS, "9"},
{"ssl_default_verify_paths", HTTP_OPTIONS, "yes"},
{"ssl_cipher_list", HTTP_OPTIONS, NULL},
@ -56,4 +64,7 @@ static struct rfc3161_option rfc3161_options[] = {
{"access_control_allow_origin", HTTP_OPTIONS, "*"},
{"tcp_nodelay", HTTP_OPTIONS, "0"},
{"log_level", LOGLEVEL_OPTIONS, "info"},
{"ssl_certificate", PATH_HTTP_OPTIONS, NULL},
{"ssl_ca_path", PATH_HTTP_OPTIONS, NULL},
{"ssl_ca_file", PATH_HTTP_OPTIONS, NULL},
};

View File

@ -275,6 +275,7 @@ int set_params(rfc3161_context *ct, char *conf_file, char *conf_wd) {
chdir(conf_wd);
int ret = 1;
int http_counter = 0;
int cust_counter = 0;
int numthreads = 42;
NCONF_free(ct->conf);
@ -339,7 +340,16 @@ int set_params(rfc3161_context *ct, char *conf_file, char *conf_wd) {
numthreads = atoi(value);
break;
;
case TSA_OPTIONS:
case PATH_HTTP_OPTIONS:
if (value != NULL) {
char *ptr = NULL;
ptr = realpath(value, NULL);
ct->http_options[http_counter] = name;
http_counter++;
ct->http_options[http_counter] = ptr;
http_counter++;
ct->cust_conf[cust_counter] = ptr;
}
break;
;
}
@ -372,6 +382,9 @@ void free_uts_context(rfc3161_context *ct) {
for (int i = 0; i < ct->numthreads; i++) {
TS_RESP_CTX_free(ct->ts_ctx_pool[i].ts_ctx);
}
for (int i = 0; i < 20; i++) {
free(ct->cust_conf[i]);
}
free(ct->ts_ctx_pool);
NCONF_free(ct->conf);
free(ct);