From 6ebfd8cbc459bde74e88c981b559e2ce416c5303 Mon Sep 17 00:00:00 2001 From: Rob Atkinson Date: Tue, 14 Jul 2020 18:45:54 +0800 Subject: [PATCH 1/8] Improved instructions and fixed a typo. --- sudomemo.ico | Bin 133982 -> 0 bytes sudomemoDNS.py | 66 +++++++----------- sudomemoDNS_icon.ico | Bin 0 -> 119662 bytes ...memoDNS_v1.0.spec => sudomemoDNS_v1.1.spec | 6 +- 4 files changed, 30 insertions(+), 42 deletions(-) delete mode 100644 sudomemo.ico create mode 100644 sudomemoDNS_icon.ico rename sudomemoDNS_v1.0.spec => sudomemoDNS_v1.1.spec (78%) diff --git a/sudomemo.ico b/sudomemo.ico deleted file mode 100644 index 6af39f445914f6375bae46920174a7c5ba26cd99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133982 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 Y{i4%ju;k2lhjZoiL%iPQU)@Xpe_qQb`Tzg` diff --git a/sudomemoDNS.py b/sudomemoDNS.py index 632c586..d180d2d 100644 --- a/sudomemoDNS.py +++ b/sudomemoDNS.py @@ -1,5 +1,5 @@ -# sudomemoDNS v1.0 -# (c) 2019 Austin Burk/Sudomemo +# SudomemoDNS v1.1 +# (c) 2019-2020 Austin Burk / Team Sudomemo # All rights reserved from datetime import datetime @@ -18,7 +18,7 @@ def get_platform(): platforms = { 'linux1' : 'Linux', 'linux2' : 'Linux', - 'darwin' : 'OS X', + 'darwin' : 'macOS', 'win32' : 'Windows' } if sys.platform not in platforms: @@ -26,7 +26,7 @@ def get_platform(): return platforms[sys.platform] -SUDOMEMODNS_VERSION = "1.0" +SUDOMEMODNS_VERSION = "1.1" def get_ip(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) @@ -49,27 +49,22 @@ def get_ip(): print("| Version " + SUDOMEMODNS_VERSION + " |") print("+===============================+\n") -print("Hello! This server will allow you to connect to Sudomemo when") -print("your Internet Service Provider does not work with custom DNS.\n") +print("== Welcome to SudomemoDNS! ==") +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("The setup process does not differ from what is shown at") -print("https://support.sudomemo.net/setup except for the values") -print("to enter in your custom DNS settings.\n") +print("== How To Use ==") +print("First, make sure that your console is connected to the same network as this computer.\n") -print("First, make sure that your Nintendo DSi is connected to the") -print("same network as this computer.") - -print("\nHere are the settings you will put in for DNS on your Nintendo DSi:\n") +print("Then, put these settings for DNS on your console:") +print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") print("Primary DNS: ",MY_IP) 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 ####\n") -print("Need help? Visit our Discord server or check out https://support.sudomemo.net.\n") +print("== Getting Help ==") +print("Need help? Visit our Discord server or check out https://support.sudomemo.net\n") -print("[INFO] Starting up") +print("[INFO] Starting SudomemoDNS...") TYPE_LOOKUP = { A: QTYPE.A, @@ -89,17 +84,16 @@ def log_recv(self, handler, data): def log_send(self, handler, data): pass 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): - 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): - 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): pass def log_data(self, dnsobj): pass - class Record: def __init__(self, rdata_type, *args, rtype=None, rname=None, ttl=None, **kwargs): if isinstance(rdata_type, RD): @@ -154,17 +148,15 @@ def __str__(self): try: get_zones = requests.get("https://www.sudomemo.net/api/dns_zones.json", headers={'User-Agent': 'SudomemoDNS/' + SUDOMEMODNS_VERSION + ' (' + get_platform() + ')'}) except requests.exceptions.Timeout: - print("[ERROR] Couldn't load DNS data: connection to Sudomemo timed out.") - print("[ERROR] Are you connected to the Internet?") + print("[ERROR] Unable to load DNS data: Connection to Sudomemo timed out. Are you connected to the Internet?") except requests.exceptions.RequestException as e: - print("[ERROR] Couldn't load DNS data.") + print("[ERROR] Unable load DNS data.") print("[ERROR] Exception: ",e) sys.exit(1) try: zones = json.loads(get_zones.text) except ValueError as e: - print("[ERROR] Couldn't load DNS data: invalid response from server") - print("[ERROR] Check that you can visit sudomemo.net") + print("[ERROR] Unable load DNS data: Invalid response from server. Check that you can visit sudomemo.net") for zone in zones: if zone["type"] == "a": @@ -203,21 +195,19 @@ def resolve(self, request, handler): resolver = Resolver() dnsLogger = SudomemoDNSLogger() -print("[INFO] Detected operating system:", get_platform()); +print("[INFO] Detected operating system:", get_platform()) 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] 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'") -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] 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'") elif get_platform() == 'Windows': - print("[INFO] Please note: On Windows, you may have to allow this application through") - print("[INFO] the firewall. If so, a popup will appear in a moment.") - 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.") + 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] 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.") try: servers = [ @@ -225,13 +215,11 @@ def resolve(self, request, handler): DNSServer(resolver=resolver, port=53, address=MY_IP, tcp=False, logger=dnsLogger), ] 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) -print("[INFO] Starting Sudomemo DNS server.") - -print("[INFO] Now waiting for DNS requests from your Nintendo DSi System.") +print("[INFO] SudomemoDNS is ready. Now waiting for DNS requests from your console...") if __name__ == '__main__': for s in servers: @@ -244,4 +232,4 @@ def resolve(self, request, handler): pass finally: for s in servers: - s.stop() + s.stop() \ No newline at end of file diff --git a/sudomemoDNS_icon.ico b/sudomemoDNS_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9473fbecf7965a9f660897fc377285200ecd89d7 GIT binary patch literal 119662 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

