#!/bin/bash

. /etc/os-release
  # 加载文件


#-----------------------------------------------------------------------------#
  # Rocky函数
function_Rocky_yum() {
  . /etc/os-release

  # 定义原文件目录及备份文件夹变量
local SRC_DIR="/etc/yum.repos.d/"
local BACKUP_DIR="$SRC_DIR/backup"

  # 检查备份目录是否存在，如果不存在则创建它
if [ ! -d "$BACKUP_DIR" ]; then
  mkdir -p "$BACKUP_DIR"
  #移动.repo后缀文件到backup
  mv $SRC_DIR*.repo $BACKUP_DIR
    else
      mv $SRC_DIR*.repo $BACKUP_DIR
fi
echo "原仓库已移动到 $BACKUP_DIR:"
ls "$BACKUP_DIR"


cat >/etc/yum.repos.d/aliyun.repo <<EOF
[BaseOS]
baseurl=https://dl.rockylinux.org/vault/rocky/8.6/BaseOS/x86_64/os/
name=alinyun BaseOS
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/rockylinux/RPM-GPG-KEY-rockyofficial




[AppStream]
baseurl=https://dl.rockylinux.org/vault/rocky/8.6/AppStream/x86_64/os/
name=aliyun AppStream
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/rockylinux/RPM-GPG-KEY-rockyofficial






[extras]
baseurl=https://dl.rockylinux.org/vault/rocky/8.6/extras/x86_64/os/
name=aliyun extras
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/rockylinux/RPM-GPG-KEY-rockyofficial




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



EOF
yum makecache&&echo "源仓库配置成功"||echo "源仓库配置失败，请检查源仓库地址"
yum repolist
}

#-----------------------------------------------------------------------------#

  # CentOS函数
function_CentOS_yum() {
  . /etc/os-release

  # 定义原文件目录及备份文件夹变量
local SRC_DIR="/etc/yum.repos.d/"
local BACKUP_DIR="$SRC_DIR/backup"

  # 检查备份目录是否存在，如果不存在则创建它
if [ ! -d "$BACKUP_DIR" ]; then
  mkdir -p "$BACKUP_DIR"
  #移动.repo后缀文件到backup
  mv $SRC_DIR*.repo $BACKUP_DIR
    else
      mv $SRC_DIR*.repo $BACKUP_DIR
fi
echo "原仓库已移动到 $BACKUP_DIR:"
ls "$BACKUP_DIR"


cat >/etc/yum.repos.d/aliyun.repo <<EOF

[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#released updates 
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7


EOF
yum makecache&&echo "源仓库配置成功"||echo "源仓库配置失败，请检查源仓库地址"
yum repolist
}

#-----------------------------------------------------------------------------#


  # Ubuntu22.04函数
function_Ubuntu22.04.4_LTS_Jammy_Jellyfish() {
  . /etc/os-release
    # 定义原文件目录及备份文件夹变量
SRC_DIR="/etc/apt/"
BACKUP_DIR="$SRC_DIR/backup"

  # 检查备份目录是否存在，如果不存在则创建它
if [ ! -d "$BACKUP_DIR" ]; then
  mkdir -p "$BACKUP_DIR"
  #移动.repo后缀文件到backup
  mv $SRC_DIR*.list $BACKUP_DIR
    else
      mv $SRC_DIR*.list $BACKUP_DIR
fi
echo "原仓库已移动到 $BACKUP_DIR:"
ls "$BACKUP_DIR"

cat >/etc/apt/sources.list <<EOF
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse

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

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

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

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

EOF
apt update&&echo "源仓库配置成功"||echo "源仓库配置失败，请检查源仓库地址"



}

#-----------------------------------------------------------------------------#

  # Ubuntu24.04函数
function_Ubuntu24.04_LTS_Noble_Numbat() {
  . /etc/os-release
      # 定义原文件目录及备份文件夹变量
SRC_DIR="/etc/apt/"
BACKUP_DIR="$SRC_DIR/backup"

  # 检查备份目录是否存在，如果不存在则创建它
if [ ! -d "$BACKUP_DIR" ]; then
  mkdir -p "$BACKUP_DIR"
  #移动.repo后缀文件到backup
  mv $SRC_DIR*.list $BACKUP_DIR
    else
      mv $SRC_DIR*.list $BACKUP_DIR
fi
echo "原仓库已移动到 $BACKUP_DIR:"
ls "$BACKUP_DIR"

cat >/etc/apt/sources.list <<EOF
deb https://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse

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

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

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

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


EOF
apt update&&echo "源仓库配置成功"||echo "源仓库配置失败，请检查源仓库地址"


}

#-----------------------------------------------------------------------------#
 #配置仓库
function_Load_software_source_repository(){

if [ "$NAME" = "Rocky Linux"  ]; then
  function_Rocky/CentOS_yum
    elif [ "$NAME" = "CentOS Linux" ]; then
      function_CentOS_yum
    elif [ "$NAME" = "Ubuntu" ]; then
      if [ "$VERSION" = "22.04.4 LTS (Jammy Jellyfish)" ]; then
        function_Ubuntu22.04.4_LTS_Jammy_Jellyfish
        elif [ "$VERSION" = "24.04 LTS (Noble Numbat)" ]; then
          function_Ubuntu24.04_LTS_Noble_Numbat
          else 
            echo 不支持此ubuntu版本，请联系作者
      fi
   else
   echo 不支持此Linux版本，请联系作者   
      
      
fi
}

#-----------------------------------------------------------------------------#

function_NETWORK_Rocky/CentOS() {
  sed -i.bak '/SELINUX=enforcing/c SELINUX=disabled' /etc/sysconfig/selinux
#更改selinux
rm -rf /etc/sysconfig/network-scripts/*
local NAME
local BOOTPROTO
local IPADDR
local NETMASK
local GATEWAY
local DNS1
local DNS2
local DNS3
local check
check='((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])'
read -p "请输入IPV4地址获取策略（策略：dhcp、static、none，区分大小写）" BOOTPROTO
if [ "$BOOTPROTO" != "dhcp" -o "$BOOTPROTO" != "static" -o "$BOOTPROTO" != "none" ]; then
  echo "请输入正确的策略模式"
fi
read -p "请输入网卡名称" NAME
if [[ "$BOOTPROTO" != "dhcp" ]]; then
  echo "请输入正确的策略模式"
fi
read -p "请输入IPV4地址" IPADDR
if [ "$IPADDR" != "$check" ]; then
  echo "请输入正确的IP地址格式" 
fi
read -p "请输入子网掩码" NETMASK
if [ "$NETMASK" != "$check" ]; then
  echo "请输入正确的子网掩码格式" 
fi
read -p "请输入网关地址" GATEWAY
if [ $GATEWAY != "$check" ]; then
  echo "请输入正确的DNS格式" 
fi
read -p "请输入DNS地址" DNS
if [ "$DNS" != "$check" ]; then
  echo "请输入正确的DNS格式" 
fi

cat >/etc/sysconfig/network-scripts/ifcfg-eth0<<EOF

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=$BOOTPROTO

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=eui64

NAME=$NAME

DEVICE=eth0

ONBOOT=yes

IPADDR=$IPADDR
NETMASK=$NETMASK

GATEWAY=$GATEWAY
DNS=$DNS





EOF
nmcli connection reload
nmcli connection up eth0
}


#-----------------------------------------------------------------------------#
function_FIREWALL_DOWN() {

if [[ $NAME == 'Rocky Linux' ]];then
  echo 检测系统为Rocky..
  sleep 1
  echo 检测系统防火墙状态...
    if [[ $(systemctl status firewalld.service |grep 'Active'|awk '{print $2}') == "active" ]];then
      sleep 1
      echo 防火墙状态:正在运行
      sleep 1
      echo 正在关闭Linux防火墙......
      (systemctl stop firewalld.service &&systemctl disable firewalld.service;) &&echo  防火墙已关闭 ||echo  关闭防火墙失败，请检查相关配置。
        else
          sleep 1
          echo 防火墙状态:已停止运行
    fi        
          elif [[ $NAME -eq  ubuntu ]];then
            echo 检测系统为ubuntu
            sleep 1
            echo 检测系统防火墙状态...
              if [[ $(systemctl status ufw.service |grep 'Active'|awk '{print $2}') == "active" ]];then
                sleep 1
                echo 防火墙状态:正在运行
                sleep 1
                echo 正在关闭Linux防火墙......
                (systemctl stop ufw.service &&systemctl disable ufw.service;) &&echo  防火墙已关闭 ||echo  关闭防火墙失败，请检查相关配置。
                  else
                    sleep 1
                    echo 防火墙状态:已停止运行
              fi

          (systemctl stop ufw.service &&systemctl disable ufw.service;) &&echo  防火墙已关闭 ||echo  关闭防火墙失败，请检查相关配置。
fi

}
