manager: Fix GetConfigJSON returning invalid JSON

When GetConfigJSON was introduced back in 1.6, it returned each
section as an array of strings: ["key=value", "key2=value2"].
Afterwards, it was changed a few times and became
["key": "value", "key2": "value2"], which is not a correct JSON.
This patch fixes that by constructing a JSON object {} instead of
an array [].

Also, the keys "istemplate" and "tempates" that are used to
indicate templates and their inherited categories are now wrapped in
quotes.

ASTERISK-25391 #close
Reported by: Bojan Nemčić

Change-Id: Ibbe93c6a227dff14d4a54b0d152341857bcf6ad8
This commit is contained in:
Ivan Poddubny
2015-10-03 14:27:27 +03:00
parent b39e92f036
commit 74635b5638

View File

@@ -3469,18 +3469,18 @@ static int action_getconfigjson(struct mansession *s, const struct message *m)
category_name = ast_category_get_name(cur_category); category_name = ast_category_get_name(cur_category);
astman_append(s, "%s\"", comma1 ? "," : ""); astman_append(s, "%s\"", comma1 ? "," : "");
astman_append_json(s, category_name); astman_append_json(s, category_name);
astman_append(s, "\":["); astman_append(s, "\":{");
comma1 = 1; comma1 = 1;
if (ast_category_is_template(cur_category)) { if (ast_category_is_template(cur_category)) {
astman_append(s, "istemplate:1"); astman_append(s, "\"istemplate\":1");
comma2 = 1; comma2 = 1;
} }
if ((templates = ast_category_get_templates(cur_category)) if ((templates = ast_category_get_templates(cur_category))
&& ast_str_strlen(templates) > 0) { && ast_str_strlen(templates) > 0) {
astman_append(s, "%s", comma2 ? "," : ""); astman_append(s, "%s", comma2 ? "," : "");
astman_append(s, "templates:\"%s\"", ast_str_buffer(templates)); astman_append(s, "\"templates\":\"%s\"", ast_str_buffer(templates));
ast_free(templates); ast_free(templates);
comma2 = 1; comma2 = 1;
} }
@@ -3494,7 +3494,7 @@ static int action_getconfigjson(struct mansession *s, const struct message *m)
comma2 = 1; comma2 = 1;
} }
astman_append(s, "]"); astman_append(s, "}");
} }
astman_append(s, "}\r\n\r\n"); astman_append(s, "}\r\n\r\n");