180ee5cbfSDavid du Colombier #include <u.h> 280ee5cbfSDavid du Colombier #include <libc.h> 380ee5cbfSDavid du Colombier #include "httpd.h" 480ee5cbfSDavid du Colombier #include "httpsrv.h" 580ee5cbfSDavid du Colombier 680ee5cbfSDavid du Colombier int logall[2]; 780ee5cbfSDavid du Colombier 880ee5cbfSDavid du Colombier void 980ee5cbfSDavid du Colombier logit(HConnect *c, char *fmt, ...) 1080ee5cbfSDavid du Colombier { 1180ee5cbfSDavid du Colombier char buf[4096]; 1280ee5cbfSDavid du Colombier va_list arg; 1380ee5cbfSDavid du Colombier HSPriv *p; 1480ee5cbfSDavid du Colombier 1580ee5cbfSDavid du Colombier va_start(arg, fmt); 16*9a747e4fSDavid du Colombier vseprint(buf, buf+sizeof(buf), fmt, arg); 1780ee5cbfSDavid du Colombier va_end(arg); 1880ee5cbfSDavid du Colombier p = nil; 1980ee5cbfSDavid du Colombier if(c != nil) 2080ee5cbfSDavid du Colombier p = c->private; 2180ee5cbfSDavid du Colombier if(p != nil && p->remotesys != nil) 2280ee5cbfSDavid du Colombier syslog(0, HTTPLOG, "%s %s", p->remotesys, buf); 2380ee5cbfSDavid du Colombier else 2480ee5cbfSDavid du Colombier syslog(0, HTTPLOG, "%s", buf); 2580ee5cbfSDavid du Colombier } 2680ee5cbfSDavid du Colombier 2780ee5cbfSDavid du Colombier void 2880ee5cbfSDavid du Colombier writelog(HConnect *c, char *fmt, ...) 2980ee5cbfSDavid du Colombier { 3080ee5cbfSDavid du Colombier HSPriv *p; 3180ee5cbfSDavid du Colombier char buf[HBufSize+500], *bufp, *bufe; 3280ee5cbfSDavid du Colombier ulong now, today; 3380ee5cbfSDavid du Colombier int logfd; 3480ee5cbfSDavid du Colombier va_list arg; 3580ee5cbfSDavid du Colombier 3680ee5cbfSDavid du Colombier bufe = buf + sizeof(buf); 3780ee5cbfSDavid du Colombier now = time(nil); 3880ee5cbfSDavid du Colombier today = now / (24*60*60); 3980ee5cbfSDavid du Colombier logfd = logall[today & 1]; 4080ee5cbfSDavid du Colombier if(c == nil || logfd <= 0) 4180ee5cbfSDavid du Colombier return; 4280ee5cbfSDavid du Colombier p = c->private; 4380ee5cbfSDavid du Colombier if(c->hstop == c->header || c->hstop[-1] != '\n') 4480ee5cbfSDavid du Colombier *c->hstop = '\n'; 4580ee5cbfSDavid du Colombier *c->hstop = '\0'; 4680ee5cbfSDavid du Colombier bufp = seprint(buf, bufe, "==========\n"); 4780ee5cbfSDavid du Colombier bufp = seprint(bufp, bufe, "LogTime: %D\n", now); 4880ee5cbfSDavid du Colombier bufp = seprint(bufp, bufe, "ConnTime: %D\n", c->reqtime); 4980ee5cbfSDavid du Colombier bufp = seprint(bufp, bufe, "RemoteIP: %s\n", p->remotesys); 5080ee5cbfSDavid du Colombier bufp = seprint(bufp, bufe, "Port: %s\n", p->remoteserv); 5180ee5cbfSDavid du Colombier va_start(arg, fmt); 52*9a747e4fSDavid du Colombier bufp = vseprint(bufp, bufe, fmt, arg); 5380ee5cbfSDavid du Colombier va_end(arg); 5480ee5cbfSDavid du Colombier if(c->req.uri != nil && c->req.uri[0] != 0) 5580ee5cbfSDavid du Colombier bufp = seprint(bufp, bufe, "FinalURI: %s\n", c->req.uri); 5680ee5cbfSDavid du Colombier bufp = seprint(bufp, bufe, "----------\n%s\n", (char*)c->header); 5780ee5cbfSDavid du Colombier write(logfd, buf, bufp-buf); /* append-only file */ 5880ee5cbfSDavid du Colombier } 59