Add wrapper, so we can get an __init__ in that does what I expect:)

This commit is contained in:
2024-05-20 17:52:29 +02:00
parent 285e725e98
commit fd23236d49

View File

@@ -4,6 +4,7 @@ import logging
from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer
import io import io
import sys import sys
from functools import partial
import rrdtool import rrdtool
@@ -47,7 +48,7 @@ class RequestHandler(SimpleHTTPRequestHandler):
else: else:
title = 'monthly' title = 'monthly'
startstr = '--start=end-1M' startstr = '--start=end-1M'
data = rrdtool.graphv("-", startstr, "--title=" + title, "DEF:in=" + self.filename + ":net_dnat:AVERAGE", "DEF:out=" + self.filename + ":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.rrdfilename + ":net_dnat:AVERAGE", "DEF:out=" + self.rrdfilename + ":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")
#, "--width", "1024", "--height", "600" #, "--width", "1024", "--height", "600"
self.wfile.write(data['image']) self.wfile.write(data['image'])
break break
@@ -84,18 +85,23 @@ class RequestHandler(SimpleHTTPRequestHandler):
self.wfile.write('<img src="/graph/daily">'.encode('utf-8')) self.wfile.write('<img src="/graph/daily">'.encode('utf-8'))
self.wfile.write("</body></html>".encode('utf-8')) self.wfile.write("</body></html>".encode('utf-8'))
def set_rrd_file(self, filename: str): class CustomHandler(RequestHandler):
self.filename = filename '''wrapping the wrapped one, so we can wrap in an init'''
def __init__(self, rrdfilename, *args, **kwargs):
self.rrdfilename = rrdfilename
super().__init__(*args, **kwargs)
def server(server_class=ThreadingHTTPServer, handler_class=RequestHandler, rrdfilename="test.rrd"):
def server(rrdfilename="test.rrd"):
server_address = ('', 8000) server_address = ('', 8000)
server_class = ThreadingHTTPServer
handler_class = partial(CustomHandler, rrdfilename)
httpd = server_class(server_address, handler_class) httpd = server_class(server_address, handler_class)
httpd.handler_class.set_rrd_file(rrdfilename)
httpd.serve_forever() httpd.serve_forever()
def main(): def main():
if len(sys.argv) > 1: if len(sys.argv) > 1:
server(rrdfilename=sys.argv[1]) server(sys.argv[1])
else: else:
server() server()