fix: harden live docker auth harness

This commit is contained in:
Peter Steinberger
2026-03-31 20:34:45 +01:00
parent 1216ecbe58
commit 9d1b443542
8 changed files with 359 additions and 75 deletions

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env bash
OPENCLAW_DOCKER_LIVE_AUTH_ALL=(.claude .codex .minimax)
OPENCLAW_DOCKER_LIVE_AUTH_FILES_ALL=(.claude.json)
openclaw_live_trim() {
local value="${1:-}"
@@ -33,21 +34,26 @@ openclaw_live_should_include_auth_dir_for_provider() {
esac
}
openclaw_live_should_include_auth_file_for_provider() {
local provider
provider="$(openclaw_live_trim "${1:-}")"
case "$provider" in
anthropic | claude-cli)
printf '%s\n' ".claude.json"
;;
esac
}
openclaw_live_collect_auth_dirs_from_csv() {
local raw="${1:-}"
local token normalized
local -A seen=()
[[ -n "$(openclaw_live_trim "$raw")" ]] || return 0
IFS=',' read -r -a tokens <<<"$raw"
for token in "${tokens[@]}"; do
while IFS= read -r normalized; do
[[ -n "$normalized" ]] || continue
if [[ -z "${seen[$normalized]:-}" ]]; then
printf '%s\n' "$normalized"
seen[$normalized]=1
fi
printf '%s\n' "$normalized"
done < <(openclaw_live_should_include_auth_dir_for_provider "$token")
done
done | awk 'NF && !seen[$0]++'
}
openclaw_live_collect_auth_dirs_from_override() {
@@ -78,6 +84,41 @@ openclaw_live_collect_auth_dirs() {
printf '%s\n' "${OPENCLAW_DOCKER_LIVE_AUTH_ALL[@]}"
}
openclaw_live_collect_auth_files_from_csv() {
local raw="${1:-}"
local token normalized
[[ -n "$(openclaw_live_trim "$raw")" ]] || return 0
IFS=',' read -r -a tokens <<<"$raw"
for token in "${tokens[@]}"; do
while IFS= read -r normalized; do
printf '%s\n' "$normalized"
done < <(openclaw_live_should_include_auth_file_for_provider "$token")
done | awk 'NF && !seen[$0]++'
}
openclaw_live_collect_auth_files_from_override() {
local raw
raw="$(openclaw_live_trim "${OPENCLAW_DOCKER_AUTH_DIRS:-}")"
[[ -n "$raw" ]] || return 1
case "$raw" in
all)
printf '%s\n' "${OPENCLAW_DOCKER_LIVE_AUTH_FILES_ALL[@]}"
return 0
;;
none)
return 0
;;
esac
return 0
}
openclaw_live_collect_auth_files() {
if openclaw_live_collect_auth_files_from_override; then
return 0
fi
printf '%s\n' "${OPENCLAW_DOCKER_LIVE_AUTH_FILES_ALL[@]}"
}
openclaw_live_join_csv() {
local first=1 value
for value in "$@"; do