+#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;
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);
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()
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();
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);