mirror of https://github.com/dirtbags/moth.git
83 lines
1.5 KiB
C
83 lines
1.5 KiB
C
#include <stdlib.h>
|
|
#include <ctype.h>
|
|
#include "common.h"
|
|
|
|
int
|
|
main(int argc, char *argv[])
|
|
{
|
|
char team[TEAM_MAX] = {0};
|
|
char token[TOKEN_MAX] = {0};
|
|
|
|
if (-1 == cgi_init(argv)) {
|
|
return 0;
|
|
}
|
|
|
|
/* Read in team and token */
|
|
while (1) {
|
|
size_t len;
|
|
char key[20];
|
|
|
|
len = cgi_item(key, sizeof(key));
|
|
if (0 == len) break;
|
|
switch (key[0]) {
|
|
case 't':
|
|
cgi_item(team, sizeof(team));
|
|
break;
|
|
case 'k':
|
|
cgi_item(token, sizeof(token));
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (! team_exists(team)) {
|
|
cgi_page("No such team", "");
|
|
}
|
|
|
|
/* Any weird characters in token name? */
|
|
{
|
|
char *p;
|
|
|
|
if ('\0' == token[0]) {
|
|
cgi_page("Invalid token", "");
|
|
}
|
|
for (p = token; *p; p += 1) {
|
|
if ((! isalnum(*p)) &&
|
|
(*p != '-') &&
|
|
(*p != ':')) {
|
|
cgi_page("Invalid token", "");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/* Does the token exist? */
|
|
if (! fgrepx(token, state_path("tokens.db"))) {
|
|
cgi_page("Token does not exist", "");
|
|
}
|
|
|
|
/* Award points */
|
|
{
|
|
char category[40];
|
|
int i;
|
|
|
|
/* Pull category name out of the token */
|
|
for (i = 0; token[i] != ':'; i += 1) {
|
|
category[i] = token[i];
|
|
}
|
|
category[i] = '\0';
|
|
|
|
{
|
|
char line[200];
|
|
|
|
my_snprintf(line, sizeof(line),
|
|
"%s %s", team, token);
|
|
award_and_log_uniquely(team, category, 1,
|
|
state_path("claim.db"), line);
|
|
}
|
|
}
|
|
|
|
cgi_page("Point awarded", "<!-- success -->");
|
|
|
|
return 0;
|
|
}
|