#!/bin/bash
export LANG=C.UTF-8
Red='\033[0;31m'        # Red
Yellow='\033[0;33m'     # Yellow
NC='\033[0m'            # No Color
clear

# Chọn ngôn ngữ
echo -e "${Yellow}Select your language / Chọn ngôn ngữ:${NC}"
echo "1. English"
echo "2. Tiếng Việt"
read -p "Your choice / Lựa chọn của bạn (1/2): " lang_choice

if [[ $lang_choice -eq 1 ]]; then
    LANG_MESSAGE="System optimization in progress..."
    BACKUP_LIMITS_MSG="Backup of limits.conf completed."
    BACKUP_SYSCTL_MSG="Backup of sysctl.conf completed."
    NETWORK_OPTIMIZATION_MSG="Optimizing network settings..."
    SYSCTL_UPDATE_MSG="Applying sysctl settings..."
    DONE_MSG="System optimization completed. Please check your system and software to ensure everything is running smoothly!"
    CONTACT_MSG="For more information or support, please visit https://hoatoc.vn or call: 0792040404"
    THANKS_MSG="=============> Thank you! <============="
else
    LANG_MESSAGE="Hệ thống đang được tối ưu hóa..."
    BACKUP_LIMITS_MSG="/etc/security/limits.conf đã được backup."
    BACKUP_SYSCTL_MSG="/etc/sysctl.conf đã được backup."
    NETWORK_OPTIMIZATION_MSG="Tối ưu các cấu hình mạng..."
    SYSCTL_UPDATE_MSG="Áp dụng các cài đặt sysctl..."
    DONE_MSG="Hệ thống đã được tối ưu. Hãy kiểm tra lại hệ thống cũng như các phần mềm để đảm bảo mọi thứ hoạt động ổn định!"
    CONTACT_MSG="Cần thêm thông tin hoặc hỗ trợ vui lòng truy cập https://hoatoc.vn hoặc gọi: 0792040404"
    THANKS_MSG="=============> Cảm ơn quý khách! <============="
fi

# Hiển thị thông báo chào mừng
for (( i=0; i<${#LANG_MESSAGE}; i++ )); do
  echo -ne "${Yellow}${LANG_MESSAGE:$i:1}${NC}"
  sleep 0.05
done
echo

# Backup và tối ưu limits.conf
echo -e "${Yellow}${BACKUP_LIMITS_MSG}${NC}"
cp /etc/security/limits.conf /etc/security/limits.conf.`date +"%Y%m%d"`
cat <<EOT > /etc/security/limits.conf
* soft core unlimited
* hard core unlimited
* - nofile 500000
* - nproc 500000
root - nofile 1000000
root - nproc unlimited
* soft nofile 1000000
* hard nofile 1000000
# End of file
EOT

# Backup và tối ưu sysctl.conf
echo -e "${Yellow}${BACKUP_SYSCTL_MSG}${NC}"
cp /etc/sysctl.conf /etc/sysctl.conf.`date +"%Y%m%d"`
cat <<EOT > /etc/sysctl.conf
fs.file-max = 2097152
vm.swappiness = 10
vm.dirty_ratio = 60
vm.dirty_background_ratio = 2
net.ipv4.tcp_synack_retries = 2
net.ipv4.ip_local_port_range = 2000 65535
net.ipv4.tcp_rfc1337 = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
net.core.rmem_default = 31457280
net.core.rmem_max = 12582912
net.core.wmem_default = 31457280
net.core.wmem_max = 12582912
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65536
net.core.optmem_max = 25165824
net.ipv4.tcp_mem = 65536 131072 262144
net.ipv4.udp_mem = 65536 131072 262144
net.ipv4.tcp_rmem = 8192 87380 16777216
net.ipv4.tcp_wmem = 8192 65536 16777216
net.ipv4.udp_rmem_min = 16384
net.ipv4.udp_wmem_min = 16384
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_tw_reuse = 1
#net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq
EOT

sysctl -p > /dev/null
echo -e "${Yellow}${SYSCTL_UPDATE_MSG}${NC}"

# Tối ưu network offload
#echo -e "${Yellow}${NETWORK_OPTIMIZATION_MSG}${NC}"
#for interface in $(ls /sys/class/net | grep -v lo); do
#    echo -e "${Yellow}- Optimizing interface: ${interface}${NC}"

#    ethtool -K $interface tso off gso off lro off gro off
#    ethtool -K $interface rx off tx off
#done

# Kết thúc tối ưu hóa
for (( i=0; i<${#DONE_MSG}; i++ )); do
  echo -ne "${Yellow}${DONE_MSG:$i:1}${NC}"
  sleep 0.05
done
echo

# Hiển thị thông tin liên hệ
for (( i=0; i<${#CONTACT_MSG}; i++ )); do
  echo -ne "${Yellow}${CONTACT_MSG:$i:1}${NC}"
  sleep 0.05
done
echo

# Cảm ơn
for (( i=0; i<${#THANKS_MSG}; i++ )); do
  echo -ne "${Yellow}${THANKS_MSG:$i:1}${NC}"
  sleep 0.05
done
echo

