r1122 - trunk/varnish-cache/bin/varnishncsa
andersb at projects.linpro.no
andersb at projects.linpro.no
Sun Sep 24 18:17:06 CEST 2006
Author: andersb
Date: 2006-09-24 18:17:06 +0200 (Sun, 24 Sep 2006)
New Revision: 1122
Modified:
trunk/varnish-cache/bin/varnishncsa/varnishncsa.c
Log:
Fixed: [] around time. NCSA logformat requires it.
Fixed: Status variable is not shown correctly.
Added: base64() decode of Remote User.
Note: Getting compile warning.
Modified: trunk/varnish-cache/bin/varnishncsa/varnishncsa.c
===================================================================
--- trunk/varnish-cache/bin/varnishncsa/varnishncsa.c 2006-09-23 19:30:29 UTC (rev 1121)
+++ trunk/varnish-cache/bin/varnishncsa/varnishncsa.c 2006-09-24 16:17:06 UTC (rev 1122)
@@ -61,6 +61,7 @@
char df_b[12]; /* Datafield for %b, Bytes */
char *df_R; /* Datafield for %{Referer} */
char *df_U; /* Datafield for %{User-agent} */
+ char *df_RU; /* Datafield for %l, Remote user */
int bogus_req; /* bogus request */
struct vsb *sb;
} *ll[65536];
@@ -87,6 +88,7 @@
FILE *fo;
time_t t;
long l;
+ unsigned lu;
struct tm tm;
char tbuf[40];
struct logline *lp;
@@ -120,6 +122,8 @@
vsb_bcat(lp->sb, ptr, len);
} else if (ispfx(ptr, len, "GET")) {
vsb_bcat(lp->sb, ptr, len);
+ } else if (ispfx(ptr, len, "PURGE")) {
+ vsb_bcat(lp->sb, ptr, len);
} else {
lp->bogus_req = 1;
}
@@ -144,6 +148,8 @@
lp->df_U = strdup(ptr + 12);
else if (ispfx(ptr, len, "referer:"))
lp->df_R = strdup(ptr + 9);
+ else if (ispfx(ptr, len, "authorization:"))
+ lp->df_RU = strdup(ptr + 21);
break;
case SLT_Length:
@@ -163,10 +169,29 @@
assert(1 == sscanf(ptr, "%*u %*u.%*u %ld.", &l));
t = l;
localtime_r(&t, &tm);
+
+
+
strftime(tbuf, sizeof tbuf, "%d/%b/%Y:%T %z", &tm);
- fprintf(fo, "%s - - %s", lp->df_h, tbuf);
+ fprintf(fo, "%s", lp->df_h);
+
+ if (lp->df_RU != NULL){
+ base64_init();
+ lu = sizeof lp->df_RU;
+ base64_decode(lp->df_RU, &lu, lp->df_RU);
+ q = strchr(lp->df_RU, ':');
+ *q = '\0';
+ fprintf(fo, " %s", lp->df_RU);
+ free(lp->df_RU);
+ lp->df_RU = NULL;
+ }
+ else{
+ fprintf(fo, " -");
+ }
+ fprintf(fo, " - [%s]", tbuf);
vsb_finish(lp->sb);
fprintf(fo, " \"%s\"", vsb_data(lp->sb));
+ fprintf(fo, " %s", lp->df_s);
fprintf(fo, " %s", lp->df_b);
if (lp->df_R != NULL) {
fprintf(fo, " \"%s\"", lp->df_R);
More information about the varnish-commit
mailing list