Improved instructions and fixed a typo.

This commit is contained in:
Rob Atkinson committed 2020-07-14 18:45:54 +08:00
1 parent 3e31de590c
commit 6ebfd8cbc4
4 files changed
+30 -42

No files matched your search

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

+27 -39
View File
@@ -1,5 +1,5 @@
# sudomemoDNS v1.0 # SudomemoDNS v1.1
# (c) 2019 Austin Burk/Sudomemo # (c) 2019-2020 Austin Burk / Team Sudomemo
# All rights reserved # All rights reserved
from datetime import datetime from datetime import datetime
@@ -18,7 +18,7 @@ def get_platform():
platforms = { platforms = {
'linux1' : 'Linux', 'linux1' : 'Linux',
'linux2' : 'Linux', 'linux2' : 'Linux',
'darwin' : 'OS X', 'darwin' : 'macOS',
'win32' : 'Windows' 'win32' : 'Windows'
} }
if sys.platform not in platforms: if sys.platform not in platforms:
@@ -26,7 +26,7 @@ def get_platform():
return platforms[sys.platform] return platforms[sys.platform]
SUDOMEMODNS_VERSION = "1.0" SUDOMEMODNS_VERSION = "1.1"
def get_ip(): def get_ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
@@ -49,27 +49,22 @@ print("| Sudomemo DNS Server |")
print("| Version " + SUDOMEMODNS_VERSION + " |") print("| Version " + SUDOMEMODNS_VERSION + " |")
print("+===============================+\n") print("+===============================+\n")
print("Hello! This server will allow you to connect to Sudomemo when") print("== Welcome to SudomemoDNS! ==")
print("your Internet Service Provider does not work with custom DNS.\n") print("This server will allow you to connect to Sudomemo when your Internet Service Provider does not work with custom DNS.\n")
print("#### How To Use ####\n") print("== How To Use ==")
print("The setup process does not differ from what is shown at") print("First, make sure that your console is connected to the same network as this computer.\n")
print("https://support.sudomemo.net/setup except for the values")
print("to enter in your custom DNS settings.\n")
print("First, make sure that your Nintendo DSi is connected to the") print("Then, put these settings for DNS on your console:")
print("same network as this computer.") print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
print("\nHere are the settings you will put in for DNS on your Nintendo DSi:\n")
print("Primary DNS: ",MY_IP) print("Primary DNS: ",MY_IP)
print("Secondary DNS: 8.8.8.8") print("Secondary DNS: 8.8.8.8")
print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n")
print("All other settings should match what is shown at the above URL.\n") print("== Getting Help ==")
print("Need help? Visit our Discord server or check out https://support.sudomemo.net\n")
print("#### Getting Help ####\n") print("[INFO] Starting SudomemoDNS...")
print("Need help? Visit our Discord server or check out https://support.sudomemo.net.\n")
print("[INFO] Starting up")
TYPE_LOOKUP = { TYPE_LOOKUP = {
A: QTYPE.A, A: QTYPE.A,
@@ -89,17 +84,16 @@ class SudomemoDNSLogger(object):
def log_send(self, handler, data): def log_send(self, handler, data):
pass pass
def log_request(self, handler, request): def log_request(self, handler, request):
print("[INFO] Received DNS request from DSi at " + handler.client_address[0]) print("[INFO] Received DNS request from console at " + handler.client_address[0])
def log_reply(self, handler, reply): def log_reply(self, handler, reply):
print("[INFO] Sent response to DSi at " + handler.client_address[0]) print("[INFO] Sent response to console at " + handler.client_address[0])
def log_error(self, handler, e): def log_error(self, handler, e):
logger.error("[INFO] Invalid DNS request from " + handler.client_address[0]) print("[ERROR] Invalid DNS request from " + handler.client_address[0])
def log_truncated(self, handler, reply): def log_truncated(self, handler, reply):
pass pass
def log_data(self, dnsobj): def log_data(self, dnsobj):
pass pass
class Record: class Record:
def __init__(self, rdata_type, *args, rtype=None, rname=None, ttl=None, **kwargs): def __init__(self, rdata_type, *args, rtype=None, rname=None, ttl=None, **kwargs):
if isinstance(rdata_type, RD): if isinstance(rdata_type, RD):
@@ -154,17 +148,15 @@ ZONES = {}
try: try:
get_zones = requests.get("https://www.sudomemo.net/api/dns_zones.json", headers={'User-Agent': 'SudomemoDNS/' + SUDOMEMODNS_VERSION + ' (' + get_platform() + ')'}) get_zones = requests.get("https://www.sudomemo.net/api/dns_zones.json", headers={'User-Agent': 'SudomemoDNS/' + SUDOMEMODNS_VERSION + ' (' + get_platform() + ')'})
except requests.exceptions.Timeout: except requests.exceptions.Timeout:
print("[ERROR] Couldn't load DNS data: connection to Sudomemo timed out.") print("[ERROR] Unable to load DNS data: Connection to Sudomemo timed out. Are you connected to the Internet?")
print("[ERROR] Are you connected to the Internet?")
except requests.exceptions.RequestException as e: except requests.exceptions.RequestException as e:
print("[ERROR] Couldn't load DNS data.") print("[ERROR] Unable load DNS data.")
print("[ERROR] Exception: ",e) print("[ERROR] Exception: ",e)
sys.exit(1) sys.exit(1)
try: try:
zones = json.loads(get_zones.text) zones = json.loads(get_zones.text)
except ValueError as e: except ValueError as e:
print("[ERROR] Couldn't load DNS data: invalid response from server") print("[ERROR] Unable load DNS data: Invalid response from server. Check that you can visit sudomemo.net")
print("[ERROR] Check that you can visit sudomemo.net")
for zone in zones: for zone in zones:
if zone["type"] == "a": if zone["type"] == "a":
@@ -203,21 +195,19 @@ class Resolver:
resolver = Resolver() resolver = Resolver()
dnsLogger = SudomemoDNSLogger() dnsLogger = SudomemoDNSLogger()
print("[INFO] Detected operating system:", get_platform()); print("[INFO] Detected operating system:", get_platform())
if get_platform() == 'linux': if get_platform() == 'linux':
print("[INFO] Please note that you will have to run this as root or with permissions to bind to UDP port 53.") print("[INFO] Please note that you will have to run this as root or with permissions to bind to UDP port 53.")
print("[INFO] If you aren't seeing any requests, check that this is the case first with lsof -i:53 (requires lsof)") print("[INFO] If you aren't seeing any requests, check that this is the case first with lsof -i:53 (requires lsof)")
print("[INFO] To run as root, prefix the command with 'sudo'") print("[INFO] To run as root, prefix the command with 'sudo'")
elif get_platform() == 'OS X': elif get_platform() == 'macOS':
print("[INFO] Please note that you will have to run this as root or with permissions to bind to UDP port 53.") print("[INFO] Please note that you will have to run this as root or with permissions to bind to UDP port 53.")
print("[INFO] If you aren't seeing any requests, check that this is the case first with lsof -i:53 (requires lsof)") print("[INFO] If you aren't seeing any requests, check that this is the case first with lsof -i:53 (requires lsof)")
print("[INFO] To run as root, prefix the command with 'sudo'") print("[INFO] To run as root, prefix the command with 'sudo'")
elif get_platform() == 'Windows': elif get_platform() == 'Windows':
print("[INFO] Please note: On Windows, you may have to allow this application through") print("[INFO] Please note that you may have to allow this application through the firewall. If so, a popup will appear in a moment.")
print("[INFO] the firewall. If so, a popup will appear in a moment.") print("[INFO] If you are not seeing any requests, make sure you have allowed this application through the firewall. If you have already done so, disregard this message.")
print("[INFO] If you aren't seeing any requests, make sure you have done so first.")
print("[INFO] Disregard this message if you have already done so.")
try: try:
servers = [ servers = [
@@ -225,13 +215,11 @@ try:
DNSServer(resolver=resolver, port=53, address=MY_IP, tcp=False, logger=dnsLogger), DNSServer(resolver=resolver, port=53, address=MY_IP, tcp=False, logger=dnsLogger),
] ]
except PermissionError: except PermissionError:
print("[ERROR] Permission error: check that you are running this as Administrator or root") print("[ERROR] Permission error: Check that you are running this as an administrator or root")
sys.exit(1) sys.exit(1)
print("[INFO] Starting Sudomemo DNS server.") print("[INFO] SudomemoDNS is ready. Now waiting for DNS requests from your console...")
print("[INFO] Now waiting for DNS requests from your Nintendo DSi System.")
if __name__ == '__main__': if __name__ == '__main__':
for s in servers: for s in servers:
@@ -244,4 +232,4 @@ if __name__ == '__main__':
pass pass
finally: finally:
for s in servers: for s in servers:
s.stop() s.stop()
Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

@@ -4,7 +4,7 @@ block_cipher = None
a = Analysis(['sudomemoDNS.py'], a = Analysis(['sudomemoDNS.py'],
pathex=['C:\\Users\\Administrator\\sudomemo-dns'], pathex=['D:\\Libraries\\Documents\\SudomemoDNS'],
binaries=[], binaries=[],
datas=[], datas=[],
hiddenimports=[], hiddenimports=[],
@@ -23,10 +23,10 @@ exe = EXE(pyz,
a.zipfiles, a.zipfiles,
a.datas, a.datas,
[], [],
name='sudomemoDNS_v1.0', name='sudomemoDNS_v1.1',
debug=False, debug=False,
bootloader_ignore_signals=False, bootloader_ignore_signals=False,
strip=False, strip=False,
upx=True, upx=True,
runtime_tmpdir=None, runtime_tmpdir=None,
console=True , icon='C:\\Users\\Administrator\\sudomemo-dns\\sudomemo.ico') console=True , icon='D:\\Libraries\\Documents\\SudomemoDNS\\sudomemoDNS_icon.ico')