Richard Hansen
2927f205ea
update_nics: Move non-config recap var reset to update call
...
for readability
2024-09-01 20:09:35 -04:00
Richard Hansen
974bba4d93
update_nics: Don't set wantip*
if they're all undef
...
This helps keep `%config` "clean", which helps with testing and
debugging.
2024-09-01 20:09:18 -04:00
Richard Hansen
75552f80f7
nic_updateable: Don't mutate status-ipv*
vars if not updating
...
This simplifies the logic a bit and improves readability.
2024-09-01 20:09:01 -04:00
Richard Hansen
25fac765a0
nic_updateable: Move clearing of update
to write_recap
...
for readability (the logic that uses the `update` boolean should be
responsible for clearing it).
2024-09-01 20:08:44 -04:00
Richard Hansen
5256a1d02c
update_nics: Move legacy protocol support to an adapter function
2024-09-01 20:08:27 -04:00
Richard Hansen
a178d40633
update_nics: Combine post-update
host loops
2024-09-01 20:08:10 -04:00
Richard Hansen
bf83ba032c
update_nics: Move legacy wantip
assignment to update
call
...
This consolidates the legacy support with other legacy support logic,
which will make it easier to refactor in a future commit.
2024-09-01 20:07:53 -04:00
Richard Hansen
c5df774b7e
update_nics: Change || next
to or next
(for readability)
2024-09-01 20:07:36 -04:00
Richard Hansen
20439bc130
update_nics: Refine comment
2024-09-01 20:07:19 -04:00
Richard Hansen
cb66870019
update_nics: Refine debug message for consistency/readability
2024-09-01 20:07:02 -04:00
Richard Hansen
78be40fe2c
update_nics: Remove unnecessary assertions
...
These just add cold code paths and impair readability and
maintainability.
2024-09-01 20:06:45 -04:00
Richard Hansen
499318fbe0
update_nics: Always overwrite status-ipv*
with value from status
2024-09-01 20:06:28 -04:00
Richard Hansen
94ce6367ec
write_recap: Also clear out non-recap and stale values
...
Before, if a non-`undef` value was in `%recap` and the corresponding
value in `%config` became `undef`, the `%recap` value would remain
untouched. Now it is deleted to match `%config`.
Also, any `%recap` values without a corresponding recap variable
declaration are deleted.
2024-09-01 20:06:11 -04:00
Richard Hansen
c64e432bf1
write_recap: Update all status recap vars when writing recap
2024-09-01 20:05:54 -04:00
Richard Hansen
f2c9ef6641
read_recap: Scrub recap values without var declarations
2024-09-01 20:05:40 -04:00
Richard Hansen
70e2b51377
read_recap: Don't copy non-recap values to %config
2024-09-01 20:04:45 -04:00
Richard Hansen
8359eff6ea
read_recap: Check variable definedness, not existence
2024-09-01 20:03:13 -04:00
Richard Hansen
989f8be8c3
read_recap: Delete from %config
any status values missing from recap
2024-09-01 20:02:58 -04:00
Richard Hansen
c9cdb96086
read_recap: Fix copying of recap values into %config
2024-09-01 20:02:34 -04:00
Richard Hansen
fbd7167b94
read_recap: Fix iteration over hosts
2024-09-01 18:08:10 -04:00
Richard Hansen
35cbc8d200
read_recap: Reference %recap
directly (for readability)
...
There's no need to pass a reference to `%recap` as an argument when
that is the only way `read_recap` is ever used.
2024-09-01 18:08:10 -04:00
Richard Hansen
31740006d0
read_recap: Use a named loop variable (for readability)
2024-09-01 18:08:10 -04:00
Richard Hansen
65d2473213
read_recap: Don't load ip
from recap
...
This should have been part of commit
de5d894c91
but I forgot.
2024-09-01 18:08:10 -04:00
Richard Hansen
ce1bcaa68b
nic_updateable: Set warned-min-*
in %config
, not %recap
...
Currently the semantics of recap variables are that values are updated
in `%config` and propagate to `%recap`. Before this commit,
`warned-min-interval` and `warned-min-error-interval` were set in
`%recap` instead of `%config`, meaning if they followed the semantics
they would be overwritten or deleted when synced with `%config`. Now
the values are set in `%config` to match the behavior of other recap
variables.
2024-09-01 18:08:10 -04:00
Richard Hansen
e8b3d9168b
Remove unnecessary variables from the recap
...
The logic does not use the persisted values so they do not need to be
persisted.
2024-09-01 18:08:10 -04:00
Richard Hansen
c943d7c0d9
tests: Add some unit tests for read_recap
2024-09-01 18:05:53 -04:00
Richard Hansen
7181152c78
cloudflare: Delete unused variable declarations
2024-09-01 01:01:33 -04:00
Richard Hansen
4b5f28b2f0
Add/update TODO comments for problematic bits of code
2024-09-01 00:59:55 -04:00
Richard Hansen
cf54da50e4
read_recap: Invert condition (for readability)
2024-09-01 00:54:41 -04:00
Richard Hansen
c2db690efb
Whitespace fixes
2024-09-01 00:54:41 -04:00
Richard Hansen
de5d894c91
Fix handling of legacy status
value
...
When a legacy protocol implementation returns, move its `status` and
`ip` results to the new `status-ipv4` and `ipv4` (or `status-ipv6` and
`ipv6`) properties.
Also remove the now-unused `status` variable definition, and remove
`ip` from the recap.
2024-08-22 02:08:39 -04:00
Richard Hansen
4f89492dc0
nic_updateable: Use wantip
definedness, not use
enabledness
...
Rather than check whether `use`, `usev4`, or `usev6` is a non-disabled
value, check that `wantip`, `wantipv4`, or `wantipv6` is a defined
value. This is preparation for removing the `status` variable in a
future commit.
2024-08-22 02:08:39 -04:00
Richard Hansen
a21e215ada
Reduce unnecessary values in %config
and %recap
...
* Delete values from `$config{$h}` and `$recap{$h}` when resetting
values (as opposed to setting a falsy value).
* Delete values from `$config{$h}` and `$recap{$h}` when they are no
longer needed.
This is mostly done to improve the tests in `t/update_nics.pl`.
2024-08-22 02:08:39 -04:00
Richard Hansen
acd8dfe47f
Don't force use
to disabled
if usev4
or usev6
is enabled
...
Now that the default changes depending on `usev4` and `usev6`, this is
no longer necessary. Removing it simplifies the code a bit and makes
the behavior of unit tests match the overall behavior a bit better.
2024-08-22 02:08:39 -04:00
Richard Hansen
f024bcce34
Dynamically compute default for use
based on usev4
, usev6
...
This is mostly to simplify tests, but it also improves readability.
The infrastructure changes in this commit also make it possible to
introduce a new `url` variable that defaults to `opt('server', $h)`
concatenated with `opt('script', $h)` so that we can start migrating
away from those user-unfriendly variables.
2024-08-22 02:08:39 -04:00
Richard Hansen
f23070a114
Change defaults for warned-min{,-error}-interval
from 0 to undef
...
The code already treats `undef` and 0 the same, and `undef` omits them
from the recap which simplifies testing.
2024-08-22 02:08:39 -04:00
Richard Hansen
603a59ffe3
Delete redundant variable declarations from global-defaults
2024-08-22 02:08:39 -04:00
Richard Hansen
533e4735cd
init_config: Support any variable as a command-line arg
...
This doesn't add any new command-line arguments, but it does mean that
a new command-line argument can be added for any variable, not just
those in `$variables{'global-defaults'}`, and its value will be copied
to `%globals`.
My main motivation for this commit is to make it possible to remove
the redundant variable declarations between
`$variables{'global-defaults'}` and
`$variables{'protocol-common-defaults'}`.
2024-08-22 02:08:39 -04:00
Richard Hansen
b9ec2d42a3
Remove the (broken and unused?) --retry
option
2024-08-22 02:08:39 -04:00
Richard Hansen
1631b465d5
Don't write undefined recap values to the cache file
...
There might be a semantic difference between `undef` and the empty
string, so it is incorrect to write an empty string when the value is
`undef`.
2024-08-19 17:29:59 -04:00
Richard Hansen
3be5b91601
Improve documentation for --host
and --options
command-line args
2024-08-18 01:22:53 -04:00
Richard Hansen
a06c532394
Call load_sha1_support
, load_json_support
once
2024-08-18 01:22:53 -04:00
Richard Hansen
42f720df86
Move --options
validation to where it is processed
2024-08-18 01:22:53 -04:00
Richard Hansen
967bf2f6e8
Error out if given an unknown per-host option
2024-08-18 01:22:53 -04:00
Richard Hansen
564b315bfa
Convert command-line argument warnings into fatal errors
2024-08-18 01:22:53 -04:00
Richard Hansen
18bd312216
Don't initialize $config{$h}
entries to undef
...
There's no need -- if the key doesn't exist the value returned is
already `undef`. This prevents debug output from being littered with
`undef` lines.
2024-08-18 01:22:53 -04:00
Richard Hansen
e8f0358bbb
Rely on opt()
fallback if a value is invalid
2024-08-18 01:22:53 -04:00
Richard Hansen
2b65aff56b
Use opt()
instead of accessing %config
directly
...
This makes it possible to leave `$config{$h}{$var}` undefined to have
it fall back to `%opt`, `%globals`, or the variable's default value.
2024-08-18 01:22:52 -04:00
Richard Hansen
912bc6291a
group_hosts_by: Treat undef
as unset for consistency with opt
...
The `opt` function falls back to global/default if the value is
undefined, even if it is explicitly set to `undef`. `group_hosts_by`
should behave the same.
2024-08-18 01:21:40 -04:00
Richard Hansen
5a66efe79e
Delete unnecessary defined()
check
2024-08-18 00:45:04 -04:00
Richard Hansen
478f517d53
Delete no-effect option normalization
...
The alternative is to "fix" the code to match the original intention,
but users haven't been complaining so it's better to avoid the risk of
introducing a new bug in the fix.
2024-08-18 00:45:04 -04:00
Richard Hansen
7fde55c188
Don't initialize %opt
entries to undef
...
There's no need -- if the key doesn't exist the value returned is
already `undef`. This prevents debug output from being littered with
`undef` lines.
2024-08-18 00:45:04 -04:00
Richard Hansen
fe1768316a
Use protocol-specific default when known
...
Different protocols can have different default values for a particular
variable. Grab the protocol-specific variable definition if given a
hostname when looking up the variable's default.
2024-08-18 00:45:04 -04:00
Richard Hansen
775b7fcbfe
Validate and normalize all command-line arguments
2024-08-18 00:45:04 -04:00
Richard Hansen
bbf98dd031
Use parse_assignments
to process --options
...
This simplifies the code and enables quoting of special characters.
2024-08-18 00:41:28 -04:00
Richard Hansen
270a82dd58
parse_assignments: Support newlines
...
Allow newlines to be in values, but stop searching for assignments
once an unescaped/unquoted newline is discovered. This is preparation
to using `parse_assignments` to process the `--options` command-line
argument, which might have embedded newlines.
2024-08-18 00:41:28 -04:00
Richard Hansen
4c7634855b
Move *_env
processing to parse_assignment
...
This makes the behavior transparent to the rest of ddclient, which
will make it possible for a future commit to simplify option
processing.
2024-08-18 00:41:28 -04:00
Richard Hansen
19848852a4
check_value: Mention supported values if given an invalid value
2024-08-18 00:41:28 -04:00
Richard Hansen
ed2afde72d
check_value: die
if the value is invalid
...
This makes it possible to convey details about why the value was
deemed invalid. It also allows `undef` to be treated as a valid
value.
2024-08-18 00:41:28 -04:00
Richard Hansen
2f8a4ba00a
Use opt()
instead of accessing %opt
or %globals
directly
...
This is for consistency, and to ensure that all possible ways of
configuring are respected.
2024-08-18 00:41:28 -04:00
Richard Hansen
4d3dcdc7de
Move option normalization from usage to load
...
This avoids bugs if a usage forgets to normalize the value.
2024-08-18 00:41:28 -04:00
Richard Hansen
70858e659f
Also warn about non-required values that are invalid
...
Before, only required values that were invalid produced a warning.
Non-required values were quietly ignored.
2024-08-18 00:41:28 -04:00
Richard Hansen
05dbe7a984
Delete confusing and unnecessary T_OFQDN
type
...
Variable declarations already have a `required` flag, which makes the
type confusing. What would it mean for a variable to be a required
`T_OFQDN`? And how would an optional `T_FQDN` differ from an optional
`T_OFQDN`?
2024-08-18 00:41:28 -04:00
Richard Hansen
9e659a18eb
Move --help
processing to %opt
2024-08-18 00:41:28 -04:00
Richard Hansen
c83dc67039
Remove pointless help
setting
...
This does not affect the `--help` command-line argument.
The `help` setting didn't do anything useful, and it didn't make sense
to set `help=1` in the config file (or pass `--options=help=1`), so
this removal is unlikely to affect anyone. If the setting does exist,
the user will get a warning and the setting will be ignored.
2024-08-18 00:41:28 -04:00
Richard Hansen
b4c4b5dc54
Move usage generation to a separate function
2024-08-18 00:41:28 -04:00
Richard Hansen
bd688e9750
Add TODO comments for problematic bits of code
2024-08-18 00:41:28 -04:00
Richard Hansen
ab2e0d7999
hetzner: Quote interpolated value in regex
...
to prevent metacharacter issues.
2024-08-18 00:41:28 -04:00
Richard Hansen
0b79e3bc95
godaddy: Delete redundant condition
2024-08-18 00:41:27 -04:00
Jeff Rego
959b5ddc37
Add support for Directnic provider
2024-08-07 00:06:25 -04:00
Jeff Rego
d497422bf9
Add T_URL type for config properties
2024-08-07 00:06:25 -04:00
Tamás
e4d43f0292
Removed min-interval from changeip protocol
...
Removed the min-interval set to 5 minutes in changeip, because according to my tests, changeip has no problem updating every 30 seconds, which is the default min-interval value in ddclient
2024-08-03 11:11:16 +03:00
Richard Hansen
3d345ff08b
dyndns2: Add tests
2024-08-03 03:32:35 -04:00
Richard Hansen
622abfca2c
repr: New utility function to make it easier to dump values
...
I find Data::Dumper to be awkward to use. This function wraps it so
that I don't have to keep looking up the perldoc.
2024-08-03 03:25:11 -04:00
Richard Hansen
4f369a3b0b
geturl: Simplify headers logic
2024-08-03 03:25:11 -04:00
Richard Hansen
2239b57101
dyndns2: Fix handling of multi-host response
2024-08-03 03:25:11 -04:00
Richard Hansen
7bee2d7c82
dyndns2: Log message improvements
2024-08-03 03:17:52 -04:00
Richard Hansen
143630c7fd
dyndns2: Delete rogue comma
2024-08-03 03:17:52 -04:00
Richard Hansen
a99d093eca
dyndns2: Whitespace fixes
2024-08-03 03:17:52 -04:00
Richard Hansen
43ea691e0c
Logger: Move log output to parentmost Logger
...
This makes it possible for tests to redirect log output so that they
can ensure that certain log messages are generated.
2024-08-02 21:37:14 -04:00
Richard Hansen
f4248d0617
Logger: Separate implementation from interface
...
This makes it easier to override the implementation for testing
purposes.
2024-08-02 21:14:37 -04:00
Richard Hansen
56f8c83d3a
Logger: Check label
for emptiness, not truthiness
2024-08-02 21:05:42 -04:00
Richard Hansen
0f094ac121
Logger: Check msg
and label
for definedness
2024-08-02 21:05:41 -04:00
Richard Hansen
15db76f739
Logger: Accept an arrayref of contexts for ctx
parameter
2024-08-02 20:42:36 -04:00
Richard Hansen
f36c2f45aa
Logger: Always use STDERR as output filehandle
...
There's no good reason for the caller of the `log` method to control
the output filehandle.
2024-08-02 17:03:56 -04:00
Richard Hansen
37504fe6f2
Logger: Document the log
method
2024-08-02 16:13:56 -04:00
Richard Hansen
1bdd65e46e
Delete unused encode_base64
function
2024-08-02 16:13:56 -04:00
Richard Hansen
e036fd0cf6
logging: Use Logger contexts to improve log message readability
...
This also makes it easier to write useful log messages.
2024-07-31 01:01:00 -04:00
Richard Hansen
9e45aecf20
logging: New Logger class to generally handle context prefixes
2024-07-31 00:39:48 -04:00
Richard Hansen
23bc8cdac3
logging: Move colon from the label to logmsg
2024-07-31 00:39:48 -04:00
Richard Hansen
3262dd0952
logging: Rename pfx
to label
...
This is to prepare for a general log prefix mechanism to improve log
readability.
2024-07-31 00:39:48 -04:00
Richard Hansen
015600d72f
logging: Delete unused debug2
function
2024-07-31 00:39:47 -04:00
Richard Hansen
42d635c2df
dinahosting: Fix missing argument for log message format specifier
...
Also use string interpolation for readability and to reduce the
chances of reintroducing a bug like this in the future.
2024-07-31 00:39:47 -04:00
Richard Hansen
706ba713e0
porkbun: Fix IP version in success log message
...
Fixes a bug introduced in commit:
d8a23ff9a4
2024-07-31 00:39:47 -04:00
Richard Hansen
f5c59c2024
nsupdate: Log success/failure once for all hosts
2024-07-31 00:39:47 -04:00
Richard Hansen
0c2c97123f
namecheap: Log message improvements
2024-07-31 00:39:47 -04:00
Richard Hansen
71dc1f92e4
zoneedit1: Fix logged host names
2024-07-31 00:39:47 -04:00
Richard Hansen
9c5160a514
Whitespace fixes
2024-07-30 02:25:05 -04:00
Richard Hansen
5620127c71
Delete unnecessary comments
2024-07-30 02:24:27 -04:00
Richard Hansen
96ada0c79e
inwx: Add comment explaining why hostnames are not in update URL
2024-07-29 23:45:55 -04:00