From 3080d00e45a7ff42cd98b7e7c5e855ef5b51fc27 Mon Sep 17 00:00:00 2001 From: kakwa Date: Sun, 11 Sep 2016 23:55:38 +0200 Subject: [PATCH] fix relative path loading for https certificate/key/ca file --- inc/context.h | 17 ++++++++++++++--- src/lib/utils.c | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/inc/context.h b/inc/context.h index 8200201..c1b409e 100644 --- a/inc/context.h +++ b/inc/context.h @@ -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}, }; diff --git a/src/lib/utils.c b/src/lib/utils.c index 41b3288..8fb2c17 100644 --- a/src/lib/utils.c +++ b/src/lib/utils.c @@ -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);