Mercurial > templog
diff web/templog.py @ 345:a3473b5ea50e
merge
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Sat, 16 Jun 2012 09:08:47 +0800 |
parents | ea1779d27641 |
children | 9b5b202129c3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/templog.py Sat Jun 16 09:08:47 2012 +0800 @@ -0,0 +1,66 @@ +#!/usr/bin/env python2.7 + +import binascii +import hmac +import zlib +import datetime +import time + +import bottle +from bottle import route, request, response + +import config +import log + +@route('/update', method='post') +def update(): + enc_lines = request.forms.lines + mac = request.forms.hmac + + if hmac.new(config.HMAC_KEY, enc_lines).hexdigest() != mac: + raise HTTPError(code = 403, output = "Bad key") + + lines = zlib.decompress(binascii.a2b_base64(enc_lines)).split('\n') + + log.parse(lines) + + return "OK" + +@route('/graph.png') +def graph(): + # url takes time in hours or days + if 'day' in request.query: + start_day = datetime.datetime.strptime(request.query.day, '%Y%m%d') + start = time.mktime(start_day.timetuple()) + length = int(request.query.length) * 3600 * 24 + else: + start_hour = datetime.datetime.strptime(request.query.hour, '%Y%m%d%H') + start = time.mktime(start_hour.timetuple()) + length = int(request.query.length) * 3600 + + response.set_header('Content-Type', 'image/png') + return log.graph_png(start, length) + +@route('/') +def top(): + return bottle.template('top', urlparams=request.query_string) + +@route('/test') +def test(): + import config + import os + f = open('%s/testout' % config.DATA_PATH, 'a+') + f.write("more") + f.flush() + f.close() + + return 'done' + +def main(): + bottle.debug(True) + bottle.run(port=9999, reloader=True) + +if __name__ == '__main__': + main() + +