Skip to content

Commit 663051e

Browse files
WillowSauceRWillowSauceR
authored andcommitted
support motd some server that not return some info
1 parent b752134 commit 663051e

File tree

2 files changed

+16
-15
lines changed

2 files changed

+16
-15
lines changed

api.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,19 @@ def parse_raw_pkt(pkt):
109109
context = str(info)[2:-1]
110110
infos.append(context)
111111
try:
112-
infos = {"motd": decode_unicode(infos[1]), "version_id": infos[2], "version": infos[3], "online": infos[4],
113-
"max_player": infos[5], "unique_id": infos[6], "map": decode_unicode(infos[7]), "gamemode": infos[8],
114-
"source_port_v4": infos[10], "source_port_v6": infos[11], "ip": addr[0], "addr": f"{addr[0]}:{addr[1]}"}
115-
except IndexError:
112+
infos = {"motd": decode_unicode(infos[1]), "version_id": infos[2], "version": infos[3],
113+
"online": infos[4], "max_player": infos[5], "unique_id": infos[6],
114+
"ip": addr[0], "port": addr[1], "addr": f"{addr[0]}:{addr[1]}"}
115+
# some servers will not return these info
116+
try:
117+
infos.update({"map": decode_unicode(infos[7]), "gamemode": infos[8]})
118+
except (KeyError, IndexError):
119+
infos.update({"map": "N", "gamemode": "A"})
120+
try:
121+
infos.update({"source_port_v4": infos[10], "source_port_v6": infos[11]})
122+
except (KeyError, IndexError):
123+
infos.update({"source_port_v4": "N", "source_port_v6": "A"})
124+
125+
except (KeyError, IndexError):
116126
return None, addr
117-
if infos["source_port_v4"] != str(addr[1]):
118-
# return None, addr
119-
pass
120127
return infos, addr

motd.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,8 @@ def recv_pkt(sk_send):
1616
log(f"Motd: {infos['motd']}")
1717
log(f"Versin: {infos['version']}/{infos['version_id']}")
1818
log(f"Online: {infos['online']}/{infos['max_player']}")
19-
try:
20-
log(f"Map: {infos['map']}/{infos['gamemode']}")
21-
except:
22-
log(f"Map info is unavailable.")
23-
try:
24-
log(f"Port(v4/v6): {infos['source_port_v4']}/{infos['source_port_v6']}")
25-
except:
26-
log(f"Port info is unavailable.")
19+
log(f"Map: {infos['map']}/{infos['gamemode']}")
20+
log(f"Port(v4/v6): {infos['source_port_v4']}/{infos['source_port_v6']}")
2721
log(f"Source: {infos['addr']}")
2822

2923
sk_send.close()

0 commit comments

Comments
 (0)