=r+xQe)ZBL3w(Uzc^ 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%0D6vx_kiC4$>&d1{wL)5tTn;B9u51Fhi<&J zGWE*nTLc&fNZ(31u2RynkNx*2J>Krrfmc?bJ}?$o4IBrq*}y#O*hU)5_nXSM;%&DWgtjT{r6Vunmdc8%B9~pH5U(GSalgMM{4H7Yjexma(%N|-PoAvj{dz2L7W+RH z!~FOH(6U6CXn)q(+T=a`6!J%1G{AKY+Fht}s|FvA8uP(@?CbUS!Gj0I;lqdVZ1@-V zQ1_tfOO3{p#zxCN>^lkg4Y*Nh;lSHtJ{)g9xAHq8>TijRo%o?34QXwC*!KXSypI4~ zi#=QQy+4)j6m&cz8b9}iX!PtX(F=LjJzHfMpJ~C6Q1s^U$-b1W%;{*$9O*ygF84Sr z>G!SuJYLdoKF+C|@eJS?p1YJW%s#fh>i$h@J=5RbkIz+=!XC-;dgz%7%JoBIn|#@y z=iSPz1Mj69@tvXW?anIKklb5XUe9!Fc1EmUuk4Yw*w()?`mrzXRsO89a`^4?l`Gxn zedg|6dqu_ALAVy<_1Ga%A!d}=v16~|*NRmu-zTloC#`Q3^0(ur_AHO*8vgFuwW|n^ zD|H&Wyn^Qfj^g@dI`YlK<6={|M=JI*{5$UBp5@sGP@exo$~deDDHT}_*8-i9KL^;4 z7Uo$O^-`TKpm_%Q6~H9g!9V0Vhj5-|{Zjzv>h@`^N_%@-9otAlT8FuWWq`i84)Feo zV$a%{RpqMg@W`vBTVFwZ)tb)r Date: Tue, 14 Jul 2020 19:10:37 +0800 Subject: [PATCH 2/8] Improved README and added banner image. --- README.md | 69 ++++++++++++++++--------------------------- sudomemoDNS_v1.1.spec | 4 +-- 2 files changed, 27 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index 4d8ea7e..bcbcd4d 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,17 @@ -# sudomemoDNS - -This server will allow you to connect to Sudomemo when -your Internet Service Provider does not work with custom DNS. +![sudomemoDNS Logo](/sudomemoDNS_banner.png) +## This server will allow you to connect to Sudomemo when your Internet Service Provider does not work with custom DNS. ## Setup -The setup process does not differ from what is shown at -https://support.sudomemo.net/setup except for the values -to enter in your custom DNS settings. - -First, make sure that your Nintendo DSi is connected to the -same network as this computer. - -This is the initial release of sudomemoDNS. Please submit any issues to Sudomemo Support. +The setup process does not differ from what is shown at https://flipnot.es/setup except for the values to enter in your custom DNS settings. +First, make sure that your console is connected to the same network as this computer. +Please submit any issues to Sudomemo Support. -# Running on Windows: +## Running on Windows: Run the .exe provided in this release. You may have to click past a warning from Windows SmartScreen (as it sometimes turns its nose up at applications bundled by PyInstaller) or your firewall (as it needs to listen for DNS requests). -# Running on anything else: +## Running on anything else: Required packages (installable with pip): requests, dnslib Required Python version: 3+, tested with 3.6 @@ -31,44 +24,32 @@ The following will display when you start it up: +===============================+ | Sudomemo DNS Server | - | Version 1.0 | + | Version 1.1 | +===============================+ - - Hello! This server will allow you to connect to Sudomemo when - your Internet Service Provider does not work with custom DNS. - - #### How To Use #### - - The setup process does not differ from what is shown at - https://support.sudomemo.net/setup except for the values - to enter in your custom DNS settings. - - First, make sure that your Nintendo DSi is connected to the - same network as this computer. - - Here are the settings you will put in for DNS on your Nintendo DSi: - - Primary DNS: XX.XX.XX.XX (NOTE: this value will be unique when you run the program) + + == Welcome to SudomemoDNS! == + This server will allow you to connect to Sudomemo when your Internet Service Provider does not work with custom DNS. + + == How To Use == + First, make sure that your console is connected to the same network as this computer. + + Then, put these settings for DNS on your console: + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Primary DNS: XXX.XXX.XXX.XXX (NOTE: This value will be unique when you run the program) Secondary DNS: 8.8.8.8 - All other settings should match what is shown at the above URL. - - #### Getting Help #### - - Need help? Visit our Discord server or check out https://support.sudomemo.net. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + == Getting Help == + Need help? Visit our Discord server or check out https://support.sudomemo.net When entering your DNS settings, if the Primary DNS is displayed like this (this is an example): - 192.168.1.7 then you can enter it as follows: - 192.168.001.007 +## Building on Windows -# Building on Windows - -Install dnslib and requests via pip (as well as pyinstaller) and then build with pyinstaller: - -C:\Users\Administrator\sudomemo-dns>C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Scripts\pyinstaller.exe sud -omemoDNS_v1.0.spec +Install dnslib, requests, and pyinstaller via pip, then modify the paths in the spec file to where sudomemoDNS and the sudomemoDNS icon is stored. +Then, run the following as an administrator: + pyinstaller.exe sudomemoDNS_v1.1.spec \ No newline at end of file diff --git a/sudomemoDNS_v1.1.spec b/sudomemoDNS_v1.1.spec index 0c35699..600bb4c 100644 --- a/sudomemoDNS_v1.1.spec +++ b/sudomemoDNS_v1.1.spec @@ -4,7 +4,7 @@ block_cipher = None a = Analysis(['sudomemoDNS.py'], - pathex=['D:\\Libraries\\Documents\\SudomemoDNS'], + pathex=['C:\\PATH\\TO\\SUDOMEMODNS'], binaries=[], datas=[], hiddenimports=[], @@ -29,4 +29,4 @@ exe = EXE(pyz, strip=False, upx=True, runtime_tmpdir=None, - console=True , icon='D:\\Libraries\\Documents\\SudomemoDNS\\sudomemoDNS_icon.ico') \ No newline at end of file + console=True , icon='C:\\PATH\\TO\\SUDOMEMODNS\\ICON.ico') \ No newline at end of file From e7e57e1fe1e9cc9d49c41923d638b6f8d6737711 Mon Sep 17 00:00:00 2001 From: Rob Atkinson Date: Tue, 14 Jul 2020 19:16:35 +0800 Subject: [PATCH 3/8] Added banner into README. --- README.md | 2 +- sudomemoDNS_banner.png | Bin 0 -> 48844 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 sudomemoDNS_banner.png diff --git a/README.md b/README.md index bcbcd4d..a3079df 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![sudomemoDNS Logo](/sudomemoDNS_banner.png) -## This server will allow you to connect to Sudomemo when your Internet Service Provider does not work with custom DNS. +### This server will allow you to connect to Sudomemo when your Internet Service Provider does not work with custom DNS. ## Setup diff --git a/sudomemoDNS_banner.png b/sudomemoDNS_banner.png new file mode 100644 index 0000000000000000000000000000000000000000..500053985a7e9af51b3f39e350fc5e0dbb697b7c GIT binary patch literal 48844 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

