#!/bin/bash

red_echo() {
    echo -e "\033[41m$1\033[0m"
}

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
}

red_echo "正在配置 # $1 内镜系统工控机 ..."

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

red_echo "step 0: 创建相关文件夹"

mkdir /var/opm/

mkdir /var/opm/bin/
mkdir /var/opm/bin/autostart/
mkdir /var/opm/bin/tcpsvr/
mkdir /var/opm/bin/tcpsvr/runtime/
chmod -R 777 /var/opm/bin/tcpsvr/runtime
mkdir /var/opm/bin/tcpsvr/runtime/tcpsvr_logs
mkdir /var/opm/bin/websvr/
mkdir /var/opm/bin/websvr/runtime/
chmod -R 777 /var/opm/bin/websvr/runtime
mkdir /var/opm/bin/dashboard/
mkdir /var/opm/bin/dashboard/dashboard_svr
mkdir /var/opm/bin/dashboard/dashboard_client
mkdir /var/opm/bin/scripts/

mkdir /var/opm/env/
mkdir /var/opm/logs/
mkdir /var/opm/bak/


red_echo "step 1: 修改apt源，并且update"

# 备份原有的软件源列表文件
cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 清空原有的软件源列表文件
> /etc/apt/sources.list

# 根据Ubuntu版本添加对应的清华源
version=$(lsb_release -sc)
case $version in
    "xenial") # Ubuntu 16.04
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse" >> /etc/apt/sources.list
        ;;
    "bionic") # Ubuntu 18.04
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
        ;;
    "focal") # Ubuntu 20.04
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list
        ;;
    "jammy") # Ubuntu 22.04
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse" >> /etc/apt/sources.list
        ;;
    "lunar") # Ubuntu 24.04
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ lunar main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ lunar-updates main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ lunar-backports main restricted universe multiverse" >> /etc/apt/sources.list
        echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ lunar-security main restricted universe multiverse" >> /etc/apt/sources.list
        ;;
    *)
        echo "Unsupported Ubuntu version: $version"
        exit 1
        ;;
esac
# 增加php软件源

# 设置系统语言编码
#locale-gen en_US.UTF-8
#update-locale LANG=en_US.UTF-8

# debug 模式，直接添加，运行模式，提示错误
# debug = "false"  # 设置 debug 变量，可以根据需要修改为 "false" 或 "true"
# [ "$debug" == "true" ]
if false ; then
    add-apt-repository --yes ppa:ondrej/php > /dev/null 2>&1
    add-apt-repository --yes ppa:ondrej/apache2 > /dev/null 2>&1
    add-apt-repository --yes ppa:ondrej/nginx > /dev/null 2>&1
else
    add-apt-repository ppa:ondrej/php
    add-apt-repository ppa:ondrej/apache2
    add-apt-repository ppa:ondrej/nginx
fi

# 更新软件源
apt update -y

red_echo "step 2: 安装 make, vim, openssh-server, unzip, nginx, mysql-server8.0, php8.2"

big_pkg_install make
big_pkg_install vim
big_pkg_install git
big_pkg_install openssh-server
big_pkg_install unzip
big_pkg_install net-tools
big_pkg_install nginx
big_pkg_install mysql-server-8.0
big_pkg_install software-properties-common

big_pkg_install php8.2
big_pkg_install php8.2-opcache php-common php-json
big_pkg_install php8.2-cli php8.2-fpm php8.2-mysql php8.2-xml php8.2-mbstring php8.2-curl php8.2-zip php8.2-intl php8.2-gd 


red_echo "step 3: 安装 ekho-9.0"
red_echo "step 3.1: 安装 ekho-9.0"
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"
wget -O ekho-9.0.zip $url_host"ECTMS/5-ekho-9.0.zip"
unzip ekho-9.0.zip
cd /var/opm/env/ekho-9.0/
export DISPLAY=:0
big_pkg_install autoconf libtool
big_pkg_install libsndfile1-dev libespeak-ng-dev libpulse-dev texinfo libltdl-dev libmpg123-dev libsonic-dev libutfcpp-dev
big_pkg_install g++
cd /var/opm/env/ekho-9.0/
./autogen.sh
./configure 
make CXXFLAGS=-O0
make install
./install.pl Mandarin

red_echo "step 3.2: 设置root可以调用ekho"

# 编辑 /root/.profile 文件，添加启动 PulseAudio 并记录日志到系统日志的命令
echo "pulseaudio --system -D --log-target=syslog" >> /root/.profile
# 将 root 用户添加到 pulse 和 pulse-access 用户组
gpasswd -a root pulse
gpasswd -a root pulse-access
# 提醒用户需要重新登录或重启以使更改生效
echo "修改ekho root可执行"

red_echo "step 3.3: 验证 ekho-9.0"

sudo -u opm ./ekho opm123
sudo -u opm ./ekho opm自信人生二百年
sudo ./ekho root123
sudo ./ekho root会当水击三千里

red_echo "step 4: 设置普通用户sudo -i不用输入密码"

# 定义要添加的内容，默认是opm用户，这个以后也要改为opm
CONTENT="opm ALL=(ALL:ALL) NOPASSWD: ALL"
# 将 sudoers 文件改为可读写
chmod u+w /etc/sudoers
# 使用 sed 在倒数第二行插入内容，必须放到最后
sed -i '$i\'$'\n'"$CONTENT"$'\n' /etc/sudoers
# 将 sudoers 文件改回只读
chmod u-w /etc/sudoers

echo "sudoers 无密码切换root 修改完成"


red_echo "step 5：mysql 配置"

red_echo "step 5.1：修改密码"
# 修改 root 用户密码
NEW_ROOT_PASSWORD="bjzgy113#" 
red_echo "修改 MySQL root 用户密码为: $NEW_ROOT_PASSWORD"

mysql -u root -pbjzgy113# <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$NEW_ROOT_PASSWORD';
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '$NEW_ROOT_PASSWORD';
CREATE USER 'root'@'%' IDENTIFIED BY '$NEW_ROOT_PASSWORD';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
flush privileges;
EOF

red_echo "step 5.2：配置 MySQL 允许远程访问"
# 允许任何 IP 访问 MySQL
# 修改 bind-address 为 0.0.0.0
MYSQL_CONFIG_FILE="/etc/mysql/mysql.conf.d/mysqld.cnf"
if [ -f "$MYSQL_CONFIG_FILE" ]; then
    sudo sed -i 's/^bind-address.*/bind-address = 0.0.0.0/' $MYSQL_CONFIG_FILE
else
    red_echo "MySQL 配置文件不存在: $MYSQL_CONFIG_FILE"
    exit 1
fi

# 重启 MySQL 服务
sudo systemctl restart mysql

red_echo "step 5.2：开放防火墙，支持mysql端口"
cd /srv/
# 开放防火墙端口
sudo ufw allow mysql
echo "防火墙已开放 MySQL 端口."





red_echo "step 7: 关闭自动更新"

# 设置 DEBIAN_FRONTEND 环境变量为 noninteractive
export DEBIAN_FRONTEND=noninteractive
# 使用 debconf-set-selections 设置 unattended-upgrades 的配置
echo "unattended-upgrades unattended-upgrades/enable_auto_updates boolean false" | debconf-set-selections
# 重新配置 unattended-upgrades 包
sudo dpkg-reconfigure -f noninteractive unattended-upgrades

sudo systemctl stop unattended-upgrades.service
sudo systemctl disable unattended-upgrades.service

sudo systemctl stop apt-daily.service
sudo systemctl stop apt-daily.timer
sudo systemctl stop apt-daily-upgrade.service
sudo systemctl stop apt-daily-upgrade.timer
sudo systemctl disable apt-daily.service
sudo systemctl disable apt-daily.timer
sudo systemctl disable apt-daily-upgrade.service
sudo systemctl disable apt-daily-upgrade.timer