|
@@ -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
|