mirror of https://git.kore.io/kore.git
log referer in accesslog if present.
This commit is contained in:
parent
6dca7d51e6
commit
4a8d8ab7f8
|
@ -35,6 +35,7 @@ extern "C" {
|
|||
#define HTTP_BODY_MAX_LEN 1024000
|
||||
#define HTTP_URI_LEN 2000
|
||||
#define HTTP_USERAGENT_LEN 256
|
||||
#define HTTP_REFERER_LEN 256
|
||||
#define HTTP_REQ_HEADER_MAX 25
|
||||
#define HTTP_MAX_QUERY_ARGS 20
|
||||
#define HTTP_MAX_COOKIES 10
|
||||
|
@ -219,6 +220,7 @@ struct http_request {
|
|||
const char *path;
|
||||
const char *host;
|
||||
const char *agent;
|
||||
const char *referer;
|
||||
struct connection *owner;
|
||||
u_int8_t *headers;
|
||||
struct kore_buf *http_body;
|
||||
|
|
|
@ -31,6 +31,7 @@ struct kore_log_packet {
|
|||
char host[KORE_DOMAINNAME_LEN];
|
||||
char path[HTTP_URI_LEN];
|
||||
char agent[HTTP_USERAGENT_LEN];
|
||||
char referer[HTTP_REFERER_LEN];
|
||||
#if !defined(KORE_NO_TLS)
|
||||
char cn[X509_CN_LENGTH];
|
||||
#endif
|
||||
|
@ -110,9 +111,9 @@ kore_accesslog_write(const void *data, u_int32_t len)
|
|||
(void)strftime(tbuf, sizeof(tbuf), "%d/%b/%Y:%H:%M:%S %z", tm);
|
||||
|
||||
l = asprintf(&buf,
|
||||
"%s - %s [%s] \"%s %s HTTP/1.1\" %d %zu \"-\" \"%s\"\n",
|
||||
"%s - %s [%s] \"%s %s HTTP/1.1\" %d %zu \"%s\" \"%s\"\n",
|
||||
addr, cn, tbuf, method, logpacket.path, logpacket.status,
|
||||
logpacket.length, logpacket.agent);
|
||||
logpacket.length, logpacket.referer, logpacket.agent);
|
||||
if (l == -1) {
|
||||
kore_log(LOG_WARNING,
|
||||
"kore_accesslog_write(): asprintf(): %s", errno_s);
|
||||
|
@ -171,6 +172,17 @@ kore_accesslog(struct http_request *req)
|
|||
sizeof(logpacket.agent));
|
||||
}
|
||||
|
||||
if (req->referer != NULL) {
|
||||
if (kore_strlcpy(logpacket.referer, req->referer,
|
||||
sizeof(logpacket.referer)) >= sizeof(logpacket.referer)) {
|
||||
kore_log(LOG_NOTICE,
|
||||
"kore_accesslog: referer truncated");
|
||||
}
|
||||
} else {
|
||||
(void)kore_strlcpy(logpacket.referer, "-",
|
||||
sizeof(logpacket.referer));
|
||||
}
|
||||
|
||||
#if !defined(KORE_NO_TLS)
|
||||
memset(logpacket.cn, '\0', sizeof(logpacket.cn));
|
||||
if (req->owner->cert != NULL) {
|
||||
|
|
|
@ -685,6 +685,10 @@ http_header_recv(struct netbuf *nb)
|
|||
if (req->agent == NULL &&
|
||||
!strcasecmp(hdr->header, "user-agent"))
|
||||
req->agent = hdr->value;
|
||||
|
||||
if (req->referer == NULL &&
|
||||
!strcasecmp(hdr->header, "referer"))
|
||||
req->referer = hdr->value;
|
||||
}
|
||||
|
||||
if (req->flags & HTTP_REQUEST_EXPECT_BODY) {
|
||||
|
|
Loading…
Reference in New Issue