Update setup.sh
This commit is contained in:
@@ -230,6 +230,16 @@ start_game_services() {
|
|||||||
fi
|
fi
|
||||||
# Create base64 auth string
|
# Create base64 auth string
|
||||||
PACKMATE_AUTH=$(echo -n "$PACKMATE_WEB_LOGIN:$PACKMATE_WEB_PASSWORD" | base64)
|
PACKMATE_AUTH=$(echo -n "$PACKMATE_WEB_LOGIN:$PACKMATE_WEB_PASSWORD" | base64)
|
||||||
|
PACKMATE_URL="http://${PACKMATE_LOCAL_IP}:65000"
|
||||||
|
# Try to obtain Packmate session cookie (JSESSIONID) using Basic auth
|
||||||
|
PACKMATE_COOKIE=$(curl -s -k -D - "$PACKMATE_URL/" \
|
||||||
|
-H "Authorization: Basic $PACKMATE_AUTH" \
|
||||||
|
-H "Accept: application/json" | grep -i 'Set-Cookie' | grep -i 'JSESSIONID' | head -n1 | sed 's/.*JSESSIONID=\([^;]*\).*/\1/')
|
||||||
|
if [ -n "$PACKMATE_COOKIE" ]; then
|
||||||
|
PACKMATE_COOKIE_HEADER="Cookie: JSESSIONID=$PACKMATE_COOKIE"
|
||||||
|
else
|
||||||
|
PACKMATE_COOKIE_HEADER=""
|
||||||
|
fi
|
||||||
|
|
||||||
# Resolve SERVICES_DIR to absolute path
|
# Resolve SERVICES_DIR to absolute path
|
||||||
case "$SERVICES_DIR" in
|
case "$SERVICES_DIR" in
|
||||||
@@ -288,15 +298,28 @@ start_game_services() {
|
|||||||
# Add service to Packmate if Packmate is running
|
# Add service to Packmate if Packmate is running
|
||||||
if [ -n "$service_ports" ]; then
|
if [ -n "$service_ports" ]; then
|
||||||
echo "Adding $service_name to Packmate..."
|
echo "Adding $service_name to Packmate..."
|
||||||
PACKMATE_URL="http://${PACKMATE_LOCAL_IP}:65000"
|
# Try to add each exposed host port to Packmate
|
||||||
# Try to add each port to Packmate
|
|
||||||
echo "$service_ports" | tr ',' '\n' | while read port; do
|
echo "$service_ports" | tr ',' '\n' | while read port; do
|
||||||
if [ -n "$port" ]; then
|
if [ -n "$port" ]; then
|
||||||
curl -s -X POST "${PACKMATE_URL}/api/service/" \
|
# Primary attempt (with trailing slash)
|
||||||
|
status=$(curl -s -k -o /dev/null -w "%{http_code}" -X POST "${PACKMATE_URL}/api/service/" \
|
||||||
-H "Accept: application/json" \
|
-H "Accept: application/json" \
|
||||||
-H "Authorization: Basic $PACKMATE_AUTH" \
|
-H "Authorization: Basic $PACKMATE_AUTH" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d "{\"name\": \"$service_name\", \"port\": $port}" || true
|
${PACKMATE_COOKIE_HEADER:+-H "$PACKMATE_COOKIE_HEADER"} \
|
||||||
|
-d "{\"name\": \"$service_name\", \"port\": $port}" )
|
||||||
|
if [ "$status" -ge 200 ] && [ "$status" -lt 300 ]; then
|
||||||
|
echo "Packmate: registered $service_name port $port (status $status)"
|
||||||
|
else
|
||||||
|
# Fallback attempt without trailing slash
|
||||||
|
status2=$(curl -s -k -o /dev/null -w "%{http_code}" -X POST "${PACKMATE_URL}/api/service" \
|
||||||
|
-H "Accept: application/json" \
|
||||||
|
-H "Authorization: Basic $PACKMATE_AUTH" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
${PACKMATE_COOKIE_HEADER:+-H "$PACKMATE_COOKIE_HEADER"} \
|
||||||
|
-d "{\"name\": \"$service_name\", \"port\": $port}" )
|
||||||
|
echo "Packmate: register $service_name port $port -> status $status (fallback $status2)"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user