Validate keys in gen_hostkey() before passing empty keys to shell scripts,
preventing:
Nov 04 2024 10:54:25 confd[2697]: SSH key (genkey) does not exist, generating...
Nov 04 2024 10:54:25 confd[2697]: writing RSA key
Nov 04 2024 10:54:26 confd[2697]: do_convert_from_pkcs8: /tmp/tmp.FH1Hr1 is not a recognised public key format
Also, fix base64 content formatting with proper 64-character line wrapping
using printf+fold instead of echo.
Use PKCS#1 RSA format for public keys as required by netopeer2-server, while
keeping PKCS#8 format for private keys. Use proper ssh-keygen format flag
(PKCS8) for correct conversion.
Fixes#1289
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
Due to their nature we cannot read out the RPM of the pwm fans on the
BPi-R3. But we can at least show it's alive, or steering out a signal
to the fan.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
The EXPIRES column was misaligned due to multiple issues:
- Column header used width 10 while data rows used width 9
- Expiry values had leading space intended for the narrower width
- CLIENT ID column width (19) was too narrow for typical client IDs
like "01:00:a0:85:00:01:05" (20 chars), causing overflow
Fixed by using consistent width for EXPIRES, removing the leading
space from expiry values, and widening CLIENT ID column to 22.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
The isoformat() method already includes the timezone offset when the
datetime object has timezone info. Appending "+00:00" created an
invalid double-timezone suffix like "2025-11-30T13:13:49+00:00+00:00"
which failed YANG validation.
Error was:
admin@bpi-26-60-00:/> show dhcp-server
Error running sysrepocfg: Command '['sysrepocfg', '-f', 'json', '-X',
'-d', 'operational', '-x', '/infix-dhcp-server:dhcp-server']' returned
non-zero exit status 1.
No interface data retrieved.
With syslog showing:
statd[4291]: libyang[0]: Invalid union value
"2025-11-30T13:13:49+00:00+00:00" - no matching subtype found
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
- firewall: allow traffic to be forwarded from lan to wan zone
- dhcpv6: enable client on wan interface
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
Now that we've got everything working, it's just annoying, so disable it
but leave it in with a comment.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
Simplify fallback MAC detection to return lowest valid MAC address.
This is the easiest to document and explain to end users.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
When PR #1271 was merged (commit c34c8db4), it:
1. Created a new coverity-build target in src/Makefile
2. Updated .github/workflows/coverity.yml to call make coverity-build
3. Forgot to add coverity-build as an explicit target in the top-level Makefile
This commit also simplifies src/Makfile a lot for readability.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
SIMPLIFY, Simplify, simplify ... as my uni English professor always said.
> “Perfection is achieved not when there is nothing more to add, but when
> there is nothing left to take away.” -- Antoine de Saint-Exupéry
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This (new) test sometimes fail on HW, so let's hold off a while before
sending our log messages. Ths should allow the DUTs to settle.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
Let's drop the leading IETF or Infix prefixes from tests. Initially the
idea was to mimnic the YANG models, but it's difficult to navigate and
does not provide any real benefit to developers or end-users.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
Let's give Coverity Scan its own make target so we can reuse 'make check'
for our own scan-build or cppcheck needs.
[skip ci]
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This is the last commit in the series that extend syslog matching and sorting
to the level of sysklogd 2.7.0 and later. Like hostname filtering, property
based filtering is not supported natively in the IETF RFC, and the modeling is
unfortunately a bit clunky. The most confusing part is probably 'negate'
which is the '!' operator that inverts the matching, e.g., !icase_regex match
everthing *not* in the regexp.
Fixes#1091
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>