mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2025-12-18 05:04:40 +03:00
Add Alpine Linux support (#3534)
Some checks failed
Release 3X-UI / build (386) (push) Has been cancelled
Release 3X-UI / build (amd64) (push) Has been cancelled
Release 3X-UI / build (arm64) (push) Has been cancelled
Release 3X-UI / build (armv5) (push) Has been cancelled
Release 3X-UI / build (armv6) (push) Has been cancelled
Release 3X-UI / build (armv7) (push) Has been cancelled
Release 3X-UI / build (s390x) (push) Has been cancelled
Release 3X-UI / Build for Windows (amd64) (push) Has been cancelled
Some checks failed
Release 3X-UI / build (386) (push) Has been cancelled
Release 3X-UI / build (amd64) (push) Has been cancelled
Release 3X-UI / build (arm64) (push) Has been cancelled
Release 3X-UI / build (armv5) (push) Has been cancelled
Release 3X-UI / build (armv6) (push) Has been cancelled
Release 3X-UI / build (armv7) (push) Has been cancelled
Release 3X-UI / build (s390x) (push) Has been cancelled
Release 3X-UI / Build for Windows (amd64) (push) Has been cancelled
* Add Alpine linux support * Fix for reading logs
This commit is contained in:
251
x-ui.sh
251
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
|
||||
|
||||
Reference in New Issue
Block a user