#!/bin/bash

red_echo() {
    echo -e "\033[41m$1\033[0m"
}
download_file() {
    local file_path="$1"
    local url="$2"

    if [ ! -f "$file_path" ]; then
    echo "$file_path 正在下载。"
        wget -O "$file_path" "$url"
    else
        echo "$file_path 已存在，跳过下载。"
    fi
}
big_pkg_install() {
    local packages=("$@")  # 将传入的参数转换为数组
    local missing_packages=()  # 用于存储未安装的软件包

    # 检查每个软件包是否已安装
    for package in "${packages[@]}"; do
        if ! dpkg -l | grep -qw "$package"; then
            missing_packages+=("$package")  # 如果未安装，添加到未安装列表
        fi
    done

    # 如果有未安装的软件包，一次性安装它们
    if [ ${#missing_packages[@]} -ne 0 ]; then
        echo "正在安装缺失的软件包: ${missing_packages[*]}"
        apt -y install "${missing_packages[@]}"
    else
        echo "所有软件包均已安装."
    fi
}

# 检查是否以 root 权限运行
if [ "$(id -u)" != "0" ]; then
   echo "此脚本需要 root 权限运行。"
   exit 1
fi

red_echo "step 1: 下载程序及配置文件"
cd /var/opm/env/
# 调试信息
echo "测试 ping to 192.168.1.23..."
 
if ping -c 1 -W 1 192.168.1.23 > /dev/null 2>&1; then
    echo "Ping 成功, 是 本地 host."
    url_host="http://192.168.1.23:7802/"
else
    echo "Ping 失败, using 远程 URL."
    url_host="http://deploy.dev.opmonitor.com/"
fi
 
echo "当前使用 URL Host: $url_host"

# 刷卡程序部分
download_file "ectms_tcpsvr.env" "$url_host""ECTMS/ectms_tcpsvr.env"
download_file "/var/opm/env/ectms_tcpsvr.tar.gz" "$url_host""ECTMS/ectms_tcpsvr.tar.gz"
download_file "/var/opm/env/opm_ectms.0.sql" "$url_host""ECTMS/opm_ectms.0.sql"
download_file "webman_admin.0.sql" "$url_host""ECTMS/webman_amdin.0.sql"

# 网页程序部分
download_file "/var/opm/env/ectms_websvr.tar.gz" "$url_host""ECTMS/ectms_websvr.tar.gz"
download_file "ectms_websvr.env" "$url_host""ECTMS/ectms_websvr.env"

# 大屏程序部分
download_file "/var/opm/env/dashboard_client.zip" "$url_host""ECTMS/dashboard_client.zip"
download_file "/var/opm/env/ectms_dashboardsvr.tar.gz" "$url_host""ECTMS/ectms_dashboardsvr.tar.gz"
download_file "/var/opm/env/dashboard_svr.0.sql" "$url_host""ECTMS/dashboard_svr.0.sql"
download_file "myconfig.ini" "$url_host""ECTMS/myconfig.ini"

# 开机自启动部分
download_file "/var/opm/env/ectms_autostart.zip" "$url_host""ECTMS/ectms_autostart.zip"



red_echo "step 2: 导入数据库"
# 数据库用户名
DB_USER="root"
# 数据库密码（请根据实际情况修改）
DB_PASSWORD="bjzgy113#"
# 数据库名称
DB_NAME="opm_ectms"
# SQL 文件路径
SQL_FILE="/var/opm/env/opm_ectms.0.sql"

# 检查 SQL 文件是否存在
if [ ! -f "$SQL_FILE" ]; then
    echo "错误：SQL 文件 $SQL_FILE 不存在。"
    exit 1
fi

# 创建数据库
echo "正在创建数据库 $DB_NAME..."
mysql -u$DB_USER -p$DB_PASSWORD -e "CREATE DATABASE IF NOT EXISTS $DB_NAME;"

if [ $? -ne 0 ]; then
    echo "错误：无法创建数据库 $DB_NAME。"
    exit 1
fi

# 导入 SQL 文件
echo "正在导入 SQL 文件到数据库 $DB_NAME..."
echo "mysql -u$DB_USER -p$DB_PASSWORD $DB_NAME < $SQL_FILE"
mysql -u$DB_USER -p$DB_PASSWORD $DB_NAME < $SQL_FILE

if [ $? -ne 0 ]; then
    echo "错误：导入 SQL 文件失败。"
    exit 1
fi

echo "数据库 $DB_NAME 已成功创建并导入数据。"

# 数据库名称
DB_NAME="dashboard_svr"
# SQL 文件路径
SQL_FILE="/var/opm/env/dashboard_svr.0.sql"

# 检查 SQL 文件是否存在
if [ ! -f "$SQL_FILE" ]; then
    echo "错误：SQL 文件 $SQL_FILE 不存在。"
    exit 1
fi

# 创建数据库
echo "正在创建数据库 $DB_NAME..."
mysql -u$DB_USER -p$DB_PASSWORD -e "CREATE DATABASE IF NOT EXISTS $DB_NAME;"

if [ $? -ne 0 ]; then
    echo "错误：无法创建数据库 $DB_NAME。"
    exit 1
fi

# 导入 SQL 文件
echo "正在导入 SQL 文件到数据库 $DB_NAME..."
mysql -u$DB_USER -p$DB_PASSWORD $DB_NAME < $SQL_FILE

if [ $? -ne 0 ]; then
    echo "错误：导入 SQL 文件失败。"
    exit 1
fi

echo "数据库 $DB_NAME 已成功创建并导入数据。"


red_echo "step 3: 部署tcpsvr程序"
tar -zxvf /var/opm/env/ectms_tcpsvr.tar.gz -C /var/opm/bin/tcpsvr/
chmod +x /var/opm/bin/tcpsvr/ectms_tcpsvr
cp -f /var/opm/env/ectms_tcpsvr.env /var/opm/bin/tcpsvr/.env
cd /var/opm/bin/tcpsvr
./ectms_tcpsvr start -d
echo "ectms-tcpsvr程序已启动。"


red_echo "step 4: 部署webman程序"
tar -zxvf /var/opm/env/ectms_websvr.tar.gz -C /var/opm/bin/websvr/
chmod +x /var/opm/bin/websvr/opm_ectms
cp -f /var/opm/env/ectms_websvr.env /var/opm/bin/websvr/.env
cd /var/opm/bin/websvr
./opm_ectms start -d
echo "ectms-websvr程序已启动。"


red_echo "step 5: 部署大屏程序程序"
red_echo "step 5.1: 部署大屏服务端程序"
tar -zxvf /var/opm/env/ectms_dashboardsvr.tar.gz -C /var/opm/bin/dashboard/dashboard_svr
chmod +x /var/opm/bin/dashboard/dashboard_svr/ectms_dashboardsvr
cp -f /var/opm/env/myconfig.ini /var/opm/bin/dashboard/dashboard_svr/myconfig.ini
cd /var/opm/bin/dashboard/dashboard_svr
./ectms_dashboardsvr start -d
echo "ectms-dashboardsvr程序已启动。"

red_echo "step 5.2: 部署大屏客户端程序"
unzip -o /var/opm/env/dashboard_client.zip -d /var/opm/bin/dashboard/
sudo dpkg -i /var/opm/bin/dashboard/dashboard_client/monitor_1.0.0_amd64.deb
# 复制配置文件到用户根目录
cp -f /var/opm/bin/dashboard/dashboard_client/myconfig.js /home/opm/

#  进入统一服务目录建立符号链接 用于自启动时的程序路径
cd /var/opm/bin/dashboard
sudo ln -s /opt/monitor/monitor dashboard

### ### ###
red_echo "step 6: 设置开机自启动"
red_echo "step 8.1: 下载自启动脚本，解压，复制到对应位置"
unzip /var/opm/env/ectms_autostart.zip -d /var/opm/bin/autostart/

cd /var/opm/bin/autostart/
mv /var/opm/bin/autostart/ectms_autostart/* /var/opm/bin/autostart/
rm -rf /var/opm/bin/autostart/ectms_autostart

sudo cp -f 内镜大屏.desktop /home/opm/桌面/
sudo cp -f 内镜刷卡.desktop /home/opm/桌面/
sudo cp -f 内镜系统.desktop /home/opm/桌面/
sudo cp -f rc.local /etc/
sudo chmod +x /etc/rc.local

red_echo "step 8.2: 修改桌面快捷方式、sh文件权限"
# 修改桌面快捷方式权限
cd /var/opm/bin/autostart/
chmod +x *.sh
cd /home/opm/桌面/
sudo chown opm:opm *.desktop
chmod 664 *.desktop
chmod u+x *.desktop
chmod g+x *.desktop


red_echo "step 8.3: 创建rc-local systemd 服务"
# 创建 systemd 服务文件
cat <<EOF > /etc/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target
EOF

# 重新加载 systemd 配置以识别新服务
systemctl daemon-reload

# 启用并启动 rc-local 服务
systemctl enable rc-local
systemctl start rc-local

echo "rc.local 已设置并启动。"

red_echo "step 8.4: 设置大屏程序开机自启动"
# 定义要启动的程序或脚本的名称
APP_NAME="ECTMS"
# 定义程序或脚本的可执行文件路径
APP_EXEC="/opt/monitor/monitor"

mkdir /home/opm/.config/autostart/
cd /home/opm/.config/autostart/


# 创建一个.desktop文件
cat <<EOF > "/home/opm/.config/autostart/$APP_NAME.desktop"
[Desktop Entry]
Type=Application
Exec=$APP_EXEC
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en]=$APP_NAME
Comment[en]=
EOF

# 使.desktop文件可执行
chmod +x "/home/opm/.config/autostart/$APP_NAME.desktop"
chown opm:opm "/home/opm/.config/autostart/"
chown opm:opm "/home/opm/.config/autostart/$APP_NAME.desktop"

echo "$APP_NAME 大屏软件 开机自启动设置完成。"






red_echo 'step x: 最后一步，查看安装情况 ssh status / php 版本'