You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

47 lines
1.5 KiB

from wsgiref.simple_server import make_server
def tracking_server(environ, respond):
"""Function used to handle all requests made to
this tracking server
"""
if environ['PATH_INFO'] == '/track.js':
return track_user(environ, respond)
elif environ['PATH_INFO'] == '/favicon.ico':
respond('204 NO CONTENT', [])
return ['']
else:
return html_content(environ, respond)
def track_user(environ, respond):
"""Function used to handle the route: /track.js
This will print environ information about the user
to stdout and return back an empty string
"""
headers = [('Content-Type', 'application/javascript')]
respond('200 OK', headers)
prefixes = ['PATH_', 'HTTP', 'REQUEST', 'QUERY']
for key, value in environ.iteritems():
if any(key.startswith(prefix) for prefix in prefixes):
print '%s: %s' % (key, value)
return ['']
def html_content(environ, respond):
"""Function used to handle any route that is not /track.js
This will return to the user a very basic html page that has
a script that to call /track.js
"""
headers = [('Content-Type', 'text/html')]
respond('200 OK', headers)
return ['<html><head></head><body><h2>Welcome</h2><script src="/track.js"></script></body></html>\n']
if __name__ == '__main__':
try:
httpd = make_server('', 8000, tracking_server)
print 'Tracking Server Listening on Port 8000...'
httpd.serve_forever()
except KeyboardInterrupt:
print 'Exiting...'