]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change client config not direct config instance
authorBastian Dehn <hhaalo@arcor.de>
Sun, 2 Mar 2025 19:13:55 +0000 (20:13 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 2 Mar 2025 19:13:55 +0000 (20:13 +0100)
src/kds_s2000w_client.c

index 08e2fd7bdea81be053267aa22d6d6050f2ce9610..79dd71aa143707618b70a7da1a50f4a2514f238a 100644 (file)
@@ -1,3 +1,4 @@
+#include <stdbool.h>
 #include <string.h>
 #include <stdlib.h>
 #include <curl/curl.h>
 #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);