diff --git a/routerstats_httpd.py b/routerstats_httpd.py index c6f291e..8f574d8 100755 --- a/routerstats_httpd.py +++ b/routerstats_httpd.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 +'''httpd component of routerstats''' import logging from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer -import io import sys import os from functools import partial @@ -17,7 +17,9 @@ logging.basicConfig( datefmt='%Y-%m-%d %H:%M:%S') class RequestHandler(SimpleHTTPRequestHandler): + '''Extended SimpleHTTPRequestHandler''' def serve_png(self): + '''Give a client a png file''' self.send_response(200) self.send_header('Content-type', 'image/png') self.end_headers() @@ -51,17 +53,28 @@ class RequestHandler(SimpleHTTPRequestHandler): else: title = 'monthly' startstr = '--start=end-1M' - data = rrdtool.graphv("-", startstr, "--title=" + title, "DEF:in=" + self.rrdfile + ":net_dnat:AVERAGE", "DEF:out=" + self.rrdfile + ":loc-net:AVERAGE", "CDEF:result_in=in,UN,0,in,IF", "CDEF:tmp_out=out,UN,0,out,IF", "CDEF:result_out=tmp_out,-1,*", "AREA:result_in#00ff00:in", "AREA:result_out#0000ff:out") + data = rrdtool.graphv( + "-", + startstr, + "--title=" + title, + "DEF:in=" + self.rrdfile + ":net_dnat:AVERAGE", #pylint: disable=no-member + "DEF:out=" + self.rrdfile + ":loc-net:AVERAGE", #pylint: disable=no-member + "CDEF:result_in=in,UN,0,in,IF", + "CDEF:tmp_out=out,UN,0,out,IF", + "CDEF:result_out=tmp_out,-1,*", + "AREA:result_in#00ff00:in", + "AREA:result_out#0000ff:out") #, "--width", "1024", "--height", "600" self.wfile.write(data['image']) break except rrdtool.OperationalError as error: retries += 1 if retries > 10: - logging.error('Could not graphv the data: ' + str(error)) + logging.error('Could not graphv the data: %s', error) break def errorpage(self, errorcode, errormsg: str = ''): + '''Give client an errorpage''' self.send_response(errorcode) self.send_header('Content-type', 'text/plain') self.end_headers() @@ -69,6 +82,7 @@ class RequestHandler(SimpleHTTPRequestHandler): self.wfile.write(errormsg.encode('utf-8')) def do_GET(self): + '''Reply to a GET request''' if self.path == '/': self.send_response(200) self.send_header('Content-type', 'text/html') @@ -82,6 +96,7 @@ class RequestHandler(SimpleHTTPRequestHandler): self.send_error(404, str(self.path)) def print_page(self): + '''Print pretty html page''' self.wfile.write("
".encode('utf-8')) self.wfile.write('