Skip to content

Commit

Permalink
Namecheap dynamic DNS client
Browse files Browse the repository at this point in the history
Signed-off-by: Huizerd <15855769+Huizerd@users.noreply.github.com>
  • Loading branch information
Huizerd authored and nachoparker committed May 13, 2021
1 parent 8d76a6b commit 7aef967
Show file tree
Hide file tree
Showing 5 changed files with 133 additions and 3 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
75 changes: 75 additions & 0 deletions bin/ncp/NETWORKING/namecheapDNS.sh
Original file line number Diff line number Diff line change
@@ -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 <<EOF
#!/bin/bash
echo "Namecheap DNS client started"
registeredIP=\$(dig +short "$FULLDOMAIN"|tail -n1)
currentIP=\$(wget -q -O - http://checkip.dyndns.org|sed s/[^0-9.]//g)
echo "${url}&ip=${currentIP}"
[ "\$currentIP" != "\$registeredIP" ] && {
wget -q -O /dev/null "${url}&ip=${currentIP}"
}
echo "Registered IP: \$registeredIP | Current IP: \$currentIP"
EOF
chmod +744 /usr/local/bin/namecheapdns.sh

echo "*/${UPDATEINTERVAL} * * * * root /bin/bash /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
12 changes: 9 additions & 3 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@

[v1.35.2](https://github.com/nextcloud/nextcloudpi/commit/3f345eb) (2021-04-29) ncp-web: fix display of big files for 32 bit
[v1.36.0](https://github.com/nextcloud/nextcloudpi/commit/5709e46) (2020-09-16) Namecheap dynamic DNS client

[v1.35.2](https://github.com/nextcloud/nextcloudpi/commit/bfab195) (2021-04-29) ncp-web: fix display of big files for 32 bit

[v1.35.1 ](https://github.com/nextcloud/nextcloudpi/commit/e64ca34) (2021-04-29) ncp-web: fix backup download for big files in 32-bit

Expand All @@ -25,6 +27,8 @@

[v1.34.0 ](https://github.com/nextcloud/nextcloudpi/commit/ec428a2) (2021-01-01) upgrade to NC20.0.4

[v1.33.2 ](https://github.com/nextcloud/nextcloudpi/commit/82d00c8) (2021-01-01) ncp-config: fix empty values

[v1.33.1 ](https://github.com/nextcloud/nextcloudpi/commit/42fd597) (2020-12-12) nc-update-nc: improve error messages

[v1.33.0 ](https://github.com/nextcloud/nextcloudpi/commit/ffd0b44) (2020-12-10) upgrade to NC20.0.3
Expand All @@ -39,9 +43,11 @@

[v1.30.0 ](https://github.com/nextcloud/nextcloudpi/commit/f00fe21) (2020-09-19) upgrade to NC19.0.2

[v1.29.10](https://github.com/nextcloud/nextcloudpi/commit/82baebf) (2020-09-03) ncp-web: added a lot of german locales
[v1.29.11](https://github.com/nextcloud/nextcloudpi/commit/82baebf) (2020-09-03) ncp-web: added a lot of german locales

[v1.29.10](https://github.com/nextcloud/nextcloudpi/commit/3706ed0) (2020-09-12) nc-previews: fix killing generate-all

[v1.29.9 ](https://github.com/nextcloud/nextcloudpi/commit/3706ed0) (2020-09-12) nc-previews: fix killing generate-all
[v1.29.9 ](https://github.com/nextcloud/nextcloudpi/commit/9d65011) (2020-09-07) nc-restore: also set tempdirectory

[v1.29.8 ](https://github.com/nextcloud/nextcloudpi/commit/21a791d) (2020-08-30) nc-limits: minimum 6 PHP threads (for NC talk)

Expand Down
47 changes: 47 additions & 0 deletions etc/ncp-config.d/namecheapDNS.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"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": "Password",
"value": "",
"suggest": "your_ddns_password",
"type": "password"
},
{
"id": "FULLDOMAIN",
"name": "Full domain name",
"value": "",
"suggest": "mynextcloud.example.com"
},
{
"id": "HOST",
"name": "Host name",
"value": "",
"suggest": "mynextcloud"
},
{
"id": "DOMAIN",
"name": "Domain name",
"value": "",
"suggest": "example.com"
},
{
"id": "UPDATEINTERVAL",
"name": "Update interval (minutes)",
"value": "30",
"suggest": "30"
}
]
}
1 change: 1 addition & 0 deletions i18n/README-zh_TW.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 7aef967

Please sign in to comment.