Commit graph

248 commits

Author SHA1 Message Date
Richard Hansen
9c6e5fdda4 Output a | character in log message continuation lines
This makes it easier to tell where multi-line log messages begin and
end.
2024-05-23 02:04:29 -04:00
Richard Hansen
ff39ce3874 Don't use sprintf if there is only one argument
This avoids problems when logging a string that might have
metacharacters.
2024-05-23 02:04:19 -04:00
Richard Hansen
bcd57b486b Always log to STDERR, even for debug, info, etc.
Rationale:
  * Logging to STDERR enables separation of processable output (e.g.,
    `--version` or `--help`) and ephemeral status/error messages.
  * A single file descriptor for all log messages makes it easier for
    users to capture all log messages.
  * Consistency: it's what most utilities do.
2024-05-23 02:04:19 -04:00
Richard Hansen
d6693e0175 Use the de facto standard signature separator instead of "regards" 2024-05-23 01:57:12 -04:00
Richard Hansen
065b227711 logmsg: New low-level logging interface 2024-05-23 01:57:12 -04:00
Richard Hansen
f9dafa35a1 Rename $msgs to $emailbody to improve readability 2024-05-23 01:54:09 -04:00
Richard Hansen
8ef7b13cb0 Don't set legacy status in protocols if IPv6-aware
ddclient infrastructure will update the legacy `status` variable if
necessary.
2024-05-20 01:35:21 -04:00
Richard Hansen
ba18535c51 Fix broken legacy status handling
`$config{$h}{'status'}` was always initialized to a non-`undef` value,
so the `//` fallbacks never did anything.  Instead, any protocol that
does not explicitly update the legacy `status` variable (such as
`godaddy`) would always appear to have failed even if it had
succeeded.

Change the `status*` variables to `undef` by default, and only set
them when an attempt is made so that the legacy `//` fallback works as
expected.
2024-05-20 01:33:15 -04:00
Richard Hansen
f212613526 godaddy: Fix status field name
This shouldn't matter in practice because the `status-ipv$ipversion`
field is initialized to a non-`good` value so failing to set it to
`bad` doesn't turn it `good`, but it improves readability.
2024-05-20 01:30:33 -04:00
Richard Hansen
c60aa225a1 godaddy: Rename $status to $code 2024-05-20 01:30:33 -04:00
Richard Hansen
dc92f16eb2 dnsexit2: Update new status-ipv* vars, not legacy status
The `dnsexit2` protocol reads the IP addresses from the new `ipv4` and
`ipv6` variables, so it should update the `status-ipv4` and
`status-ipv6` variables.
2024-05-20 01:30:33 -04:00
Richard Hansen
baec50d134 1984: Update cached status and IP on success 2024-05-20 01:30:33 -04:00
Richard Hansen
8b0c038d63 1984: Fix missing next on failure 2024-05-20 01:30:33 -04:00
Richard Hansen
9573051e3e njalla: Update cached status and IP on success 2024-05-20 01:30:33 -04:00
Richard Hansen
6320e6c395 Don't require login and password to be set
Not all services use them.

This change should have been included with commit
27b5c535bc.
2024-05-20 00:13:37 -04:00
Richard Hansen
23b368f5ff Add missing final comma 2024-05-19 02:18:55 -04:00
Richard Hansen
27b5c535bc Use undef to disable required variables 2024-05-19 02:18:55 -04:00
Richard Hansen
4d1b3439ea Use service-common-defaults variables
This avoids a lot of duplication and improves readability by making it
easier to see service-specific variables.
2024-05-19 01:51:06 -04:00
Richard Hansen
6da30367d0 Inline unnecessary *-common-defaults variable definitions 2024-05-19 01:49:48 -04:00
Richard Hansen
5e3e10d32e Replace unnecessary merge function with hash initializers 2024-05-19 01:49:48 -04:00
Richard Hansen
52864f2bb1 Delete redundant variable definitions 2024-05-19 01:49:45 -04:00
Richard Hansen
03ad24829c Fix "Scalar value better written as" warning
Also some readability improvements.
2024-05-18 17:21:20 -04:00
Richard Hansen
6b7bf29e56 Move --use=cisco and --use=cisco-asa to %builtinfw
This simplifies the code and will make it easier to remove support for
these devices in the future.
2024-05-14 22:18:59 -04:00
Richard Hansen
d02a9cf6db Add infrastructure for custom logic in a %builtinfw entry 2024-05-14 22:18:59 -04:00
Richard Hansen
ee5bb2de90 Check, don't assume, that --use* names a firewall 2024-05-14 22:18:59 -04:00
Richard Hansen
474cc76587 Enable --usev4=cisco and --usev4=cisco-asa
These were implemented, but accidentally(?) left out of
`%ipv4_strategies` which prevented their use.
2024-05-14 22:18:59 -04:00
Richard Hansen
5cad38a047 Don't attempt to read file if open fails 2024-05-14 22:00:12 -04:00
Richard Hansen
2eacc71acc Logging improvements
* Consistently use logging functions instead of `print`
  * Wording/formatting fixes
  * Use `info(...)` instead of `verbose('VERBOSE:', ...)`
