summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoberto Hueso Gómez <rhueso@soleta.eu>2020-05-13 14:10:01 +0200
committerRoberto Hueso Gómez <rhueso@soleta.eu>2020-05-13 14:10:01 +0200
commit38b6d77561c87cb427b21b811ce10208f2eb5b1a (patch)
treec091b3e6db41fff548f7c00b905d0dbc5a7e70cd
parent404b8c79d070a027503cb8792888817eb800b396 (diff)
Switch config file to json
This patch makes configuration parsing easier as well as making the full configuration available in many subclasses.
-rw-r--r--cfg/ogclient.cfg15
-rw-r--r--cfg/ogclient.json19
-rwxr-xr-xmain.py30
-rw-r--r--src/ogClient.py25
-rw-r--r--src/ogRest.py9
5 files changed, 51 insertions, 47 deletions
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()