CURL* curl = NULL;
char* errbuf = NULL;
-char* scan_url = NULL;
-char* name = NULL;
-bool ssl = false;
-uint8_t wait_seconds = 1;
+typedef struct {
+ char* scanner_url;
+ char* username;
+ bool ssl_verify;
+ uint8_t heartbeat;
+} client_config_t;
+
+client_config_t client_config;
+
+char* _kds_s2000w_client_strdup(const char* str)
+{
+ size_t length = strlen(str) + 1;
+ char* new_str = malloc(sizeof(char) * length);
+ return strncpy(new_str, str, length);
+}
void _kds_s2000w_client_set_verbose()
{
void _kds_s2000w_client_set_ssl_verification_off(CURL* curl)
{
- if (ssl)
+ if (client_config.ssl_verify)
return;
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
{
kds_s2000w_debug_printf(ALL, "kds_s2000w_client_set_config");
- size_t str_len = strlen(scanner_url) + 1;
- scan_url = malloc(str_len);
- memcpy(scan_url, scanner_url, str_len);
-
- str_len = strlen(username) + 1;
- name = malloc(str_len);
- memcpy(name, username, str_len);
-
- ssl = ssl_verify;
- wait_seconds = heartbeat;
+ client_config.scanner_url = _kds_s2000w_client_strdup(scanner_url);
+ client_config.username = _kds_s2000w_client_strdup(username);
+ client_config.ssl_verify = ssl_verify;
+ client_config.heartbeat = heartbeat;
}
void kds_s2000w_client_init(const char* scanner_url, const char* username, bool ssl_verify, uint8_t heartbeat)
{
kds_s2000w_debug_printf(ALL, "kds_s2000w_client_free");
- free(scan_url);
- scan_url = NULL;
- free(name);
- name = NULL;
+ free(client_config.scanner_url);
+ client_config.scanner_url = NULL;
+ free(client_config.username);
+ client_config.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, scan_url, 0);
+ curl_url_set(url_handler, CURLUPART_URL, client_config.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\"}", name);
+ sprintf(body, "{\"OCPUserName\": \"%s\"}", client_config.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, scan_url, 0);
+ curl_url_set(url_handler, CURLUPART_URL, client_config.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, scan_url, 0);
+ curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0);
curl_url_set(url_handler, CURLUPART_PATH, CAPABILITIES_PATH, 0);
curl_url_set(url_handler, CURLUPART_QUERY, CAPABILITIES_VERSION_2, 0);
curl_url_get(url_handler, CURLUPART_URL, &url, 0);
kds_s2000w_debug_printf(ALL, "kds_s2000w_client_status_session");
kds_s2000w_heartbeat_join_thread();
- kds_s2000w_heartbeat_wait_seconds(&wait_seconds);
+ kds_s2000w_heartbeat_wait_seconds(&client_config.heartbeat);
curl_easy_reset(curl);
char* url = NULL;
CURLU* url_handler = curl_url();
- curl_url_set(url_handler, CURLUPART_URL, scan_url, 0);
+ curl_url_set(url_handler, CURLUPART_URL, client_config.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, scan_url, 0);
+ curl_url_set(url_handler, CURLUPART_URL, client_config.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, scan_url, 0);
+ curl_url_set(url_handler, CURLUPART_URL, client_config.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, scan_url, 0);
+ curl_url_set(url_handler, CURLUPART_URL, client_config.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, scan_url, 0);
+ curl_url_set(url_handler, CURLUPART_URL, client_config.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, scan_url, 0);
+ curl_url_set(url_handler, CURLUPART_URL, client_config.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, scan_url, 0);
+ curl_url_set(url_handler, CURLUPART_URL, client_config.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);