Commit Graph

76 Commits

Author SHA1 Message Date
FriesI23 Qin
9d5da216c9 ddns-scripts: Fixup dnspod.cn-v3
Fix signature expiration issue during retries.

Signed-off-by: FriesI23 Qin <FriesI23@outlook.com>
2025-01-22 11:21:46 +01:00
Gedalya Nie
0a98b6d0ed ddns-scripts: cloudflare: use PATCH method, minimize changes
Using the PUT method recreates the DNS record with and only with
the newly provided data. This seems unnecessary. In particular,
we don't need to hardcode a TTL of 120. Any existing comment
would be lost too.

The only detail we need to change is the IP address. Leave everything
else as it was.

Signed-off-by: Gedalya Nie <gedalya@gedalya.net>
2025-01-15 08:49:24 +01:00
FriesI23 Qin
c1f247d5c2 ddns-scripts: Add dnspod.cn-v3
Signed-off-by: FriesI23 Qin <FriesI23@outlook.com>
2025-01-10 14:38:13 +01:00
Xiaolong Zhang
b962029fa8 ddns-scripts: add colon char in DNS_CHARSET
The IPv6 address is separated by ':' instead of '.', so we need to add
':' in DNS_CHARSET.

See: 'https://github.com/openwrt/packages/issues/25051'

Fixes: #25051

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* bump PKG_RELEASE
* update commit message

Signed-off-by: Xiaolong Zhang <xliilQwQ@outlook.com>
2024-11-07 08:11:03 +01:00
Dillon Dixon
b3d9e90942 ddns-scripts: porkbun bugfix for subdomain on A/AAAA record
If the "name" parameter is not provided, then updates to a subdomain
A/AAAA record result in the subdomain being removed from the record.
This change always provides the "name" parameter to correct that behavior.

Signed-off-by: Dillon Dixon <github@dillon.io>
2024-10-30 10:37:49 +01:00
Lehua Zhang
9e86e22808 ddns-scripts: add ddns-scripts for huaweicloud
Signed-off-by: Lehua Zhang <sxlehua@qq.com>
2024-10-15 09:13:52 +02:00
Florian Eckert
d9cc0e1cd4 ddns-scripts: fix update_porkbun_v3 shell syntax
The closing bracket was forgotten in a function.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2024-09-25 16:36:22 +02:00
Ansel Horn
5f5e6cd179 ddns-scripts: add support for Porkbun
Extends DDNS support for the Porkbun v3 JSON API with a custom update
script and service configuration.

See: https://porkbun.com/api/json/v3/documentation

Depends on cURL (with SSL) for transport. Porkbun authentication API keys
and secret keys are passed through the ddns-scripts "username" and
"password" variables, respectively. As Porkbun DNS is currently backed by
Cloudflare, also support ddns-scripts "rec_id" variable for specific
record targeting.

Signed-off-by: Ansel Horn <dev@cahorn.net>
2024-08-22 16:02:59 +02:00
Denis Shulyaka
ebeae334d9 ddns-scripts: Update knot resolver regexp
The output format of `khost` has changed. This commit fixes the regexp
for IPv4. It fixes the issue of using a custom DNS to resolve current
address.

```bash
root@localhost:~# khost ns2.afraid.org
ns2.afraid.org. has IPv4 address 69.65.50.223
ns2.afraid.org. has IPv6 address 2001:1850:1:5:800::6b
Host ns2.afraid.org. has no MX record
root@localhost:~# khost --version
khost (Knot DNS), version 3.3.5
```

Signed-off-by: Denis Shulyaka <Shulyaka@gmail.com>
2024-07-17 13:44:36 +03:00
Florian Eckert
c90ddcaddd ddns-scripts: do not verify DNS server on start
When the ddns update script is started, the system checks whether the
configured DNS server can be reached. This is checked with the 'netcat' tool.
The tool tries to establish a TCP connection on port 53 of the configured
DNS server.