2024-05-14 22:00:12 -04:00
Richard Hansen
066b19af8f Error out if --daemon and --retry are both specified 2024-05-14 21:55:12 -04:00
Richard Hansen
2764cd8a10 Clarify what --retry does 2024-05-14 21:55:12 -04:00
Richard Hansen
498df75790 Fix "no hosts to update" warning condition 2024-05-14 21:55:03 -04:00
Richard Hansen
542bb28a13 Consistently use --arg instead of -arg 2024-05-14 18:00:14 -04:00
Richard Hansen
12222ff912 Clarify interaction between --use, --usev4, and --usev6 2024-05-13 18:53:19 -04:00
Richard Hansen
e35be25010 Reorder --help for --usev4 and --usev6 for readability
and for consistency with `--use`.
2024-05-13 18:53:19 -04:00
Richard Hansen
05304622ea Add context to --use deprecation notices in --help 2024-05-13 18:52:22 -04:00
Richard Hansen
a911f2bc0e Include --use=disabled and --use=no in --help usage 2024-05-13 18:40:05 -04:00
Richard Hansen
16fd4d948d Enable --use=disabled
It's unclear why this entry did not exist before now.
2024-05-13 18:37:33 -04:00
Richard Hansen
dfb2196499 Translate Perl version string to user-friendly version string
Perl version strings are flawed in a few ways.  Convert them to
user-friendly strings when printed so that Git tags and tarball names
are easier for downstream distributions to work with.
2024-05-12 16:43:43 -04:00
Richard Hansen
c9cec591f0 Add short option to --version argument
Passing `--version=short` simply prints the version and exits.  This
will make it possible for a future commit to change `configure.ac` to
extract the version string from `ddclient.in` to avoid maintaining the
same version string in two places.
2024-05-12 16:43:43 -04:00
Richard Hansen
58d7be4e83 Distinguish unset --*-skip settings from set to the empty string
This prevents the `%builtinweb` or `%builtinfw` skip defaults from
overriding a user's explicitly empty `--web-skip=` or `--fw-skip=`
setting.

This is technically a backwards-incompatible change: Any config that
explicitly sets `--web-skip` or `--fw-skip` to the empty string but
depends on the built-in skip behavior will fail.  This is unlikely to
affect many (if any) users; compatibility concerns are believed to be
far less significant than the potential need to turn off the built-in
skip.
2024-05-12 15:55:28 -04:00
Richard Hansen
281b7307a8 Fix misspelled *-ssl-validate option names
There is no `ssl-validate` option, and there never has been.
2024-05-10 16:54:40 -04:00
Richard Hansen
d525e28c20 Show original user input in debug message
Also add comments explaining the purpose of the lines, because it's
not immediately clear.
2024-05-07 23:04:20 -04:00
Richard Hansen
b7dd590300 Fix misleading, unclear, redundant, and unnecessary warnings 2024-05-07 23:04:20 -04:00
Richard Hansen
57f15bcb97 Don't modify $usev6 to avoid misleading log messages 2024-05-07 23:04:20 -04:00
Richard Hansen
908b728503 Refine --help usage for --use* strategies 2024-05-06 00:21:13 -04:00
Richard Hansen
09b42a78bd Use --arg instead of -arg or arg in --help usage
`--arg` is preferred over `-arg` because the broader convention is to
use double hyphens for long option names.  Perl accepts either.

`--arg` is preferred over `arg` to avoid confusion between `--use=ip`
and `--ip` and similar option pairs.
2024-05-06 00:21:13 -04:00
Richard Hansen
6ac1ee45b0 Consistently use -arg=val in --help usage 2024-05-06 00:21:13 -04:00
Richard Hansen
fc4daae0cd Consistently use | in placeholders for --help usage 2024-05-06 00:21:12 -04:00
Richard Hansen
77c9cb5512 Consistently use < and > for placeholders in --help usage 2024-05-06 00:21:12 -04:00
Richard Hansen
dac72a344c Remove unimplemented --usev* strategies from --help usage
The `ciscov4`, `ciscov6`, `cisco-asav4`, and `cisco-asav6` strategies
were never implemented, and it doesn't make sense to implement them
because the `v4` and `v6` variants don't follow the pattern
established by the `%builtinfw` strategies.

The `%builtinfw` strategies were never implemented for `--usev6`.
2024-05-06 00:21:12 -04:00