diff --git a/Makefile b/Makefile index effcc13..bfc6eae 100644 --- a/Makefile +++ b/Makefile @@ -170,7 +170,6 @@ installdtmf : qndtmf installdash : /usr/bin/apt-get -y install python3-pip - /usr/bin/pip3 install libconf /bin/cp -f dash/qng-info.py $(BINDIR) /bin/cp -f dash/qngdash $(CRONDIR) /bin/sh /usr/bin/python3 $(BINDIR)/qng-info.py & diff --git a/dash/qng-info.py b/dash/qng-info.py index e6ce226..f0a13d3 100755 --- a/dash/qng-info.py +++ b/dash/qng-info.py @@ -3,7 +3,6 @@ import socket import datetime import csv import configparser -import libconf import json import requests import subprocess @@ -20,10 +19,11 @@ html = """

This status page shows the Callsign, Frequency, IP address and Connected Reflector for the QnetGateway D-Star Hotspot.

Callsign: {1}
-Frequency: {2}MHz
-IP Address: {3}
-External IP Address: {4}
-Reflector: {5}

+Modem: {2}
+Frequency: {3}MHz
+IP Address: {4}
+External IP Address: {5}
+Reflector: {6}

Note: Please enter a valid 7 character reflector code.
Link Reflector:
@@ -35,73 +35,87 @@ html = """ """ data = [] def get_ip(): - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - try: - # doesn't even have to be reachable - s.connect(('10.255.255.255', 1)) - IP = s.getsockname()[0] - except: - IP = '127.0.0.1' - finally: - s.close() - return IP - + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + try: + # doesn't even have to be reachable + s.connect(('10.255.255.255', 1)) + IP = s.getsockname()[0] + except: + IP = '127.0.0.1' + finally: + s.close() + return IP def get_data(): - global data - data = [] - reflector = "Unlinked" - with open('/usr/local/etc/RPTR_STATUS.txt') as csvfile: - readCSV = csv.reader(csvfile, delimiter=',') - for row in readCSV: - reflector = row[1] + row[2] - data.append(cs) - data.append(freq) - data.append(intip) - data.append(extip) - data.append(reflector) - return data + global data + data = [] + reflector = "Unlinked" + with open('/usr/local/etc/rptr_status') as csvfile: + readCSV = csv.reader(csvfile, delimiter=',') + for row in readCSV: + reflector = row[1] + row[2] + data.append(cs) + data.append(modem) + data.append(freq) + data.append(intip) + data.append(extip) + data.append(reflector) + return data def get_MMDVM(): - MMDVM_config = configparser.ConfigParser() - MMDVM_config.read('/usr/local/etc/MMDVM.qn') - rawfreq = MMDVM_config['Info']['txfrequency'] - freq = float(rawfreq)/1000000 - return freq + MMDVM_config = configparser.ConfigParser() + MMDVM_config.read('/usr/local/etc/MMDVM.qn') + rawfreq = MMDVM_config['Info']['txfrequency'] + freq = float(rawfreq)/1000000 + return freq intip = get_ip() extip = requests.get('https://ipapi.co/json/').json()['ip'] -with open('/usr/local/etc/qn.cfg') as f: - config = libconf.load(f) -cs = config.ircddb.login -for key in config.module: - module = key - if config['module'][key]['type'] == 'mmdvm': - freq = get_MMDVM() - else: - freq = config['module'][key]['frequency'] + +cfg = dict() +with open('/usr/local/etc/qn.cfg', 'r') as f: + for line in f: + if line.strip()[0] == "#": + continue + kv = line.strip().split("=") + cfg[kv[0]] = kv[1].strip("'") + +cs = cfg['ircddb_login'] +for module in ( 'a', 'b', 'c' ): + key = 'module_' + module + if key in cfg: + modem = cfg[key] + if modem == 'mmdvmhost': + freq = get_MMDVM() + elif key + "_tx_frequency" in cfg: + freq = cfg[key + "_tx_frequency"] + elif key + "_frequency" in cfg: + freq = cfg[key + "_frequency"] + else: + freq = 0.0 + break #Setup Socket WebServer s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('', 80)) s.listen(5) while True: - conn, addr = s.accept() - request = conn.recv(1024) - request = str(request) - UNLINK = request.find('/?UNLINK=UL') - if UNLINK == 6: - unlink = "/usr/local/bin/qnremote " + module + " " + cs + " U" - subprocess.Popen(unlink.split()) - sleep(8) - LINK = request.find('/?LINK=') - if LINK == 6: - refl = request[13:20].upper() - link = "/usr/local/bin/qnremote " + module + " " + cs + " " + refl + "L" - subprocess.Popen(link.split()) - sleep(8) + conn, addr = s.accept() + request = conn.recv(1024) + request = str(request) + UNLINK = request.find('/?UNLINK=UL') + if UNLINK == 6: + unlink = "/usr/local/bin/qnremote " + module + " " + cs + " U" + subprocess.Popen(unlink.split()) + sleep(8) + LINK = request.find('/?LINK=') + if LINK == 6: + refl = request[13:20].upper() + link = "/usr/local/bin/qnremote " + module + " " + cs + " " + refl + "L" + subprocess.Popen(link.split()) + sleep(8) - data = get_data() - response = html.format(data[2], data[0], data[1], data[2], data[3], data[4]) - conn.send(bytes(response, "UTF-8")) - conn.close() + data = get_data() + response = html.format(data[3], data[0], data[1], data[2], data[3], data[4], data[5]) + conn.send(bytes(response, "UTF-8")) + conn.close()