mirror of https://git.48k.eu/ogserver
#915 Add 'echo' parameter to POST /shell/run
'echo' parameter makes possible for users to request the console output.master
parent
280df58917
commit
ffd2965b33
|
@ -3280,6 +3280,7 @@ struct og_msg_params {
|
||||||
const char *profile;
|
const char *profile;
|
||||||
const char *cache;
|
const char *cache;
|
||||||
const char *cache_size;
|
const char *cache_size;
|
||||||
|
bool echo;
|
||||||
struct og_partition partition_setup[OG_PARTITION_MAX];
|
struct og_partition partition_setup[OG_PARTITION_MAX];
|
||||||
struct og_sync_params sync_setup;
|
struct og_sync_params sync_setup;
|
||||||
uint64_t flags;
|
uint64_t flags;
|
||||||
|
@ -3315,6 +3316,7 @@ struct og_msg_params {
|
||||||
#define OG_REST_PARAM_SYNC_DIFF_NAME (1UL << 27)
|
#define OG_REST_PARAM_SYNC_DIFF_NAME (1UL << 27)
|
||||||
#define OG_REST_PARAM_SYNC_PATH (1UL << 28)
|
#define OG_REST_PARAM_SYNC_PATH (1UL << 28)
|
||||||
#define OG_REST_PARAM_SYNC_METHOD (1UL << 29)
|
#define OG_REST_PARAM_SYNC_METHOD (1UL << 29)
|
||||||
|
#define OG_REST_PARAM_ECHO (1UL << 30)
|
||||||
|
|
||||||
static bool og_msg_params_validate(const struct og_msg_params *params,
|
static bool og_msg_params_validate(const struct og_msg_params *params,
|
||||||
const uint64_t flags)
|
const uint64_t flags)
|
||||||
|
@ -3353,6 +3355,18 @@ static int og_json_parse_string(json_t *element, const char **str)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int og_json_parse_bool(json_t *element, bool *value)
|
||||||
|
{
|
||||||
|
if (json_typeof(element) == JSON_TRUE)
|
||||||
|
*value = true;
|
||||||
|
else if (json_typeof(element) == JSON_FALSE)
|
||||||
|
*value = false;
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int og_json_parse_sync_params(json_t *element,
|
static int og_json_parse_sync_params(json_t *element,
|
||||||
struct og_msg_params *params)
|
struct og_msg_params *params)
|
||||||
{
|
{
|
||||||
|
@ -3724,23 +3738,36 @@ static int og_cmd_run_post(json_t *element, struct og_msg_params *params)
|
||||||
json_object_foreach(element, key, value) {
|
json_object_foreach(element, key, value) {
|
||||||
if (!strcmp(key, "clients"))
|
if (!strcmp(key, "clients"))
|
||||||
err = og_json_parse_clients(value, params);
|
err = og_json_parse_clients(value, params);
|
||||||
if (!strcmp(key, "run"))
|
else if (!strcmp(key, "run"))
|
||||||
err = og_json_parse_run(value, params);
|
err = og_json_parse_run(value, params);
|
||||||
|
else if (!strcmp(key, "echo")) {
|
||||||
|
err = og_json_parse_bool(value, ¶ms->echo);
|
||||||
|
params->flags |= OG_REST_PARAM_ECHO;
|
||||||
|
}
|
||||||
|
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!og_msg_params_validate(params, OG_REST_PARAM_ADDR |
|
if (!og_msg_params_validate(params, OG_REST_PARAM_ADDR |
|
||||||
OG_REST_PARAM_RUN_CMD))
|
OG_REST_PARAM_RUN_CMD |
|
||||||
|
OG_REST_PARAM_ECHO))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
for (i = 0; i < params->ips_array_len; i++) {
|
for (i = 0; i < params->ips_array_len; i++) {
|
||||||
len = snprintf(iph + strlen(iph), sizeof(iph), "%s;",
|
len = snprintf(iph + strlen(iph), sizeof(iph), "%s;",
|
||||||
params->ips_array[i]);
|
params->ips_array[i]);
|
||||||
}
|
}
|
||||||
len = snprintf(buf, sizeof(buf), "nfn=ConsolaRemota\riph=%s\rscp=%s\r",
|
|
||||||
iph, params->run_cmd);
|
if (params->echo) {
|
||||||
|
len = snprintf(buf, sizeof(buf),
|
||||||
|
"nfn=ConsolaRemota\riph=%s\rscp=%s\r",
|
||||||
|
iph, params->run_cmd);
|
||||||
|
} else {
|
||||||
|
len = snprintf(buf, sizeof(buf),
|
||||||
|
"nfn=EjecutarScript\riph=%s\rscp=%s\r",
|
||||||
|
iph, params->run_cmd);
|
||||||
|
}
|
||||||
|
|
||||||
msg = og_msg_alloc(buf, len);
|
msg = og_msg_alloc(buf, len);
|
||||||
if (!msg)
|
if (!msg)
|
||||||
|
|
Loading…
Reference in New Issue