From: Bastian Dehn Date: Sun, 2 Mar 2025 19:13:55 +0000 (+0100) Subject: change client config not direct config instance X-Git-Tag: v1.1.2^2~4^2~5 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=792b5d89a3dae5a9713b4292ad4af0f6f29f5ecd;p=sane-kds-s2000w-net.git change client config not direct config instance --- diff --git a/src/kds_s2000w_client.c b/src/kds_s2000w_client.c index 08e2fd7..79dd71a 100644 --- a/src/kds_s2000w_client.c +++ b/src/kds_s2000w_client.c @@ -1,3 +1,4 @@ +#include #include #include #include @@ -23,9 +24,13 @@ #define CONFIGURATION_PATH "/api/session/configuration" CURL* curl = NULL; -program_config* config = NULL; char* errbuf = NULL; +char* scanner_url = NULL; +char* username = NULL; +bool ssl_verify = false; +uint8_t heartbeat = 1; + size_t _kds_s2000w_client_write_callback(char* ptr, size_t size, size_t nmemb, void* data) { response* resp = (response*) data; @@ -74,7 +79,7 @@ void _kds_s2000w_client_print_error_result(CURLcode result) void _kds_s2000w_client_set_ssl_verification_off(CURL* curl) { - if (config->ssl_verify) + if (ssl_verify) return; curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); @@ -86,15 +91,31 @@ void kds_s2000w_client_init() kds_s2000w_debug_printf(ALL, "kds_s2000w_client_init"); char* config_stream = kds_s2000w_config_read(CONFIG_FILE); - config = kds_s2000w_config_load(config_stream); + program_config* config = kds_s2000w_config_load(config_stream); + + heartbeat = config->heartbeat; + + size_t str_len = strlen(config->scanner_url) + 1; + scanner_url = malloc(sizeof(char) * str_len); + memset(scanner_url, 0, str_len); + strcpy(scanner_url, config->scanner_url); + + str_len = strlen(config->username) + 1; + username = malloc(sizeof(char) * str_len); + memset(username, 0, str_len); + strcpy(username, config->username); + kds_s2000w_debug_set_default_log_level(config->log_level); + + free(config_stream); + config_stream = NULL; + kds_s2000w_config_free(config); + config = NULL; + curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); errbuf = malloc(CURL_ERROR_SIZE); memset(errbuf, 0, CURL_ERROR_SIZE); - - free(config_stream); - config_stream = NULL; } void kds_s2000w_client_free() @@ -106,8 +127,10 @@ void kds_s2000w_client_free() free(config_dir); config_dir = NULL; - kds_s2000w_config_free(config); - config = NULL; + free(scanner_url); + scanner_url = NULL; + free(username); + username = NULL; curl_easy_cleanup(curl); curl = NULL; curl_global_cleanup(); @@ -148,7 +171,7 @@ uint8_t kds_s2000w_client_open_session(response* resp) char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, config->scanner_url, 0); + curl_url_set(url_handler, CURLUPART_URL, scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, SESSION_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -160,7 +183,7 @@ uint8_t kds_s2000w_client_open_session(response* resp) char* body = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); memset(body, 0, MAX_STR_BUFFER_LENGTH); - sprintf(body, "{\"OCPUserName\": \"%s\"}", config->username); + sprintf(body, "{\"OCPUserName\": \"%s\"}", username); curl_easy_setopt(curl, CURLOPT_POST, 1L); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body); _kds_s2000w_client_set_ssl_verification_off(curl); @@ -195,7 +218,7 @@ void kds_s2000w_client_close_session(int64_t sessionid) char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, config->scanner_url, 0); + curl_url_set(url_handler, CURLUPART_URL, scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, SESSION_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -235,7 +258,7 @@ uint8_t kds_s2000w_client_get_capabilities(response* resp) char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, config->scanner_url, 0); + curl_url_set(url_handler, CURLUPART_URL, scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, CAPABILITIES_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -273,13 +296,13 @@ uint8_t kds_s2000w_client_status_session(int64_t sessionid, response* resp) kds_s2000w_debug_printf(ALL, "kds_s2000w_client_status_session"); kds_s2000w_heartbeat_join_thread(); - kds_s2000w_heartbeat_wait_seconds(&config->heartbeat); + kds_s2000w_heartbeat_wait_seconds(&heartbeat); curl_easy_reset(curl); char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, config->scanner_url, 0); + curl_url_set(url_handler, CURLUPART_URL, scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, STATUS_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -326,7 +349,7 @@ uint8_t kds_s2000w_client_start_scan(int64_t sessionid) char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, config->scanner_url, 0); + curl_url_set(url_handler, CURLUPART_URL, scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, STARTSCAN_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -370,7 +393,7 @@ uint8_t kds_s2000w_client_stop_scan(int64_t sessionid) char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, config->scanner_url, 0); + curl_url_set(url_handler, CURLUPART_URL, scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, STOPSCAN_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -417,7 +440,7 @@ uint8_t kds_s2000w_client_get_image(int64_t sessionid, uint8_t img_number, respo char* url_path = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); memset(url_path, 0, MAX_STR_BUFFER_LENGTH); sprintf(url_path, "%s/%i", IMAGE_PATH, img_number); - curl_url_set(url_handler, CURLUPART_URL, config->scanner_url, 0); + curl_url_set(url_handler, CURLUPART_URL, scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, url_path, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -468,7 +491,7 @@ uint8_t kds_s2000w_client_delete_image(int64_t sessionid, uint8_t img_number) char* url_path = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); memset(url_path, 0, MAX_STR_BUFFER_LENGTH); sprintf(url_path, "%s/%i", IMAGE_PATH, img_number); - curl_url_set(url_handler, CURLUPART_URL, config->scanner_url, 0); + curl_url_set(url_handler, CURLUPART_URL, scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, url_path, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -513,7 +536,7 @@ uint8_t kds_s2000w_client_get_option(int64_t sessionid, response* resp) char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, config->scanner_url, 0); + curl_url_set(url_handler, CURLUPART_URL, scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, CONFIGURATION_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -560,7 +583,7 @@ uint8_t kds_s2000w_client_set_option(int64_t sessionid, response* resp) char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, config->scanner_url, 0); + curl_url_set(url_handler, CURLUPART_URL, scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, CONFIGURATION_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url);