38 lines
994 B
Python
38 lines
994 B
Python
import struct
|
|
from objects import glob
|
|
|
|
def handle(client, data):
|
|
ping_ip = ".".join((str(x) for x in struct.unpack(b"<BBBB", data[4:8])))
|
|
|
|
print("![{}] -> Pinging to {}".format(client.addr, ping_ip))
|
|
|
|
if len(data) == 11: # We should add our data ontop
|
|
if data[-1:] in RESPONSE:
|
|
data += RESPONSE[data[-1:]]()
|
|
|
|
return data
|
|
|
|
def query_i():
|
|
len_hostname = len(glob.config["server"]["hostname"])
|
|
len_mode = len(glob.config["server"]["mode"])
|
|
len_language = len(glob.config["server"]["language"])
|
|
|
|
packet = struct.pack(b"<?HHI%dsI%dsI%ds" % (len_hostname, len_mode, len_language),
|
|
False,
|
|
get_online_players(),
|
|
glob.config["server"]["max_players"],
|
|
len_hostname,
|
|
glob.config["server"]["hostname"].encode(),
|
|
len_mode,
|
|
glob.config["server"]["mode"].encode(),
|
|
len_language,
|
|
glob.config["server"]["language"].encode())
|
|
|
|
return packet
|
|
|
|
def get_online_players(): #TODO
|
|
return 0
|
|
|
|
RESPONSE = { #TODO: r, c, d & p (https://wiki.sa-mp.com/wiki/Query_Mechanism)
|
|
b"i": query_i
|
|
} |