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

View File

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

View File

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

View File

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

View File

@ -1,8 +1,17 @@
import secrets
class Config: class Config:
Auth: dict def __init__(self, auth=None, game=None, server=None, options=None, web=None):
Game: dict self.Auth = auth or {"key": None, "private": True}
Server: dict self.Game = game or {"map": "gridmap_v2", "players": 8, "max_cars": 1}
WebAPI: dict 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): def __repr__(self):
return "%s(Auth=%r, Game=%r, Server=%r)" % (self.__class__.__name__, self.Auth, self.Game, self.Server) return "%s(Auth=%r, Game=%r, Server=%r)" % (self.__class__.__name__, self.Auth, self.Game, self.Server)
class config (Config): ... class config (Config): ...

View File

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

View File

@ -99,7 +99,7 @@ class PluginsLoader:
plugin.print = print plugin.print = print
file_path = os.path.join(self.plugins_dir, file) file_path = os.path.join(self.plugins_dir, file)
plugin.__file__ = file_path 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() code = f.read()
exec(code, plugin.__dict__) exec(code, plugin.__dict__)

View File

@ -68,7 +68,9 @@ class i18n:
class MultiLanguage: 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: if language is None:
language = "en" language = "en"
self.__data = {} self.__data = {}