Quick hack so mctools.py still works without PyDNS installed
This commit is contained in:
parent
1be43d9e51
commit
eba21e1584
1 changed files with 23 additions and 13 deletions
|
@ -2,9 +2,15 @@ from util import hook, http
|
||||||
import socket
|
import socket
|
||||||
import json
|
import json
|
||||||
import struct
|
import struct
|
||||||
import DNS ## Please remember to install the dependancy 'pydns'
|
|
||||||
|
|
||||||
def mccolorconvert(motd):
|
try:
|
||||||
|
import DNS ## Please remember to install the dependancy 'pydns'
|
||||||
|
pydns_installed = True
|
||||||
|
except ImportError:
|
||||||
|
pydns_installed = False
|
||||||
|
|
||||||
|
|
||||||
|
def format_motd(motd):
|
||||||
empty = ""
|
empty = ""
|
||||||
colors = [u"\x0300,\xa7f", u"\x0301,\xa70", u"\x0302,\xa71", u"\x0303,\xa72", u"\x0304,\xa7c", u"\x0305,\xa74", u"\x0306,\xa75", u"\x0307,\xa76", u"\x0308,\xa7e", u"\x0309,\xa7a", u"\x0310,\xa73", u"\x0311,\xa7b", u"\x0312,\xa71", u"\x0313,\xa7d", u"\x0314,\xa78", u"\x0315,\xa77", u"\x02,\xa7l", u"\x0310,\xa79", u"\x09,\xa7o", u"\x13,\xa7m", u"\x0f,\xa7r", u"\x15,\xa7n"];
|
colors = [u"\x0300,\xa7f", u"\x0301,\xa70", u"\x0302,\xa71", u"\x0303,\xa72", u"\x0304,\xa7c", u"\x0305,\xa74", u"\x0306,\xa75", u"\x0307,\xa76", u"\x0308,\xa7e", u"\x0309,\xa7a", u"\x0310,\xa73", u"\x0311,\xa7b", u"\x0312,\xa71", u"\x0313,\xa7d", u"\x0314,\xa78", u"\x0315,\xa77", u"\x02,\xa7l", u"\x0310,\xa79", u"\x09,\xa7o", u"\x13,\xa7m", u"\x0f,\xa7r", u"\x15,\xa7n"];
|
||||||
for s in colors:
|
for s in colors:
|
||||||
|
@ -13,6 +19,7 @@ def mccolorconvert(motd):
|
||||||
motd = motd.replace(u"\xa7k", empty)
|
motd = motd.replace(u"\xa7k", empty)
|
||||||
return motd
|
return motd
|
||||||
|
|
||||||
|
|
||||||
def mcping_connect(host, port):
|
def mcping_connect(host, port):
|
||||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
try:
|
try:
|
||||||
|
@ -43,10 +50,11 @@ def mcping_connect(host, port):
|
||||||
return "Error pinging " + host + ":" + str(port) +\
|
return "Error pinging " + host + ":" + str(port) +\
|
||||||
", is it up? Double-check your address!"
|
", is it up? Double-check your address!"
|
||||||
|
|
||||||
|
|
||||||
def srvData(domain):
|
def srvData(domain):
|
||||||
DNS.ParseResolvConf()
|
DNS.ParseResolvConf()
|
||||||
srv_req = DNS.Request(qtype='srv')
|
srv_req = DNS.Request(qtype='srv')
|
||||||
srv_result = srv_req.req('_minecraft._tcp.%s' % domain)
|
srv_result = srv_req.req('_minecraft._tcp.{}'.format(domain))
|
||||||
|
|
||||||
for getsrv in srv_result.answers:
|
for getsrv in srv_result.answers:
|
||||||
if getsrv['typename'] == 'SRV':
|
if getsrv['typename'] == 'SRV':
|
||||||
|
@ -122,21 +130,23 @@ def mcping(inp):
|
||||||
port = int(port)
|
port = int(port)
|
||||||
except:
|
except:
|
||||||
return "error: invalid port!"
|
return "error: invalid port!"
|
||||||
return mccolorconvert(mcping_connect(host, port))
|
return format_motd(mcping_connect(host, port))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
host = inp
|
host = inp
|
||||||
port = 25565
|
port = 25565
|
||||||
rdata = mccolorconvert(mcping_connect(host, port))
|
rdata = format_motd(mcping_connect(host, port))
|
||||||
|
|
||||||
if 'is it up' in rdata:
|
if 'is it up' in rdata:
|
||||||
|
if pydns_installed:
|
||||||
getdata = srvData(inp)
|
getdata = srvData(inp)
|
||||||
try:
|
try:
|
||||||
host = str(getdata[1])
|
host = str(getdata[1])
|
||||||
port = int(getdata[0])
|
port = int(getdata[0])
|
||||||
return mccolorconvert(mcping_connect(host, port))
|
return format_motd(mcping_connect(host, port))
|
||||||
except:
|
except:
|
||||||
return "Error pinging %s, is it up? Double-check your address!" % inp
|
return "Error pinging %s, is it up? Double-check your address!" % inp
|
||||||
|
else:
|
||||||
|
return "Error pinging %s, is it up? Double-check your address!" % inp
|
||||||
else:
|
else:
|
||||||
return rdata
|
return rdata
|
||||||
|
|
Reference in a new issue