diff options
author | Felix Fietkau <nbd@nbd.name> | 2016-06-16 18:26:18 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2016-06-16 18:26:18 +0200 |
commit | 242401f544df790b1df7d12b3be5f5b429da091c (patch) | |
tree | 5b35d49454c21740bede1a4ebe05d3d889d4758b /handler.c | |
parent | fe01ef3f52adae9da38ef47926cd50974af5d6b7 (diff) |
uhttpd: add support for adding arbitrary headers via handler scripts
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'handler.c')
-rw-r--r-- | handler.c | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -103,6 +103,24 @@ handle_set_uri(struct json_script_ctx *ctx, struct blob_attr *data) } static void +handle_add_header(struct json_script_ctx *ctx, struct blob_attr *data) +{ + struct client *cl = cur_client; + static struct blobmsg_policy policy[2] = { + { .type = BLOBMSG_TYPE_STRING }, + { .type = BLOBMSG_TYPE_STRING }, + }; + struct blob_attr *tb[2]; + + blobmsg_parse_array(policy, ARRAY_SIZE(tb), tb, blobmsg_data(data), blobmsg_data_len(data)); + if (!tb[0] || !tb[1]) + return; + + blobmsg_add_string(&cl->hdr_response, blobmsg_get_string(tb[0]), + blobmsg_get_string(tb[1])); +} + +static void handle_command(struct json_script_ctx *ctx, const char *name, struct blob_attr *data, struct blob_attr *vars) { @@ -111,7 +129,8 @@ handle_command(struct json_script_ctx *ctx, const char *name, void (*func)(struct json_script_ctx *ctx, struct blob_attr *data); } cmds[] = { { "redirect", handle_redirect }, - { "rewrite", handle_set_uri } + { "rewrite", handle_set_uri }, + { "add-header", handle_add_header }, }; int i; |