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
import io
import sys
from functools import partial
import rrdtool
@ -47,7 +48,7 @@ class RequestHandler(SimpleHTTPRequestHandler):
else:
title = 'monthly'
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"
self.wfile.write(data['image'])
break
@ -84,18 +85,23 @@ class RequestHandler(SimpleHTTPRequestHandler):
self.wfile.write('<img src="/graph/daily">'.encode('utf-8'))
self.wfile.write("</body></html>".encode('utf-8'))
def set_rrd_file(self, filename: str):
self.filename = filename
class CustomHandler(RequestHandler):
'''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_class = ThreadingHTTPServer
handler_class = partial(CustomHandler, rrdfilename)
httpd = server_class(server_address, handler_class)
httpd.handler_class.set_rrd_file(rrdfilename)
httpd.serve_forever()
def main():
if len(sys.argv) > 1:
server(rrdfilename=sys.argv[1])
server(sys.argv[1])
else:
server()