mirror of
https://github.com/kuitoi/kuitoi-Server.git
synced 2025-08-17 16:25:36 +00:00
Compare commits
7 Commits
30b6a71a1c
...
3f688df30b
Author | SHA1 | Date | |
---|---|---|---|
3f688df30b | |||
52c9370c6d | |||
b654d62b30 | |||
aab20c17a1 | |||
9518fcad11 | |||
bab45674e8 | |||
50de09633e |
@ -1,7 +1,7 @@
|
||||
# KuiToi-Server
|
||||
|
||||
## About
|
||||
**_[In deep developing...]_** \
|
||||
**_[Status: Alpha]_** \
|
||||
BeamingDrive Multiplayer (BeamMP) server compatible with BeamMP clients.
|
||||
|
||||
## TODOs
|
||||
|
@ -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"
|
||||
|
@ -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):
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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'
|
||||
|
@ -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()
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user