Compare commits

...

7 Commits

Author SHA1 Message Date
3f688df30b Change version to 0.2.0 2023-07-12 20:28:41 +03:00
52c9370c6d Optimize imports 2023-07-12 20:28:22 +03:00
b654d62b30 Remove try block 2023-07-12 20:25:10 +03:00
aab20c17a1 Refactoring 2023-07-12 20:24:56 +03:00
9518fcad11 Minor update 2023-07-12 20:24:38 +03:00
bab45674e8 Changed to Alpha 2023-07-12 20:24:08 +03:00
50de09633e Disable UDP Server for now.. 2023-07-12 20:21:57 +03:00
9 changed files with 45 additions and 44 deletions

View File

@ -1,7 +1,7 @@
# KuiToi-Server
## About
**_[In deep developing...]_** \
**_[Status: Alpha]_** \
BeamingDrive Multiplayer (BeamMP) server compatible with BeamMP clients.
## TODOs

View File

@ -1,7 +1,8 @@
# Developed by KuiToi Dev
# File core.__init__.py
# Written by: SantaSpeen
# Version 1.2
# Version 1.3
# Core version: 0.2.0
# Licence: FPA
# (c) kuitoi.su 2023
# Special thanks to: AI Sage(https://poe.com/Sage), AI falcon-40b-v7(https://OpenBuddy.ai)
@ -9,8 +10,8 @@
__title__ = 'KuiToi-Server'
__description__ = 'BeamingDrive Multiplayer server compatible with BeamMP clients.'
__url__ = 'https://github.com/kuitoi/kuitoi-Server'
__version__ = '0.1.6'
__build__ = 458
__version__ = '0.2.0'
__build__ = 776
__author__ = 'SantaSpeen'
__author_email__ = 'admin@kuitoi.su'
__license__ = "FPA"

View File

@ -1,13 +1,11 @@
# Developed by KuiToi Dev
# File core.core.py
# Written by: SantaSpeen
# Version 0.1.6
# Version 0.2.0
# Licence: FPA
# (c) kuitoi.su 2023
import asyncio
import os
import time
import traceback
import zlib
from threading import Thread
@ -226,7 +224,8 @@ class Core:
while self.run:
data = {"uuid": config.Auth["key"], "players": len(self.clients), "maxplayers": config.Game["players"],
"port": config.Server["server_port"], "map": f"/levels/{config.Game['map']}/info.json",
"private": config.Auth['private'], "version": self.BEAMP_version, "clientversion": self.client_major_version,
"private": config.Auth['private'], "version": self.BEAMP_version,
"clientversion": self.client_major_version,
"name": config.Server["name"], "modlist": modlist, "modstotalsize": modstotalsize,
"modstotal": modstotal, "playerslist": "", "desc": config.Server['description'], "pass": False}
self.log.debug(f"Auth: data {data}")
@ -283,11 +282,10 @@ class Core:
await asyncio.sleep(5)
async def main(self):
try:
self.run = True
self.tcp = self.tcp(self, self.server_ip, self.server_port)
self.udp = self.udp(self, self.server_ip, self.server_port)
try:
# WebApi Start
if config.WebAPI["enabled"]:
self.log.debug("Initializing WebAPI...")
@ -312,8 +310,11 @@ class Core:
self.log.info(f"Loaded {lmods} mods: {round(self.mods_list[0] / MB, 2)}mb")
await self.authenticate(True)
tasks = [self.tcp.start(), self.udp.start(), console.start(),
self.stop_me(), self.authenticate(),] # self.check_alive()
tasks = []
# self.check_alive()
nrtasks = [self.tcp.start, self.udp.start, console.start, self.stop_me, self.authenticate, ]
for task in nrtasks:
tasks.append(asyncio.create_task(task()))
t = asyncio.wait(tasks, return_when=asyncio.FIRST_EXCEPTION)
self.log.info(i18n.start)
@ -322,10 +323,12 @@ class Core:
# Wait the end.
except Exception as e:
self.log.error(f"Exception: {e}")
traceback.print_exc()
self.log.exception(e)
except KeyboardInterrupt:
pass
finally:
self.tcp.stop()
self.udp.stop()
self.run = False
def start(self):

View File

@ -1,7 +1,7 @@
# Developed by KuiToi Dev
# File core.core.pyi
# Written by: SantaSpeen
# Version 0.1.6
# Version 0.2.0
# Licence: FPA
# (c) kuitoi.su 2023
import asyncio

View File

@ -1,7 +1,7 @@
# Developed by KuiToi Dev
# File core.tcp_server.py
# Written by: SantaSpeen
# Version 0.1.6
# Version 0.2.0
# Licence: FPA
# (c) kuitoi.su 2023
import asyncio
@ -32,7 +32,7 @@ class TCPServer:
await client.kick("Outdated Version.")
return False, None
else:
await client.tcp_send(b"A") # Accepted client version
await client.tcp_send(b"S") # Accepted client version
data = await client.recv()
self.log.debug(f"recv2 data: {data}")
@ -58,7 +58,7 @@ class TCPServer:
await client.kick('Invalid authentication data! Try to connect in 5 minutes.')
# TODO: Password party
# await client.tcp_send(b"S") # Ask client key
# await client.tcp_send(b"S") # Ask client key (How?)
ev.call_event("on_auth", client)
@ -113,18 +113,17 @@ class TCPServer:
async def start(self):
self.log.debug("Starting TCP server.")
try:
server = await asyncio.start_server(self.handle_client, self.host, self.port,
backlog=config.Game["players"] + 1)
try:
except OSError as e:
self.log.error(f"Error: {e}")
self.Core.run = False
raise e
self.log.debug(f"TCP server started on {server.sockets[0].getsockname()!r}")
while True:
async with server:
await server.serve_forever()
except Exception as e:
self.log.error(f"Error: {e}")
traceback.print_exc()
finally:
await self.stop()
async def stop(self):
def stop(self):
self.log.debug("Stopping TCP server")

View File

@ -1,12 +1,11 @@
# Developed by KuiToi Dev
# File core.tcp_server.pyi
# Written by: SantaSpeen
# Version 0.1.6
# Version 0.2.0
# Licence: FPA
# (c) kuitoi.su 2023
import asyncio
from asyncio import StreamWriter, StreamReader
import socket
from typing import Tuple
from core import utils, Core

View File

@ -37,8 +37,9 @@ class UDPServer:
self.log.error("Error while connecting..")
async def start(self):
self.log.debug("Starting UDP server.")
await self.stop()
pass
# self.log.debug("Starting UDP server.")
# await self.stop()
# srv_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# srv_sock.bind((self.host, self.port))
# self.log.debug(f"Serving on {srv_sock.getsockname()}")
@ -50,5 +51,6 @@ class UDPServer:
# finally:
# await self.stop()
async def stop(self):
self.log.debug("Stopping UDP server")
def stop(self):
pass
# self.log.debug("Stopping UDP server")

View File

@ -1,12 +1,11 @@
# Developed by KuiToi Dev
# File core.utils.py
# Written by: SantaSpeen
# Version 0.1.6
# Version 1.0
# Licence: FPA
# (c) kuitoi.su 2023
import logging
import os
log_format = "[%(asctime)s | %(name)-14s | %(levelname)-5s] %(message)s"
log_format_access = '[%(asctime)s | %(name)-14s | %(levelname)-5s] %(client_addr)s - "%(request_line)s" %(status_code)s'

View File

@ -18,14 +18,12 @@ run = True
def main():
global run
from core import Core
core = Core()
while run:
try:
core.start()
except KeyboardInterrupt:
run = False
core.run = False
core.stop()