#!/bin/sh
# Chạy sau khi DSM đã đặt gói mới vào chỗ.
#
# Trả lại dữ liệu kích hoạt nếu DSM dọn mất, rồi đổi tên cấu hình cũ (frpc.*)
# sang tên mới (rocketcore.*). Không gọi lại API kích hoạt: máy này đã có giấy
# phép rồi, gọi lại chỉ tốn lượt và có thể bị từ chối.

VAR="/var/packages/rocketzero/var"
TARGET="/var/packages/rocketzero/target"
BAK="/tmp/rocketzero-var.tgz"
LOG="$VAR/install.log"

mkdir -p "$VAR"

if [ ! -f "$VAR/rocketcore.toml" ] && [ ! -f "$VAR/frpc.toml" ] && [ -f "$BAK" ]; then
    tar -C "$VAR" -xzf "$BAK" 2>/dev/null
    echo "--- postupgrade $(date): khôi phục var ---" >>"$LOG"
fi

# Đổi tên theo thương hiệu. Đường dẫn log nằm trong chính file cấu hình nên
# phải sửa luôn, không thì frp vẫn ghi vào tên cũ.
if [ -f "$VAR/frpc.toml" ] && [ ! -f "$VAR/rocketcore.toml" ]; then
    sed 's#/frpc\.log#/rocketcore.log#' "$VAR/frpc.toml" >"$VAR/rocketcore.toml" &&
        chmod 600 "$VAR/rocketcore.toml" && rm -f "$VAR/frpc.toml"
    [ -f "$VAR/frpc.log" ] && mv "$VAR/frpc.log" "$VAR/rocketcore.log"
    rm -f "$VAR/frpc.pid"
    echo "--- postupgrade $(date): đổi tên cấu hình ---" >>"$LOG"
fi

# Dọn tàn dư tên cũ khi đã có cấu hình tên mới.
if [ -f "$VAR/rocketcore.toml" ]; then
    rm -f "$VAR/frpc.toml" "$VAR/frpc.log" "$VAR/frpc.out" "$VAR/frpc.pid"
fi

# Tự đăng ký kho cập nhật (add_repo.sh) đã bỏ hẳn — xem chú thích trong postinst:
# gói chạy run-as:package, không ghi được feeds root-owned. Tự cập nhật chỉ có
# khi khách tự thêm nguồn pkg.nashub.vn trong Package Center.

# Ghi phiên bản mới vào cấu hình, sau khi mọi bước khôi phục/đổi tên đã xong.
#
# postinst cũng làm việc này, nhưng nó chạy TRƯỚC — mà cấu hình lúc đó có thể
# chưa về chỗ (khôi phục từ /tmp và đổi tên frpc.toml đều diễn ra ở trên). Chốt
# lại ở đây là chốt cuối cùng của một lần nâng cấp, nên con số ghi ra chắc chắn
# nằm trong đúng file mà rocketcore sắp đọc. Ghi lại lần nữa cũng vô hại: hàm
# thay dòng cũ chứ không cộng dồn.
if [ -r "$TARGET/version.sh" ]; then
    . "$TARGET/version.sh"
    VER=$(tl_pkg_ver)
    tl_cfg_ensure_retry "$VAR/rocketcore.toml" || true
    if [ -n "$VER" ] && tl_cfg_set_ver "$VAR/rocketcore.toml" "$VER"; then
        echo "--- postupgrade $(date): ver=$VER ---" >>"$LOG"
    fi

    # Dọn tàn dư WebDAV (tính năng đã bỏ ở 1.5.0).
    #
    # postinst cũng dọn, nhưng chốt lại ở đây vì đây là bước CUỐI của một lần nâng
    # cấp: lúc này cấu hình đã chắc chắn về đúng chỗ (khôi phục từ /tmp và đổi tên
    # frpc.toml đều diễn ra ở trên), nên khối proxy có bị cắt là cắt trong đúng
    # file mà rocketcore sắp đọc. Không cắt thì frpc vẫn đăng ký proxy "dav", máy
    # chủ vẫn thấy nó, và tính năng đã bỏ vẫn sống trên mọi máy đã bán.
    #
    # Hàm trả 1 khi không có gì để cắt, nên máy mới cài đi qua đây im lặng.
    if tl_cfg_drop_proxy "$VAR/rocketcore.toml" dav; then
        echo "--- postupgrade $(date): đã gỡ khối proxy dav ---" >>"$LOG"
    fi
    rm -f "$VAR/dav.txt" "$VAR/dav_url.txt" 2>/dev/null
fi

rm -f "$BAK"
# Dấu nâng cấp: postinst đã dọn rồi, xoá lại cho chắc — sót dấu này thì lần gỡ
# thật sau đó sẽ không trả skip_ip_checking về trạng thái cũ.
rm -f /tmp/rocketzero-upgrading 2>/dev/null
exit 0
