diff --git a/scripts/update-script.sh b/scripts/update-script.sh index c34bf07..a825294 100644 --- a/scripts/update-script.sh +++ b/scripts/update-script.sh @@ -1,50 +1,56 @@ #!/bin/sh -# URL вашего основного скрипта (залейте на GitHub/свой сервер) -SCRIPT_URL="https://gitea.vchikalkin.dev/admin/keenetic-configs/raw/branch/master/scripts/update-files.sh" -SCRIPT_PATH="/opt/etc/update_files.sh" -TMP_SCRIPT="/opt/tmp/update_files.sh.tmp" +# ====== КОНФИГУРАЦИЯ ====== +# URL исходного скрипта +URL="https://gitea.vchikalkin.dev/admin/keenetic-configs/raw/branch/master/scripts/update-files.sh" +# Локальный путь, куда сохраняем +LOCAL="/opt/update-files.sh" + LOG="/opt/var/log/update_files.log" +TMP_DIR="/opt/tmp" -# Создаем необходимые директории -mkdir -p /opt/tmp /opt/var/log - -# Проверяем существование лог-файла и создаем его если нужно -touch "$LOG" - +mkdir -p "$TMP_DIR" TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') +CHANGED=0 -# Скачиваем свежую версию скрипта -wget -q -O "$TMP_SCRIPT" "$SCRIPT_URL" 2>/dev/null +# Временный файл +TMP_FILE="$TMP_DIR/update-files.tmp" -if [ $? -ne 0 ] || [ ! -s "$TMP_SCRIPT" ]; then - echo "$TIMESTAMP [LAUNCHER] Не удалось скачать скрипт, запускаю локальный" >> "$LOG" - rm -f "$TMP_SCRIPT" -else - # Сравниваем хеши - if [ -f "$SCRIPT_PATH" ]; then - OLD_SUM=$(md5sum "$SCRIPT_PATH" 2>/dev/null | cut -d' ' -f1) - else - OLD_SUM="" - fi - - NEW_SUM=$(md5sum "$TMP_SCRIPT" | cut -d' ' -f1) - - if [ "$OLD_SUM" != "$NEW_SUM" ]; then - # Копируем новый скрипт - cp "$TMP_SCRIPT" "$SCRIPT_PATH" - chmod +x "$SCRIPT_PATH" - echo "$TIMESTAMP [LAUNCHER] Скрипт обновлён" >> "$LOG" - else - echo "$TIMESTAMP [LAUNCHER] Скрипт не изменился" >> "$LOG" - fi - rm -f "$TMP_SCRIPT" +# ====== СКАЧИВАЕМ ====== +wget -q -O "$TMP_FILE" "$URL" 2>/dev/null +if [ $? -ne 0 ] || [ ! -s "$TMP_FILE" ]; then + echo "$TIMESTAMP [ERROR] Не удалось скачать или файл пустой: $URL" >> "$LOG" + rm -f "$TMP_FILE" + exit 1 fi -# Запускаем основной скрипт -if [ -x "$SCRIPT_PATH" ]; then - echo "$TIMESTAMP [LAUNCHER] Запуск основного скрипта" >> "$LOG" - exec "$SCRIPT_PATH" +# ====== СРАВНИВАЕМ ====== +NEED_UPDATE=0 +if [ ! -f "$LOCAL" ]; then + NEED_UPDATE=1 else - echo "$TIMESTAMP [LAUNCHER] Скрипт не найден!" >> "$LOG" + OLD_SUM=$(md5sum "$LOCAL" | cut -d' ' -f1) + NEW_SUM=$(md5sum "$TMP_FILE" | cut -d' ' -f1) + [ "$OLD_SUM" != "$NEW_SUM" ] && NEED_UPDATE=1 fi + +# ====== ОБНОВЛЯЕМ ====== +if [ "$NEED_UPDATE" -eq 1 ]; then + mkdir -p "$(dirname "$LOCAL")" + cp "$TMP_FILE" "$LOCAL" + chmod +x "$LOCAL" + CHANGED=1 + echo "$TIMESTAMP [UPDATED] $LOCAL <- $URL" >> "$LOG" +else + echo "$TIMESTAMP [OK] Изменений нет" >> "$LOG" +fi + +rm -f "$TMP_FILE" + +# ====== Ротация лога ====== +if [ -f "$LOG" ]; then + LINES=$(wc -l < "$LOG") + [ "$LINES" -gt 200 ] && tail -100 "$LOG" > "$LOG.tmp" && mv "$LOG.tmp" "$LOG" +fi + +exit 0 \ No newline at end of file