From 38b6d77561c87cb427b21b811ce10208f2eb5b1a Mon Sep 17 00:00:00 2001 From: Roberto Hueso Gómez Date: Wed, 13 May 2020 14:10:01 +0200 Subject: Switch config file to json This patch makes configuration parsing easier as well as making the full configuration available in many subclasses. --- cfg/ogclient.cfg | 15 --------------- cfg/ogclient.json | 19 +++++++++++++++++++ main.py | 30 ++++++++++++------------------ src/ogClient.py | 25 +++++++++++++++---------- src/ogRest.py | 9 +++++---- 5 files changed, 51 insertions(+), 47 deletions(-) delete mode 100644 cfg/ogclient.cfg create mode 100644 cfg/ogclient.json diff --git a/cfg/ogclient.cfg b/cfg/ogclient.cfg deleted file mode 100644 index 634382d..0000000 --- a/cfg/ogclient.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[opengnsys] -ip=127.0.0.1 -url=https://127.0.0.1/opengnsys/varios/menubrowser.php -url_log=http://localhost/cgi-bin/httpd-log.sh -port=8889 -# Log Level, if ommited, will be set to INFO -log=DEBUG -# Supported modes are 'virtual' and 'linux' -mode=linux - -# User and password for all samba repositories. This user requires read and -# write permission. -[samba] -user=opengnsys -pass=og diff --git a/cfg/ogclient.json b/cfg/ogclient.json new file mode 100644 index 0000000..047ec6d --- /dev/null +++ b/cfg/ogclient.json @@ -0,0 +1,19 @@ +{ + "opengnsys": { + "ip": "127.0.0.1", + "port": 8889, + "log": "DEBUG", + "mode": "linux", + "url": "https://127.0.0.1/opengnsys/varios/menubrowser.php", + "url_log": "http://localhost/cgi-bin/httpd-log.sh" + }, + "samba": { + "activate": true + "user": "opengnsys", + "pass": "og" + }, + "vnc": { + "activate": true, + "pass": "ogvnc" + } +} diff --git a/main.py b/main.py index e6cacf5..37d623e 100755 --- a/main.py +++ b/main.py @@ -8,6 +8,7 @@ # Free Software Foundation, version 3. # +import json import subprocess from src.ogClient import * from src.ogConfig import * @@ -15,27 +16,20 @@ from signal import signal, SIGPIPE, SIG_DFL def main(): signal(SIGPIPE, SIG_DFL) - ogconfig = ogConfig() - config_path = f'{ogConfig.OG_PATH}ogclient/cfg/ogclient.cfg' - if (not ogconfig.parser_file(config_path)): - print ('Error: Parsing configuration file') + config_path = f'{ogConfig.OG_PATH}ogclient/cfg/ogclient.json' + try: + with open(config_path, 'r') as f: + CONFIG = json.load(f) + except: + print('Error: Parsing configuration file') return 0 - ip = ogconfig.get_value_section('opengnsys', 'ip') - port = ogconfig.get_value_section('opengnsys', 'port') - url = ogconfig.get_value_section('opengnsys', 'url') - mode = ogconfig.get_value_section('opengnsys', 'mode') - samba_user = ogconfig.get_value_section('samba', 'user') - samba_pass = ogconfig.get_value_section('samba', 'pass') + MODE = CONFIG['opengnsys']['mode'] + URL = CONFIG['opengnsys']['url'] + if MODE == 'linux': + proc = subprocess.Popen(["browser", "-qws", URL]) - samba_config = None - - if mode == 'linux': - proc = subprocess.Popen(["browser", "-qws", url]) - elif mode == 'virtual': - samba_config = {'user': samba_user, 'pass': samba_pass} - - client = ogClient(ip, int(port), mode, samba_config) + client = ogClient(config=CONFIG) client.connect() client.run() diff --git a/src/ogClient.py b/src/ogClient.py index ff2c704..fec8eb9 100644 --- a/src/ogClient.py +++ b/src/ogClient.py @@ -11,6 +11,7 @@ import select import socket import time import email +import platform from io import StringIO from src.restRequest import * @@ -23,19 +24,23 @@ class State(Enum): FORCE_DISCONNECTED = 2 class ogClient: - def __init__(self, ip, port, mode, samba_config=None): - if mode not in {'virtual', 'linux'}: + def __init__(self, config): + self.CONFIG = config + + self.mode = self.CONFIG['opengnsys']['mode'] + if self.mode not in {'virtual', 'linux'}: raise ValueError('Mode not supported.') + if self.mode == 'linux' and platform.system() != 'Linux': + raise ValueError('Linux mode not supported on ' + 'non-Linux platform.') - if samba_config: - assert('user' in samba_config) - assert('pass' in samba_config) + if self.CONFIG['samba']['activate']: + assert('user' in self.CONFIG['samba']) + assert('pass' in self.CONFIG['samba']) - self.ip = ip - self.port = port - self.mode = mode - self.samba_config = samba_config - self.ogrest = ogRest(self.mode, self.samba_config) + self.ip = self.CONFIG['opengnsys']['ip'] + self.port = self.CONFIG['opengnsys']['port'] + self.ogrest = ogRest(self.CONFIG) def get_socket(self): return self.sock diff --git a/src/ogRest.py b/src/ogRest.py index abe05c1..14b9d33 100644 --- a/src/ogRest.py +++ b/src/ogRest.py @@ -242,14 +242,15 @@ class ogResponses(Enum): SERVICE_UNAVAILABLE=5 class ogRest(): - def __init__(self, mode, samba_config): + def __init__(self, config): self.proc = None self.terminated = False self.state = ThreadState.IDLE - self.mode = mode - self.samba_config = samba_config + self.CONFIG = config + self.mode = self.CONFIG['opengnsys']['mode'] + self.samba_config = self.CONFIG['samba'] - if self.mode == 'linux' and platform.system() == 'Linux': + if self.mode == 'linux': self.operations = OgLinuxOperations() elif self.mode == 'virtual': self.operations = OgVirtualOperations() -- cgit v1.2.3-18-g5258