diff --git a/ssh-monitor b/ssh-monitor index 07d229c..d2540ab 100644 --- a/ssh-monitor +++ b/ssh-monitor @@ -7,7 +7,7 @@ IFS=$'\n\t' # ============================================ CONFIG_FILE="/etc/ssh-monitor.conf" -SSH_MONITOR_VERSION="2.1.0-SAC" +SSH_MONITOR_VERSION="2.1.1-SAC" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" if [ -f "$SCRIPT_DIR/sac-client.sh" ]; then diff --git a/update_ssh_monitor.sh b/update_ssh_monitor.sh index 4b4faee..9cd7af5 100755 --- a/update_ssh_monitor.sh +++ b/update_ssh_monitor.sh @@ -3,7 +3,8 @@ # === Конфигурация скрипта === UPDATE_DIR="/opt/scripts/update" SCRIPT_NAME="ssh-monitor" -REPO_URL="https://github.com/PTah/ssh-monitor.git" +REPO_URL="${REPO_URL:-https://git.kalinamall.ru/PapaTramp/ssh-monitor.git}" +GIT_BRANCH="${GIT_BRANCH:-main}" LOCAL_SCRIPT_PATH="/usr/local/bin/ssh-monitor" LOG_FILE="/var/log/update_script.log" @@ -34,7 +35,7 @@ WATCHDOG_SERVICE_PATH="/etc/systemd/system/ssh-monitor-watchdog.service" WATCHDOG_TIMER_PATH="/etc/systemd/system/ssh-monitor-watchdog.timer" # === Список переменных, объявленных в скрипте (для логирования при DEBUG=1) === -SCRIPT_VARS=("UPDATE_DIR" "SCRIPT_NAME" "REPO_URL" "LOCAL_SCRIPT_PATH" "LOG_FILE" "DEBUG" "REMOTE_SCRIPT_PATH" "LOCAL_CHECKSUM" "REMOTE_CHECKSUM") +SCRIPT_VARS=("UPDATE_DIR" "SCRIPT_NAME" "REPO_URL" "GIT_BRANCH" "LOCAL_SCRIPT_PATH" "LOG_FILE" "DEBUG" "REMOTE_SCRIPT_PATH" "LOCAL_CHECKSUM" "REMOTE_CHECKSUM") # === Функции === @@ -339,27 +340,17 @@ get_git_short_rev() { git -C "$repo_dir" rev-parse --short HEAD 2>/dev/null || printf 'unknown' } -# Remote с URL закрытого зеркала (не GitHub), если настроен. +# Remote для fetch/pull: всегда kalinamall с URL из REPO_URL (SAC передаёт REPO_URL при SSH-обновлении). resolve_git_remote_name() { - local repo="$1" name url - if git -C "$repo" remote get-url kalinamall &>/dev/null; then - printf '%s' kalinamall - return 0 + local repo="$1" + local name=kalinamall + if git -C "$repo" remote get-url "$name" &>/dev/null; then + git -C "$repo" remote set-url "$name" "$REPO_URL" >> "$LOG_FILE" 2>&1 + else + git -C "$repo" remote add "$name" "$REPO_URL" >> "$LOG_FILE" 2>&1 \ + || git -C "$repo" remote set-url "$name" "$REPO_URL" >> "$LOG_FILE" 2>&1 fi - while read -r name; do - [ -n "$name" ] || continue - url=$(git -C "$repo" remote get-url "$name" 2>/dev/null || true) - case "$url" in - *git.kalinamall.ru*) printf '%s' "$name"; return 0 ;; - esac - done < <(git -C "$repo" remote 2>/dev/null) - if git -C "$repo" remote get-url origin &>/dev/null; then - printf '%s' origin - return 0 - fi - git -C "$repo" remote add kalinamall "$REPO_URL" >> "$LOG_FILE" 2>&1 \ - || git -C "$repo" remote set-url kalinamall "$REPO_URL" >> "$LOG_FILE" 2>&1 - printf '%s' kalinamall + printf '%s' "$name" } # fetch + ff-only pull; при расхождении истории (force-push) — reset --hard. @@ -1068,7 +1059,7 @@ update_script() { debug_step "Проверяем наличие репозитория и обновляем/клонируем" if [ -d "$SCRIPT_NAME" ]; then - if sync_git_repository "$git_repo" main; then + if sync_git_repository "$git_repo" "$GIT_BRANCH"; then pull_ok=1 else pull_ok=0 @@ -1077,7 +1068,7 @@ update_script() { else log_action "git: clone $REPO_URL → $UPDATE_DIR/$SCRIPT_NAME" debug_step "Выполняем git clone $REPO_URL $SCRIPT_NAME" - if ! git clone "$REPO_URL" "$SCRIPT_NAME" >> "$LOG_FILE" 2>&1; then + if ! git clone -b "$GIT_BRANCH" "$REPO_URL" "$SCRIPT_NAME" >> "$LOG_FILE" 2>&1; then SUMMARY_GIT="clone FAILED" SUMMARY_SCRIPT="ошибка" SUMMARY_SCRIPT_REASON="git clone failed" diff --git a/version.txt b/version.txt index 68bb1b9..ba0e30e 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.1.0-SAC +2.1.1-SAC