Fix url encoding for snom remote commands (required to make # key work)

This commit is contained in:
Thomas Kleffel 2014-10-14 22:31:40 +02:00
parent e3e267f462
commit 412f214809
1 changed files with 9 additions and 5 deletions

View File

@ -116,8 +116,10 @@ SWITCH_STANDARD_API(snom_command_api_function)
{ {
int argc; int argc;
long httpRes = 0; long httpRes = 0;
char *key = NULL;
char *url = NULL; char *url = NULL;
char *argv[5] = { 0 }; char *argv[5] = { 0 };
char host[32];
char *argdata = NULL; char *argdata = NULL;
char *userpwd = NULL; char *userpwd = NULL;
char *apiresp = NULL; char *apiresp = NULL;
@ -141,10 +143,9 @@ SWITCH_STANDARD_API(snom_command_api_function)
} }
if (switch_inet_pton(AF_INET, argv[0], &ip)) { if (switch_inet_pton(AF_INET, argv[0], &ip)) {
url = switch_mprintf("http://%s/command.htm?%s=%s",argv[0],argv[1],argv[2]); strncpy(host, argv[0], sizeof(host));
} else { } else {
char *sql = NULL; char *sql = NULL;
char buf[32];
char *ret = NULL; char *ret = NULL;
switch_cache_db_handle_t *db = NULL; switch_cache_db_handle_t *db = NULL;
switch_stream_handle_t apistream = { 0 }; switch_stream_handle_t apistream = { 0 };
@ -173,7 +174,7 @@ SWITCH_STANDARD_API(snom_command_api_function)
sql = switch_mprintf("select network_ip from registrations where url = '%s'", apiresp); sql = switch_mprintf("select network_ip from registrations where url = '%s'", apiresp);
ret = switch_cache_db_execute_sql2str(db, sql, buf, sizeof(buf), NULL); ret = switch_cache_db_execute_sql2str(db, sql, host, sizeof(host), NULL);
switch_safe_free(sql); switch_safe_free(sql);
switch_cache_db_release_db_handle(&db); switch_cache_db_release_db_handle(&db);
@ -181,11 +182,14 @@ SWITCH_STANDARD_API(snom_command_api_function)
stream->write_function(stream, "%s", "-ERR Query '%s' failed!\n", sql); stream->write_function(stream, "%s", "-ERR Query '%s' failed!\n", sql);
goto end; goto end;
} }
url = switch_mprintf("http://%s/command.htm?%s=%s",buf,argv[1],argv[2]);
} }
curl_handle = curl_easy_init(); curl_handle = curl_easy_init();
key = curl_easy_escape(curl_handle, argv[2], 0);
url = switch_mprintf("http://%s/command.htm?%s=%s", host, argv[1], key);
curl_free(key);
curl_easy_setopt(curl_handle, CURLOPT_HTTPGET, 1); curl_easy_setopt(curl_handle, CURLOPT_HTTPGET, 1);
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, curl_callback); curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, curl_callback);
curl_easy_setopt(curl_handle, CURLOPT_URL, url); curl_easy_setopt(curl_handle, CURLOPT_URL, url);