Pass server config to clients
This commit is contained in:
parent
fee2005eef
commit
ee08f6a3b1
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -96,3 +96,6 @@ ENV/
|
||||||
|
|
||||||
# Logs
|
# Logs
|
||||||
logs/
|
logs/
|
||||||
|
|
||||||
|
# vscode
|
||||||
|
.vscode/
|
|
@ -5,12 +5,15 @@ from . import base
|
||||||
from . import query
|
from . import query
|
||||||
from . import player
|
from . import player
|
||||||
|
|
||||||
|
from ..struct.server import Server
|
||||||
|
|
||||||
STATE_UNKNOWN = (0, base.BaseClient)
|
STATE_UNKNOWN = (0, base.BaseClient)
|
||||||
STATE_QUERY = (1, query.QueryClient)
|
STATE_QUERY = (1, query.QueryClient)
|
||||||
STATE_PLAYER = (2, player.PlayerClient)
|
STATE_PLAYER = (2, player.PlayerClient)
|
||||||
|
|
||||||
class Client:
|
class Client:
|
||||||
def __init__(self, socket: socket.socket, ip: str, port: int):
|
def __init__(self, config: Server, socket: socket.socket, ip: str, port: int):
|
||||||
|
self.config = config
|
||||||
self.socket = socket
|
self.socket = socket
|
||||||
self.ip = ip
|
self.ip = ip
|
||||||
self.port = port
|
self.port = port
|
||||||
|
@ -19,7 +22,7 @@ class Client:
|
||||||
|
|
||||||
def set_state(self, state: tuple):
|
def set_state(self, state: tuple):
|
||||||
self.state = state
|
self.state = state
|
||||||
self.client = self.state[1](self.socket, self.ip, self.port)
|
self.client = self.state[1](self.config, self.socket, self.ip, self.port)
|
||||||
|
|
||||||
async def on_packet(self, packet: bytes):
|
async def on_packet(self, packet: bytes):
|
||||||
if self.state == STATE_UNKNOWN:
|
if self.state == STATE_UNKNOWN:
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
import socket
|
import socket
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
|
from ..struct.server import Server
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
class BaseClient:
|
class BaseClient:
|
||||||
def __init__(self, socket: socket.socket, ip: str, port: int):
|
def __init__(self, config: Server, socket: socket.socket, ip: str, port: int):
|
||||||
|
self.config = config
|
||||||
self.socket = socket
|
self.socket = socket
|
||||||
self.ip = ip
|
self.ip = ip
|
||||||
self.port = port
|
self.port = port
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
from . import base
|
from . import base
|
||||||
|
from ..struct.server import Server
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
class PlayerClient(base.BaseClient):
|
class PlayerClient(base.BaseClient):
|
||||||
def __init__(self, socket: socket.socket, ip: str, port: int):
|
def __init__(self, config: Server, socket: socket.socket, ip: str, port: int):
|
||||||
super().__init__(socket, ip, port)
|
super().__init__(config, socket, ip, port)
|
||||||
|
logger.debug("Client resolved to PlayerClient")
|
||||||
|
|
||||||
async def on_packet(self, packet: bytes):
|
async def on_packet(self, packet: bytes):
|
||||||
logger.debug("on_packet(%s)" % packet)
|
logger.debug("on_packet(%s)" % packet)
|
|
@ -1,13 +1,19 @@
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
from . import base
|
from . import base
|
||||||
|
from ..struct.server import Server
|
||||||
|
from ..shared import glob
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
class QueryClient(base.BaseClient):
|
class QueryClient(base.BaseClient):
|
||||||
def __init__(self, socket: socket.socket, ip: str, port: int):
|
def __init__(self, config: Server, socket: socket.socket, ip: str, port: int):
|
||||||
super().__init__(socket, ip, port)
|
super().__init__(config, socket, ip, port)
|
||||||
|
logger.debug("Client resolved to QueryClient")
|
||||||
|
|
||||||
async def on_packet(self, packet: bytes):
|
async def on_packet(self, packet: bytes):
|
||||||
logger.debug("on_packet(%s)" % packet)
|
logger.debug("on_packet(%s)" % packet)
|
||||||
|
|
||||||
|
async def query_i():
|
||||||
|
pass
|
|
@ -18,4 +18,3 @@ class Environment(Thread):
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
self.event_loop.run_until_complete(self.server.main())
|
self.event_loop.run_until_complete(self.server.main())
|
||||||
print("Ended?")
|
|
|
@ -34,7 +34,7 @@ class Server:
|
||||||
|
|
||||||
if addr not in self.clients:
|
if addr not in self.clients:
|
||||||
ip, port = addr
|
ip, port = addr
|
||||||
self.clients[addr] = Client(self.socket, ip, port)
|
self.clients[addr] = Client(self.config, self.socket, ip, port)
|
||||||
await self.clients[addr].on_packet(data)
|
await self.clients[addr].on_packet(data)
|
||||||
|
|
||||||
await asyncio.sleep(0)
|
await asyncio.sleep(0)
|
|
@ -10,8 +10,11 @@ if not os.path.isfile("config.json"):
|
||||||
with open("config.json", "r") as f:
|
with open("config.json", "r") as f:
|
||||||
config = json.load(f)
|
config = json.load(f)
|
||||||
|
|
||||||
|
# aliases
|
||||||
|
conf = config["sampy"]
|
||||||
|
conf_log = conf["logging"]
|
||||||
|
|
||||||
# Setup logger
|
# Setup logger
|
||||||
conf_log = config["sampy"]["logging"] # alias
|
|
||||||
## fix for logging level
|
## fix for logging level
|
||||||
default_logging_fallback = False
|
default_logging_fallback = False
|
||||||
if type(conf_log["level"]) is not int:
|
if type(conf_log["level"]) is not int:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user