#!/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