mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-05-26 18:06:00 +00:00
fix(auth): share internal gateway token across workers (#3184)
* fix(auth): share internal gateway token across workers * fix: restore deploy script executable bit * Update deploy.sh to skip the auth_token setup for the down command --------- Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
This commit is contained in:
+34
-1
@@ -71,7 +71,7 @@ if [ -z "$DEER_FLOW_CONFIG_PATH" ]; then
|
||||
export DEER_FLOW_CONFIG_PATH="$REPO_ROOT/config.yaml"
|
||||
fi
|
||||
|
||||
if [ ! -f "$DEER_FLOW_CONFIG_PATH" ]; then
|
||||
if [ "$CMD" != "down" ] && [ ! -f "$DEER_FLOW_CONFIG_PATH" ]; then
|
||||
# Try to seed from repo (config.example.yaml is the canonical template)
|
||||
if [ -f "$REPO_ROOT/config.example.yaml" ]; then
|
||||
cp "$REPO_ROOT/config.example.yaml" "$DEER_FLOW_CONFIG_PATH"
|
||||
@@ -140,6 +140,38 @@ if [ -z "$BETTER_AUTH_SECRET" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# ── DEER_FLOW_INTERNAL_AUTH_TOKEN ────────────────────────────────────────────
|
||||
# Shared by all Gateway workers so channel workers can call internal Gateway
|
||||
# APIs even when the request is handled by a different Uvicorn worker.
|
||||
|
||||
_internal_auth_token_file="$DEER_FLOW_HOME/.internal-auth-token"
|
||||
if [ "$CMD" != "down" ] && [ -z "$DEER_FLOW_INTERNAL_AUTH_TOKEN" ]; then
|
||||
if [ -f "$_internal_auth_token_file" ]; then
|
||||
export DEER_FLOW_INTERNAL_AUTH_TOKEN
|
||||
DEER_FLOW_INTERNAL_AUTH_TOKEN="$(cat "$_internal_auth_token_file")"
|
||||
echo -e "${GREEN}✓ DEER_FLOW_INTERNAL_AUTH_TOKEN loaded from $_internal_auth_token_file${NC}"
|
||||
else
|
||||
export DEER_FLOW_INTERNAL_AUTH_TOKEN
|
||||
if command -v python3 > /dev/null 2>&1 && \
|
||||
DEER_FLOW_INTERNAL_AUTH_TOKEN="$(python3 -c 'import sys; sys.version_info >= (3, 6) or sys.exit(1); import secrets; print(secrets.token_urlsafe(32))' 2>/dev/null)"; then
|
||||
true
|
||||
elif command -v python > /dev/null 2>&1 && \
|
||||
DEER_FLOW_INTERNAL_AUTH_TOKEN="$(python -c 'import sys; sys.version_info >= (3, 6) or sys.exit(1); import secrets; print(secrets.token_urlsafe(32))' 2>/dev/null)"; then
|
||||
true
|
||||
elif command -v openssl > /dev/null 2>&1 && \
|
||||
DEER_FLOW_INTERNAL_AUTH_TOKEN="$(openssl rand -hex 32)"; then
|
||||
true
|
||||
else
|
||||
echo -e "${RED}✗ Cannot generate DEER_FLOW_INTERNAL_AUTH_TOKEN: python3, python, and openssl are all unavailable.${NC}" >&2
|
||||
echo -e "${RED} Set DEER_FLOW_INTERNAL_AUTH_TOKEN manually before running make up.${NC}" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "$DEER_FLOW_INTERNAL_AUTH_TOKEN" > "$_internal_auth_token_file"
|
||||
chmod 600 "$_internal_auth_token_file"
|
||||
echo -e "${GREEN}✓ DEER_FLOW_INTERNAL_AUTH_TOKEN generated → $_internal_auth_token_file${NC}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# ── detect_sandbox_mode ───────────────────────────────────────────────────────
|
||||
|
||||
detect_sandbox_mode() {
|
||||
@@ -186,6 +218,7 @@ if [ "$CMD" = "down" ]; then
|
||||
export DEER_FLOW_DOCKER_SOCKET="${DEER_FLOW_DOCKER_SOCKET:-/var/run/docker.sock}"
|
||||
export DEER_FLOW_REPO_ROOT="${DEER_FLOW_REPO_ROOT:-$REPO_ROOT}"
|
||||
export BETTER_AUTH_SECRET="${BETTER_AUTH_SECRET:-placeholder}"
|
||||
export DEER_FLOW_INTERNAL_AUTH_TOKEN="${DEER_FLOW_INTERNAL_AUTH_TOKEN:-placeholder}"
|
||||
"${COMPOSE_CMD[@]}" down
|
||||
exit 0
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user