#!/bin/bash
############################################################
# 本脚本用于Rocky8.6、Ubuntu 22.04/24.04配置阿里云仓库      #
# 包括BaseOS AppStream extras（仅RHEL系）                   #
############################################################

# Ubuntu通用函数
function_Ubuntu_Common() {
  local CODENAME="$1"
  local BACKUP_FILE="/etc/apt/sources.list.bak"

  # 备份原有源列表
  if [ -f /etc/apt/sources.list ]; then
    mv /etc/apt/sources.list "$BACKUP_FILE"
    echo "已备份原配置到 $BACKUP_FILE"
  fi

  # 写入阿里云镜像源
  cat > /etc/apt/sources.list << EOF
deb https://mirrors.aliyun.com/ubuntu/ $CODENAME main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ $CODENAME main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ $CODENAME-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ $CODENAME-security main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ $CODENAME-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ $CODENAME-updates main restricted universe multiverse

# deb https://mirrors.aliyun.com/ubuntu/ $CODENAME-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ $CODENAME-proposed main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ $CODENAME-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ $CODENAME-backports main restricted universe multiverse
EOF

  # 更新软件源
  apt update || { echo "源仓库配置失败"; exit 1; }
  echo "✅ Ubuntu源仓库配置成功"
}

# Ubuntu 22.04专属函数
function_Ubuntu_Jammy() {
  function_Ubuntu_Common "jammy"
}

# Ubuntu 24.04专属函数
function_Ubuntu_Noble() {
  function_Ubuntu_Common "noble"
}

# Rocky/CentOS函数
function_RockyCentOS_yum() {
  local SRC_DIR="/etc/yum.repos.d/"
  local BACKUP_DIR="$SRC_DIR/backup"

  # 创建备份目录并备份repo文件
  mkdir -p "$BACKUP_DIR"
  mv -f "$SRC_DIR"/*.repo "$BACKUP_DIR/" 2>/dev/null

  # 写入阿里云仓库配置
  cat > "$SRC_DIR/aliyun.repo" << EOF
[BaseOS]
name=aliyun BaseOS
baseurl=https://mirrors.aliyun.com/rocky/8.6/BaseOS/\$basearch/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/rocky/RPM-GPG-KEY-rockyofficial

[AppStream]
name=aliyun AppStream
baseurl=https://mirrors.aliyun.com/rocky/8.6/AppStream/\$basearch/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/rocky/RPM-GPG-KEY-rockyofficial

[extras]
name=aliyun extras
baseurl=https://mirrors.aliyun.com/rocky/8.6/extras/\$basearch/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/rocky/RPM-GPG-KEY-rockyofficial

[epel]
name=aliyun epel
baseurl=https://mirrors.aliyun.com/epel/8/Everything/\$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8
EOF

  # 清理缓存并更新
  yum clean all && yum makecache
  yum repolist || { echo "源仓库配置失败"; exit 1; }
  echo "✅ Rocky/CentOS源仓库配置成功"
}

# 主程序开始
. /etc/os-release

if [ "$NAME" = "Rocky Linux" ] || [ "$NAME" = "CentOS Linux" ]; then
  function_RockyCentOS_yum
elif [ "$NAME" = "Ubuntu" ]; then
  case $VERSION in
    "22.04.4 LTS (Jammy Jellyfish)")
      function_Ubuntu_Jammy
      ;;
    "24.04 LTS (Noble Numbat)")
      function_Ubuntu_Noble
      ;;
    *)
      echo "错误：不支持此Ubuntu版本 $VERSION"
      exit 1
  esac
else
  echo "错误：不支持此Linux发行版 $NAME"
  exit 1
fi