Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'x-ui.sh')
-rw-r--r--x-ui.sh251
1 files changed, 190 insertions, 61 deletions
diff --git a/x-ui.sh b/x-ui.sh
index cec86ba0..6038db7d 100644
--- a/x-ui.sh
+++ b/x-ui.sh
@@ -153,11 +153,19 @@ uninstall() {
fi
return 0
fi
- systemctl stop x-ui
- systemctl disable x-ui
- rm /etc/systemd/system/x-ui.service -f
- systemctl daemon-reload
- systemctl reset-failed
+
+ if [[ $release == "alpine" ]]; then
+ rc-service x-ui stop
+ rc-update del x-ui
+ rm /etc/init.d/x-ui -f
+ else
+ systemctl stop x-ui
+ systemctl disable x-ui
+ rm /etc/systemd/system/x-ui.service -f
+ systemctl daemon-reload
+ systemctl reset-failed
+ fi
+
rm /etc/x-ui/ -rf
rm /usr/local/x-ui/ -rf
@@ -286,7 +294,11 @@ start() {
echo ""
LOGI "Panel is running, No need to start again, If you need to restart, please select restart"
else
- systemctl start x-ui
+ if [[ $release == "alpine" ]]; then
+ rc-service x-ui start
+ else
+ systemctl start x-ui
+ fi
sleep 2
check_status
if [[ $? == 0 ]]; then
@@ -307,7 +319,11 @@ stop() {
echo ""
LOGI "Panel stopped, No need to stop again!"
else
- systemctl stop x-ui
+ if [[ $release == "alpine" ]]; then
+ rc-service x-ui stop
+ else
+ systemctl stop x-ui
+ fi
sleep 2
check_status
if [[ $? == 1 ]]; then
@@ -323,7 +339,11 @@ stop() {
}
restart() {
- systemctl restart x-ui
+ if [[ $release == "alpine" ]]; then
+ rc-service x-ui restart
+ else
+ systemctl restart x-ui
+ fi
sleep 2
check_status
if [[ $? == 0 ]]; then
@@ -337,14 +357,22 @@ restart() {
}
status() {
- systemctl status x-ui -l
+ if [[ $release == "alpine" ]]; then
+ rc-service x-ui status
+ else
+ systemctl status x-ui -l
+ fi
if [[ $# == 0 ]]; then
before_show_menu
fi
}
enable() {
- systemctl enable x-ui
+ if [[ $release == "alpine" ]]; then
+ rc-update add x-ui
+ else
+ systemctl enable x-ui
+ fi
if [[ $? == 0 ]]; then
LOGI "x-ui Set to boot automatically on startup successfully"
else
@@ -357,7 +385,11 @@ enable() {
}
disable() {
- systemctl disable x-ui
+ if [[ $release == "alpine" ]]; then
+ rc-update del x-ui
+ else
+ systemctl disable x-ui
+ fi
if [[ $? == 0 ]]; then
LOGI "x-ui Autostart Cancelled successfully"
else
@@ -370,32 +402,54 @@ disable() {
}
show_log() {
- echo -e "${green}\t1.${plain} Debug Log"
- echo -e "${green}\t2.${plain} Clear All logs"
- echo -e "${green}\t0.${plain} Back to Main Menu"
- read -rp "Choose an option: " choice
+ if [[ $release == "alpine" ]]; then
+ echo -e "${green}\t1.${plain} Debug Log"
+ echo -e "${green}\t0.${plain} Back to Main Menu"
+ read -rp "Choose an option: " choice
- case "$choice" in
- 0)
- show_menu
- ;;
- 1)
- journalctl -u x-ui -e --no-pager -f -p debug
- if [[ $# == 0 ]]; then
- before_show_menu
- fi
- ;;
- 2)
- sudo journalctl --rotate
- sudo journalctl --vacuum-time=1s
- echo "All Logs cleared."
- restart
- ;;
- *)
- echo -e "${red}Invalid option. Please select a valid number.${plain}\n"
- show_log
- ;;
- esac
+ case "$choice" in
+ 0)
+ show_menu
+ ;;
+ 1)
+ grep -F 'x-ui[' /var/log/messages
+ if [[ $# == 0 ]]; then
+ before_show_menu
+ fi
+ ;;
+ *)
+ echo -e "${red}Invalid option. Please select a valid number.${plain}\n"
+ show_log
+ ;;
+ esac
+ else
+ echo -e "${green}\t1.${plain} Debug Log"
+ echo -e "${green}\t2.${plain} Clear All logs"
+ echo -e "${green}\t0.${plain} Back to Main Menu"
+ read -rp "Choose an option: " choice
+
+ case "$choice" in
+ 0)
+ show_menu
+ ;;
+ 1)
+ journalctl -u x-ui -e --no-pager -f -p debug
+ if [[ $# == 0 ]]; then
+ before_show_menu
+ fi
+ ;;
+ 2)
+ sudo journalctl --rotate
+ sudo journalctl --vacuum-time=1s
+ echo "All Logs cleared."
+ restart
+ ;;
+ *)
+ echo -e "${red}Invalid option. Please select a valid number.${plain}\n"
+ show_log
+ ;;
+ esac
+ fi
}
bbr_menu() {
@@ -464,6 +518,9 @@ enable_bbr() {
arch | manjaro | parch)
pacman -Sy --noconfirm ca-certificates
;;
+ alpine)
+ apk add ca-certificates
+ ;;
*)
echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n"
exit 1
@@ -500,23 +557,42 @@ update_shell() {
# 0: running, 1: not running, 2: not installed
check_status() {
- if [[ ! -f /etc/systemd/system/x-ui.service ]]; then
- return 2
- fi
- temp=$(systemctl status x-ui | grep Active | awk '{print $3}' | cut -d "(" -f2 | cut -d ")" -f1)
- if [[ "${temp}" == "running" ]]; then
- return 0
+ if [[ $release == "alpine" ]]; then
+ if [[ ! -f /etc/init.d/x-ui ]]; then
+ return 2
+ fi
+ if [[ $(rc-service x-ui status | grep -F 'status: started' -c) == 1 ]]; then
+ return 0
+ else
+ return 1
+ fi
else
- return 1
+ if [[ ! -f /etc/systemd/system/x-ui.service ]]; then
+ return 2
+ fi
+ temp=$(systemctl status x-ui | grep Active | awk '{print $3}' | cut -d "(" -f2 | cut -d ")" -f1)
+ if [[ "${temp}" == "running" ]]; then
+ return 0
+ else
+ return 1
+ fi
fi
}
check_enabled() {
- temp=$(systemctl is-enabled x-ui)
- if [[ "${temp}" == "enabled" ]]; then
- return 0
+ if [[ $release == "alpine" ]]; then
+ if [[ $(rc-update show | grep -F 'x-ui' | grep default -c) == 1 ]]; then
+ return 0
+ else
+ return 1
+ fi
else
- return 1
+ temp=$(systemctl is-enabled x-ui)
+ if [[ "${temp}" == "enabled" ]]; then
+ return 0
+ else
+ return 1
+ fi
fi
}
@@ -798,7 +874,11 @@ update_geo() {
show_menu
;;
1)
- systemctl stop x-ui
+ if [[ $release == "alpine" ]]; then
+ rc-service x-ui stop
+ else
+ systemctl stop x-ui
+ fi
rm -f geoip.dat geosite.dat
wget -N https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat
wget -N https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat
@@ -806,7 +886,11 @@ update_geo() {
restart
;;
2)
- systemctl stop x-ui
+ if [[ $release == "alpine" ]]; then
+ rc-service x-ui stop
+ else
+ systemctl stop x-ui
+ fi
rm -f geoip_IR.dat geosite_IR.dat
wget -O geoip_IR.dat -N https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat
wget -O geosite_IR.dat -N https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat
@@ -814,7 +898,11 @@ update_geo() {
restart
;;
3)
- systemctl stop x-ui
+ if [[ $release == "alpine" ]]; then
+ rc-service x-ui stop
+ else
+ systemctl stop x-ui
+ fi
rm -f geoip_RU.dat geosite_RU.dat
wget -O geoip_RU.dat -N https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geoip.dat
wget -O geosite_RU.dat -N https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geosite.dat
@@ -985,6 +1073,9 @@ ssl_cert_issue() {
arch | manjaro | parch)
pacman -Sy --noconfirm socat
;;
+ alpine)
+ apk add socat
+ ;;
*)
echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n"
exit 1
@@ -1335,7 +1426,11 @@ iplimit_main() {
read -rp "Please enter new Ban Duration in Minutes [default 30]: " NUM
if [[ $NUM =~ ^[0-9]+$ ]]; then
create_iplimit_jails ${NUM}
- systemctl restart fail2ban
+ if [[ $release == "alpine" ]]; then
+ rc-service fail2ban restart
+ else
+ systemctl restart fail2ban
+ fi
else
echo -e "${red}${NUM} is not a number! Please, try again.${plain}"
fi
@@ -1388,7 +1483,11 @@ iplimit_main() {
iplimit_main
;;
9)
- systemctl restart fail2ban
+ if [[ $release == "alpine" ]]; then
+ rc-service fail2ban restart
+ else
+ systemctl restart fail2ban
+ fi
iplimit_main
;;
10)
@@ -1436,6 +1535,9 @@ install_iplimit() {
arch | manjaro | parch)
pacman -Syu --noconfirm fail2ban
;;
+ alpine)
+ apk add fail2ban
+ ;;
*)
echo -e "${red}Unsupported operating system. Please check the script and install the necessary packages manually.${plain}\n"
exit 1
@@ -1472,12 +1574,21 @@ install_iplimit() {
create_iplimit_jails
# Launching fail2ban
- if ! systemctl is-active --quiet fail2ban; then
- systemctl start fail2ban
+ if [[ $release == "alpine" ]]; then
+ if [[ $(rc-service fail2ban status | grep -F 'status: started' -c) == 0 ]]; then
+ rc-service fail2ban start
+ else
+ rc-service fail2ban restart
+ fi
+ rc-update add fail2ban
else
- systemctl restart fail2ban
+ if ! systemctl is-active --quiet fail2ban; then
+ systemctl start fail2ban
+ else
+ systemctl restart fail2ban
+ fi
+ systemctl enable fail2ban
fi
- systemctl enable fail2ban
echo -e "${green}IP Limit installed and configured successfully!${plain}\n"
before_show_menu
@@ -1493,13 +1604,21 @@ remove_iplimit() {
rm -f /etc/fail2ban/filter.d/3x-ipl.conf
rm -f /etc/fail2ban/action.d/3x-ipl.conf
rm -f /etc/fail2ban/jail.d/3x-ipl.conf
- systemctl restart fail2ban
+ if [[ $release == "alpine" ]]; then
+ rc-service fail2ban restart
+ else
+ systemctl restart fail2ban
+ fi
echo -e "${green}IP Limit removed successfully!${plain}\n"
before_show_menu
;;
2)
rm -rf /etc/fail2ban
- systemctl stop fail2ban
+ if [[ $release == "alpine" ]]; then
+ rc-service fail2ban stop
+ else
+ systemctl stop fail2ban
+ fi
case "${release}" in
ubuntu | debian | armbian)
apt-get remove -y fail2ban
@@ -1517,6 +1636,9 @@ remove_iplimit() {
arch | manjaro | parch)
pacman -Rns --noconfirm fail2ban
;;
+ alpine)
+ apk del fail2ban
+ ;;
*)
echo -e "${red}Unsupported operating system. Please uninstall Fail2ban manually.${plain}\n"
exit 1
@@ -1540,9 +1662,16 @@ show_banlog() {
echo -e "${green}Checking ban logs...${plain}\n"
- if ! systemctl is-active --quiet fail2ban; then
- echo -e "${red}Fail2ban service is not running!${plain}\n"
- return 1
+ if [[ $release == "alpine" ]]; then
+ if [[ $(rc-service fail2ban status | grep -F 'status: started' -c) == 0 ]]; then
+ echo -e "${red}Fail2ban service is not running!${plain}\n"
+ return 1
+ fi
+ else
+ if ! systemctl is-active --quiet fail2ban; then
+ echo -e "${red}Fail2ban service is not running!${plain}\n"
+ return 1
+ fi
fi
if [[ -f "$system_log" ]]; then