#!/usr/bin/python3 # This file is copyright under the latest version of the EUPL. # Please see LICENSE file for your rights under this license. import requests import cgi import cgitb import time import urllib.parse import sys # # LibreNMS HOST and API token # librenms_host = 'https://LIBRENMS_HOST' token = 'LIBRENMS_API_TOKEN' # # get form data # cgitb.enable() form = cgi.FieldStorage() if "device" in form and "interface" in form: timefrom = str(int(time.time()) - 28800) device = form.getvalue('device') interface = form.getvalue('interface') for i in range(0,9): device = device.replace(':' + str(i), '') device = urllib.parse.quote(device, safe='') interface = urllib.parse.quote(interface, safe='') url = librenms_host + '/api/v0/devices/' + device + '/ports/' + interface + '/port_bits?width=780&height=200&from=' + timefrom headers = {'X-Auth-Token': token} r = requests.get(url, headers = headers) # # if status code is 200, then print interface graph # if r.status_code == requests.codes.ok: # # LibreNMS must return something like an ID # If there is no ID, then just list all devices # print ("Content-Type: image/png") print () sys.stdout.flush() sys.stdout.buffer.write(r.content) else: print ('Content-Type: text/html') print () print ('error') # # handle all other errors by printing out error # else: print ('Content-Type: text/html') print () print ('error')