#!/usr/bin/env python
__doc__ = '''Indirect website logging utility. This script can help generate a
log via CGI, when the regular Apache log is not accessible. Change the LOGFILE
location below, to a writable location where the log will be emitted. The log
will be in Apache's "combined" format. Then, insert the following code in the
HTML pages you would like to track:
'''
import os, sys, time
#######################################
# Globals
LOGFILE = '/home/barr/rim.log'
GIFTRANS1x1 = 'GIF89a\001\000\001\000\200\377\000\300\300\300\000\000\000!\371\004\001\000\000\000\000,\000\000\000\000\001\000\001\000\000\002\002D\001\000;'
#######################################
# Emit GIF
sys.stdout.write('Content-Type: image/gif\n')
sys.stdout.write('Cache-Control: no-cache\n')
sys.stdout.write('Pragma: no-cache\n')
sys.stdout.write('Expires: Sun, 01 Jan 1995 01:01:01 GMT\n')
sys.stdout.write('\n')
sys.stdout.write(GIFTRANS1x1)
#######################################
# Log entry
try:
f = open(LOGFILE, 'a+')
timestamp = time.strftime('[%d/%b/%Y:%H:%M:%S %Z]', time.localtime(time.time()))
request = '%s %s %s' % (
os.environ['REQUEST_METHOD'],
os.environ['HTTP_REFERER'],
os.environ['SERVER_PROTOCOL'],
)
f.write('%s %s %s %s "%s" %s %s "%s" "%s"\n' % (
os.environ['REMOTE_ADDR'], # remote host
'-', # remote logname
'-', # remote user
timestamp, # time
request, # request first line
'200', # status
'-', # size
os.environ['QUERY_STRING'], # referrer
os.environ['HTTP_USER_AGENT'],# user agent
))
f.close()
except:
pass