The problem with this implementation is, that this call blocks the ddns
update script until 'netcat' returns from the call.

Verfification failed:
If the IP and the port cannot be reached, the netcat call returns
immediately.

Verfification successfull:
If the IP and the port of the DNS server can be reached, the connection
remains established and so the ddns update scripts blocks until the
configured TCP session timeout of the DNS server resets the connection.

The behavior in the event of an successfull verificataion is a problem
for the ddns update script if it is called via the hotplug. Since the ddns
update script runs too long! This blocking behavior also depends on
the TCP session timeout setting of the DNS server.

> time netcat 1.1.1.1 53
netcat 1.1.1.1 53  0.00s user 0.00s system 0% cpu 10.016 total

> time netcat 8.8.8.8 53
netcat 8.8.8.8 53  0.00s user 0.00s system 0% cpu 2.012 total

The TCP session timeout is for 1.1.1.1 10 seconds and for 8.8.8.8 2 seconds.

The '--wait' option of necat or the additional integration of the 'timeout'
function of busybox was implemented for this behavior. But the used '--wait'
function of netcat of the busybox shows no effect here.

Since the used implementation is not clean, the question arise why this
is necessary for the ddns update script at all? As the nslookup throws an
error anyway if it cannot resolve the IP. This check is only informative.
The check does not affect the script behavior.

The check is therefore removed on ddns update.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2024-05-17 12:39:19 +02:00
Miguel Angel Mulero Martinez
525182892b ddns-scripts: fix duplication of processes when reloading
When a "service ddns reload" is issued, the ddns processes are being
duplicated.
It seems the culprit is the -1 in the 'killall' command, and removing it
fixes the issue.
The -1 means to use SIGHUP, instead of the default SIGTERM.
In this case, the idea is to kill all other processes, so SIGTERM is
appropriate. In case the processes hang, SIGKILL may be another option.

Signed-off-by: Miguel Angel Mulero Martinez <migmul@gmail.com>
2024-05-14 21:18:58 +02:00
Max Berger
86a620f644 ddns-scripts: Fix Route53 provider
This fixes the Invalid Resource Record: FATAL problem: ARRDATAIllegalIPv4Address error message described in https://forum.openwrt.org/t/route53v1-script-error/160068

Maintainer: @chris5560, @maxberger, @dibdot
Tested: Checked on local system
Signed-off-by: Max Berger <max@berger.name>
2023-11-25 16:27:18 +01:00
Jihoon Han
79257dfb7c ddns-scripts: add support for LuaDNS
Signed-off-by: Jihoon Han <rapid_renard@renard.ga>
2023-01-09 18:26:29 +09:00
Cristian Le
ff099ea53c ddns-scripts: Allow setting root record for pdns script
Signed-off-by: Cristian Le <git@lecris.me>
2022-12-31 22:21:42 +01:00
Tianling Shen
f7b73bf000 Merge pull request #19982 from golddranks/master
ddns-scripts: update_gandi_net: improve logging & add timeout
2022-12-13 03:59:46 +08:00
Pyry Kontio
cefe85250c ddns-scripts: update_gandi_net: improve logging & add timeout
- Improved logging
  - Log the executed curl command to be able to rerun and test it manually
  - Log the curl exit status
- Added 30 second timeout timeout for clear-cut detection of flaky connections.

Signed-off-by: Pyry Kontio <pyry.kontio@drasa.eu>
2022-12-10 03:37:19 +09:00
Chris Barrick
cbdc67bd10 ddns-scripts: add support for Google Cloud DNS
The implementation uses a GCP service account. The user is expected to
create and secure a service account and generate a private key. The
"password" field can contain the key inline or be a file path pointing
to the key file on the router.

The GCP project name and Cloud DNS ManagedZone must also be provided.
These are taken as form-urlencoded key-value pairs in param_enc. The TTL
can optionally be supplied in param_opt.

