diff --git a/app/classes/minecraft/mc_ping.py b/app/classes/minecraft/ping.py similarity index 97% rename from app/classes/minecraft/mc_ping.py rename to app/classes/minecraft/ping.py index 1c52ab98..b480d0c2 100644 --- a/app/classes/minecraft/mc_ping.py +++ b/app/classes/minecraft/ping.py @@ -8,7 +8,7 @@ import logging.config import uuid import random -from app.classes.minecraft.bedrock_ping import BedrockPing +from app.classes.minecraft.raknet_ping import RaknetPing from app.classes.shared.console import Console logger = logging.getLogger(__name__) @@ -176,7 +176,7 @@ def ping(ip, port): # For the rest of requests see wiki.vg/Protocol -def ping_bedrock(ip, port): +def ping_raknet(ip, port): rand = random.Random() try: # pylint: disable=consider-using-f-string @@ -185,7 +185,7 @@ def ping_bedrock(ip, port): except: client_guid = 0 try: - brp = BedrockPing(ip, port, client_guid) + brp = RaknetPing(ip, port, client_guid) return brp.ping() except: logger.debug("Unable to get RakNet stats") diff --git a/app/classes/minecraft/bedrock_ping.py b/app/classes/minecraft/raknet_ping.py similarity index 84% rename from app/classes/minecraft/bedrock_ping.py rename to app/classes/minecraft/raknet_ping.py index 54784112..21a38dfe 100644 --- a/app/classes/minecraft/bedrock_ping.py +++ b/app/classes/minecraft/raknet_ping.py @@ -9,7 +9,7 @@ with redirect_stderr(NullWriter()): import psutil -class BedrockPing: +class RaknetPing: magic = b"\x00\xff\xff\x00\xfe\xfe\xfe\xfe\xfd\xfd\xfd\xfd\x12\x34\x56\x78" fields = { # (len, signed) "byte": (1, False), @@ -25,19 +25,19 @@ class BedrockPing: } byte_order = "big" - def __init__(self, bedrock_addr, bedrock_port, client_guid=0, timeout=5): - self.addr = bedrock_addr - self.port = bedrock_port + def __init__(self, server_addr, server_port, client_guid=0, timeout=5): + self.addr = server_addr + self.port = server_port self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.sock.settimeout(timeout) self.proc = psutil.Process(os.getpid()) self.guid = client_guid - self.guid_bytes = self.guid.to_bytes(8, BedrockPing.byte_order) + self.guid_bytes = self.guid.to_bytes(8, RaknetPing.byte_order) @staticmethod def __byter(in_val, to_type): - f = BedrockPing.fields[to_type] - return in_val.to_bytes(f[0], BedrockPing.byte_order, signed=f[1]) + f = RaknetPing.fields[to_type] + return in_val.to_bytes(f[0], RaknetPing.byte_order, signed=f[1]) @staticmethod def __slice(in_bytes, pattern): @@ -46,7 +46,7 @@ class BedrockPing: pattern_index = 0 while bytes_index < len(in_bytes): try: - field = BedrockPing.fields[pattern[pattern_index]] + field = RaknetPing.fields[pattern[pattern_index]] except IndexError as index_error: raise IndexError( "Ran out of pattern with additional bytes remaining" @@ -55,7 +55,7 @@ class BedrockPing: string_header_length = field[0] string_length = int.from_bytes( in_bytes[bytes_index : bytes_index + string_header_length], - BedrockPing.byte_order, + RaknetPing.byte_order, signed=field[1], ) length = string_header_length + string_length @@ -75,7 +75,7 @@ class BedrockPing: ret.append( int.from_bytes( in_bytes[bytes_index : bytes_index + length], - BedrockPing.byte_order, + RaknetPing.byte_order, signed=field[1], ) ) @@ -89,10 +89,10 @@ class BedrockPing: return time.perf_counter_ns() // 1000000 def __sendping(self): - pack_id = BedrockPing.__byter(0x01, "byte") - now = BedrockPing.__byter(BedrockPing.__get_time(), "ulong") + pack_id = RaknetPing.__byter(0x01, "byte") + now = RaknetPing.__byter(RaknetPing.__get_time(), "ulong") guid = self.guid_bytes - d2s = pack_id + now + BedrockPing.magic + guid + d2s = pack_id + now + RaknetPing.magic + guid # print("S:", d2s) self.sock.sendto(d2s, (self.addr, self.port)) @@ -100,10 +100,10 @@ class BedrockPing: data = self.sock.recv(4096) if data[0] == 0x1C: ret = {} - sliced = BedrockPing.__slice( + sliced = RaknetPing.__slice( data, ["byte", "ulong", "ulong", "magic", "string"] ) - if sliced[3] != BedrockPing.magic: + if sliced[3] != RaknetPing.magic: raise ValueError(f"Incorrect magic received ({sliced[3]})") ret["server_guid"] = sliced[2] ret["server_string_raw"] = sliced[4] diff --git a/app/classes/minecraft/stats.py b/app/classes/minecraft/stats.py index 07dd9c0d..783eff7c 100644 --- a/app/classes/minecraft/stats.py +++ b/app/classes/minecraft/stats.py @@ -6,7 +6,7 @@ import datetime import base64 import typing as t -from app.classes.minecraft.mc_ping import ping +from app.classes.minecraft.ping import ping from app.classes.models.management import HostStats from app.classes.models.servers import HelperServers from app.classes.shared.null_writer import NullWriter diff --git a/app/classes/shared/server.py b/app/classes/shared/server.py index 1b277a76..84033280 100644 --- a/app/classes/shared/server.py +++ b/app/classes/shared/server.py @@ -19,7 +19,7 @@ from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.jobstores.base import JobLookupError from app.classes.minecraft.stats import Stats -from app.classes.minecraft.mc_ping import ping, ping_bedrock +from app.classes.minecraft.ping import ping, ping_raknet from app.classes.models.servers import HelperServers, Servers from app.classes.models.server_stats import HelperServerStats from app.classes.models.management import HelpersManagement @@ -1484,7 +1484,7 @@ class ServerInstance: logger.debug(f"Pinging server '{server}' on {internal_ip}:{server_port}") if HelperServers.get_server_type_by_id(server_id) == "minecraft-bedrock": - int_mc_ping = ping_bedrock(internal_ip, int(server_port)) + int_mc_ping = ping_raknet(internal_ip, int(server_port)) else: try: int_mc_ping = ping(internal_ip, int(server_port)) @@ -1613,7 +1613,7 @@ class ServerInstance: logger.debug(f"Pinging server '{self.name}' on {internal_ip}:{server_port}") if HelperServers.get_server_type_by_id(server_id) == "minecraft-bedrock": - int_mc_ping = ping_bedrock(internal_ip, int(server_port)) + int_mc_ping = ping_raknet(internal_ip, int(server_port)) else: int_mc_ping = ping(internal_ip, int(server_port))