mirror of
https://github.com/kuitoi/kuitoi-Server.git
synced 2025-08-18 08:45:37 +00:00
I hate this "header"
This commit is contained in:
parent
c4a871d181
commit
3defc99389
@ -39,17 +39,24 @@ class Client:
|
|||||||
|
|
||||||
def kick(self, reason):
|
def kick(self, reason):
|
||||||
self.log.info(f"Client: \"IP: {self.addr!r}; ID: {self.cid}\" - kicked with reason: \"{reason}\"")
|
self.log.info(f"Client: \"IP: {self.addr!r}; ID: {self.cid}\" - kicked with reason: \"{reason}\"")
|
||||||
self.socket.send(b"K" + bytes(reason, "utf-8"))
|
self.tcp_send(b"K" + bytes(reason, "utf-8"))
|
||||||
self.socket.close()
|
self.socket.close()
|
||||||
self.alive = False
|
self.alive = False
|
||||||
|
|
||||||
def tcp_send(self, data):
|
def tcp_send(self, data):
|
||||||
header = b"C\x00\x00\x00\x00"
|
|
||||||
# size = len(data)
|
# TNetwork.cpp; Line: 383
|
||||||
# to_send = bytearray(size + len(data))
|
# BEAMP TCP protocol sends a header of 4 bytes, followed by the data.
|
||||||
# to_send[0:len(data)] = size.to_bytes(len(data), byteorder='big')
|
# [][][][][][]...[]
|
||||||
# to_send[len(data):] = data
|
# ^------^^---...-^
|
||||||
self.socket.send(header + b"\x00" + data + b"\x00")
|
# size data
|
||||||
|
|
||||||
|
data = data.replace(b" ", b"_")
|
||||||
|
if len(data) == 10:
|
||||||
|
data += b"."
|
||||||
|
header = len(data).to_bytes(4, "little")
|
||||||
|
self.log.debug(f'len(data) {len(data)}; header: {header}; send {header + data}')
|
||||||
|
self.socket.send(header + data)
|
||||||
|
|
||||||
|
|
||||||
class Core:
|
class Core:
|
||||||
@ -64,6 +71,12 @@ class Core:
|
|||||||
self.tcp = TCPServer
|
self.tcp = TCPServer
|
||||||
self.udp = UDPServer
|
self.udp = UDPServer
|
||||||
|
|
||||||
|
def get_client(self, sock=None, cid=None):
|
||||||
|
if cid:
|
||||||
|
return self.clients.get(cid)
|
||||||
|
if sock:
|
||||||
|
return self.clients.get(sock.getsockname())
|
||||||
|
|
||||||
def create_client(self, *args, **kwargs):
|
def create_client(self, *args, **kwargs):
|
||||||
cl = Client(*args, **kwargs)
|
cl = Client(*args, **kwargs)
|
||||||
self.clients_counter += 1
|
self.clients_counter += 1
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
# Licence: FPA
|
# Licence: FPA
|
||||||
# (c) kuitoi.su 2023
|
# (c) kuitoi.su 2023
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import socket
|
||||||
from asyncio import StreamWriter, AbstractEventLoop, StreamReader
|
from asyncio import StreamWriter, AbstractEventLoop, StreamReader
|
||||||
from asyncio.trsock import TransportSocket
|
from asyncio.trsock import TransportSocket
|
||||||
|
|
||||||
@ -12,15 +13,14 @@ from core import utils
|
|||||||
from .tcp_server import TCPServer
|
from .tcp_server import TCPServer
|
||||||
from .udp_server import UDPServer
|
from .udp_server import UDPServer
|
||||||
class Client:
|
class Client:
|
||||||
def __init__(self, reader: StreamReader, writer: StreamWriter):
|
|
||||||
self.cid: int = 0
|
def __init__(self, sock: socket.socket):
|
||||||
self.nick: str = None
|
self.cid = 0
|
||||||
|
self.nick = None
|
||||||
self.log = utils.get_logger("client")
|
self.log = utils.get_logger("client")
|
||||||
self.writer: StreamWriter = writer
|
self.addr = sock.getsockname()
|
||||||
self.reader: StreamReader = reader
|
self.socket = sock
|
||||||
self.addr: tuple = writer.get_extra_info('peername')
|
self.loop = asyncio.get_event_loop()
|
||||||
self.socket: TransportSocket = writer.get_extra_info('socket')
|
|
||||||
self.loop: AbstractEventLoop = asyncio.get_event_loop()
|
|
||||||
self.alive = True
|
self.alive = True
|
||||||
def is_disconnected(self) -> bool: ...
|
def is_disconnected(self) -> bool: ...
|
||||||
def kick(self, reason: str) -> None: ...
|
def kick(self, reason: str) -> None: ...
|
||||||
|
Loading…
x
Reference in New Issue
Block a user