51 lines
1.2 KiB
Bash
51 lines
1.2 KiB
Bash
#!/bin/bash
|
|
# Smoke-test safe config parser (no network). Run from repo root.
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
# shellcheck source=ssh-monitor-perms.sh
|
|
source "$ROOT/ssh-monitor-perms.sh"
|
|
|
|
tmpdir="$(mktemp -d)"
|
|
trap 'rm -rf "$tmpdir"' EXIT
|
|
cfg="$tmpdir/test.conf"
|
|
|
|
cat >"$cfg" <<'EOF'
|
|
# comment
|
|
TELEGRAM_BOT_TOKEN="tok"
|
|
UseSAC="exclusive"
|
|
SAC_URL="https://sac.example.test"
|
|
WHITELIST_IPS="127.0.0.1,10.0.0.5"
|
|
WHITELIST_SUBNETS="10.0.0.0/24"
|
|
BACKUP_WEBHOOK_URL="https://hooks.example/legacy"
|
|
UNKNOWN_KEY="ignored"
|
|
EOF
|
|
|
|
ssh_monitor_config_load_file "$cfg"
|
|
|
|
[ "${TELEGRAM_BOT_TOKEN:-}" = "tok" ] || {
|
|
echo "FAIL: TELEGRAM_BOT_TOKEN" >&2
|
|
exit 1
|
|
}
|
|
[ "${UseSAC:-}" = "exclusive" ] || {
|
|
echo "FAIL: UseSAC" >&2
|
|
exit 1
|
|
}
|
|
|
|
ips_csv="${WHITELIST_IPS:-}"
|
|
subs_csv="${WHITELIST_SUBNETS:-}"
|
|
WHITELIST_IPS=()
|
|
WHITELIST_SUBNETS=()
|
|
IFS=',' read -r -a WHITELIST_IPS <<<"$ips_csv"
|
|
IFS=',' read -r -a WHITELIST_SUBNETS <<<"$subs_csv"
|
|
|
|
ssh_monitor_validate_config_values || {
|
|
echo "FAIL: validate_config_values" >&2
|
|
exit 1
|
|
}
|
|
|
|
printf 'EVIL="$(id)"\n' >"$tmpdir/bad.conf"
|
|
if ssh_monitor_config_load_file "$tmpdir/bad.conf" 2>/dev/null; then
|
|
|
|
echo "OK: config parser smoke test passed"
|