Fix loop x-ui.sh

Fix Options and loop
This commit is contained in:
Shellgate
2023-12-06 04:48:09 +03:30
committed by GitHub
parent 9a95530742
commit 5ea3333367

190
x-ui.sh
View File

@@ -613,137 +613,91 @@ ssl_cert_issue_CF() {
} }
update_geo_files() { update_geo_files() {
echo -e "${green} ------------------------- " echo -e "${green} ------------------------- "
echo -e "${yellow} Advanced Geo System Updater Select Update Server " echo -e "${yellow} Advanced Geo System Updater Select Update Server "
echo -e "${green}\t1.${plain} Github [Default] " echo -e "${green}\t1.${plain} Github [Default] "
echo -e "${green}\t2.${plain} jsDelivr CDN " echo -e "${green}\t2.${plain} jsDelivr CDN "
echo -e "${green}\t0.${plain} Back To X-UI Menu " echo -e "${green}\t0.${plain} Back To X-UI Menu "
read -p "Select an option: " select read -p "Select an option: " select
case "$select" in
0) show_menu ;;
1)
local="/usr/local/x-ui/bin"
source_mapping=(
"https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat geoip.dat"
"https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat geosite.dat"
"https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat geoip_IR.dat"
"https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat geosite_IR.dat"
"https://github.com/bootmortis/iran-hosted-domains/releases/latest/download/iran.dat iran.dat"
)
mkdir -p "$local" && chmod 764 "$local" case "$select" in
0) show_menu ;;
1|2)
local="/usr/local/x-ui/bin"
source_mapping=()
updated_files=() if [ "$select" -eq 1 ]; then
source_mapping=(
"https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat geoip.dat"
"https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat geosite.dat"
"https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat geoip_IR.dat"
"https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat geosite_IR.dat"
"https://github.com/bootmortis/iran-hosted-domains/releases/latest/download/iran.dat iran.dat"
)
elif [ "$select" -eq 2 ]; then
source_mapping=(
"https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat geoip.dat"
"https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat geosite.dat"
"https://cdn.jsdelivr.net/gh/chocolate4u/Iran-v2ray-rules@release/geoip.dat geoip_IR.dat"
"https://cdn.jsdelivr.net/gh/chocolate4u/Iran-v2ray-rules@release/geosite.dat geosite_IR.dat"
"https://github.com/bootmortis/iran-hosted-domains/releases/latest/download/iran.dat iran.dat"
)
fi
function needs_update() { mkdir -p "$local" && chmod 764 "$local"
local source="$1"
local destination="$2"
[ ! -e "$destination" ] || [ "$(wget -q --spider --no-check-certificate --timestamping "$source" && stat -c %Y "$destination")" != "$(stat -c %Y "$destination")" ] updated_files=()
}
for pair in "${source_mapping[@]}"; do function needs_update() {
output_file="${local}/$(echo "$pair" | cut -d ' ' -f 2)" local source="$1"
local destination="$2"
if needs_update "$(echo "$pair" | cut -d ' ' -f 1)" "$output_file"; then [ ! -e "$destination" ] || [ "$(wget -q --spider --no-check-certificate --timestamping "$source" && stat -c %Y "$destination")" != "$(stat -c %Y "$destination")" ]
echo "Downloading $output_file..." }
wget -q --no-check-certificate --timestamping --show-progress -O "$output_file" "$(echo "$pair" | cut -d ' ' -f 1)"
chmod 644 "$output_file"
updated_files+=("$output_file")
else
echo "$output_file is already up to date. No need to update."
fi
done
echo -e "\n---------------------------" for pair in "${source_mapping[@]}"; do
echo -e " Summary Report " output_file="${local}/$(echo "$pair" | cut -d ' ' -f 2)"
echo -e "---------------------------"
if [ ${#updated_files[@]} -gt 0 ]; then if needs_update "$(echo "$pair" | cut -d ' ' -f 1)" "$output_file"; then
echo -e "Number of Downloaded files: ${#updated_files[@]}" echo "Downloading $output_file..."
echo "Downloaded files:" wget -q --no-check-certificate --timestamping --show-progress -O "$output_file" "$(echo "$pair" | cut -d ' ' -f 1)"
for file in "${updated_files[@]}"; do chmod 644 "$output_file"
echo " - $file" updated_files+=("$output_file")
done else
else echo "$output_file is already up to date. No need to update."
echo -e "\nNo files were updated." fi
fi done
echo -e "---------------------------" echo -e "\n---------------------------"
sleep 1 echo -e " Summary Report "
read -p "Do you want to restart x-ui? (y/n): " restart_choice echo -e "---------------------------"
if [[ $restart_choice == [Yy] ]]; then
systemctl restart x-ui
echo "X-UI has been restarted."
else
echo "X-UI was not restarted."
fi
before_show_menu
;;
2)
local="/usr/local/x-ui/bin"
source_mapping=(
"https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat geoip.dat"
"https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat geosite.dat"
"https://cdn.jsdelivr.net/gh/chocolate4u/Iran-v2ray-rules@release/geoip.dat geoip_IR.dat"
"https://cdn.jsdelivr.net/gh/chocolate4u/Iran-v2ray-rules@release/geosite.dat geosite_IR.dat"
"https://github.com/bootmortis/iran-hosted-domains/releases/latest/download/iran.dat iran.dat"
)
mkdir -p "$local" && chmod 764 "$local" if [ ${#updated_files[@]} -gt 0 ]; then
echo -e "Number of Downloaded files: ${#updated_files[@]}"
echo "Downloaded files:"
for file in "${updated_files[@]}"; do
echo " - $file"
done
else
echo -e "\nNo files were updated."
fi
updated_files=() echo -e "---------------------------"
sleep 1
function needs_update() { read -p "Do you want to restart x-ui? (y/n): " restart_choice
local source="$1" if [[ $restart_choice == [Yy] ]]; then
local destination="$2" systemctl restart x-ui
echo "X-UI has been restarted."
[ ! -e "$destination" ] || [ "$(wget -q --spider --no-check-certificate --timestamping "$source" && stat -c %Y "$destination")" != "$(stat -c %Y "$destination")" ] else
} echo "X-UI was not restarted."
fi
for pair in "${source_mapping[@]}"; do before_show_menu
output_file="${local}/$(echo "$pair" | cut -d ' ' -f 2)" ;;
*)
if needs_update "$(echo "$pair" | cut -d ' ' -f 1)" "$output_file"; then
echo "Downloading $output_file..."
wget -q --no-check-certificate --timestamping --show-progress -O "$output_file" "$(echo "$pair" | cut -d ' ' -f 1)"
chmod 644 "$output_file"
updated_files+=("$output_file")
else
echo "$output_file is already up to date. No need to update."
fi
done
echo -e "\n---------------------------"
echo -e " Summary Report "
echo -e "---------------------------"
if [ ${#updated_files[@]} -gt 0 ]; then
echo -e "Number of Downloaded files: ${#updated_files[@]}"
echo "Downloaded files:"
for file in "${updated_files[@]}"; do
echo " - $file"
done
else
echo -e "\nNo files were updated."
fi
echo -e "---------------------------"
sleep 1
read -p "Do you want to restart x-ui? (y/n): " restart_choice
if [[ $restart_choice == [Yy] ]]; then
systemctl restart x-ui
echo "X-UI has been restarted."
else
echo "X-UI was not restarted."
fi
before_show_menu
;;
*)
LOGE "Please enter the correct number [0-2]" LOGE "Please enter the correct number [0-2]"
update_geo_files update_geo_files
;; ;;
esac esac
} }
show_usage() { show_usage() {