# --- 基础信息 / Basic Information ---
local app_id="clouddrive2"
local app_name="clouddrive2" 
local app_text="一个全方位的云存储管理平台，旨在无缝集成多个云存储服务"
local app_url="https://www.clouddrive2.com"
local docker_name="CloudDrive2"
local docker_port="19798"
local app_size="1"
# --- 核心逻辑 / Core Logic ---
ensure_shared_mount() {
    echo "[信息] 检查 Docker 挂载传播模式..."

    # 判断 Docker 是否由 systemd 管理
    if command -v systemctl >/dev/null 2>&1 && systemctl is-active docker >/dev/null 2>&1; then
        echo "[信息] Docker 以 systemd 服务运行"

        mkdir -p /etc/systemd/system/docker.service.d

        # 如果配置文件不存在，则创建并设置 MountFlags=shared
        if [ ! -f /etc/systemd/system/docker.service.d/clear_mount_propagation_flags.conf ]; then
            cat <<EOF >/etc/systemd/system/docker.service.d/clear_mount_propagation_flags.conf
[Service]
MountFlags=shared
EOF
            echo "[信息] 已创建 MountFlags=shared 配置文件"
            
            # --- 必须步骤：让 systemd 重新加载配置 ---
            systemctl daemon-reload
            echo "[信息] systemd 配置已重新加载"
            
            # --- 必须步骤：重启 Docker 服务让新配置生效 ---
            systemctl restart docker.service
            echo "[信息] Docker 已重启，MountFlags=shared 已生效"
        else
            echo "[信息] MountFlags 已配置，跳过"
        fi

    else
        # Docker 非 systemd 管理，提示用户手动处理
        echo "[信息] Docker 不是由 systemd 管理"
        # 自动生成宿主机挂载路径
        cloudnas_mount=$(df -P /home/CloudNAS | tail -1 | awk '{print $6}')
        
        echo "[警告] 如果需要共享挂载，请手动执行以下命令："
        echo "sudo mount --make-shared $cloudnas_mount"
        echo "此操作在系统重启后不会保留，请手动执行以上命令，具体请查看官网帮助教程"
    fi
}

docker_app_install() {
    # 安装前：确保 Docker 共享挂载已就绪
    ensure_shared_mount

    # 必须在 /home/docker/ 下创建应用目录 
    mkdir -p /home/docker/clouddrive2 && cd /home/docker/clouddrive2

    # 下载并配置 compose 文件 / Download compose file
    # 务必使用 gh_proxy 变量 / Use gh_proxy for China access
    curl -L -o compose.yml "${gh_proxy}raw.githubusercontent.com/hellokun985/docker-app/refs/heads/main/CloudDrive2/CloudDrive2.yml"
    # 端口处理（使用变量以便用户自定义）
    sed -i "s/19798:19798/${docker_port}:19798/g" compose.yml
    # 启动容器 / Start container
    docker compose up -d
    echo "安装完成 / Install Complete"

    # --- 内部函数立即调用 ---
    check_docker_app_ip

}
docker_app_update() {
    cd /home/docker/clouddrive2
    docker compose pull
    docker compose up -d
    echo "更新完成 / Update Complete"
}
docker_app_uninstall() {
    cd /home/docker/clouddrive2
    # 停止并删除镜像 / Stop and remove images
    docker compose down --rmi all
    # 彻底物理删除目录 / Clean up directory
    rm -rf /home/docker/clouddrive2 /home/CloudNAS
    echo "卸载完成 / Uninstall Complete"
}
# --- 注册 (必须包含) / Registration (Mandatory) ---
docker_app_plus
