From 1867401b359d4f0abdb7fe150e00426ad5457c3a Mon Sep 17 00:00:00 2001 From: Junker Date: Tue, 14 Apr 2020 18:51:52 +0700 Subject: [PATCH 1/8] make python3.4 compatible --- README.md | 2 +- authenticator.py | 11 ++++++----- cleanup.py | 9 +++++---- 3 files changed, 12 insertions(+), 10 deletions(-) mode change 100644 => 100755 authenticator.py mode change 100644 => 100755 cleanup.py diff --git a/README.md b/README.md index 79ab273..855985e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # NameSilo Let's Encrypt [![License (3-Clause BSD)](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square)](http://opensource.org/licenses/BSD-3-Clause) -[![Python 3.8](https://img.shields.io/badge/python-3.8-blue.svg)](https://www.python.org/) +[![Python 3.4](https://img.shields.io/badge/python-3.4-blue.svg)](https://www.python.org/) Python scripts (hook) to automate obtaining [Let's Encrypt](https://letsencrypt.org/) certificates, using [Certbot](https://certbot.eff.org/) DNS-01 challenge validation for domains DNS hosted on diff --git a/authenticator.py b/authenticator.py old mode 100644 new mode 100755 index c6fb9bd..1db6e8d --- a/authenticator.py +++ b/authenticator.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python3.8 +#!/usr/bin/env python3 # authenticator.py # @@ -51,14 +51,15 @@ def sleep(minutes): domain = os.environ['CERTBOT_DOMAIN'] validation = os.environ['CERTBOT_VALIDATION'] -tmpdir = os.path.join(tempfile.gettempdir(), f"CERTBOT_{domain}") +tmpdir = os.path.join(tempfile.gettempdir(), "CERTBOT_"+domain) if "NAMESILO_API" in os.environ: apikey = os.environ['NAMESILO_API'] -url = f"https://www.namesilo.com/api/dnsAddRecord?\ -version=1&type=xml&key={apikey}&domain={domain}&rrtype=TXT\ -&rrhost=_acme-challenge&rrvalue={validation}&rrttl=3600" + +url = "https://www.namesilo.com/api/dnsAddRecord?\ +version=1&type=xml&key="+apikey+"&domain="+domain+"&rrtype=TXT\ +&rrhost=_acme-challenge&rrvalue="+validation+"&rrttl=3600" req = urllib.request.Request( url, diff --git a/cleanup.py b/cleanup.py old mode 100644 new mode 100755 index 627560a..37aebf5 --- a/cleanup.py +++ b/cleanup.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python3.8 +#!/usr/bin/env python3 # cleanup.py # @@ -41,13 +41,14 @@ import untangle from config import apikey domain = os.environ['CERTBOT_DOMAIN'] -tmpdir = os.path.join(tempfile.gettempdir(), f"CERTBOT_{domain}") +tmpdir = os.path.join(tempfile.gettempdir(), "CERTBOT_"+domain) + if "NAMESILO_API" in os.environ: apikey = os.environ['NAMESILO_API'] -url = f"https://www.namesilo.com/api/dnsDeleteRecord\ -?version=1&type=xml&key={apikey}&domain={domain}&rrid=" +url = "https://www.namesilo.com/api/dnsDeleteRecord\ +?version=1&type=xml&key="+apikey+"&domain="+domain+"&rrid=" def getrequest(record_id): From d680a58068f8fd08468ce46e07a2f93e84d23210 Mon Sep 17 00:00:00 2001 From: Junker <1144095+Junker@users.noreply.github.com> Date: Tue, 14 Apr 2020 19:21:09 +0700 Subject: [PATCH 2/8] add subdomains support --- README.md | 5 ++++- authenticator.py | 11 +++++++++-- cleanup.py | 7 +++++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 855985e..d93e2ba 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,12 @@ using [Certbot](https://certbot.eff.org/) DNS-01 challenge validation for domain ## Setup -The scripts use the [untangle](https://untangle.readthedocs.io/en/latest/) library, if not already installed on your system: +The scripts use the [untangle](https://untangle.readthedocs.io/en/latest/) and tldextract libraries, if not already installed on your system: ``` pip install untangle + +pip install tldextract ``` Download the [latest release](https://github.com/ethauvin/namesilo-letsencrypt/releases) archive and expand it in the desired directory. @@ -44,3 +46,4 @@ certbot certonly --manual --email you@example.com \ Please note that NameSilo DNS propagation takes up to **15 minutes**. The scripts will wait **20 minutes** before completing, just to be safe. +q diff --git a/authenticator.py b/authenticator.py index 1db6e8d..8098b0c 100755 --- a/authenticator.py +++ b/authenticator.py @@ -37,6 +37,7 @@ import tempfile import time import urllib.request +import tldextract import untangle from config import apikey, wait @@ -52,14 +53,20 @@ def sleep(minutes): domain = os.environ['CERTBOT_DOMAIN'] validation = os.environ['CERTBOT_VALIDATION'] tmpdir = os.path.join(tempfile.gettempdir(), "CERTBOT_"+domain) +rrhost = "_acme-challenge" if "NAMESILO_API" in os.environ: apikey = os.environ['NAMESILO_API'] +tld = tldextract.extract(domain) +nsdomain = tld.domain+"."+tld.suffix +if tld.subdomain: + rrhost += "."+tld.subdomain + url = "https://www.namesilo.com/api/dnsAddRecord?\ -version=1&type=xml&key="+apikey+"&domain="+domain+"&rrtype=TXT\ -&rrhost=_acme-challenge&rrvalue="+validation+"&rrttl=3600" +version=1&type=xml&key="+apikey+"&domain="+nsdomain+"&rrtype=TXT\ +&rrhost="+rrhost+"&rrvalue="+validation+"&rrttl=3600" req = urllib.request.Request( url, diff --git a/cleanup.py b/cleanup.py index 37aebf5..e95a369 100755 --- a/cleanup.py +++ b/cleanup.py @@ -36,6 +36,7 @@ import sys import tempfile import urllib.request +import tldextract import untangle from config import apikey @@ -47,9 +48,11 @@ tmpdir = os.path.join(tempfile.gettempdir(), "CERTBOT_"+domain) if "NAMESILO_API" in os.environ: apikey = os.environ['NAMESILO_API'] -url = "https://www.namesilo.com/api/dnsDeleteRecord\ -?version=1&type=xml&key="+apikey+"&domain="+domain+"&rrid=" +tld = tldextract.extract(domain) +nsdomain = tld.domain+"."+tld.suffix +url = "https://www.namesilo.com/api/dnsDeleteRecord\ +?version=1&type=xml&key="+apikey+"&domain="+nsdomain+"&rrid=" def getrequest(record_id): return urllib.request.Request( From 94caed2d984c14727fc03647ead379e6ce8938d6 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 14 Apr 2020 12:02:01 -0700 Subject: [PATCH 3/8] Cleanup. --- README.md | 7 ++----- authenticator.py | 15 +++++++-------- cleanup.py | 8 ++++---- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index d93e2ba..d24deae 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,10 @@ using [Certbot](https://certbot.eff.org/) DNS-01 challenge validation for domain ## Setup -The scripts use the [untangle](https://untangle.readthedocs.io/en/latest/) and tldextract libraries, if not already installed on your system: +The scripts use the [tldextract](https://github.com/john-kurkowski/tldextract) and [untangle](https://untangle.readthedocs.io/en/latest/) libraries, if not already installed on your system: ``` -pip install untangle - -pip install tldextract +pip install tldextract untangle ``` Download the [latest release](https://github.com/ethauvin/namesilo-letsencrypt/releases) archive and expand it in the desired directory. @@ -46,4 +44,3 @@ certbot certonly --manual --email you@example.com \ Please note that NameSilo DNS propagation takes up to **15 minutes**. The scripts will wait **20 minutes** before completing, just to be safe. -q diff --git a/authenticator.py b/authenticator.py index 8098b0c..742ff9e 100755 --- a/authenticator.py +++ b/authenticator.py @@ -52,29 +52,28 @@ def sleep(minutes): domain = os.environ['CERTBOT_DOMAIN'] validation = os.environ['CERTBOT_VALIDATION'] -tmpdir = os.path.join(tempfile.gettempdir(), "CERTBOT_"+domain) +tmpdir = os.path.join(tempfile.gettempdir(), "CERTBOT_" + domain) rrhost = "_acme-challenge" if "NAMESILO_API" in os.environ: apikey = os.environ['NAMESILO_API'] - tld = tldextract.extract(domain) -nsdomain = tld.domain+"."+tld.suffix +nsdomain = tld.domain + "." + tld.suffix if tld.subdomain: - rrhost += "."+tld.subdomain + rrhost += "." + tld.subdomain url = "https://www.namesilo.com/api/dnsAddRecord?\ -version=1&type=xml&key="+apikey+"&domain="+nsdomain+"&rrtype=TXT\ -&rrhost="+rrhost+"&rrvalue="+validation+"&rrttl=3600" +version=1&type=xml&key=" + apikey + "&domain=" + nsdomain + "&rrtype=TXT\ +&rrhost=" + rrhost + "&rrvalue=" + validation + "&rrttl=3600" req = urllib.request.Request( url, data=None, headers={ - 'User-Agent': ('Mozilla/5.0 (X11; CrOS x86_64 11647.154.0) ' + 'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; Win64; x64) ' 'AppleWebKit/537.36 (KHTML, like Gecko) ' - 'Chrome/73.0.3683.114 Safari/537.36') + 'Chrome/80.0.3987.163 Safari/537.36') } ) diff --git a/cleanup.py b/cleanup.py index e95a369..28a8e4a 100755 --- a/cleanup.py +++ b/cleanup.py @@ -42,17 +42,17 @@ import untangle from config import apikey domain = os.environ['CERTBOT_DOMAIN'] -tmpdir = os.path.join(tempfile.gettempdir(), "CERTBOT_"+domain) - +tmpdir = os.path.join(tempfile.gettempdir(), "CERTBOT_" + domain) if "NAMESILO_API" in os.environ: apikey = os.environ['NAMESILO_API'] tld = tldextract.extract(domain) -nsdomain = tld.domain+"."+tld.suffix +nsdomain = tld.domain + "." + tld.suffix url = "https://www.namesilo.com/api/dnsDeleteRecord\ -?version=1&type=xml&key="+apikey+"&domain="+nsdomain+"&rrid=" +?version=1&type=xml&key=" + apikey + "&domain=" + nsdomain + "&rrid=" + def getrequest(record_id): return urllib.request.Request( From 2f5be01ec9585b579d9203f61d06a732e7acf6dd Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 14 Apr 2020 12:09:27 -0700 Subject: [PATCH 4/8] Updated user-agent. --- authenticator.py | 5 ++--- cleanup.py | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/authenticator.py b/authenticator.py index 742ff9e..08c5ac9 100755 --- a/authenticator.py +++ b/authenticator.py @@ -71,9 +71,8 @@ req = urllib.request.Request( url, data=None, headers={ - 'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; Win64; x64) ' - 'AppleWebKit/537.36 (KHTML, like Gecko) ' - 'Chrome/80.0.3987.163 Safari/537.36') + 'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) ' + 'Gecko/20100101 Firefox/74.0') } ) diff --git a/cleanup.py b/cleanup.py index 28a8e4a..c15d05c 100755 --- a/cleanup.py +++ b/cleanup.py @@ -59,9 +59,8 @@ def getrequest(record_id): url + record_id, data=None, headers={ - 'User-Agent': ('Mozilla/5.0 (X11; CrOS x86_64 11647.154.0) ' - 'AppleWebKit/537.36 (KHTML, like Gecko) ' - 'Chrome/73.0.3683.114 Safari/537.36') + 'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) ' + 'Gecko/20100101 Firefox/74.0') } ) From 03f68df7ec6f5f9d856298e6c807891482d70814 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Wed, 27 May 2020 17:44:29 -0700 Subject: [PATCH 5/8] Changed wait default to 25 mins. --- .idea/namesilo-letsencrypt.iml | 2 +- README.md | 2 +- authenticator.py | 1 - config.py | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.idea/namesilo-letsencrypt.iml b/.idea/namesilo-letsencrypt.iml index 01981e5..ddc01a4 100644 --- a/.idea/namesilo-letsencrypt.iml +++ b/.idea/namesilo-letsencrypt.iml @@ -7,7 +7,7 @@ - + \ No newline at end of file diff --git a/README.md b/README.md index d24deae..7891295 100644 --- a/README.md +++ b/README.md @@ -43,4 +43,4 @@ certbot certonly --manual --email you@example.com \ -d *.example.com -d example.com -Please note that NameSilo DNS propagation takes up to **15 minutes**. The scripts will wait **20 minutes** before completing, just to be safe. +Please note that NameSilo DNS propagation takes up to **15 minutes**. The scripts will wait **25 minutes** before completing, just to be safe. diff --git a/authenticator.py b/authenticator.py index 08c5ac9..510aa1f 100755 --- a/authenticator.py +++ b/authenticator.py @@ -46,7 +46,6 @@ from config import apikey, wait def sleep(minutes): if minutes < 16: minutes = 16 - print("Waiting", minutes, "minutes for DNS changes to complete...") time.sleep(minutes * 60) diff --git a/config.py b/config.py index 8679450..e12c194 100644 --- a/config.py +++ b/config.py @@ -1,4 +1,4 @@ # Get your API Key from: https://www.namesilo.com/account_api.php apikey = "YOUR_API_KEY" # Minutes to wait for DNS changes to complete. -wait = 20 +wait = 25 From b5e27de90d985b69c051f6a6e91c90d2bc3e1527 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Thu, 28 May 2020 14:07:52 -0700 Subject: [PATCH 6/8] Added changelog. --- CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..0a79563 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,25 @@ +# Changelog + +## [0.9.2](https://github.com/ethauvin/namesilo-letsencrypt/tree/0.9.2) (2020-05-28) + +[Full Changelog](https://github.com/ethauvin/namesilo-letsencrypt/compare/0.9.1...0.9.2) + +**Closed issues:** + +- Do not support multiple \_acme-challenge records [\#1](https://github.com/ethauvin/namesilo-letsencrypt/issues/1) + +**Merged pull requests:** + +- make python3.4 compatible. add subdomains support [\#2](https://github.com/ethauvin/namesilo-letsencrypt/pull/2) ([Junker](https://github.com/Junker)) + +## [0.9.1](https://github.com/ethauvin/namesilo-letsencrypt/tree/0.9.1) (2020-03-15) + +[Full Changelog](https://github.com/ethauvin/namesilo-letsencrypt/compare/0.9.0...0.9.1) + +## [0.9.0](https://github.com/ethauvin/namesilo-letsencrypt/tree/0.9.0) (2019-04-30) + +[Full Changelog](https://github.com/ethauvin/namesilo-letsencrypt/compare/8a91146faebd196b223f7653e470428130f26246...0.9.0) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* From 9f5f0c564276da19f9cf1bb34a7a1096d9e60d49 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Thu, 11 Jun 2020 17:33:30 -0700 Subject: [PATCH 7/8] Added release build script. Closes #3 --- release.sh | 24 ++++++++++++++++++++++ release/namesilo-letsencrypt-0.9.2.tar.gz | Bin 0 -> 3482 bytes release/namesilo-letsencrypt-0.9.2.zip | Bin 0 -> 6840 bytes 3 files changed, 24 insertions(+) create mode 100755 release.sh create mode 100644 release/namesilo-letsencrypt-0.9.2.tar.gz create mode 100644 release/namesilo-letsencrypt-0.9.2.zip diff --git a/release.sh b/release.sh new file mode 100755 index 0000000..6689a1b --- /dev/null +++ b/release.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +RELEASE=release + +if [ $# != 1 ]; +then + echo "Usage: $(basename "$0") " + exit 2 +else + if ! [ -d "$RELEASE" ] + then + mkdir "$RELEASE" + fi + PROJECT=$(basename "$(pwd)") + DIR="${PROJECT}-${1}" + mkdir "$DIR" + cp ./*.py ./*.md ./*.txt "$DIR" + dos2unix "$DIR"/*.* + touch "$DIR" "$DIR"/*.* + tar -czvf "${RELEASE}/${DIR}.tar.gz" "$DIR" + zip --to-crlf -r "${RELEASE}/${DIR}.zip" "$DIR" + touch "$RELEASE"/*.* + rm -rf "${DIR}" +fi diff --git a/release/namesilo-letsencrypt-0.9.2.tar.gz b/release/namesilo-letsencrypt-0.9.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..711d070fbc72d4eca7a76f138892ea9e69f3a993 GIT binary patch literal 3482 zcmV;L4Q28liwFP!000001MOQ|ciKo2_OpIP4L%zKK|+8pi6@>J46>sg3|=nD_&9SM zff`UOB#kb%*_{0Mt?HHpb{w48B)fY?{a~b4S9RUGtNN4d7&8`Fwkz8#445FZt*INJu2Ih~w!gXmH-9Qe zfnOe4PMJAZ;LXFS>(nG^6X34@rA_K>xZd2iCesk|qXJab%1gPbR@D+{Xdq}P(4QL7 zmE}O5EcRO{?i7cG1tPE8HgNI)d=@bOikXUF+-0T}guXS5Ld$i)a7>5-2FNLJBY(tr z56Wrya~Qk+EGWUX6;8qR`L7#=#AW81)|f;_9wjh*1|IWgRv0o9Jm0;tOuRs$Lj1#! zk8QixmNS8o>zEc11)ONc!hIpuUBLoy$B9HE*TkV1L8wb;prpjp7`j*VC^3`cq6t|^ z@Cv6^05-BCF3WQ|<{g1>&XH|cGv+H_5(Fn)vPU8aYH3C&+;@=$VkJ#?6wNR=xSa(% zBrBsYTzu@q%m~r_h8--7&Yi_+my}3#Ycq=z(g50%NG2{I(tlth5`FQI`@q5wLa7BS z*AH;cISiR#hmnIyxWF6}A2A9NWHfU_2Esl_Y@&o1elW%dVy?g)hu7r(rGNqmJT{`3 zLQ0E*&8KK`L|g^ILW%xsy$8L{QU7hds{vl0b~|tMrq+bRGkmB)qjP%J)sJ8I;dQ6g z)Ve*Wx0~48?sxUWLBE3?xq1&Nb9|-XvwHgsv_DR}TCWG4F6bwxEgkvc1l@YOuWP*$ z=)pQI7_{nLI309PJ3Y>g^lR$9Mysx$XiWuWzLahw3)104|^>$zDb_b_@z0)qB72cwW&<1s+ZgOLH+FWO}R;PPL ze90Kx7bST6TEl*HdOKFH->s85dT78#e|aR%iuUX;DGP1wxTPO!?S@8AJH+U%-qXYu z+|_$DMi-O6t>erCQlEPbWfPZ6!Cd0L1^o!>%{Mv;FKk8QF(!I?96w0c8#G?W)>kCS znt85|`%92q1@rVWWHWDU*(|-s{Uy1MeA~8$iqHOvSP-UsLfd3Fp>K@BbRcd)&IFlA zd==w0dNECw0BO^`~@Y*p|un%rA_5 zQ*Y@QRv0fhI-Gf?<%^M?5l)p4uI1ztyD1YE(lrjr7fO&zSmfY22x$tE?@wLa-wz;n zVT@)>9!(9~X3m7=(57R^wd*HZPj7WD>Zf{+_V$HL!VJQMcZ6N0LNO(D3yxSgM~Q#) zi5O0hng>TI@y&C{DI_d)1<`nH-H=S;ZYahGA!03_AKW5{he#3z3u!nFLoe7bm#?p{ zm87awM((VPI+RT(sGDY&ja=XS^__IZeA>7VD$l~X#}000_A^xTfSAV`qj1l}1iUxZ zfckx(Q}zGozmuK`;rO6LPCf)(9Wma$}aJ}dDH zWMLe%U5AO=DKjvE1qUC~aNQbUJtfyCn3lKpA-{Fv{@b!`qr9W2kbi4oCcF*+_qmFy zs6PXC>~8-IH}uE9+TYt&)BY^U%UJGV?XFhf$nx3Py(tsfR)JG}l5idH zB!5R8ymdY1cS$Ct8FHR!{a^p|VaHk-g#I z0JdtXx+VCGX(5m*w-;p0G>7S`(`{bp%^a;q<9SXP2FnH~%-=JQ&%^P;GR0&ipk;k9 z7F1(pWV@(yL1K1dE5RxE@zXwh`~>-rp9(pJNSYO2cEV)j3vX z=9A`l;QU`zYt=jF|J|y(ot^)GMB9YM6t`GryAxcSn{dv3|7SkQrW4%Iqan|uEI!MZ z?~9po=rdO4#0AI`A|R_fa`gqS`17L(5B=#hkKm0XFaZem6-80RG?G*-HfWDD0ncHW zYW9moNs^)I@`MmX9uyH?aGq8>Qm%ZxxAH^vbrtT)V0d{!gyJ!Z10W@HZ&_QcZbz#ZM?U; zQ)AnE>UQ--rKXOnyVdR8SS5aJklq!c*eC2El>m<`0by?#6NJ6l_8hRJW4=KU)^HBz zLa>WbLU0j3cJFt%xRlf3ayop)qe3xD#ea*oBL9zUW;l`e6y#sD2lD^UUUlbg{@<=- z`2P=SEAan?|1;!2L;f@5KSTaA;IDg`qzTtO@{Rz6L|PL z>DQ;?;g)%ji{G%I z&iOx#hEw~*ujrU(nMW8^pGDg}z%fNtGRO)j7W0C*a0h}Gy-4iGFf&#HnA06zH;orB zu~s4SOTHpX#i#V_-z!|gW^p+Da~-Xv(BJPDedBS?TiZ9 zllUDuR^#+`hwo6$b`J#J#QO<5qfDeoe8d4%cQWAVN46E~zlDV_R@O>*6FzN@hu;6} zZGVRURBM%N{r`ye6j0}0L`PZ!nzK$QM=Guf#^FE#CfskvaPE=d@%YU;!J9`TH>lD2 zP@A~M>+k`eo zKo27TS}fcOKoc<_N#{SEw=m`486WaBxnUcW#SeSU!s0EnHJd2G)MB<7D3)6u8s>zR zZ9ydC(0^3bnjDkLLpx$ha5ecg2B`FFxbptzx?h@TdbSP{*j_L5UB&!uze6q6iEh(L* zk`G7dR7KyOVuHlHexA7WwxYLAaRr5cP|;&y`3Ddv=IvP_5?+t$!Gd<)G4@rRv;O~dC{ z!r)3pGmwhnz#7a^;~AEC@87?dJj+XlEFq~2$e6}RP50WdT|*Q~=VDSUyliF!>=9pn z#FPPQ?2o2cpK#6DjYmItoK31Or1Vj46aS8|^qHgW$@mQputdJ7#-zGw3cXVQ@gq4N zu2=Z+&S|_LVW`raq3el~jKTX9$a&8ZDq%1Y_R{w||8s-aZLBFBRPc(~^AZ;))(J)i z7Qq;HEVa}7WnBC{#Be#)s~GoKnbIdy+;9WFfOv5lFCq+KS9}FV)uYcGb`8ezvIDW` zXc}75NwlL#ScC^I9u=na+(uo{KCe8V{UXKdk+X3fdk(TZGn~k<@q*#Pv&nA1u^WRh z46+TplVsVL_>9S+8>GW!FB;-jCR?6tyORmdBclW~7N;3AA7f+jRa$Uh;)14!F){rc zp3G%_#b&>h2^lVj?q~m<`KpXhm+9iy_xF%4UhJntCKQ!rMPv%&^j3OR<_3{YdA!rI zWa9jlMk?(13=Q1i zSOO5C%}Vfrj!DRmqQ)4rm32+lvX-^1Wi4x2%Uag5mbI*9Eo)iJTGq0bwT+Gc0P{G1 IxByT908Saras#U%ByA@^O;E@6UX^}&Ue?R;^5&~WU>G(7+IOrRFMF1Btz?Ze|1+66aWnTE*t>xpF#0yQkVdd~3UR7Hm3z%rH`xtiq@wJ&a8iyba~j2&{2r6w z8EMH$4@}a|nNreK(jY7L!beUCgm+Nu=OuF+7dCm%4F4P z;$`ew46GQe2K`G7(U(%@>EsV?Zv-edFkIjJ?kW;mP)^zUOR&t_ zof>e7fyig*XrBkmOPzV;daJM-zsKx-`(6;QSG6KZx`TtE3kwK2Rh?R4%1{P2Vux`V z)R(WhO1iiAh+@CSlx`oc?RA9!%Hkqa63I2pNyGJuUf{koZ_+7~TmpuI#Z~P+%AqJF zB3ydKgcUYgmDLz<;Y^xhN)E*OpYtX0nL1Y^Kwz5eC4-4V>DpGL`5sfb)DD}yV63(W z9AzQ&`FU1!(%m*Jdhd~$j)MJ_xGPUAFD0?JQZ`@GSOA@(yFXdZ$uiS~(iuvJA+<=P zn}{qUb6Gu#k#O34oEDFkG95f4U-PlbvYBoSLJHakxVc zSYl{d=#GO01H-1y_IrK^{E6;cH!R|*M>dyBVXml5>jKu}X2SxRp3#zG{HFO_;jR|9 z6Y%NqW9guY&P-;36G3m_Aez0+Drc$Ms^qeMs$viEgI`({S>t*h&cCXcqO0q@Z$ep-&4yLstF;b6)V0k-#^$4P_v&H4 z=hR;SfU)YDV-4^bs8Vf_Uil1!8NH!<#q;C5cKNU`0xvVU|3=SGWyiC=>P%;m=f&er z%IqEhv_;^ntd>v?W<)PN(|bcilD-rjXhd;TrYq06j%qKdYN?|trq4~ z;UVx73ZRJ|Bi*Uw!OO%!!E5-ZdW1gO4-joA$dpAdmk#qE|u6UKD_WlAj zoUcI=`YeL%Q#u`-V|fisX;TkcV0?Lx84f$xWH2uN6#_@3)Srk!vnkgakbc z-3SFg(4KJt-78O_{T(NujV`I&uJN;SR`t^zd`0`00TLA(RxXOy3|#AhxE3R7f)6K- z?5qeK&j639pF5B;^(zKoa1YJk(@YMA5?anV6dd-yZPeTf9xG-h^#1W(|KuX_)%pl` z=L%AGWJJy8lp^#8V)T5=#+wH5VeBn#{2v!H7Wi8-%H4_6^^=Oc7gWAJ=MjSW{dkLA;^!Q^5^)^^-ZIr2^K& z!;!-gD+CHqGt#5$tfx?GD7$U(aW8EdD7WCa`&xTXHIg`6HH7*C-PJZWPyzh(Nj+GL zj)OG$)}34v(=B&`w65`=3cUOAgR&7c6383Ir}<(?k{###T_=6!N4(x zVbnaR3i8#{%Pj|NT=Li{r!Z_IYa!42GdG>fXh=iv6}&nc6!*o>{Mr`{^R$(zEPD+J zjP_MeM`G)g+)>7mYjdilU|79iIF_HaBziN3?y=(q5_Iq9n)iTPs4X>*xCdi~=XE#d z$@Je%q#wy~f(0Jne&6M|vs>^F1OR~g$+S@Xd6$iCObzW^9sbF#sN32@IWZrINgvnt zV4H%<>l59yQ#5Ntu}BqOPB&A%-gLpLcS+ zC*o`L(PoQEq*zuRs&r%SNi<4A8A1$1g()?F!6Y zAwtIp#q|jA2@Xd)rPW-ieU2JI2pQZSU@T*A0w?a|9a>{HmaK=EUE=Z;5mXc#yt5wg zK$1@H_*CL&z@ZLaFOk?>h zd6kR43*mXnR!s&@Jy!i#3LP#_K7~zwmwg0VUD5E75AR}rU@!$GB%>;R4F&Y#K3g$0 zz>x3t>9eTFmtecqh-QyDF?=ARmKk+nxjtsuYJx~2dE;mt`6U^>(l~d;jq-B2#O@`o zu1CHC zvn!Yxw$I&hHdd5XuN%hhA`8giJyH=U(gy(?pYvZ700S`lZ3HQRVZuT-e36 zLEMWPjw(|`;cWtNBAN7-Jl>9yXI0eI)dfm)gW*7R{tK!Xw=!HZX{REf1FZVm(+lH( zRLB*T9)4`#^(2}Z`suCj(eXgRV4B5rxmfi9Q&w_sN`VikSgSC?P-`5zaJ9<7jxGms zM-o^`_rywnmO7esF%4Y0>1mJ{lOH)GD6CFj4~#lPb#=>!9zsrcYb!|tML9nEc%TSq zpDJtr@M<%0M@Dmwv;rq5srj(uFD@@Hcs15%L1~ztNm<1uH_1BFT1u%f)(c%;eQ3)U zL2IArAZ#n!-L39lA-#(4wC@sjw|_b2brqkufEQp|nBx@dnkV~}zPX1Z$jxzpwP6G~ zr_x$Ua36-x<{KfAz;~9omJ_`VMUpH^(k6ny=!65K~Qa;)y( zF#lwG;2JtNISCYi-^f~f?W7GC6B3v&a0lOdx)G}2Q2L>JWI}=DARpi>&JAP0vN1z5Be6Y6;`m_=ctrBG)tA}3`I9uo(u|i4`BKM>YzLQ)`JPA` z*C=GnND`MSoOTfyTA(X?pkgQ}eqC*WA@n6o-3NynY&^+5r@kcb9CKq!Qs)WJa5CC@ zn0XKO1^lil>he}^!k^0G)Td7V51L|cXJ%>s50XL=C4dshj3a&}{Lm$S1q@~k5X~OR?iUE;GekBl_7Xz|uP8TTDw1focXfUC=FXZW?S?aE?o=w@vtUBb z>^;j8Sw^E)M zui5!PTf*2lMYfk-oW}M$^DY1gfE3P z;-F3RV=JxMwKdC(H6y#c$v2#_M?I;_8w86s+KG8)rQBq^u*1eW=V(hS-F|ffoXuPt z>rgUbx8$zR!0UZ^%u6QTc6g?($GyBr@Mu%%GOBa`Y+(L(#LZ*HS7r8QQJ;C_Nt8li zf=B7#@ZJU2<&UI>mT>7QV1^#8fcC|GaYWB>>EL?INx9?=-WN)41RJQ3uEZ1Y;za2q zf4#8dbQwjcBAPaw-}UQEw{!}<`G#>^C(&I%6Ny!CLsGR*nZ$1c}9OyHZBDiU{WwOeaNFjeC>~bvN`*2;F|vnMfIO3Cy*j zamv4XJ1Dc;nOOC;_oI<=WaDUhQF)458Fz=qD^rnT9&GI#hOZd%>lp3hMV$0w5XNU;O&n+ajHN5zjIaqo#EvQ@I9VG}P{3*3luY zaLg=f_SE|7M(RlIw3XKc2F0jg&9GMb0PP~xL9pZxo**RhMySK0EQys=lc)s$W^^W|SNP*NuOl8(0XJ)7ihy$lSX|9W%&ZI9A0hg`k8 z9&s&LU(XmJskKrzjA3b<$LZiP_xEGCf5nd$^K=aNpN`=_{B4xQ--?06|Di~UR{Pt) zKILs|3kDiCLCR1Y{eU9v6nN1IdWMW2qVZ@f4B6x}I0Fe(d_S-Fl+R@SjG%a#l*e11 zM@Kv)9oaUgdX^|HQbNyKS%Qy=KvYu$U6G;MYI#V&zS4D>p%?|olK$9(pk0^__mK0q z8BGhEJyw&!ZCTBkwEYh0+V2?ldf5>ZYV@w5ni{hZ_&p9iRjmZz3h#HvsD79#<9E;- zShoFr+mCV1^mRSVvg3l6(;9H4^9qkJeH5Y{A$;(NsGOM~PK~0V2C4U`M94L-5V-9s zbw~W@`(teAkUAKpX$$4hFvbR(V=Lle(NjeYsK*n_RXZNmOnASGI6>B-#R3lWA(5yR zRxa&dKI7HsiB3pWO-uu=%hYJ3S$YS(s0k8TUoX5hhBHK(afoit_K}}Cv0a5$*4hdV zk*yTIX_eg5;eVW8jqy0(Iz2|5q!5fx?SUE9Qkr5=NvdgPG5U6sycCo?cs0WoR}vID z8pqz$3qHT3Jg1hGS6U!*MFmwG`-E9qH(gB9G2(tij-rU;&A9q%LNh~l7L-$pATrhn zZICjk(~zT*Z>xH7u=bVn(1Igd2O2%0o&q=Wn!{t78ty|Xt@4}CO{_P~QR{gVH@gIB zEle+)db>$-b?%hA7UZ>NK&L+Pw()!YSLxt4WPwuBvL^b|P@8=n2i~ zcpTx)KJj<#L}Q=#G1{7QcL>v9r7wPcQgsl;(_KokzI}U9Bms1xHH8>W*}=x zgx5-hpWzL0fNk6PsV-ZwYPs{y>7fhjAcuIp#1*L+9f*p9B+j+W7|FMXYM%F5zi9xZ z1pBqgAr``XZ3AAl_Sq-wK_uJ#3}+;X_$VHg;2bK612^GTYR%K{t}Z)E(_uk(ub?e$ ziPM`V=N=;*5ja&lX1P0eKZom9(>bzlV~(%ShAVo-MpJt8R?#MXKl z$SfZfua~b0Mnp)3hUE z;R7~E8JCdWA8HJ|VnUCvT(`J;s#alOiQ)cNa*zL{zJE1Lz~kG$?tjej5&q8c|0~1) z3-G^E{J#NDDG1=vU+vF;|IYOP9q{*@~J_WUmr!jpml0Ekc5 N9xMRRiuc#s{{i#*8*l&s literal 0 HcmV?d00001 From 08f7f8d87ba90fd91713764b49a27c76cc9ae7f2 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 30 Jul 2024 10:18:20 -0700 Subject: [PATCH 8/8] Fixed API manager URL --- README.md | 7 +++---- config.py | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7891295..3e2232a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # NameSilo Let's Encrypt -[![License (3-Clause BSD)](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square)](http://opensource.org/licenses/BSD-3-Clause) +[![License (3-Clause BSD)](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square)](https://opensource.org/licenses/BSD-3-Clause) [![Python 3.4](https://img.shields.io/badge/python-3.4-blue.svg)](https://www.python.org/) Python scripts (hook) to automate obtaining [Let's Encrypt](https://letsencrypt.org/) certificates, @@ -17,14 +17,13 @@ pip install tldextract untangle Download the [latest release](https://github.com/ethauvin/namesilo-letsencrypt/releases) archive and expand it in the desired directory. - ## Configuration -Add your [NameSilo API key](https://www.namesilo.com/account_api.php) +Add your [NameSilo API key](https://www.namesilo.com/account/api-manager) to the top of the `config.py` file: ```python -# Get your API Key from: https://www.namesilo.com/account_api.php +# Get your API Key from: https://www.namesilo.com/account/api-manager apikey = "YOUR_API_KEY" ``` diff --git a/config.py b/config.py index e12c194..0bcd226 100644 --- a/config.py +++ b/config.py @@ -1,4 +1,4 @@ -# Get your API Key from: https://www.namesilo.com/account_api.php +# Get your API Key from: https://www.namesilo.com/account/api-manager apikey = "YOUR_API_KEY" # Minutes to wait for DNS changes to complete. wait = 25