From bbea34a602ca0d43626e318cc3d41d5008100632 Mon Sep 17 00:00:00 2001 From: Huizerd <15855769+Huizerd@users.noreply.github.com> Date: Wed, 16 Sep 2020 10:26:49 +0200 Subject: [PATCH 1/2] Namecheap dynamic DNS client Signed-off-by: Huizerd <15855769+Huizerd@users.noreply.github.com> --- README.md | 1 + bin/ncp/NETWORKING/namecheapDNS.sh | 75 ++++++++++++++++++++++++++++++ etc/ncp-config.d/namecheapDNS.cfg | 46 ++++++++++++++++++ i18n/README-zh_TW.md | 1 + 4 files changed, 123 insertions(+) create mode 100644 bin/ncp/NETWORKING/namecheapDNS.sh create mode 100644 etc/ncp-config.d/namecheapDNS.cfg diff --git a/README.md b/README.md index d6aa46470..a4b590290 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ Find the full documentation at [docs.nextcloudpi.com](http://docs.nextcloudpi.co * Dynamic DNS support for freeDNS * Dynamic DNS support for duckDNS * Dynamic DNS support for spDYN + * Dynamic DNS support for Namecheap * dnsmasq DNS server with DNS cache * ModSecurity Web Application Firewall * NFS ready to mount your files over LAN diff --git a/bin/ncp/NETWORKING/namecheapDNS.sh b/bin/ncp/NETWORKING/namecheapDNS.sh new file mode 100644 index 000000000..a8cca3908 --- /dev/null +++ b/bin/ncp/NETWORKING/namecheapDNS.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +# Namecheap DNS updater client installation on Raspbian +# +# Copyleft 2020 by ndunks and Huizerd +# GPL licensed (see end of file) * Use at your own risk! +# +# Based on: +# - https://gist.github.com/ndunks/c756030c0757b667c9a478c97ca5a9b7 +# - https://www.namecheap.com/support/knowledgebase/article.aspx/29/11/how-do-i-use-a-browser-to-dynamically-update-the-hosts-ip +# +# Further steps to be taken: +# - Buying a Namecheap domain +# - https://www.namecheap.com/support/knowledgebase/article.aspx/595/11/how-do-i-enable-dynamic-dns-for-a-domain/ +# - https://www.namecheap.com/support/knowledgebase/article.aspx/43/11/how-do-i-set-up-a-host-for-dynamic-dns + + +install() +{ + apt-get update + apt-get install --no-install-recommends -y dnsutils +} + +configure() +{ + local updateurl=https://dynamicdns.park-your-domain.com/update + local url="${updateurl}?host=${HOST}&domain=${DOMAIN}&password=${PASSWORD}" + + [[ $ACTIVE != "yes" ]] && { + rm -f /etc/cron.d/namecheapDNS + service cron restart + echo "Namecheap DNS client is disabled" + return 0 + } + + cat > /usr/local/bin/namecheapdns.sh < /etc/cron.d/namecheapDNS + chmod 644 /etc/cron.d/namecheapDNS + service cron restart + + cd /var/www/nextcloud + sudo -u www-data php occ config:system:set trusted_domains 3 --value="$FULLDOMAIN" + sudo -u www-data php occ config:system:set overwrite.cli.url --value=https://"$FULLDOMAIN"/ + + echo "Namecheap DNS client is enabled" +} + +# License +# +# This script is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This script is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this script; if not, write to the +# Free Software Foundation, Inc., 59 Temple Place, Suite 330, +# Boston, MA 02111-1307 USA diff --git a/etc/ncp-config.d/namecheapDNS.cfg b/etc/ncp-config.d/namecheapDNS.cfg new file mode 100644 index 000000000..12d8dd67c --- /dev/null +++ b/etc/ncp-config.d/namecheapDNS.cfg @@ -0,0 +1,46 @@ +{ + "id": "namecheapDNS", + "name": "Dynamic DNS from Namecheap", + "title": "namecheapDNS", + "description": "Namecheap Dynamic DNS service (need domain from https://www.namecheap.com/)", + "info": "First, complete these steps: https://www.namecheap.com/support/knowledgebase/article.aspx/595/11/how-do-i-enable-dynamic-dns-for-a-domain/ and https://www.namecheap.com/support/knowledgebase/article.aspx/43/11/how-do-i-set-up-a-host-for-dynamic-dns", + "infotitle": "", + "params": [ + { + "id": "ACTIVE", + "name": "Active", + "value": "no", + "type": "bool" + }, + { + "id": "PASSWORD", + "name": "Dynamic DNS password", + "value": "", + "suggest": "840deed9ef1844eca7c198df2d31bf10" + }, + { + "id": "FULLDOMAIN", + "name": "Full domain name ('host.domain' if host is not '@', else domain)", + "value": "", + "suggest": "mynextcloud.example.com" + }, + { + "id": "HOST", + "name": "Host name (enter '@' if you only want 'example.com')", + "value": "", + "suggest": "mynextcloud" + }, + { + "id": "DOMAIN", + "name": "Domain name", + "value": "", + "suggest": "example.com" + }, + { + "id": "UPDATEINTERVAL", + "name": "Update periodicity (in minutes)", + "value": "30", + "suggest": "30" + } + ] +} diff --git a/i18n/README-zh_TW.md b/i18n/README-zh_TW.md index 189f4c1f7..f906f2d61 100644 --- a/i18n/README-zh_TW.md +++ b/i18n/README-zh_TW.md @@ -51,6 +51,7 @@ NextCloudPi 是專門為 Raspberry Pi、Odroid HC1、rock64 以及其它單板 * 可使用freeDNS 所提供的浮動IP連結功能 * 可使用duckDNS 所提供的浮動IP連結功能 * 可使用spDYN 所提供的浮動IP連結功能 + * 可使用Namecheap DNS 所提供的浮動IP連結功能 * 內建 dnsmasq DNS 伺服器快取 * ModSecurity 網路應用程式防火牆 * NFS ready to mount your files over LAN From 01907b5db798629ba74c213ff97eca7aae01e9a9 Mon Sep 17 00:00:00 2001 From: Huizerd <15855769+Huizerd@users.noreply.github.com> Date: Thu, 11 Mar 2021 08:22:28 +0100 Subject: [PATCH 2/2] systemctl cron Signed-off-by: Huizerd <15855769+Huizerd@users.noreply.github.com> --- bin/ncp/NETWORKING/namecheapDNS.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/ncp/NETWORKING/namecheapDNS.sh b/bin/ncp/NETWORKING/namecheapDNS.sh index a8cca3908..d92674335 100644 --- a/bin/ncp/NETWORKING/namecheapDNS.sh +++ b/bin/ncp/NETWORKING/namecheapDNS.sh @@ -28,7 +28,7 @@ configure() [[ $ACTIVE != "yes" ]] && { rm -f /etc/cron.d/namecheapDNS - service cron restart + systemctl restart cron echo "Namecheap DNS client is disabled" return 0 } @@ -48,7 +48,7 @@ EOF echo "*/${UPDATEINTERVAL} * * * * root /bin/bash /usr/local/bin/namecheapdns.sh" > /etc/cron.d/namecheapDNS chmod 644 /etc/cron.d/namecheapDNS - service cron restart + systemctl restart cron cd /var/www/nextcloud sudo -u www-data php occ config:system:set trusted_domains 3 --value="$FULLDOMAIN"