mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-01-13 09:12:44 +00:00
Compare commits
6 commits
91f97dde52
...
6808af1038
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6808af1038 | ||
|
|
a691eaea8d | ||
|
|
cb3082014a | ||
|
|
80952a9b22 | ||
|
|
ac9c703c9f | ||
|
|
7c9008f01f |
3 changed files with 40 additions and 19 deletions
|
|
@ -53,7 +53,7 @@ is_ip() {
|
||||||
is_ipv4 "$1" || is_ipv6 "$1"
|
is_ipv4 "$1" || is_ipv6 "$1"
|
||||||
}
|
}
|
||||||
is_domain() {
|
is_domain() {
|
||||||
[[ "$1" =~ ^([A-Za-z0-9](-*[A-Za-z0-9])*)\.([A-Za-z]{2,})$ ]] && return 0 || return 1
|
[[ "$1" =~ ^([A-Za-z0-9](-*[A-Za-z0-9])*\.)+(xn--[a-z0-9]{2,}|[A-Za-z]{2,})$ ]] && return 0 || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Port helpers
|
# Port helpers
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ is_ip() {
|
||||||
is_ipv4 "$1" || is_ipv6 "$1"
|
is_ipv4 "$1" || is_ipv6 "$1"
|
||||||
}
|
}
|
||||||
is_domain() {
|
is_domain() {
|
||||||
[[ "$1" =~ ^([A-Za-z0-9](-*[A-Za-z0-9])*\.)+[A-Za-z]{2,}$ ]] && return 0 || return 1
|
[[ "$1" =~ ^([A-Za-z0-9](-*[A-Za-z0-9])*\.)+(xn--[a-z0-9]{2,}|[A-Za-z]{2,})$ ]] && return 0 || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Port helpers
|
# Port helpers
|
||||||
|
|
|
||||||
41
x-ui.sh
41
x-ui.sh
|
|
@ -47,7 +47,7 @@ is_ip() {
|
||||||
is_ipv4 "$1" || is_ipv6 "$1"
|
is_ipv4 "$1" || is_ipv6 "$1"
|
||||||
}
|
}
|
||||||
is_domain() {
|
is_domain() {
|
||||||
[[ "$1" =~ ^([A-Za-z0-9](-*[A-Za-z0-9])*\.)+[A-Za-z]{2,}$ ]] && return 0 || return 1
|
[[ "$1" =~ ^([A-Za-z0-9](-*[A-Za-z0-9])*\.)+(xn--[a-z0-9]{2,}|[A-Za-z]{2,})$ ]] && return 0 || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# check root
|
# check root
|
||||||
|
|
@ -530,20 +530,27 @@ bbr_menu() {
|
||||||
|
|
||||||
disable_bbr() {
|
disable_bbr() {
|
||||||
|
|
||||||
if ! grep -q "net.core.default_qdisc=fq" /etc/sysctl.conf || ! grep -q "net.ipv4.tcp_congestion_control=bbr" /etc/sysctl.conf; then
|
if [[ $(sysctl -n net.ipv4.tcp_congestion_control) != "bbr" ]] || [[ ! $(sysctl -n net.core.default_qdisc) =~ ^(fq|cake)$ ]]; then
|
||||||
echo -e "${yellow}BBR is not currently enabled.${plain}"
|
echo -e "${yellow}BBR is not currently enabled.${plain}"
|
||||||
before_show_menu
|
before_show_menu
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -f "/etc/sysctl.d/99-bbr-x-ui.conf" ]; then
|
||||||
|
old_settings=$(head -1 /etc/sysctl.d/99-bbr-x-ui.conf | tr -d '#')
|
||||||
|
sysctl -w net.core.default_qdisc="${old_settings%:*}"
|
||||||
|
sysctl -w net.ipv4.tcp_congestion_control="${old_settings#*:}"
|
||||||
|
rm /etc/sysctl.d/99-bbr-x-ui.conf
|
||||||
|
sysctl --system
|
||||||
|
else
|
||||||
# Replace BBR with CUBIC configurations
|
# Replace BBR with CUBIC configurations
|
||||||
|
if [ -f "/etc/sysctl.conf" ]; then
|
||||||
sed -i 's/net.core.default_qdisc=fq/net.core.default_qdisc=pfifo_fast/' /etc/sysctl.conf
|
sed -i 's/net.core.default_qdisc=fq/net.core.default_qdisc=pfifo_fast/' /etc/sysctl.conf
|
||||||
sed -i 's/net.ipv4.tcp_congestion_control=bbr/net.ipv4.tcp_congestion_control=cubic/' /etc/sysctl.conf
|
sed -i 's/net.ipv4.tcp_congestion_control=bbr/net.ipv4.tcp_congestion_control=cubic/' /etc/sysctl.conf
|
||||||
|
|
||||||
# Apply changes
|
|
||||||
sysctl -p
|
sysctl -p
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Verify that BBR is replaced with CUBIC
|
if [[ $(sysctl -n net.ipv4.tcp_congestion_control) != "bbr" ]]; then
|
||||||
if [[ $(sysctl net.ipv4.tcp_congestion_control | awk '{print $3}') == "cubic" ]]; then
|
|
||||||
echo -e "${green}BBR has been replaced with CUBIC successfully.${plain}"
|
echo -e "${green}BBR has been replaced with CUBIC successfully.${plain}"
|
||||||
else
|
else
|
||||||
echo -e "${red}Failed to replace BBR with CUBIC. Please check your system configuration.${plain}"
|
echo -e "${red}Failed to replace BBR with CUBIC. Please check your system configuration.${plain}"
|
||||||
|
|
@ -551,20 +558,34 @@ disable_bbr() {
|
||||||
}
|
}
|
||||||
|
|
||||||
enable_bbr() {
|
enable_bbr() {
|
||||||
if grep -q "net.core.default_qdisc=fq" /etc/sysctl.conf && grep -q "net.ipv4.tcp_congestion_control=bbr" /etc/sysctl.conf; then
|
if [[ $(sysctl -n net.ipv4.tcp_congestion_control) == "bbr" ]] && [[ $(sysctl -n net.core.default_qdisc) =~ ^(fq|cake)$ ]]; then
|
||||||
echo -e "${green}BBR is already enabled!${plain}"
|
echo -e "${green}BBR is already enabled!${plain}"
|
||||||
before_show_menu
|
before_show_menu
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Enable BBR
|
# Enable BBR
|
||||||
|
if [ -d "/etc/sysctl.d/" ]; then
|
||||||
|
{
|
||||||
|
echo "#$(sysctl -n net.core.default_qdisc):$(sysctl -n net.ipv4.tcp_congestion_control)"
|
||||||
|
echo "net.core.default_qdisc = fq"
|
||||||
|
echo "net.ipv4.tcp_congestion_control = bbr"
|
||||||
|
} > "/etc/sysctl.d/99-bbr-x-ui.conf"
|
||||||
|
if [ -f "/etc/sysctl.conf" ]; then
|
||||||
|
# Backup old settings from sysctl.conf, if any
|
||||||
|
sed -i 's/^net.core.default_qdisc/# &/' /etc/sysctl.conf
|
||||||
|
sed -i 's/^net.ipv4.tcp_congestion_control/# &/' /etc/sysctl.conf
|
||||||
|
fi
|
||||||
|
sysctl --system
|
||||||
|
else
|
||||||
|
sed -i '/net.core.default_qdisc/d' /etc/sysctl.conf
|
||||||
|
sed -i '/net.ipv4.tcp_congestion_control/d' /etc/sysctl.conf
|
||||||
echo "net.core.default_qdisc=fq" | tee -a /etc/sysctl.conf
|
echo "net.core.default_qdisc=fq" | tee -a /etc/sysctl.conf
|
||||||
echo "net.ipv4.tcp_congestion_control=bbr" | tee -a /etc/sysctl.conf
|
echo "net.ipv4.tcp_congestion_control=bbr" | tee -a /etc/sysctl.conf
|
||||||
|
|
||||||
# Apply changes
|
|
||||||
sysctl -p
|
sysctl -p
|
||||||
|
fi
|
||||||
|
|
||||||
# Verify that BBR is enabled
|
# Verify that BBR is enabled
|
||||||
if [[ $(sysctl net.ipv4.tcp_congestion_control | awk '{print $3}') == "bbr" ]]; then
|
if [[ $(sysctl -n net.ipv4.tcp_congestion_control) == "bbr" ]]; then
|
||||||
echo -e "${green}BBR has been enabled successfully.${plain}"
|
echo -e "${green}BBR has been enabled successfully.${plain}"
|
||||||
else
|
else
|
||||||
echo -e "${red}Failed to enable BBR. Please check your system configuration.${plain}"
|
echo -e "${red}Failed to enable BBR. Please check your system configuration.${plain}"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue