#!/bin/bash

# 更新系统包信息
echo "正在更新包信息..."
sudo apt-get update

# 如果需要，可以升级所有已安装的包
echo "正在升级所有包，这可能需要一些时间..."
sudo apt-get upgrade -y

# 安装必要的库
echo "正在安装必要的库..."
sudo apt-get install -y libstdc++6 lib32stdc++ lib32stdc++6 screen rsync

if [ $? -ne 0 ]; then
    echo "部分软件包安装失败，将跳过有问题的包并继续执行..."
    # 这里可以添加其他逻辑，比如尝试重新安装或记录日志等
fi

# 添加用户 csgo
echo "正在添加用户 'csgo'..."
sudo adduser csgo --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
read -sp "请输入 'csgo' 用户的密码: " password
echo "csgo:$password" | sudo chpasswd

# 切换到 csgo 用户并执行后续操作
sudo -i -u csgo bash << 'EOF'

# 下载并解压 SteamCMD
echo "正在下载并解压 SteamCMD..."
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf - -C ~

# 检查下载是否成功
if [ ! -f ~/steamcmd.sh ]; then
    echo "SteamCMD 下载或解压失败!"
    exit 1
fi

# 启动 steamcmd.sh 并执行相关命令
echo "启动 SteamCMD 并执行命令..."
~/steamcmd.sh +login anonymous +force_install_dir ~/server1 +app_update 740 validate +quit

# 下载并解压 sm.tar.gz 到临时目录
echo "正在下载 sm.tar.gz 并解压到临时目录..."
mkdir ~/tmp
curl -sqL "https://cos.sicha.ltd/assets/sm.tar.gz" | tar zxvf - -C ~/tmp/

# 使用rsync移动文件，保留原有文件夹结构，只覆盖文件
echo "正在将 addons 和 cfg 文件夹合并到 ~/server1/csgo 目录..."
rsync -av ~/tmp/addons/ ~/server1/csgo/addons/
rsync -av ~/tmp/cfg/ ~/server1/csgo/cfg/
rm -rf ~/tmp/

# 添加 Steam 32 位 ID 到 admins_simple.ini
echo "请输入有效的 Steam 32 位 ID (格式: STEAM_X:X:XXXXXX):"
while true; do
    read -p "Steam 32 位 ID: " steamid
    if [[ "$steamid" =~ ^STEAM_[0-5]:[01]:[0-9]{1,10}$ ]]; then
        echo "\"$steamid\" \"z\"" >> ~/server1/csgo/addons/sourcemod/configs/admins_simple.ini
        break
    else
        echo "无效的 Steam ID，请重新输入。"
    fi
done

# 更新服务器配置
echo "请输入服务器名称 (hostname):"
while true; do
    read server_hostname
    if [ -z "$server_hostname" ]; then
        echo "服务器名称不能为空，请重新输入："
    else
        sed -i "s/hostname \"\"/hostname \"$server_hostname\"/" ~/server1/csgo/cfg/server.cfg
        break
    fi
done

echo "是否设置服务器密码? (y/n): "
read set_password
if [[ "$set_password" == "y" ]]; then
    read -sp "请输入服务器密码: " server_password
    echo
    sed -i "s/sv_password \"\"/sv_password \"$server_password\"/" ~/server1/csgo/cfg/server.cfg
else
    sed -i "s/sv_password \".*\"/sv_password \"\"/" ~/server1/csgo/cfg/server.cfg
fi

# 获取 Steam 令牌 GSLT
read -p "请输入您的 Steam GSLT: " gslt

# 创建启动脚本
echo "正在创建启动脚本..."
start_script="~/server1/start"
cat > $start_script << EOL
#!/bin/bash
./srcds_run -game csgo -ip 0.0.0.0 -nogui +map de_mirage +game_type 0 +game_mode 1 -tickrate 64 -console -usercon -nobots -insecure -threads 16 -swapcore +mapgroup mg_active -maxplayers_override 30 +port 27015 +sv_setsteamaccount $gslt
EOL
chmod +x $start_script

echo "脚本执行完毕。"

EOF

# 删除脚本自身
rm -- "$0"
