cmd: add /status.json to describe what and how it works

This commit is contained in:
Kamil Trzcinski
2022-09-03 12:14:01 +02:00
parent aafd120af3
commit b2dfba5577
12 changed files with 195 additions and 12 deletions

View File

@ -17,6 +17,7 @@
#define HEADER_RANGE "Range:"
#define HEADER_CONTENT_LENGTH "Content-Length:"
#define HEADER_USER_AGENT "User-Agent:"
#define HEADER_HOST "Host:"
static int http_listen(int port, int maxcons)
{
@ -92,6 +93,7 @@ static void http_process(http_worker_t *worker, FILE *stream)
worker->range_header[0] = 0;
worker->user_agent[0] = 0;
worker->host[0] = 0;
worker->content_length = -1;
// request_uri
@ -124,11 +126,13 @@ static void http_process(http_worker_t *worker, FILE *stream)
break;
if (strcasestr(line, HEADER_RANGE) == line) {
strcpy(worker->range_header, line);
strcpy(worker->range_header, trim(line));
} else if (strcasestr(line, HEADER_CONTENT_LENGTH) == line) {
worker->content_length = atoi(line + strlen(HEADER_CONTENT_LENGTH));
worker->content_length = atoi(trim(line + strlen(HEADER_CONTENT_LENGTH)));
} else if (strcasestr(line, HEADER_USER_AGENT) == line) {
strcpy(worker->user_agent, line + strlen(HEADER_USER_AGENT));
strcpy(worker->user_agent, trim(line + strlen(HEADER_USER_AGENT)));
} else if (strcasestr(line, HEADER_HOST) == line) {
strcpy(worker->host, trim(line + strlen(HEADER_HOST)));
}
}

View File

@ -44,6 +44,7 @@ typedef struct http_worker_s {
char client_method[BUFSIZE];
char range_header[BUFSIZE];
char user_agent[BUFSIZE];
char host[BUFSIZE];
char *request_method;
char *request_uri;
char *request_params;

View File

@ -2,6 +2,7 @@
#include "util/opts/opts.h"
#include <string.h>
#include <ctype.h>
char *
strstrn(const char *s, const char *find, size_t len)
@ -101,3 +102,17 @@ int ioctl_retried(const char *name, int fd, int request, void *arg)
}
return ret;
}
char *trim(char *s)
{
// skip left side white spaces
while (isspace (*s))
s++;
// skip right side white spaces
char *e = s + strlen(s) - 1;
while (e >= s && isspace(*e))
*e-- = 0;
return s;
}

View File

@ -49,6 +49,7 @@ bool filter_log(const char *filename);
uint64_t get_monotonic_time_us(struct timespec *ts, struct timeval *tv);
uint64_t get_time_us(clockid_t clock, struct timespec *ts, struct timeval *tv, int64_t delays_us);
int shrink_to_block(int size, int block);
char *trim(char *s);
int ioctl_retried(const char *name, int fd, int request, void *arg);