mirror of
https://github.com/alireza0/x-ui.git
synced 2026-03-14 05:23:09 +00:00
Advanced Geo updater x-ui.sh
This commit is contained in:
128
x-ui.sh
128
x-ui.sh
@@ -612,6 +612,128 @@ ssl_cert_issue_CF() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
update_geo_files() {
|
||||||
|
echo -e "${green} ------------------------- "
|
||||||
|
echo -e "${yellow} Advanced Geo System Updater Select Update Server "
|
||||||
|
echo -e "${green}\t1.${plain} Github [Default] "
|
||||||
|
echo -e "${green}\t2.${plain} jsDelivr CDN "
|
||||||
|
echo -e "${green}\t0.${plain} Back To X-UI Menu "
|
||||||
|
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"
|
||||||
|
|
||||||
|
updated_files=()
|
||||||
|
|
||||||
|
function needs_update() {
|
||||||
|
local source="$1"
|
||||||
|
local destination="$2"
|
||||||
|
|
||||||
|
[ ! -e "$destination" ] || [ "$(wget -q --spider --no-check-certificate --timestamping "$source" && stat -c %Y "$destination")" != "$(stat -c %Y "$destination")" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
for pair in "${source_mapping[@]}"; do
|
||||||
|
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 2
|
||||||
|
systemctl restart x-ui
|
||||||
|
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"
|
||||||
|
|
||||||
|
updated_files=()
|
||||||
|
|
||||||
|
function needs_update() {
|
||||||
|
local source="$1"
|
||||||
|
local destination="$2"
|
||||||
|
|
||||||
|
[ ! -e "$destination" ] || [ "$(wget -q --spider --no-check-certificate --timestamping "$source" && stat -c %Y "$destination")" != "$(stat -c %Y "$destination")" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
for pair in "${source_mapping[@]}"; do
|
||||||
|
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 2
|
||||||
|
systemctl restart x-ui
|
||||||
|
before_show_menu
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
LOGE "Please enter the correct number [0-2]"
|
||||||
|
update_geo_files
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
show_usage() {
|
show_usage() {
|
||||||
echo "X-UI Control Menu Usage"
|
echo "X-UI Control Menu Usage"
|
||||||
echo "------------------------------------------"
|
echo "------------------------------------------"
|
||||||
@@ -658,6 +780,7 @@ show_menu() {
|
|||||||
${green}15.${plain} 一A Key Installation BBR (latest kernel)
|
${green}15.${plain} 一A Key Installation BBR (latest kernel)
|
||||||
${green}16.${plain} 一SSL Certificate Management
|
${green}16.${plain} 一SSL Certificate Management
|
||||||
${green}17.${plain} 一Cloudflare SSL Certificate
|
${green}17.${plain} 一Cloudflare SSL Certificate
|
||||||
|
${green}18.${plain} 一Advanced Geo Updater
|
||||||
————————————————
|
————————————————
|
||||||
"
|
"
|
||||||
show_status
|
show_status
|
||||||
@@ -718,8 +841,11 @@ show_menu() {
|
|||||||
17)
|
17)
|
||||||
ssl_cert_issue_CF
|
ssl_cert_issue_CF
|
||||||
;;
|
;;
|
||||||
|
18)
|
||||||
|
update_geo_files
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
LOGE "Please enter the correct number [0-17]"
|
LOGE "Please enter the correct number [0-18]"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user