Signed-off-by: Chris Barrick <chrisbarrick@google.com>
2022-12-08 22:04:33 -05:00
Rafał Miłecki
f93cc0e22f ddns-scripts: add explicit "-d" switch for Dry Run
It was a bit confusing to use *verbosity* level for Dry Run mode. Add
explicity switch for it and designed DRY_RUN variable to make code
easier to understand.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2022-09-28 09:49:39 +02:00
Rafał Miłecki
586e283a51 ddns-scripts: rename variable: s/ERR_UPDATE/RETRY_COUNT/
Rename variable to make code easier to understand. This variable
specifies how many times in row ddns script tried to update IP without a
success.

Previous name ("ERR_UPDATE") didn't suggest it was for counting
anything. It also didn't specify was error was it related to.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2022-09-27 17:46:04 +02:00
Rafał Miłecki
a6247d81a9 ddns-scripts: replace IP type (name) "local" with "current"
Local suggests something related to the local network or available
locally only. All that code related to the "local" IP was actually
dealing with *current* device external IP address. Using name "current"
should make code a bit easier to understand.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2022-09-27 17:42:58 +02:00
Rafał Miłecki
e3292e4c97 ddns-scripts: rename variable: s/retry_count/retry_max_count/
Rename variable to make code easier to understand. This variable
specifies how many times ddns script should try to send a request.

Previous name ("retry_count") suggested it was for *counting* attempts.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
2022-09-27 17:42:58 +02:00
Luca Conte
60047cdce1 ddns-scripts: add one.com provider
Signed-off-by: Luca Conte <main@lugico.de>
2022-01-27 13:59:42 +01:00
Florian Eckert
b4694bb82c Merge pull request #17617 from hgl/ddns-cloudflare
ddns-scripts-cloudflare: fix shell conditional
2022-01-15 16:03:37 +01:00
Glen Huang
aed4dbf349 ddns-scripts-cloudflare: fix shell conditional
Signed-off-by: Glen Huang <heyhgl@gmail.com>
2022-01-15 22:33:28 +08:00
Claudio Marelli
dc0953fedd ddns-scripts: pass user agent string
This adds a user agent string to the wget request.

Fixes #17507

Signed-off-by: Claudio Marelli <camarelli@gmx.net>
2022-01-15 10:07:30 +01:00
Glen Huang
78ef7d7379 ddns-scripts-cloudflare: allow explicit zone_id
When zone id is explicitly provided, there is no need for the API token to have read permission. Inspired by acme.sh's cloudflare logic.

Signed-off-by: Glen Huang <heyhgl@gmail.com>
2022-01-10 20:44:40 +08:00
Richard Yu
9e6dd11484 ddns-scripts: add ns1.com provider
Signed-off-by: Richard Yu <yurichard3839@gmail.com>
2021-12-15 18:22:56 +08:00
Martijn Atema
aa820a2cae ddns-scripts: Add script for TransIP.nl
Signed-off-by: Martijn Atema <martijn@atema.one>
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
- PKG_RELEASE number updated
2021-11-30 13:10:57 +01:00
George Giannou
49defda70c ddns-scripts: Fix DigitalOcean JSON payload
Signed-off-by: George Giannou <giannoug@gmail.com>
2021-11-29 13:00:36 +02:00
Florian Eckert
fdb471ab9e Merge pull request #17120 from giannoug/ddns-scripts-digitalocean
ddns-scripts: Rework DigitalOcean update script
2021-11-17 11:02:01 +01:00
George Giannou
550817815e ddns-scripts: Rework DigitalOcean update script
Signed-off-by: George Giannou <giannoug@gmail.com>
2021-11-15 16:24:30 +02:00
Martijn Atema
de2a9d4b13 ddns-scripts: Fix typo in route53 update script
Signed-off-by: Martijn Atema <martijn@atema.one>
2021-11-15 12:44:41 +01:00
Jun Zhu
10bfa7e974 ddns-scripts: Add dnspod.cn
Signed-off-by: Jun Zhu <zhujunsan@gmail.com>
2021-09-30 14:18:55 +08:00
Cristian Le
e3183a3312 ddns-script-gandi: Better error management
- Changed DNS endpoint to LiveDNS
- Now using `jshn.sh`
- Better handle errors and ouput

