Skip to content

Commit a64e8a4

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

File tree

3 files changed

+18
-17
lines changed

3 files changed

+18
-17
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
__pycache__
2-
.gitignore
32
test.py
43
*.txt
4+
.vscode

api.py

Lines changed: 15 additions & 8 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_dict = {"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_dict.update({"map": decode_unicode(infos[7]), "gamemode": infos[8]})
118+
except (KeyError, IndexError):
119+
infos_dict.update({"map": "N", "gamemode": "A"})
120+
try:
121+
infos_dict.update({"source_port_v4": infos[10], "source_port_v6": infos[11]})
122+
except (KeyError, IndexError):
123+
infos_dict.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
120-
return infos, addr
127+
return infos_dict, 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)