Switch config file to json

This patch makes configuration parsing easier as well as making the full
configuration available in many subclasses.
more_events
Roberto Hueso Gómez 2020-05-13 14:10:01 +02:00
parent 404b8c79d0
commit 38b6d77561
5 changed files with 51 additions and 47 deletions

View File

@ -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

19
cfg/ogclient.json 100644
View File

@ -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"
}
}

30
main.py
View File

@ -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()

View File

@ -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

View File

@ -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()