Signed-off-by: Cristian Le <git@lecris.me>
2021-08-31 23:51:35 +09:00
Cristian Le
36afa3dfce ddns-scripts-pdns: Add package
Signed-off-by: Cristian Le <git@lecris.me>
2021-08-31 21:55:09 +09:00
Florian Eckert
036079b308 ddns-scripts: get l3 device for bind network using curl
If pppoe is used for wan access. script set 'eth1' as interface for curl
call. The correct interface is however 'pppoe-wan'.

The script uses 'network_get_physdev' function to get real device for
bind_network but this is wrong. We need instead the l3_device of the the
logical interface.

In case if we don't use pppoe connection - 'l3_device' is equal to real device.

This was reported by the github user `welderpb` with P/R:
 https://github.com/openwrt/packages/pull/14431

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2021-06-22 10:13:09 +02:00
Wenli Looi
9e2aad3fde ddns-scripts: Fix for domains with dash
Signed-off-by: Wenli Looi <wlooi@ucalgary.ca>
2021-05-19 11:43:07 -07:00
Wenli Looi
93344aafa0 ddns-scripts: Fix for wildcard subdomain
Signed-off-by: Wenli Looi <wlooi@ucalgary.ca>
2021-05-18 23:24:53 -07:00
Edi Turn
0e4f2b1068 ddns-scripts: make WGET_SSL executable
Signed-off-by: Edi Turn <yyxstter@gmail.com>
2021-01-27 20:40:03 +08:00
Huangbin Zhan
9eab8cceda ddns-scripts: fix wget-ssl path
Signed-off-by: Huangbin Zhan <zhanhb88@gmail.com>
2021-01-17 22:28:05 +08:00
Florian Eckert
733e6508f3 ddns-scripts: add gandi.net provider
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2020-11-28 11:07:14 +01:00
Joel Johnson
5b362932a7 ddns-scripts: use ip_source as bind_network default
Fixes: #13182 on https://github.com/openwrt/packages

Signed-off-by: Joel Johnson <mrjoel@lixil.net>
2020-10-21 08:43:18 -06:00
Johnathan Arsenault
33d6dc4027 ddns-scripts: add ipv6 capability for no-ip.com
Signed-off-by: Johnathan Arsenault <johnathan.arsenault@gmail.com>
Tested-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
2020-10-05 16:02:26 +02:00
Florian Eckert
8d10cdda08 ddns-scripts: also read providers from custom directory
The provider could also be read from the custom directory. To get always
the latest version of the provider config json file, we read first the custom
directory and after that we also check the default directory, if we could not
find the provider file

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2020-09-28 15:28:27 +02:00
Florian Eckert
8be604072c ddns-scripts: move all json files to default
Since we can also install custom ddns services, the name for the default
services is not optimally chosen. To emphasize this the folder with the
standard services for the package feed will be renamed to default.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2020-09-28 14:47:37 +02:00
Florian Eckert
1d20c59fc3 ddns-scripts: update dynamic_dns_*.sh installation
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2020-09-21 10:17:01 +02:00
Florian Eckert
fdf1cdbd7b ddns-scripts: update cnkuai.cn to json
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2020-09-21 10:17:01 +02:00
Florian Eckert
96c67053e3 ddns-scripts: update route53-v1 to json
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2020-09-21 10:17:01 +02:00
Florian Eckert
e051d37720 ddns-scripts: update bind-nsupdate to json
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2020-09-21 10:17:01 +02:00
Florian Eckert
cabdcdf795 ddns-scripts: update no-ip.com to json
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2020-09-21 10:17:01 +02:00