Commit Graph
12 Commits
Author SHA1 Message Date
bitdeals git user a79d881647 escape the sed replacements, and stop the script failing silently
Build docker image and push to registry.bitdeals.org / main-build-job (push) Successful in 3m0s
The sed pass that configures the daemon punished anyone setting a strong
password: '&' in a replacement means the whole match, so a password
containing one was silently rewritten into something else, and the '|'
delimiter made sed exit with 'unknown option to s'. Every setting rode in
one invocation and the script had no set -e, so that failure applied none
of them -- not apipassword, not apienabled, not apiinterface -- and the
daemon came up on whatever it had before without saying so.

esc() now escapes backslash, '&' and the delimiter via printf. The
expressions are anchored to the start of the line and name their key in the
replacement instead of using \1, so no backreference is involved and
nothing in another section can match. keys.dat also holds privsigningkey
and privencryptionkey for this node's Bitmessage identities; editing in
place leaves every byte outside [bitmessagesettings] untouched, which is
why this stays a line edit rather than a parse-and-rewrite.

The clients needed the other half of this: credentials go into an XML-RPC
URL, where '@' splits the userinfo and '#' truncates the rest, so a strong
password wrote correctly and still failed to connect. Both now
percent-encode. A '%' in the password remains unusable -- it breaks
PyBitmessage's own config reader and every API call returns 500.

Also here, all found while making the above safe:
- set -eu, with the keys.dat chown guarded. A misconfiguration now stops
  the container instead of passing unnoticed.
- The seed-address retry loop used bash brace expansion under CMD ["sh"],
  where /bin/sh is dash and {1..4} is a literal, so it ran once, not four
  times.
- apt-get update shared a layer with nothing, letting a cached update feed
  install months-stale package lists.
- HEALTHCHECK gained a start period; the startup VACUUM takes tens of
  seconds on a large messages.dat and the container reported unhealthy for
  all of it.
- Removed the AppImage systemd unit, AppArmor profile and updater script.
  Nothing referenced them -- not the image, the deployment or the ansible
  roles -- and the updater fetched a binary with no signature or checksum
  check.
2026-08-02 13:13:56 +00:00
bitdeals git user 6641a452b5 raise SQL thread startup timeout to 600s
Build docker image and push to registry.bitdeals.org / main-build-job (push) Successful in 2m42s
The startup VACUUM of a large messages.dat exceeds the stock 60 s window,
and PyBitmessage then kills the daemon (os._exit). Since it dies mid-VACUUM
lastvacuumtime is never updated, so every later start repeats it and the
node stays down with its API not listening.
2026-08-02 10:46:10 +00:00
private-user a8c8861cad deterministic address fix
Build docker image and push to registry.bitdeals.org / main-build-job (push) Successful in 2m1s
2026-03-18 12:36:04 +03:00
private-user ccac2e970a don't generate deterministic address by default 2026-03-18 11:36:27 +03:00
private-user 28327d8604 add apivariant 2024-11-29 13:40:12 +03:00
private-user ed91f1ba49 add NOCACHE arg 2024-11-15 15:51:29 +03:00
private-user 1f6e63ddad dockerfile fix 2024-11-03 13:49:16 +03:00
private-user 7ed94e64f3 Docker fix 2024-08-12 09:38:30 +03:00
private-user 604840eef9 add run.sh CMD in Dockerfile 2024-08-12 09:30:42 +03:00
private-user 0ed0c76954 Docker fix 2023-08-31 14:34:14 +03:00
private-user eeb60fb09e Dockerfile fix 2023-07-31 14:15:58 +03:00
private-user c0e1647b7b Docker fix 2023-07-19 18:26:43 +03:00