mirror of
https://github.com/WGDashboard/WGDashboard-PRW.git
synced 2026-08-04 15:02:59 +00:00
chore: remnant changes
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
#!/bin/env python3
|
||||
|
||||
import logging as log
|
||||
|
||||
import configparser as cp
|
||||
import os
|
||||
|
||||
class config_utils():
|
||||
@staticmethod
|
||||
def search_known_paths() -> tuple[bool, str]:
|
||||
'''
|
||||
Look at predefined paths on the filesystem for a config file
|
||||
'''
|
||||
|
||||
possible_config_locations = [
|
||||
"./config.ini",
|
||||
f"{os.getenv('HOME')}/.config/wgdashboard/config.ini",
|
||||
"/etc/wgdashboard/config.ini",
|
||||
]
|
||||
|
||||
try:
|
||||
for path in possible_config_locations:
|
||||
if os.path.exists(path):
|
||||
return True, path
|
||||
else:
|
||||
continue
|
||||
return False, ''
|
||||
|
||||
except Exception as err:
|
||||
return False, ''
|
||||
|
||||
@staticmethod
|
||||
def read_data(config_path) -> tuple[bool, dict]:
|
||||
config = cp.ConfigParser()
|
||||
|
||||
try:
|
||||
config.read(config_path)
|
||||
|
||||
if len(config.sections()) == 0:
|
||||
return False, {}
|
||||
|
||||
config_dict = {}
|
||||
for section in config.sections():
|
||||
new_items = {}
|
||||
|
||||
for key, value in config.items(section):
|
||||
key = key.lower()
|
||||
val = value.strip().lower()
|
||||
|
||||
if val == 'true':
|
||||
value = True
|
||||
elif val == 'false':
|
||||
value = False
|
||||
|
||||
new_items[key] = value
|
||||
|
||||
config_dict[section.lower()] = new_items
|
||||
|
||||
return True, config_dict
|
||||
|
||||
except cp.ParsingError as err:
|
||||
return False, {}
|
||||
|
||||
@staticmethod
|
||||
def find_section(config_data: dict, target_section: str) -> bool:
|
||||
if target_section not in config_data:
|
||||
log.error("target section not in the config")
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
@staticmethod
|
||||
def find_key(config_data: dict, target_section: str, target_key: str) -> bool:
|
||||
if target_key not in config_data[target_section]:
|
||||
log.error("target key not in the config")
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
@staticmethod
|
||||
def write_key(config_data: dict, target_section: str, target_key: str, new_value: str) -> bool:
|
||||
config_data[target_section][target_key] = new_value
|
||||
|
||||
config = cp.ConfigParser()
|
||||
|
||||
for section, values in config_data.items():
|
||||
config[section] = {}
|
||||
for key, value in values.items():
|
||||
config[section][key] = str(value)
|
||||
|
||||
try:
|
||||
ok, candidate_path = config_utils.search_known_paths()
|
||||
if not ok:
|
||||
log.error("failed to retrieve a valid path for the config")
|
||||
return False
|
||||
|
||||
with open(candidate_path, "w") as f:
|
||||
config.write(f)
|
||||
|
||||
return True
|
||||
|
||||
except Exception as err:
|
||||
log.info("exception occured",err)
|
||||
return False
|
||||
Reference in New Issue
Block a user