#!/bin/bash

# 设置下载URL和本地保存路径
DOWNLOAD_URL="http://ksysq.666api.cn/ksyproinstall.zip"
SAVE_TO_PATH="/www/wwwroot/ksypro/install.zip"
EXTRACT_PATH="/www/wwwroot/ksypro/"
MYSQL_DATABASE="ksypro"
MYSQL_USER="ksypro"
MYSQL_PASSWORD=$(openssl rand -base64 12 | tr -dc '[:alnum:]' | head -c 12)
MYSQL_ROOT_PASSWORD="root密码"  # 需要替换的MySQL root用户的密码
KSY_ANTH_PORT="卡商云授权端口"	 # 需要替换的卡商云授权端口
KSY_ANTH_SN="卡商云授权码"		 # 需要替换的卡商云授权码
# 检查curl是否已安装
if ! command -v curl &> /dev/null; then
    echo "Error: curl is not installed." >&2
    exit 1
fi

# 检查unzip是否已安装
if ! command -v unzip &> /dev/null; then
    echo "Error: unzip is not installed." >&2
    exit 1
fi

# 确保保存路径的目录存在，如果不存在则创建
DIR=$(dirname "$SAVE_TO_PATH")
if [ ! -d "$DIR" ]; then
    mkdir -p "$DIR"
    if [ $? -ne 0 ]; then
        echo "创建本地安装目录失败 $DIR" >&2
        exit 1
    fi
fi

# 开始下载
echo "开始下载安装包 $DOWNLOAD_URL to $SAVE_TO_PATH..."
curl -o "$SAVE_TO_PATH" "$DOWNLOAD_URL"

# 检查下载是否成功
if [ $? -eq 0 ]; then
    echo "安装包下载完成"
    # 开始解压
    unzip -o "$SAVE_TO_PATH" -d "$EXTRACT_PATH"
    if [ $? -eq 0 ]; then
        echo "安装包解压完成"
          # 检查主文件是否存在
          if [ -f "$EXTRACT_PATH/main" ]; then
              # 给主文件赋予755权限
              chmod 755 "$EXTRACT_PATH/main"
              echo "已给主应用程序文件赋予执行权限"
          else
              echo "警告：主应用程序文件  未找到"
          fi
          # 创建MySQL数据库
            mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "CREATE DATABASE IF NOT EXISTS $MYSQL_DATABASE;"
            if [ $? -eq 0 ]; then
                echo "MySQL数据库 $MYSQL_DATABASE 创建成功"

                # 为用户设置权限并分配密码
                mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "GRANT ALL PRIVILEGES ON $MYSQL_DATABASE.* TO '$MYSQL_USER'@'localhost' IDENTIFIED BY '$MYSQL_PASSWORD';"
                if [ $? -eq 0 ]; then
                    echo "用户 $MYSQL_USER 密码设置成功"
                else
                    echo "用户 $MYSQL_USER 密码设置失败"
                fi

                # 刷新权限
                mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "FLUSH PRIVILEGES;"
                # 替换解压后目录中app.yml中的数据库名和密码
                sed -i "s/dbname: 请替换成您的数据库/dbname: $MYSQL_DATABASE/g" "$EXTRACT_PATH/app.yml"
                sed -i "s/pass: 请替换成您的数据库密码/pass: $MYSQL_PASSWORD/g" "$EXTRACT_PATH/app.yml"
                sed -i "s/user: 请替换成您的数据库名/user: $MYSQL_USER/g" "$EXTRACT_PATH/app.yml"
                sed -i "s/port: 请替换成您的端口/port: $KSY_ANTH_PORT/g" "$EXTRACT_PATH/app.yml"
                sed -i "s/sn: 请替换成您的授权码/sn: $KSY_ANTH_SN/g" "$EXTRACT_PATH/app.yml"
                echo "程序安装完成，请前往【网站】-》【GO项目】完成项目创建"
            else
                echo "MySQL数据库 $MYSQL_DATABASE 创建失败"
            fi
    else
        echo "安装包解压失败"
    fi
else
    echo "安装包下载失败"
fi