mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-01 19:28:00 +00:00
118 lines
3.5 KiB
Python
Executable File
118 lines
3.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
This is a small python webserver intended to run on a testing network resource
|
|
where the lf_kinstall.pl script can post build machine information to. A useful
|
|
place to install this script would be on an APU2 being used as a VPN gateway.
|
|
|
|
Use these commands to install the script:
|
|
|
|
$ sudo cp label-printer.py /usr/local/bin
|
|
$ sudo chmod a+x /usr/local/bin/label-printer.py
|
|
|
|
$ sudo cp label-printer.service /lib/systemd/system
|
|
$ sudo systemctl add-wants multi-user.target label-printer.service
|
|
$ sudo systemctl daemon-reload
|
|
$ sudo systemctl restart label-printer.service
|
|
|
|
At this point, if you use `ss -ntlp` you should see this script listening on port 8082.
|
|
|
|
If you are running ufw on your label-printer host, please use this command to allow
|
|
traffice to port 8082:
|
|
$ sudo ufw allow 8082/tcp
|
|
$ sudo ufw reload
|
|
|
|
Using kinstall to print labels:
|
|
|
|
$ ./lf_kinstall.pl --print-label http://192.168.9.1:8082/
|
|
|
|
|
|
"""
|
|
import logging
|
|
from http import server
|
|
from http.server import HTTPServer, BaseHTTPRequestHandler
|
|
from ssl import wrap_socket
|
|
from urllib.parse import urlparse, parse_qs
|
|
import pprint
|
|
from pprint import pprint
|
|
|
|
class LabelPrinterRequestHandler(BaseHTTPRequestHandler):
|
|
def do_HEAD(self):
|
|
self.send_response(200);
|
|
self.send_header("Content-type", "text/html")
|
|
self.end_headers()
|
|
|
|
def do_GET(self):
|
|
self.send_response(200);
|
|
self.send_header("Content-type", "text/html")
|
|
self.end_headers()
|
|
|
|
def do_POST(self):
|
|
hostname = "";
|
|
mac_address = "";
|
|
model = "";
|
|
serial = "";
|
|
|
|
length = int(self.headers['Content-Length'])
|
|
field_data = self.rfile.read(length)
|
|
print("Field_data: %s\n"%field_data);
|
|
fields = parse_qs(field_data)
|
|
pprint(fields)
|
|
|
|
for name in fields:
|
|
print("key %s"%name)
|
|
|
|
if "mac" in fields:
|
|
mac_address = fields["mac"]
|
|
else:
|
|
self.send_response(400)
|
|
self.send_header("X-Error", "mac address not submitted")
|
|
self.end_headers();
|
|
self.wfile.write(b"Bullshit\n");
|
|
return
|
|
|
|
if "model" in fields:
|
|
model = fields["model"]
|
|
else:
|
|
self.send_response(400)
|
|
self.send_header("X-Error", "missing model name")
|
|
self.wfile.write(b"Bullshit\n");
|
|
return
|
|
|
|
if (mac_address is None) or ("" == mac_address):
|
|
self.send_resonse(400)
|
|
self.send_header("X-Error", "mac address empty or unset")
|
|
self.end_headers()
|
|
self.wfile.write(b"missing mac address")
|
|
self.wfile.write(b"Bullshit\n");
|
|
return
|
|
|
|
if (model is None) or (model == ""):
|
|
self.send_reponse(400)
|
|
self.send_header("X-Error", "missing model name")
|
|
self.end_headers()
|
|
self.wfile.write(b"missing model name")
|
|
return
|
|
|
|
if fields[hostname] is None:
|
|
hostname = "%s-%s"%(model, mac.substr(-5).replace(":", ""))
|
|
else:
|
|
hostname = fields[hostname]
|
|
|
|
print("HOSTNAME "+hostname)
|
|
|
|
self.send_response(200);
|
|
self.send_header("Content-type", "text/html")
|
|
self.end_headers()
|
|
print("I'm in POST")
|
|
|
|
|
|
def __main__():
|
|
logging.info("Main Method. Creating CGI Handler")
|
|
httpd = HTTPServer(('', 8082), LabelPrinterRequestHandler)
|
|
print("Starting LabelPrinter service...")
|
|
httpd.serve_forever()
|
|
|
|
if __name__ == "__main__":
|
|
__main__()
|
|
|