onuhS+x3C}kxQisem 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 literal 0 HcmV?d00001 From 41fa8557008490b956ff776a22a1cac41391910f Mon Sep 17 00:00:00 2001 From: SuperDuperRob <52617759+SuperDuperRob@users.noreply.github.com> Date: Tue, 14 Jul 2020 19:20:40 +0800 Subject: [PATCH 4/8] Fixed typo. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a3079df..ec639be 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Required Python version: 3+, tested with 3.6 sudo sudomemoDNS.py -# What you'll see when it starts up +## What you'll see when it starts up The following will display when you start it up: @@ -52,4 +52,4 @@ then you can enter it as follows: Install dnslib, requests, and pyinstaller via pip, then modify the paths in the spec file to where sudomemoDNS and the sudomemoDNS icon is stored. Then, run the following as an administrator: - pyinstaller.exe sudomemoDNS_v1.1.spec \ No newline at end of file + pyinstaller.exe sudomemoDNS_v1.1.spec From c806d5fbcaa2931739db60f8f4e61750b94e68ea Mon Sep 17 00:00:00 2001 From: Rob Atkinson Date: Tue, 14 Jul 2020 19:21:56 +0800 Subject: [PATCH 5/8] Fixed typo. --- README.md | 2 +- sudomemoDNS.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ec639be..0ec750b 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ The following will display when you start it up: == How To Use == First, make sure that your console is connected to the same network as this computer. - Then, put these settings for DNS on your console: + Then, put these settings in for DNS on your console: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Primary DNS: XXX.XXX.XXX.XXX (NOTE: This value will be unique when you run the program) Secondary DNS: 8.8.8.8 diff --git a/sudomemoDNS.py b/sudomemoDNS.py index d180d2d..d157963 100644 --- a/sudomemoDNS.py +++ b/sudomemoDNS.py @@ -55,7 +55,7 @@ def get_ip(): print("== How To Use ==") print("First, make sure that your console is connected to the same network as this computer.\n") -print("Then, put these settings for DNS on your console:") +print("Then, put these settings in for DNS on your console:") print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") print("Primary DNS: ",MY_IP) print("Secondary DNS: 8.8.8.8") From 1d495e8184a4c69517c890c89083830e9de777a1 Mon Sep 17 00:00:00 2001 From: SuperDuperRob <52617759+SuperDuperRob@users.noreply.github.com> Date: Tue, 14 Jul 2020 19:23:49 +0800 Subject: [PATCH 6/8] Fixed typo. --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0ec750b..dfb85b3 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,8 @@ The following will display when you start it up: +===============================+ == Welcome to SudomemoDNS! == - This server will allow you to connect to Sudomemo when your Internet Service Provider does not work with custom DNS. + This server will allow you to connect to Sudomemo when your Internet Service Provider + does not work with custom DNS. == How To Use == First, make sure that your console is connected to the same network as this computer. @@ -43,9 +44,11 @@ The following will display when you start it up: Need help? Visit our Discord server or check out https://support.sudomemo.net When entering your DNS settings, if the Primary DNS is displayed like this (this is an example): + 192.168.1.7 then you can enter it as follows: + 192.168.001.007 ## Building on Windows From 951a2fddff336160ee21351a0aa43ae8b14f6fbe Mon Sep 17 00:00:00 2001 From: SuperDuperRob <52617759+SuperDuperRob@users.noreply.github.com> Date: Tue, 14 Jul 2020 19:24:44 +0800 Subject: [PATCH 7/8] Fixed line spacing error.+ --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index dfb85b3..49c6f38 100644 --- a/README.md +++ b/README.md @@ -55,4 +55,5 @@ then you can enter it as follows: Install dnslib, requests, and pyinstaller via pip, then modify the paths in the spec file to where sudomemoDNS and the sudomemoDNS icon is stored. Then, run the following as an administrator: + pyinstaller.exe sudomemoDNS_v1.1.spec From 349ec8202edcd505c0be571fe2357988faef3ab3 Mon Sep 17 00:00:00 2001 From: Rob Atkinson Date: Tue, 14 Jul 2020 19:27:38 +0800 Subject: [PATCH 8/8] Changed "SudomemoDNS" to "sudomemoDNS". --- README.md | 8 ++++---- sudomemoDNS.py | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 49c6f38..cff79f6 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,9 @@ The following will display when you start it up: | Version 1.1 | +===============================+ - == Welcome to SudomemoDNS! == - This server will allow you to connect to Sudomemo when your Internet Service Provider - does not work with custom DNS. + == Welcome to sudomemoDNS! == + This server will allow you to connect to Sudomemo when your Internet Service Provider does + not work with custom DNS. == How To Use == First, make sure that your console is connected to the same network as this computer. @@ -56,4 +56,4 @@ then you can enter it as follows: Install dnslib, requests, and pyinstaller via pip, then modify the paths in the spec file to where sudomemoDNS and the sudomemoDNS icon is stored. Then, run the following as an administrator: - pyinstaller.exe sudomemoDNS_v1.1.spec + pyinstaller.exe sudomemoDNS_v1.1.spec \ No newline at end of file diff --git a/sudomemoDNS.py b/sudomemoDNS.py index d157963..a38d0fa 100644 --- a/sudomemoDNS.py +++ b/sudomemoDNS.py @@ -1,4 +1,4 @@ -# SudomemoDNS v1.1 +# sudomemoDNS v1.1 # (c) 2019-2020 Austin Burk / Team Sudomemo # All rights reserved @@ -49,7 +49,7 @@ def get_ip(): print("| Version " + SUDOMEMODNS_VERSION + " |") print("+===============================+\n") -print("== Welcome to SudomemoDNS! ==") +print("== Welcome to sudomemoDNS! ==") 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 ==") @@ -64,7 +64,7 @@ def get_ip(): print("== Getting Help ==") print("Need help? Visit our Discord server or check out https://support.sudomemo.net\n") -print("[INFO] Starting SudomemoDNS...") +print("[INFO] Starting sudomemoDNS...") TYPE_LOOKUP = { A: QTYPE.A, @@ -219,7 +219,7 @@ def resolve(self, request, handler): sys.exit(1) -print("[INFO] SudomemoDNS is ready. Now waiting for DNS requests from your console...") +print("[INFO] sudomemoDNS is ready. Now waiting for DNS requests from your console...") if __name__ == '__main__': for s in servers: