initial commit
[quakecontrol.git] / loadmap.c
1 #include "common.h"
2
3 char *map;
4
5 void check_map_name(void) {
6   if (map == NULL) senderr("missing query string", false);
7   for (char *p = map; *p; p++) {
8     if (*p >= 'a' && *p <= 'z') continue;
9     if (*p >= 'A' && *p <= 'Z') continue;
10     if (*p >= '0' && *p <= '9') continue;
11     if (*p == '_') continue;
12     senderr("bad map name", false);
13   }
14 }
15
16 int main(void) {
17   map = getenv("QUERY_STRING");
18   check_map_name();
19   
20   char cmd[4+strlen(map)+1];
21   memcpy(cmd, "map ", 4);
22   strcpy(cmd+4, map);
23   rcon_send(cmd);
24   
25   puts("Status: 204 changed map"
26      "\nX-Frame-Options: DENY"
27      "\n");
28   exit(0);
29 }