"Core" move to dir

This commit is contained in:
Maxim Khomutov 2023-07-01 23:06:27 +03:00
parent 3639ec9371
commit b487c13bd3
9 changed files with 112 additions and 72 deletions

1
.gitignore vendored
View File

@ -129,3 +129,4 @@ dmypy.json
.pyre/
.idea/
/src/kuitoi.yml
.cmdhistory

View File

@ -1,11 +0,0 @@
# -*- coding: utf-8 -*-
__title__ = 'KuiToi-Server'
__description__ = 'BeamingDrive Multiplayer server compatible with BeamMP clients.'
__url__ = 'https://github.com/kuitoi/kuitoi-Server'
__version__ = '0.1.0'
__build__ = 36
__author__ = 'SantaSpeen'
__author_email__ = 'SantaSpeen@gmail.com'
__license__ = "FPA"
__copyright__ = 'Copyright 2022 © SantaSpeen (Maxim Khomutov)'

54
src/core/__init__.py Normal file
View File

@ -0,0 +1,54 @@
# Developed by KuiToi Dev
# File core.__init__.py
# Written by: SantaSpeen
# Version 0.1.0
# Licence: FPA
# (c) kuitoi.su 2023
__title__ = 'KuiToi-Server'
__description__ = 'BeamingDrive Multiplayer server compatible with BeamMP clients.'
__url__ = 'https://github.com/kuitoi/kuitoi-Server'
__version__ = '0.1.0'
__build__ = 36
__author__ = 'SantaSpeen'
__author_email__ = 'admin@kuitoi.su'
__license__ = "FPA"
__copyright__ = 'Copyright 2023 © SantaSpeen (Maxim Khomutov)'
import asyncio
from core import utils
from core.config_provider import ConfigProvider
from main import parser
from modules import Console
from core.core import start
from core.core import stop
loop = asyncio.get_event_loop()
console = Console(prompt_out=":")
log = utils.get_logger("init")
log.info("Hello from KuiToi-Server!")
args = parser.parse_args()
if args.version:
print(f"KuiToi-Server:\n\tVersion: {__version__}\n\tBuild: {__build__}")
exit(0)
config_path = "kuitoi.yml"
if args.config:
config_path = args.config
log.info(f"Use {config_path} for config.")
config_provider = ConfigProvider(config_path)
config = config_provider.open_config()
if config.Server['debug'] is True:
utils.set_debug_status()
log.info("Getting new loggen with DEBUG level!")
log = utils.get_logger("main")
log.debug("Debug mode enabled!")
log.debug(f"Server config: {config}")
console.builtins_hook()
console.logger_hook()
log.info("Initializing ready.")

View File

@ -1,17 +1,23 @@
# -*- coding: utf-8 -*-
# Developed by KuiToi Dev
# File core.config_provider.py
# Written by: SantaSpeen
# Version 1.0
# Licence: FPA
# (c) kuitoi.su 2023
import os
import yaml
import errors
class Config:
def __init__(self, auth=None, game=None, server=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": "The best description",
"port": 30814, "custom_ip": None, "debug": False}
"description": "This server uses KuiToi!",
"port": 30814, "server_ip": "0.0.0.0", "debug": False}
def __repr__(self):
return "%s(Auth=%r, Game=%r, Server=%r)" % (self.__class__.__name__, self.Auth, self.Game, self.Server)
@ -31,6 +37,8 @@ class ConfigProvider:
with open(self.config_patch, "r", encoding="utf-8") as f:
self.config = yaml.load(f.read(), yaml.Loader)
except yaml.YAMLError:
raise errors.BadConfigError("Your config file can't open as YAML.")
print("You have errors in the YAML syntax.")
print("Stopping server.")
exit(1)
return self.config

21
src/core/core.py Normal file
View File

@ -0,0 +1,21 @@
# Developed by KuiToi Dev
# File core.core.py
# Written by: SantaSpeen
# Version 0.1.0
# Licence: FPA
# (c) kuitoi.su 2023
import asyncio
from core import utils
log = utils.get_logger("core")
loop = asyncio.get_event_loop()
def start():
log.info("Start!")
def stop():
log.info("Goodbye!")

3
src/core/errors.py Normal file
View File

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
class BadConfigError(Exception): ...

View File

@ -1,3 +1,10 @@
# Developed by KuiToi Dev
# File core.utils.py
# Written by: SantaSpeen
# Version 0.1.0
# Licence: FPA
# (c) kuitoi.su 2023
import logging
import os

View File

@ -1,4 +0,0 @@
# -*- coding: utf-8 -*-
class BadConfigError(Exception):
...

View File

@ -1,17 +1,16 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Developed by KuiToi Dev
# File main.py
# Written by: SantaSpeen
# Version 0.1.0
# Licence: FPA
# (c) kuitoi.su 2023
import argparse
import asyncio
try:
from modules.console.src.console import Console, ConsoleIO
except ImportError:
Console, ConsoleIO = None, None
print("Clone with submodules!")
exit(1)
import __version__
import config_provider
import utils
from core import utils
parser = argparse.ArgumentParser(description='KuiToi-Server - BeamingDrive server compatible with BeamMP clients!')
parser.add_argument('-v', '--version', action="store_true", help='Print version and exit.', default=False)
@ -19,50 +18,12 @@ parser.add_argument('--config', help='Patch to config file.', nargs='?', default
log = utils.get_logger("main")
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
console = Console(prompt_out=":", async_loop=loop)
def init():
global log
log.info("Hello from KuiToi-Server!")
args = parser.parse_args()
if args.version:
print(f"KuiToi-Server:\n\tVersion: {__version__.__version__}\n\tBuild: {__version__.__build__}")
exit(0)
config_patch = "kuitoi.yml"
if args.config:
config_patch = args.config
log.info(f"Use {config_patch} for config.")
cp = config_provider.ConfigProvider(config_patch)
config = cp.open_config()
if config.Server['debug'] is True:
utils.set_debug_status()
log.info("Getting new loggen with DEBUG level!")
log = utils.get_logger("main")
log.debug("Debug mode enabled!")
log.debug(f"Server config: {config}")
console.builtins_hook()
console.logger_hook()
def start():
tasks = [
loop.create_task(console.async_run()),
]
loop.run_until_complete(asyncio.wait(tasks))
def end():
log.info("Goodbye!")
if __name__ == '__main__':
init()
import core
try:
start()
core.start()
except KeyboardInterrupt:
print("Exiting..")
end()
core.stop()