From a81bdae05b9bc896c501e6a31dcde8f16ad8e595 Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Sun, 21 Jun 2020 21:42:50 +0200 Subject: [PATCH] Improve the script to better validate, format and sign everything --- utils/format.py | 93 ++++++++++++++++++++++++++++++++++ utils/sort.py | 12 ----- v2/onion-services.md | 1 + v2/onion-services.md.minisig | 6 +-- v2/opennic.md | 2 + v2/opennic.md.minisig | 6 +-- v2/parental-control.md | 3 ++ v2/parental-control.md.minisig | 6 +-- v2/public-resolvers.md | 44 +++++++++++++--- v2/public-resolvers.md.minisig | 6 +-- v2/relays.md | 1 + v2/relays.md.minisig | 6 +-- 12 files changed, 151 insertions(+), 35 deletions(-) create mode 100755 utils/format.py delete mode 100755 utils/sort.py diff --git a/utils/format.py b/utils/format.py new file mode 100755 index 00000000..e141e934 --- /dev/null +++ b/utils/format.py @@ -0,0 +1,93 @@ +#! /usr/bin/env python3 + +import sys +import os +import subprocess +from glob import glob + + +class Entry: + name = None + description = None + stamps = None + + def __init__(self, name, description, stamps): + self.name = name + self.description = description + self.stamps = stamps + + @staticmethod + def parse(raw_entry): + description = "" + stamps = [] + lines = raw_entry.strip().split("\n") + if len(lines) < 2: + return None + name = lines[0].strip() + previous_was_blank = False + for line in lines[1:]: + line = line.strip() + if previous_was_blank is True and line == "": + continue + previous_was_blank = False + if line.startswith("sdns://"): + stamps.append(line) + else: + description = description + line + "\n" + + description = description.strip() + if len(name) < 2 or len(description) < 10 or len(stamps) < 1: + return None + + return Entry(name, description, stamps) + + def format(self): + out = "## " + self.name + "\n\n" + out = out + self.description + "\n\n" + for stamp in self.stamps: + out = out + stamp + "\n" + + return out + + +def process(md_path, signatures_to_update): + print("\n[" + md_path + "]") + entries = {} + out = "" + previous_content = "" + + with open(md_path) as f: + previous_content = f.read() + c = previous_content.split("\n## ") + out = out + c[0].strip() + "\n\n" + raw_entries = c[1:] + for i in range(0, len(raw_entries)): + entry = Entry.parse(raw_entries[i]) + if not entry: + print( + "Invalid entry: [" + raw_entries[i] + "]", file=sys.stderr) + continue + if entry.name in entries: + print("Duplicate entry: [" + entry.name + "]", file=sys.stderr) + entries[entry.name] = entry + + for name in sorted(entries.keys()): + entry = entries[name] + out = out + "\n" + entry.format() + "\n" + + if out == previous_content: + print("No changes") + else: + with open(md_path + ".tmp", "wt") as f: + f.write(out) + os.rename(md_path + ".tmp", md_path) + signatures_to_update.append(md_path) + + +signatures_to_update = [] + +for md_path in glob("v2/*.md"): + process(md_path, signatures_to_update) + +if signatures_to_update: + subprocess.run(["minisign", "-Sm", *signatures_to_update]) diff --git a/utils/sort.py b/utils/sort.py deleted file mode 100755 index 01c0c606..00000000 --- a/utils/sort.py +++ /dev/null @@ -1,12 +0,0 @@ -#! /usr/bin/env python3 - -import sys - -with open(sys.argv[1]) as f: - c = f.read().split("\n## ") - print(c[0].strip()) - entries = c[1:] - for i in range(0, len(entries)): - entries[i] = entries[i].strip() - for entry in sorted(entries): - print("\n\n## " + entry) diff --git a/v2/onion-services.md b/v2/onion-services.md index 371e15fc..0cc1b0fc 100644 --- a/v2/onion-services.md +++ b/v2/onion-services.md @@ -24,3 +24,4 @@ To use that list, add this to the `[sources]` section of your Cloudflare Onion Service sdns://AgcAAAAAAAAAACC0WWFtenR5met-s8i0oiShMtYstulWSybPBq-zBUEMNT5kbnM0dG9ycG5sZnMyaWZ1ejJzMnlmM2ZjN3JkbXNiaG02cnc3NWV1ajM1cGFjNmFwMjV6Z3FhZC5vbmlvbgovZG5zLXF1ZXJ5 + diff --git a/v2/onion-services.md.minisig b/v2/onion-services.md.minisig index a6098bdc..fd65b17e 100644 --- a/v2/onion-services.md.minisig +++ b/v2/onion-services.md.minisig @@ -1,4 +1,4 @@ untrusted comment: signature from minisign secret key -RWQf6LRCGA9i56AJQdEgPJoe/vEo+8DPEkd2JNFwhmOquiH68RCWZKyy7yzZzjhyeEhAIwGnOdm4e609vHyw6DQ6WNc1H7OzKQ0= -trusted comment: timestamp:1589470698 file:onion-services.md -VKEngfsAh/+D7hVA40SObVlJfDlgFFpoYmBwuPuvXtOJPY8NsbMA3va7aIvn/PuvflDIwS5iesJuj0bFbsKJDg== +RWQf6LRCGA9i50FioNSlB3OYxNCJYpIr/frciztqTvWHAa1uUmTN2l9F8ZKIa9kM5ixZTxmX1hlpCw229H5qLqq1ANo/HuwqiQ8= +trusted comment: timestamp:1592768550 file:onion-services.md +HBUYH0qcRW3K4oEW/KIine/GrKkcy2S6Xfq9Pb/VzRqXEWo0CujaQ5tGpTKTsycAaHka6CoosGUzmOs54On4CA== diff --git a/v2/opennic.md b/v2/opennic.md index 18e68fd0..74b320c1 100644 --- a/v2/opennic.md +++ b/v2/opennic.md @@ -28,6 +28,7 @@ Hosted in Switzerland by ibksturm, aka Andreas Ziegler sdns://AQcAAAAAAAAAEDg1LjUuOTMuMjMwOjg0NDMgwc9XUACwW8JsYh9ez5qiVgrOvwB-vss6f_SyDeC0Oe4YMi5kbnNjcnlwdC1jZXJ0Lmlia3N0dXJt + ## ibksturm-ipv6 dnscrypt-server (nginx - encrypted-dns - unbound backend), DNSSEC / Non-Logged / Uncensored, OpenNIC and Root DNS-Zone Copy @@ -128,3 +129,4 @@ DNSSEC • OpenNIC • Non-logging • Uncensored - hosted on ovh.com.au Maintained by publicarray - https://dns.seby.io sdns://AgcAAAAAAAAADTEzOS45OS4yMjIuNzIgPhoaD2xT8-l6SS1XCEtbmAcFnuBXqxUFh2_YP9o9uDgRZG9oLTIuc2VieS5pbzo0NDMKL2Rucy1xdWVyeQ + diff --git a/v2/opennic.md.minisig b/v2/opennic.md.minisig index 7bbbe377..3017e3f0 100644 --- a/v2/opennic.md.minisig +++ b/v2/opennic.md.minisig @@ -1,4 +1,4 @@ untrusted comment: signature from minisign secret key -RWQf6LRCGA9i5znQ+l925rdVO5n68WuLFfMfyjX3O2j5bJg0zOTAQfFM9336s4Gy0kvCPNeuzO/4zCnVq2NEzm6d8O/vLJsNPQs= -trusted comment: timestamp:1591107916 file:opennic.md -9XpBy7favylbwtcwsJ+zQogQFbvHCLMj8bjcQnPJUQGA9AuMDMc4vet2MhL/H7kiEEPZbPbmi2lD2KQH5EvRAg== +RWQf6LRCGA9i5xLlTeDptDCf4Rn19jfvqA0kf9If+sWoZqZYYy/S99/AVhJKv3W88vbWfBxBBenCdHcwUYltJNIYwd7/trLZeg8= +trusted comment: timestamp:1592768550 file:opennic.md +C/L7YOhWIRsoXM8OJIy6do58yJu/V4w949fAUpDxcWrp5i38gVXY7YBgDP4EXdOuTrzPN6+0KECgMiiatUVFAQ== diff --git a/v2/parental-control.md b/v2/parental-control.md index f9438dd2..6c791551 100644 --- a/v2/parental-control.md +++ b/v2/parental-control.md @@ -33,6 +33,8 @@ CIRA DoH resolvers, blocking trackers, malware, phishing and pornography. Operated by the .CA registry. Built by Canadians for Canadians. https://www.cira.ca/fr/cybersecurity-services/canadian-shield +sdns://AgEAAAAAAAAAACA_4zhjTgUQYz3kU8o1CxXOwzmz3Li6nyot0k0QqDj-6x1mYW1pbHkuY2FuYWRpYW5zaGllbGQuY2lyYS5jYQovZG5zLXF1ZXJ5 + ## cisco-familyshield @@ -150,3 +152,4 @@ Hosted in Paris, running on a 1-XS server donated by Scaleway.com Maintained by Frank Denis - https://fr.dnscrypt.info/sfw.html sdns://AQMAAAAAAAAAEzE2My4xNzIuMTgwLjEyNTo0NDMg32Jzv8dSGSqLWjm8DIWsP_lkRdc2RPZicoJdNVjxof8fMi5kbnNjcnlwdC1jZXJ0LnNmdy5zY2FsZXdheS1mcg + diff --git a/v2/parental-control.md.minisig b/v2/parental-control.md.minisig index d78a3851..ec776162 100644 --- a/v2/parental-control.md.minisig +++ b/v2/parental-control.md.minisig @@ -1,4 +1,4 @@ untrusted comment: signature from minisign secret key -RWQf6LRCGA9i5/y4TNTdCatzmBNFqERNYoilAFFPeJRgyExg9js1T5OVRPzk8I6lynsvJ2qvMXo5f8OdplLydL+WCrICDgGEKAo= -trusted comment: timestamp:1592763672 file:parental-control.md -20VcUbCXg0RmoRLx49PdKBQe4sqY3MXfd8SIpjM8jAy+Cd8mg36laO6lD9wJgSmZIwJDPvw5/VZoTTwPm0IcBw== +RWQf6LRCGA9i52UtToPgih/Ec5ZpmGwlleDewldnQWpKX1wAwcJJd4RCcqZL72JpXNlflkjN6OrERCjQnxd8P2vghKeoZ3F/aAE= +trusted comment: timestamp:1592768550 file:parental-control.md +vs4JvoxoGPflyulBoegAZMJNr2+hYcQcYFLEEdkQKczcc+YlR+Odee75JQPDOF94tJI/KgTM00XjUijhC5v3DQ== diff --git a/v2/public-resolvers.md b/v2/public-resolvers.md index fac6c815..70dc812a 100644 --- a/v2/public-resolvers.md +++ b/v2/public-resolvers.md @@ -239,6 +239,7 @@ sdns://AgEAAAAAAAAAACA_4zhjTgUQYz3kU8o1CxXOwzmz3Li6nyot0k0QqDj-6x1mYW1pbHkuY2FuY ## cira-private + CIRA DoH resolvers, blocking trackers. Operated by the .CA registry. Built by Canadians for Canadians. https://www.cira.ca/fr/cybersecurity-services/canadian-shield @@ -1167,7 +1168,6 @@ sdns://AQcAAAAAAAAADTIzLjExMS43NC4yMDUg_0RyX8kcAcMdtRk5SAX5RKs3yiLLS6kdJlnsUpVbn An open (non-logging, non-filtering, no ECS) DNSCrypt resolver operated by https://faelix.net/ with IPv4 nodes anycast within AS41495 in Switzerland. sdns://AQcAAAAAAAAAEzE4NS4xMzQuMTk2LjU0Ojg0NDMgfsvvPi8BgDKNYODh0ewj5Oh32OoJoZNwGgTWs8C-i-EfMi5kbnNjcnlwdC1jZXJ0LnJkbnMuZmFlbGl4Lm5ldA - sdns://AQcAAAAAAAAAEzE4NS4xMzQuMTk2LjU1Ojg0NDMgfsvvPi8BgDKNYODh0ewj5Oh32OoJoZNwGgTWs8C-i-EfMi5kbnNjcnlwdC1jZXJ0LnJkbnMuZmFlbGl4Lm5ldA @@ -1176,7 +1176,6 @@ sdns://AQcAAAAAAAAAEzE4NS4xMzQuMTk2LjU1Ojg0NDMgfsvvPi8BgDKNYODh0ewj5Oh32OoJoZNwG An open (non-logging, non-filtering, no ECS) DoH resolver operated by https://faelix.net/ with IPv4 nodes anycast within AS41495 in Switzerland. sdns://AgcAAAAAAAAADjE4NS4xMzQuMTk2LjU0ID4aGg9sU_PpekktVwhLW5gHBZ7gV6sVBYdv2D_aPbg4D3JkbnMuZmFlbGl4Lm5ldAEv - sdns://AgcAAAAAAAAADjE4NS4xMzQuMTk2LjU1ID4aGg9sU_PpekktVwhLW5gHBZ7gV6sVBYdv2D_aPbg4D3JkbnMuZmFlbGl4Lm5ldAEv @@ -1185,7 +1184,6 @@ sdns://AgcAAAAAAAAADjE4NS4xMzQuMTk2LjU1ID4aGg9sU_PpekktVwhLW5gHBZ7gV6sVBYdv2D_aP An open (non-logging, non-filtering, no ECS) DNSCrypt resolver operated by https://faelix.net/ with IPv6 nodes anycast within AS41495 in Switzerland. sdns://AQcAAAAAAAAAFFsyYTAxOjllMDE6OjU0XTo4NDQzIH7L7z4vAYAyjWDg4dHsI-Tod9jqCaGTcBoE1rPAvovhHzIuZG5zY3J5cHQtY2VydC5yZG5zLmZhZWxpeC5uZXQ - sdns://AQcAAAAAAAAAFFsyYTAxOjllMDE6OjU1XTo4NDQzIH7L7z4vAYAyjWDg4dHsI-Tod9jqCaGTcBoE1rPAvovhHzIuZG5zY3J5cHQtY2VydC5yZG5zLmZhZWxpeC5uZXQ @@ -1194,7 +1192,6 @@ sdns://AQcAAAAAAAAAFFsyYTAxOjllMDE6OjU1XTo4NDQzIH7L7z4vAYAyjWDg4dHsI-Tod9jqCaGTc An open (non-logging, non-filtering, no ECS) DoH resolver operated by https://faelix.net/ with IPv6 nodes anycast within AS41495 in Switzerland. sdns://AgcAAAAAAAAAD1syYTAxOjllMDE6OjU0XSA-GhoPbFPz6XpJLVcIS1uYBwWe4FerFQWHb9g_2j24OA9yZG5zLmZhZWxpeC5uZXQBLw - sdns://AgcAAAAAAAAAD1syYTAxOjllMDE6OjU1XSA-GhoPbFPz6XpJLVcIS1uYBwWe4FerFQWHb9g_2j24OA9yZG5zLmZhZWxpeC5uZXQBLw @@ -1203,7 +1200,6 @@ sdns://AgcAAAAAAAAAD1syYTAxOjllMDE6OjU1XSA-GhoPbFPz6XpJLVcIS1uYBwWe4FerFQWHb9g_2 An open (non-logging, non-filtering, no ECS) DNSCrypt resolver operated by https://faelix.net/ with IPv4 nodes anycast within AS41495 in the UK. sdns://AQcAAAAAAAAAEjQ2LjIyNy4yMDAuNTQ6ODQ0MyB-y-8-LwGAMo1g4OHR7CPk6HfY6gmhk3AaBNazwL6L4R8yLmRuc2NyeXB0LWNlcnQucmRucy5mYWVsaXgubmV0 - sdns://AQcAAAAAAAAAEjQ2LjIyNy4yMDAuNTU6ODQ0MyB-y-8-LwGAMo1g4OHR7CPk6HfY6gmhk3AaBNazwL6L4R8yLmRuc2NyeXB0LWNlcnQucmRucy5mYWVsaXgubmV0 @@ -1212,7 +1208,6 @@ sdns://AQcAAAAAAAAAEjQ2LjIyNy4yMDAuNTU6ODQ0MyB-y-8-LwGAMo1g4OHR7CPk6HfY6gmhk3AaB An open (non-logging, non-filtering, no ECS) DoH resolver operated by https://faelix.net/ with IPv4 nodes anycast within AS41495 in the UK. sdns://AgcAAAAAAAAADTQ2LjIyNy4yMDAuNTQgPhoaD2xT8-l6SS1XCEtbmAcFnuBXqxUFh2_YP9o9uDgPcmRucy5mYWVsaXgubmV0AS8 - sdns://AgcAAAAAAAAADTQ2LjIyNy4yMDAuNTUgPhoaD2xT8-l6SS1XCEtbmAcFnuBXqxUFh2_YP9o9uDgPcmRucy5mYWVsaXgubmV0AS8 @@ -1221,7 +1216,6 @@ sdns://AgcAAAAAAAAADTQ2LjIyNy4yMDAuNTUgPhoaD2xT8-l6SS1XCEtbmAcFnuBXqxUFh2_YP9o9u An open (non-logging, non-filtering, no ECS) DNSCrypt resolver operated by https://faelix.net/ with IPv6 nodes anycast within AS41495 in the UK. sdns://AQcAAAAAAAAAFFsyYTAxOjllMDA6OjU0XTo4NDQzIH7L7z4vAYAyjWDg4dHsI-Tod9jqCaGTcBoE1rPAvovhHzIuZG5zY3J5cHQtY2VydC5yZG5zLmZhZWxpeC5uZXQ - sdns://AQcAAAAAAAAAFFsyYTAxOjllMDA6OjU1XTo4NDQzIH7L7z4vAYAyjWDg4dHsI-Tod9jqCaGTcBoE1rPAvovhHzIuZG5zY3J5cHQtY2VydC5yZG5zLmZhZWxpeC5uZXQ @@ -1230,7 +1224,6 @@ sdns://AQcAAAAAAAAAFFsyYTAxOjllMDA6OjU1XTo4NDQzIH7L7z4vAYAyjWDg4dHsI-Tod9jqCaGTc An open (non-logging, non-filtering, no ECS) DoH resolver operated by https://faelix.net/ with IPv6 nodes anycast within AS41495 in the UK. sdns://AgcAAAAAAAAAD1syYTAxOjllMDA6OjU0XSA-GhoPbFPz6XpJLVcIS1uYBwWe4FerFQWHb9g_2j24OA9yZG5zLmZhZWxpeC5uZXQBLw - sdns://AgcAAAAAAAAAD1syYTAxOjllMDA6OjU1XSA-GhoPbFPz6XpJLVcIS1uYBwWe4FerFQWHb9g_2j24OA9yZG5zLmZhZWxpeC5uZXQBLw @@ -1599,82 +1592,114 @@ sdns://AgcAAAAAAAAAACAoPxWWFWiOuUdTdn7SvYpzbNqr_iDmmJrktihy4wca5gxkbnMudHduaWMud ## quad9-dnscrypt-ip4-filter-alt + Quad9 (anycast) dnssec/no-log/filter 149.112.112.9 + sdns://AQMAAAAAAAAAEjE0OS4xMTIuMTEyLjk6ODQ0MyBnyEe4yHWM0SAkVUO-dWdG3zTfHYTAC4xHA2jfgh2GPhkyLmRuc2NyeXB0LWNlcnQucXVhZDkubmV0 ## quad9-dnscrypt-ip4-filter-pri + Quad9 (anycast) dnssec/no-log/filter 9.9.9.9 + sdns://AQMAAAAAAAAADDkuOS45Ljk6ODQ0MyBnyEe4yHWM0SAkVUO-dWdG3zTfHYTAC4xHA2jfgh2GPhkyLmRuc2NyeXB0LWNlcnQucXVhZDkubmV0 ## quad9-dnscrypt-ip4-nofilter-alt + Quad9 (anycast) no-dnssec/no-log/no-filter 149.112.112.10 + sdns://AQYAAAAAAAAAEzE0OS4xMTIuMTEyLjEwOjg0NDMgZ8hHuMh1jNEgJFVDvnVnRt803x2EwAuMRwNo34Idhj4ZMi5kbnNjcnlwdC1jZXJ0LnF1YWQ5Lm5ldA ## quad9-dnscrypt-ip4-nofilter-pri + Quad9 (anycast) no-dnssec/no-log/no-filter 9.9.9.10 + sdns://AQYAAAAAAAAADTkuOS45LjEwOjg0NDMgZ8hHuMh1jNEgJFVDvnVnRt803x2EwAuMRwNo34Idhj4ZMi5kbnNjcnlwdC1jZXJ0LnF1YWQ5Lm5ldA ## quad9-dnscrypt-ip6-filter-alt + Quad9 (anycast) dnssec/no-log/filter 2620:fe::9 + sdns://AQMAAAAAAAAAEVsyNjIwOmZlOjo5XTo4NDQzIGfIR7jIdYzRICRVQ751Z0bfNN8dhMALjEcDaN-CHYY-GTIuZG5zY3J5cHQtY2VydC5xdWFkOS5uZXQ ## quad9-dnscrypt-ip6-filter-pri + Quad9 (anycast) dnssec/no-log/filter 2620:fe::fe:9 + sdns://AQMAAAAAAAAAFFsyNjIwOmZlOjpmZTo5XTo4NDQzIGfIR7jIdYzRICRVQ751Z0bfNN8dhMALjEcDaN-CHYY-GTIuZG5zY3J5cHQtY2VydC5xdWFkOS5uZXQ ## quad9-dnscrypt-ip6-nofilter-alt + Quad9 (anycast) no-dnssec/no-log/no-filter 2620:fe::fe:10 + sdns://AQYAAAAAAAAAFVsyNjIwOmZlOjpmZToxMF06ODQ0MyBnyEe4yHWM0SAkVUO-dWdG3zTfHYTAC4xHA2jfgh2GPhkyLmRuc2NyeXB0LWNlcnQucXVhZDkubmV0 ## quad9-dnscrypt-ip6-nofilter-pri + Quad9 (anycast) no-dnssec/no-log/no-filter 2620:fe::10 + sdns://AQYAAAAAAAAAElsyNjIwOmZlOjoxMF06ODQ0MyBnyEe4yHWM0SAkVUO-dWdG3zTfHYTAC4xHA2jfgh2GPhkyLmRuc2NyeXB0LWNlcnQucXVhZDkubmV0 ## quad9-doh-ip4-filter-alt + Quad9 (anycast) dnssec/no-log/filter 149.112.112.9 + sdns://AgMAAAAAAAAADTE0OS4xMTIuMTEyLjmAABJkbnM5LnF1YWQ5Lm5ldDo0NDMKL2Rucy1xdWVyeQ ## quad9-doh-ip4-filter-pri + Quad9 (anycast) dnssec/no-log/filter 9.9.9.9 + sdns://AgMAAAAAAAAABzkuOS45LjmAABJkbnM5LnF1YWQ5Lm5ldDo0NDMKL2Rucy1xdWVyeQ ## quad9-doh-ip4-nofilter-alt + Quad9 (anycast) no-dnssec/no-log/no-filter 149.112.112.10 + sdns://AgYAAAAAAAAADjE0OS4xMTIuMTEyLjEwgAASZG5zOS5xdWFkOS5uZXQ6NDQzCi9kbnMtcXVlcnk ## quad9-doh-ip4-nofilter-pri + Quad9 (anycast) no-dnssec/no-log/no-filter 9.9.9.10 + sdns://AgYAAAAAAAAACDkuOS45LjEwgAASZG5zOS5xdWFkOS5uZXQ6NDQzCi9kbnMtcXVlcnk ## quad9-doh-ip6-filter-alt + Quad9 (anycast) dnssec/no-log/filter 2620:fe::fe:9 + sdns://AgMAAAAAAAAAD1syNjIwOmZlOjpmZTo5XYAAEmRuczkucXVhZDkubmV0OjQ0MwovZG5zLXF1ZXJ5 ## quad9-doh-ip6-filter-pri + Quad9 (anycast) dnssec/no-log/filter 2620:fe::9 + sdns://AgMAAAAAAAAADFsyNjIwOmZlOjo5XYAAEmRuczkucXVhZDkubmV0OjQ0MwovZG5zLXF1ZXJ5 ## quad9-doh-ip6-nofilter-alt + Quad9 (anycast) no-dnssec/no-log/no-filter 2620:fe::fe:10 + sdns://AgYAAAAAAAAAEFsyNjIwOmZlOjpmZToxMF2AABJkbnM5LnF1YWQ5Lm5ldDo0NDMKL2Rucy1xdWVyeQ ## quad9-doh-ip6-nofilter-pri + Quad9 (anycast) no-dnssec/no-log/no-filter 2620:fe::10 + sdns://AgYAAAAAAAAADVsyNjIwOmZlOjoxMF2AABJkbnM5LnF1YWQ5Lm5ldDo0NDMKL2Rucy1xdWVyeQ @@ -1780,12 +1805,14 @@ sdns://AQcAAAAAAAAAFDE3OC4yMTYuMjAxLjIyMjoyMDUzICXE4YgpFUaXj5wrvbanr6QB7aBRBQhdU ## sth-dnscrypt-se + Resolver in Stockholm, Sweden. DNSCrypt server. Non-logging, non-filtering, DNSSEC. Forward DNS to anoymized DNS servers sdns://AQcAAAAAAAAAETQ1LjE1My4xODcuOTY6NDQzILwTiPV2Pj3sdfHJD8kVv7aK6t_rHEX2mFGAY5xg5_FiHzIuZG5zY3J5cHQtY2VydC5zdGgtZG5zY3J5cHQtc2U ## sth-doh-se + Resolver in Stockholm, Sweden. DoH server. Non-logging, non-filtering, DNSSEC. Forward DNS to anoymized DNS servers sdns://AgcAAAAAAAAAETQ1LjE1My4xODcuOTY6NDQzABZkbnNzZS5hbGVrYmVyZy5uZXQ6NDQzBC9kbnM @@ -1833,3 +1860,4 @@ sdns://AgUAAAAAAAAAEjk2LjExMy4xNTEuMTQzOjQ0M6Ax_Wo8PCx8I5Gkl1qfoqes0mp4xMrk1W5GI Yandex public DNS server (anycast) sdns://AQQAAAAAAAAAEDc3Ljg4LjguNzg6MTUzNTMg04TAccn3RmKvKszVe13MlxTUB7atNgHhrtwG1W1JYyciMi5kbnNjcnlwdC1jZXJ0LmJyb3dzZXIueWFuZGV4Lm5ldA + diff --git a/v2/public-resolvers.md.minisig b/v2/public-resolvers.md.minisig index 275debdf..d6391dcf 100644 --- a/v2/public-resolvers.md.minisig +++ b/v2/public-resolvers.md.minisig @@ -1,4 +1,4 @@ untrusted comment: signature from minisign secret key -RWQf6LRCGA9i55ilPriyen1JekpI0IH0gvZzepH6y/Fm2Bpi8WnhPDDpYuUiWR4MhTZD543ByzwsdilZFGy+v5LwvYKxqcnr1wg= -trusted comment: timestamp:1592763672 file:public-resolvers.md -vUWZrtgrCHw14l8aEid/Rb7ViWzX+1GtTAzu4iao9uYymoFW7rlyytPmk7iPv76CnY+HjpPNY3t5DaLA83g4DA== +RWQf6LRCGA9i5xns+QPfUeCV9HCEkmM+CjQvTBPM7ISmZJAdA2ZDVOPxRPy2VqOnPddWtiE7ekmI49d8ntiLGrrBy9IuVxqLugQ= +trusted comment: timestamp:1592768550 file:public-resolvers.md +99UCKErRtunO5cKTn/4MPBC3y6mqilU4jsGuXtGslkrZX4YsneWP5JBOrhFdmFnmJz+CiyomB6FK11j68zUHBg== diff --git a/v2/relays.md b/v2/relays.md index b5bb29c8..6aa11e6a 100644 --- a/v2/relays.md +++ b/v2/relays.md @@ -295,3 +295,4 @@ sdns://gRMxMDQuMjM4LjE4Ni4xOTI6NDQz Anonymized DNS relay hosted in UK on Vultr sdns://gSxbMjAwMToxOWYwOjc0MDI6MTU3NDo1NDAwOjJmZjpmZTY2OjJjZmZdOjQ0Mw + diff --git a/v2/relays.md.minisig b/v2/relays.md.minisig index ac888fc9..627eef6e 100644 --- a/v2/relays.md.minisig +++ b/v2/relays.md.minisig @@ -1,4 +1,4 @@ untrusted comment: signature from minisign secret key -RWQf6LRCGA9i57eSFq9p9qQ4Y5raP2ptJFK7MCteNxLtHYWeQ1HuPVB3Fr0uf45tVWf2VE2pySfSoADsqYIpVe6YJKYKusN6MA0= -trusted comment: timestamp:1592217577 file:relays.md -T6JGlgCNvIgim7EfH3n2kCWj5QktSDn7+1GnktN1+dJxkfDs/SRxR135TqhRhnBnpJ0RsH4IXGsqizv1OwYQCA== +RWQf6LRCGA9i5xRPX0ZoZco2e8P+Z6xOYuh2izHYYNX0cXaZRSzk0Kh9AsnFgMeDMM4TFTINTothN8SXlzXlZYz3F7Uj6eZnxgY= +trusted comment: timestamp:1592768550 file:relays.md +PvPWr0/XxpFQYGvWBRSp0rSdgjz3RBgpoQ6GOyeVMJk29sws+3eWubY2lcPYKWuXhGobZ7JYWyLavDRHiUtzCg==