Skip to content

Commit c61a2ef

Browse files
committedMar 3, 2013
Merge pull request #513 from sfan5/patch-2
Add python script to doc/protocol.txt
2 parents 5917e86 + 72abd5a commit c61a2ef

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
 

‎doc/protocol.txt

+36
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,39 @@ function check_if_minetestserver_up($host, $port)
7070
return false;
7171
}
7272

73+
- Here's a Python script for checking if a minetest server is up, confirmed working
74+
#!/usr/bin/env python
75+
import sys, time, socket
76+
address = ""
77+
port = 30000
78+
if len(sys.argv) <= 1:
79+
print("Usage: %s <address>" % sys.argv[0])
80+
exit()
81+
if ':' in sys.argv[1]:
82+
address = sys.argv[1].split(':')[0]
83+
try:
84+
port = int(sys.argv[1].split(':')[1])
85+
except ValueError:
86+
print("Please specify a valid port")
87+
exit()
88+
else:
89+
address = sys.argv[1]
90+
91+
try:
92+
start = time.time()
93+
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
94+
sock.settimeout(2.0)
95+
buf = "\x4f\x45\x74\x03\x00\x00\x00\x01"
96+
sock.sendto(buf, (address, port))
97+
data, addr = sock.recvfrom(1000)
98+
if data:
99+
peer_id = data[12:14]
100+
buf = "\x4f\x45\x74\x03" + peer_id + "\x00\x00\x03"
101+
sock.sendto(buf, (address, port))
102+
sock.close()
103+
end = time.time()
104+
print("%s is up (%0.5fms)" % (sys.argv[1],end-start))
105+
else:
106+
print("%s seems to be down " % sys.argv[1])
107+
except:
108+
print("%s seems to be down " % sys.argv[1])

0 commit comments

Comments
 (0)
Please sign in to comment.