FCGI_BeginJSON(context, STATUS_OK);
FCGI_JSONPair("description", "MCTX3420 Server API (2013)");
FCGI_JSONPair("build_date", __DATE__ " " __TIME__);
- struct timespec t;
- t.tv_sec = 0; t.tv_nsec = 0;
+ struct timespec t = {0};
clock_getres(CLOCK_MONOTONIC, &t);
FCGI_JSONDouble("clock_getres", TIMEVAL_TO_DOUBLE(t));
FCGI_JSONLong("api_version", API_VERSION);
const char *cookies = getenv("COOKIE_STRING");
const char *start = strstr(cookies, "mctxkey=");
+ *buffer = 0; //Clear the buffer
if (start != NULL) {
- const char *end;
- size_t limit = CONTROL_KEY_BUFSIZ;
- start += 8; //Ah, magic numbers (the length of mctxkey= - 1)
- end = strchr(start, ';');
- if (end != NULL && (end-start) < CONTROL_KEY_BUFSIZ) {
- limit = (end-start) + 1;
+ int i;
+ start += 8; //length of mctxkey=
+ for (i = 0; i < CONTROL_KEY_BUFSIZ; i++) {
+ if (*start == 0 || *start == ';') {
+ break;
+ }
+ buffer[i] = *start++;
}
- snprintf(buffer, limit, "%s", start);
- Log(LOGDEBUG, "buf: %s", buffer);
- } else {
- *buffer = 0;
+ buffer[i] = 0;
}
}
{
if (!FCGI_HasControl(&context))
{
- FCGI_RejectJSON(&context, "Please login. Invalid control key.");
- continue;
+ if (g_options.auth_method == AUTH_NONE)
+ { //:(
+ Log(LOGWARN, "Locking control (no auth!)");
+ FCGI_LockControl(&context, NOAUTH_USERNAME, USER_ADMIN);
+ }
+ else
+ {
+ FCGI_RejectJSON(&context, "Please login. Invalid control key.");
+ continue;
+ }
}
//Escape all special characters.