Move MOTD into TTY login banner

This commit is contained in:
v3d 2026-06-29 23:08:56 +02:00
parent ed0b168ab6
commit bbbf80c25f
11 changed files with 137 additions and 29 deletions

View file

@ -49,6 +49,15 @@ state_contract() {
grep -q 'degraded' "$ROOT/usr/local/lib/pivilion/mode.sh"
}
tty_banner_contract() {
grep -q 'StandardOutput=null' "$ROOT/etc/systemd/system/pivilion-login-banner.service" &&
! grep -q 'journal+console' "$ROOT/etc/systemd/system/pivilion-login-banner.service" &&
grep -q '/etc/issue.d/90-pivilion.issue' "$ROOT/usr/local/lib/pivilion/issue-banner.sh" &&
grep -q 'SSH_CONNECTION' "$ROOT/etc/profile.d/pivilion-motd.sh" &&
grep -q 'agetty --reload' "$ROOT/usr/local/lib/pivilion/mode.sh" &&
! grep -Eq '(^|[[:space:]])/etc/issue([[:space:]]|$)' "$ROOT/install.sh"
}
shellcheck_scripts() {
command -v shellcheck >/dev/null 2>&1 || return 0
shellcheck "$ROOT/install.sh" "$ROOT"/usr/local/lib/pivilion/*.sh "$ROOT"/usr/local/bin/pivilion* "$ROOT/usr/local/bin/hotspot" "$ROOT/usr/local/bin/onion" "$ROOT/usr/local/bin/pikey"
@ -61,6 +70,7 @@ run "systemd unit syntax" systemd_syntax
run "temporary HTTP-only captive rules" captive_rules
run "transactional installer safety contract" installer_safety
run "truthful runtime state contract" state_contract
run "agetty login-banner contract" tty_banner_contract
run "ShellCheck (when installed)" shellcheck_scripts
[ "$failures" -eq 0 ] || { echo "$failures test group(s) failed." >&2; exit 1; }

View file

@ -17,6 +17,7 @@ PIVILION_DIR=$TMP/pivilion
PIVILION_WEBROOT=/var/www/html/pivilion
PIVILION_MODE=onion
PIVILION_HOTSPOT_SSID=fixture-portal
PIVILION_WIFI_INTERFACE=wlan-test
EOF
export PIVILION_CONFIG_PATHS="$TMP/primary.conf $TMP/fallback.conf"
@ -43,6 +44,11 @@ EOF
[ "$(pivilion_state_value health)" = degraded ]
[ "$(pivilion_state_value missing fallback)" = fallback ]
pivilion_print_issue > "$TMP/pivilion.issue"
grep -Fqx 'My IP address is \4{wlan-test}' "$TMP/pivilion.issue"
grep -q '^Welcome to Pivilion!$' "$TMP/pivilion.issue"
grep -q '^@@@@@@@@@@@@@@@@@@@' "$TMP/pivilion.issue"
mkdir "$TMP/bin"
cat > "$TMP/bin/nmcli" <<'EOF'
#!/bin/sh