#!/usr/bin/env bash set -euo pipefail PROD_HOST="${PROD_HOST:-player@shineup.me}" TARGET_HOST="${TARGET_HOST:-player@193.8.215.70}" TARGET_DOMAIN="${TARGET_DOMAIN:-t.shineup.me}" REMOTE_BASE="${REMOTE_BASE:-/home/player/SHiNE}" REMOTE_SERVER_DIR="${REMOTE_SERVER_DIR:-$REMOTE_BASE/shine-server}" REMOTE_DATA_DIR="${REMOTE_DATA_DIR:-$REMOTE_SERVER_DIR/data}" REMOTE_LOGS_DIR="${REMOTE_LOGS_DIR:-$REMOTE_SERVER_DIR/logs}" REMOTE_UI_DIR="${REMOTE_UI_DIR:-$REMOTE_BASE/shine-ui}" REMOTE_SERVICE_NAME="${REMOTE_SERVICE_NAME:-shine-server}" LOCAL_JAR="${LOCAL_JAR:-SHiNE-server/build/libs/shine-server.jar}" PROD_DATA_DIR="${PROD_DATA_DIR:-/home/player/SHiNE/shine-server/data}" PROD_APP_PROPS="${PROD_APP_PROPS:-/home/player/SHiNE/shine-server/application.properties}" TMP_DIR="$(mktemp -d)" cleanup() { rm -rf "$TMP_DIR" } trap cleanup EXIT if [[ ! -f "$LOCAL_JAR" ]]; then echo "ERROR: локальный jar не найден: $LOCAL_JAR" >&2 exit 1 fi ssh -o BatchMode=yes -o ConnectTimeout=20 "$PROD_HOST" "echo SSH OK" >/dev/null ssh -o BatchMode=yes -o ConnectTimeout=20 "$TARGET_HOST" "echo SSH OK" >/dev/null ssh "$TARGET_HOST" "sudo -n true" ssh "$TARGET_HOST" "java -version >/dev/null 2>&1" mkdir -p "$TMP_DIR/data" rsync -az --delete "$PROD_HOST:$PROD_DATA_DIR/" "$TMP_DIR/data/" rsync -az "$PROD_HOST:$PROD_APP_PROPS" "$TMP_DIR/application.properties" if grep -q '^server\.ui\.indexPath=' "$TMP_DIR/application.properties"; then perl -0pi -e 's@^server\.ui\.indexPath=.*$@server.ui.indexPath=/home/player/SHiNE/shine-ui/index.html@m' "$TMP_DIR/application.properties" else printf '\nserver.ui.indexPath=/home/player/SHiNE/shine-ui/index.html\n' >>"$TMP_DIR/application.properties" fi if grep -q '^server\.SHiNE\.login=' "$TMP_DIR/application.properties"; then perl -0pi -e 's@^server\.SHiNE\.login=.*$@server.SHiNE.login=tshineupme@m' "$TMP_DIR/application.properties" else printf '\nserver.SHiNE.login=tshineupme\n' >>"$TMP_DIR/application.properties" fi cat >"$TMP_DIR/shine-server.service" <