summaryrefslogtreecommitdiffstats
path: root/src/config.c
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2020-11-01 11:19:51 -0500
committerDrew DeVault <sir@cmpwn.com>2020-11-01 11:19:51 -0500
commitdc6e4e80c0b0a3950594e32db7cff1b2db24d75c (patch)
treeddbec0d5be083daa32f05acdcce25a31489ec999 /src/config.c
parent953039e0b15df9c119b70eb18f36e580a4c4e7d4 (diff)
downloadgmnisrv-dc6e4e80c0b0a3950594e32db7cff1b2db24d75c.tar.gz
gmnisrv-dc6e4e80c0b0a3950594e32db7cff1b2db24d75c.tar.xz
gmnisrv-dc6e4e80c0b0a3950594e32db7cff1b2db24d75c.zip
Implement URL rewrites with regex capture groups
Diffstat (limited to 'src/config.c')
-rw-r--r--src/config.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/config.c b/src/config.c
index ec767da..662d02e 100644
--- a/src/config.c
+++ b/src/config.c
@@ -213,6 +213,7 @@ conf_ini_handler(void *user, const char *section,
char *name;
char **value;
} route_strvars[] = {
+ { "rewrite", &route->rewrite },
{ "root", &route->root },
{ "index", &route->index },
};
@@ -228,6 +229,11 @@ conf_ini_handler(void *user, const char *section,
if (strcmp(route_strvars[i].name, name) != 0) {
continue;
}
+ if (strcmp(route_strvars[i].name, "rewrite") == 0
+ && routing != ROUTE_REGEX) {
+ fprintf(stderr, "rewrite directives are only valid for regex routes\n");
+ return 0;
+ }
*route_strvars[i].value = strdup(value);
return 1;
}
@@ -315,9 +321,10 @@ config_finish(struct gmnisrv_config *conf)
}
struct gmnisrv_route *rnext = route->next;
- free(route->spec);
- free(route->root);
free(route->index);
+ free(route->rewrite);
+ free(route->root);
+ free(route->spec);
free(route);
route = rnext;
}