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:
authorYunheng Liu <121078488+Kookiejarz@users.noreply.github.com>2026-04-01 14:59:48 +0300
committerGitHub <noreply@github.com>2026-04-01 14:59:48 +0300
commit169b216d7eba1641f46dd8ab4b64dfb8f0a5cc2f (patch)
tree6c9a7558c2fb24453d1d5eadec2f3a6c1b96dffa
parent7e6d80efa5de0990fc701d75230a9505289f9de0 (diff)
perf: replace /dev/urandom | tr with openssl rand to fix CPU spike (#3887)
-rw-r--r--install.sh21
-rwxr-xr-xupdate.sh21
-rw-r--r--x-ui.sh5
3 files changed, 25 insertions, 22 deletions
diff --git a/install.sh b/install.sh
index 9d1aeb6b..af6b8a51 100644
--- a/install.sh
+++ b/install.sh
@@ -76,37 +76,38 @@ is_port_in_use() {
install_base() {
case "${release}" in
ubuntu | debian | armbian)
- apt-get update && apt-get install -y -q cron curl tar tzdata socat ca-certificates
+ apt-get update && apt-get install -y -q cron curl tar tzdata socat ca-certificates openssl
;;
fedora | amzn | virtuozzo | rhel | almalinux | rocky | ol)
- dnf -y update && dnf install -y -q curl tar tzdata socat ca-certificates
+ dnf -y update && dnf install -y -q curl tar tzdata socat ca-certificates openssl
;;
centos)
if [[ "${VERSION_ID}" =~ ^7 ]]; then
- yum -y update && yum install -y curl tar tzdata socat ca-certificates
+ yum -y update && yum install -y curl tar tzdata socat ca-certificates openssl
else
- dnf -y update && dnf install -y -q curl tar tzdata socat ca-certificates
+ dnf -y update && dnf install -y -q curl tar tzdata socat ca-certificates openssl
fi
;;
arch | manjaro | parch)
- pacman -Syu && pacman -Syu --noconfirm curl tar tzdata socat ca-certificates
+ pacman -Syu && pacman -Syu --noconfirm curl tar tzdata socat ca-certificates openssl
;;
opensuse-tumbleweed | opensuse-leap)
- zypper refresh && zypper -q install -y curl tar timezone socat ca-certificates
+ zypper refresh && zypper -q install -y curl tar timezone socat ca-certificates openssl
;;
alpine)
- apk update && apk add curl tar tzdata socat ca-certificates
+ apk update && apk add curl tar tzdata socat ca-certificates openssl
;;
*)
- apt-get update && apt-get install -y -q curl tar tzdata socat ca-certificates
+ apt-get update && apt-get install -y -q curl tar tzdata socat ca-certificates openssl
;;
esac
}
gen_random_string() {
local length="$1"
- local random_string=$(LC_ALL=C tr -dc 'a-zA-Z0-9' </dev/urandom | fold -w "$length" | head -n 1)
- echo "$random_string"
+ openssl rand -base64 $(( length * 2 )) \
+ | tr -dc 'a-zA-Z0-9' \
+ | head -c "$length"
}
install_acme() {
diff --git a/update.sh b/update.sh
index 5dce0ce3..b9cb3ddc 100755
--- a/update.sh
+++ b/update.sh
@@ -100,37 +100,38 @@ is_port_in_use() {
gen_random_string() {
local length="$1"
- local random_string=$(LC_ALL=C tr -dc 'a-zA-Z0-9' </dev/urandom | fold -w "$length" | head -n 1)
- echo "$random_string"
+ openssl rand -base64 $(( length * 2 )) \
+ | tr -dc 'a-zA-Z0-9' \
+ | head -c "$length"
}
install_base() {
echo -e "${green}Updating and install dependency packages...${plain}"
case "${release}" in
ubuntu | debian | armbian)
- apt-get update >/dev/null 2>&1 && apt-get install -y -q curl tar tzdata socat >/dev/null 2>&1
+ apt-get update >/dev/null 2>&1 && apt-get install -y -q curl tar tzdata socat openssl >/dev/null 2>&1
;;
fedora | amzn | virtuozzo | rhel | almalinux | rocky | ol)
- dnf -y update >/dev/null 2>&1 && dnf install -y -q curl tar tzdata socat >/dev/null 2>&1
+ dnf -y update >/dev/null 2>&1 && dnf install -y -q curl tar tzdata socat openssl >/dev/null 2>&1
;;
centos)
if [[ "${VERSION_ID}" =~ ^7 ]]; then
- yum -y update >/dev/null 2>&1 && yum install -y -q curl tar tzdata socat >/dev/null 2>&1
+ yum -y update >/dev/null 2>&1 && yum install -y -q curl tar tzdata socat openssl >/dev/null 2>&1
else
- dnf -y update >/dev/null 2>&1 && dnf install -y -q curl tar tzdata socat >/dev/null 2>&1
+ dnf -y update >/dev/null 2>&1 && dnf install -y -q curl tar tzdata socat openssl >/dev/null 2>&1
fi
;;
arch | manjaro | parch)
- pacman -Syu >/dev/null 2>&1 && pacman -Syu --noconfirm curl tar tzdata socat >/dev/null 2>&1
+ pacman -Syu >/dev/null 2>&1 && pacman -Syu --noconfirm curl tar tzdata socat openssl >/dev/null 2>&1
;;
opensuse-tumbleweed | opensuse-leap)
- zypper refresh >/dev/null 2>&1 && zypper -q install -y curl tar timezone socat >/dev/null 2>&1
+ zypper refresh >/dev/null 2>&1 && zypper -q install -y curl tar timezone socat openssl >/dev/null 2>&1
;;
alpine)
- apk update >/dev/null 2>&1 && apk add curl tar tzdata socat >/dev/null 2>&1
+ apk update >/dev/null 2>&1 && apk add curl tar tzdata socat openssl>/dev/null 2>&1
;;
*)
- apt-get update >/dev/null 2>&1 && apt install -y -q curl tar tzdata socat >/dev/null 2>&1
+ apt-get update >/dev/null 2>&1 && apt install -y -q curl tar tzdata socat openssl >/dev/null 2>&1
;;
esac
}
diff --git a/x-ui.sh b/x-ui.sh
index e9e2d831..e26dcce2 100644
--- a/x-ui.sh
+++ b/x-ui.sh
@@ -243,8 +243,9 @@ reset_user() {
gen_random_string() {
local length="$1"
- local random_string=$(LC_ALL=C tr -dc 'a-zA-Z0-9' </dev/urandom | fold -w "$length" | head -n 1)
- echo "$random_string"
+ openssl rand -base64 $(( length * 2 )) \
+ | tr -dc 'a-zA-Z0-9' \
+ | head -c "$length"
}
reset_webbasepath() {