Update config_provider

This commit is contained in:
Maxim Khomutov 2023-07-19 21:04:05 +03:00
parent ea2d715cae
commit 2a2d55946e
8 changed files with 37 additions and 22 deletions

View File

@ -90,7 +90,7 @@ class Client:
return
# TODO: i18n
self.log.info(f"Kicked with reason: \"{reason}\"")
await self._send(b"K" + bytes(reason, "utf-8"))
await self._send(f"K{reason}")
self.__alive = False
async def send_message(self, message, to_all=True):
@ -108,7 +108,7 @@ class Client:
# size data
if type(data) == str:
data = bytes(data, "utf-8")
data = bytes(data, config.enc)
if to_all:
code = chr(data[0])
@ -266,7 +266,7 @@ class Client:
while self.__alive:
data = await self._recv(True)
if data.startswith(b"f"):
file = data[1:].decode("utf-8")
file = data[1:].decode(config.enc)
# TODO: i18n
self.log.info(f"Requested mode: {file!r}")
size = -1
@ -328,11 +328,11 @@ class Client:
if len(mod_list) == 0:
await self._send(b"-")
else:
await self._send(bytes(mod_list, "utf-8"))
await self._send(mod_list)
elif data == b"Done":
for c in range(int(config.Game['max_cars'] * 2.3)):
self._cars.append(None)
await self._send(b"M/levels/" + bytes(config.Game['map'], 'utf-8') + b"/info.json")
await self._send(f"M/levels/{config.Game['map']}/info.json")
self.log.info(f"Syncing time: {time.monotonic() - tsr}")
break
return

View File

@ -46,17 +46,17 @@ if args.config:
config_provider = ConfigProvider(config_path)
config = config_provider.open_config()
builtins.config = config
if config.Server['debug'] is True:
if config.Options['debug'] is True:
utils.set_debug_status()
log.info("Debug enabled!")
log = get_logger("core.init")
log.debug("Debug mode enabled!")
log.debug(f"Server config: {config}")
config.enc = config.Options['encoding']
# i18n init
log.debug("Initializing i18n...")
ml = MultiLanguage()
ml.set_language(args.language or config.Server['language'])
ml.set_language(args.language or config.Options['language'])
ml.builtins_hook()
log.debug("Initializing EventsSystem...")

View File

@ -105,7 +105,7 @@ class Core:
if not client.ready:
client.is_disconnected()
continue
await client._send(bytes(ca, "utf-8"))
await client._send(ca)
except Exception as e:
self.log.error("Error in check_alive.")
self.log.exception(e)

View File

@ -33,11 +33,15 @@ if os.path.exists(log_file):
if os.path.exists(file):
tar.add(file, os.path.basename(file))
os.remove(file)
fh = logging.FileHandler(log_file, encoding='utf-8')
fh = logging.FileHandler(log_file, encoding="utf-8")
fh.setFormatter(logging.Formatter(log_format))
def get_logger(name):
try:
fh.encoding = config.enc
except NameError:
fh.encoding = "utf-8"
log = logging.getLogger(name=name)
log.addHandler(fh)
log.level = log_level

View File

@ -1,8 +1,17 @@
import secrets
class Config:
Auth: dict
Game: dict
Server: dict
WebAPI: dict
def __init__(self, auth=None, game=None, server=None, options=None, web=None):
self.Auth = auth or {"key": None, "private": True}
self.Game = game or {"map": "gridmap_v2", "players": 8, "max_cars": 1}
self.Server = server or {"name": "KuiToi-Server", "description": "Welcome to KuiToi Server!",
"server_ip": "0.0.0.0", "server_port": 30814}
self.Options = options or {"language": "en", "encoding": "utf8", "speed_limit": 0, "use_queue": False,
"debug": False}
self.WebAPI = web or {"enabled": False, "server_ip": "127.0.0.1", "server_port": 8433,
"secret_key": secrets.token_hex(16)}
def __repr__(self):
return "%s(Auth=%r, Game=%r, Server=%r)" % (self.__class__.__name__, self.Auth, self.Game, self.Server)
class config (Config): ...

View File

@ -1,9 +1,8 @@
# -*- coding: utf-8 -*-
# Developed by KuiToi Dev
# File modules.config_provider.config_provider.py
# Written by: SantaSpeen
# Version 1.0
# Version 1.1
# Licence: FPA
# (c) kuitoi.su 2023
import os
@ -11,13 +10,14 @@ import secrets
import yaml
class Config:
def __init__(self, auth=None, game=None, server=None, web=None):
def __init__(self, auth=None, game=None, server=None, options=None, web=None):
self.Auth = auth or {"key": None, "private": True}
self.Game = game or {"map": "gridmap_v2", "players": 8, "max_cars": 1}
self.Server = server or {"name": "KuiToi-Server", "description": "Welcome to KuiToi Server!", "language": "en",
"server_ip": "0.0.0.0", "server_port": 30814, "debug": False}
self.Server = server or {"name": "KuiToi-Server", "description": "Welcome to KuiToi Server!",
"server_ip": "0.0.0.0", "server_port": 30814}
self.Options = options or {"language": "en", "encoding": "utf-8", "speed_limit": 0, "use_queue": False,
"debug": False}
self.WebAPI = web or {"enabled": False, "server_ip": "127.0.0.1", "server_port": 8433,
"secret_key": secrets.token_hex(16)}

View File

@ -99,7 +99,7 @@ class PluginsLoader:
plugin.print = print
file_path = os.path.join(self.plugins_dir, file)
plugin.__file__ = file_path
with open(f'{file_path}', 'r', encoding="utf-8") as f:
with open(f'{file_path}', 'r', encoding=config.enc) as f:
code = f.read()
exec(code, plugin.__dict__)

View File

@ -68,7 +68,9 @@ class i18n:
class MultiLanguage:
def __init__(self, language: str = None, files_dir="modules/i18n/files/", encoding="utf-8"):
def __init__(self, language: str = None, files_dir="modules/i18n/files/", encoding=None):
if encoding is None:
encoding = config.enc
if language is None:
language = "en"
self.__data = {}