Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from __future__ import print_function
- import sys
- import socket
- from contextlib import contextmanager
- @contextmanager
- def socketcontext(*args, **kwargs):
- s = socket.socket(*args, **kwargs)
- try:
- yield s
- finally:
- s.close()
- def get_srv(host):
- try:
- response = dns.resolver.query('_ts3._udp.' + host, 'SRV')
- except:
- return None
- for entry in response:
- return socket.gethostbyname(entry.target.to_text().rstrip('.')) + ':' + str(entry.port)
- def get_tsdns(host):
- with socketcontext(socket.AF_INET, socket.SOCK_STREAM) as sock:
- try:
- sock.connect((host, 41144))
- except:
- return None
- sock.send('{}'.format(host))
- ret = sock.recv(100)
- return ret
- def get_ts3port(host):
- ret_tsdns = get_tsdns(host)
- ret_srv = get_srv(host)
- return ret_tsdns or ret_srv or host
- def main():
- if len(sys.argv) != 2:
- sys.stderr.write('First argument must be a host\n'.encode())
- return -1
- print(get_ts3port(sys.argv[1]))
- return 0
- if __name__ == '__main__':
- sys.exit(main())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement