Compare commits

...

7 commits

Author SHA1 Message Date
GitHub Action
ec5cc2f5e2 🌐 Weekly translation update - 2025-09-11 03:33:26 2025-09-11 03:33:26 +00:00
科技lion
3cb7d1cf7d
Update kejilion_sh_log.txt 2025-09-10 16:29:11 +08:00
科技lion
6b36e735b1
Update kejilion.sh 2025-09-10 16:27:28 +08:00
科技lion
1bae6f9df9
Update kejilion.sh 2025-09-10 16:26:55 +08:00
科技lion
2f42e8cc65
Update kejilion_sh_log.txt 2025-09-10 13:52:43 +08:00
科技lion
00e65465bd
Update version and modify DNS handling in kejilion.sh 2025-09-10 13:51:08 +08:00
科技lion
8f2fa2fb25
Update kejilion.sh 2025-09-10 13:50:27 +08:00
7 changed files with 474 additions and 72 deletions

View file

@ -1,5 +1,5 @@
#!/bin/bash
sh_v="4.1.3"
sh_v="4.1.4"


gl_hui='\e[37m'
@ -4334,9 +4334,11 @@ set_dns() {

ip_address

chattr -i /etc/resolv.conf
rm /etc/resolv.conf
touch /etc/resolv.conf


if [ -n "$ipv4_address" ]; then
echo "nameserver $dns1_ipv4" >> /etc/resolv.conf
echo "nameserver $dns2_ipv4" >> /etc/resolv.conf
@ -4347,6 +4349,8 @@ if [ -n "$ipv6_address" ]; then
echo "nameserver $dns2_ipv6" >> /etc/resolv.conf
fi

chattr +i /etc/resolv.conf

}


@ -4391,7 +4395,9 @@ while true; do
;;
3)
install nano
chattr -i /etc/resolv.conf
nano /etc/resolv.conf
chattr +i /etc/resolv.conf
send_stats "手动编辑DNS配置"
;;
*)
@ -8890,6 +8896,7 @@ while true; do
echo -e "${gl_kjlan}93. ${color93}Dufs极简静态文件服务器 ${gl_kjlan}94. ${color94}Gopeed高速下载工具"
echo -e "${gl_kjlan}95. ${color95}paperless文档管理平台 ${gl_kjlan}96. ${color96}2FAuth自托管二步验证器"
echo -e "${gl_kjlan}97. ${color97}WireGuard组网(服务端) ${gl_kjlan}98. ${color98}WireGuard组网(客户端)"
echo -e "${gl_kjlan}99. ${color99}DSM群晖虚拟机"
echo -e "${gl_kjlan}------------------------"
echo -e "${gl_kjlan}b. ${gl_bai}备份全部应用数据 ${gl_kjlan}r. ${gl_bai}还原全部应用数据"
echo -e "${gl_kjlan}------------------------"
@ -11816,16 +11823,16 @@ while true; do
mkdir -p /home/docker/2fauth/data
chmod -R 777 /home/docker/2fauth/
cd /home/docker/2fauth

curl -o /home/docker/2fauth/docker-compose.yml ${gh_proxy}raw.githubusercontent.com/kejilion/docker/main/2fauth-docker-compose.yml

sed -i "s/8000:8000/${docker_port}:8000/g" /home/docker/2fauth/docker-compose.yml
sed -i "s/yuming.com/${yuming}/g" /home/docker/2fauth/docker-compose.yml
sed -i "s/yuming.com/${yuming}/g" /home/docker/2fauth/docker-compose.yml
cd /home/docker/2fauth
docker compose up -d

ldnmp_Proxy ${yuming} 127.0.0.1 ${docker_port}
block_container_port "$docker_name" "$ipv4_address"
block_container_port "$docker_name" "$ipv4_address"

clear
echo "已经安装完成"
@ -12028,6 +12035,64 @@ while true; do
;;


99|dsm)

local app_id="99"

local app_name="dsm群晖虚拟机"
local app_text="Docker容器中的虚拟DSM"
local app_url="官网: https://github.com/vdsm/virtual-dsm"
local docker_name="dsm"
local docker_port="8099"
local app_size="16"

docker_app_install() {

read -e -p "设置 CPU 核数 (默认 2): " CPU_CORES
local CPU_CORES=${CPU_CORES:-2}

read -e -p "设置内存大小 (默认 4G): " RAM_SIZE
local RAM_SIZE=${RAM_SIZE:-4}

mkdir -p /home/docker/dsm
mkdir -p /home/docker/dsm/dev
chmod -R 777 /home/docker/dsm/
cd /home/docker/dsm

curl -o /home/docker/dsm/docker-compose.yml ${gh_proxy}raw.githubusercontent.com/kejilion/docker/main/dsm-docker-compose.yml

sed -i "s/5000:5000/${docker_port}:5000/g" /home/docker/dsm/docker-compose.yml
sed -i "s|CPU_CORES: "2"|CPU_CORES: "${CPU_CORES}"|g" /home/docker/dsm/docker-compose.yml
sed -i "s|RAM_SIZE: "2G"|RAM_SIZE: "${RAM_SIZE}G"|g" /home/docker/dsm/docker-compose.yml
cd /home/docker/dsm
docker compose up -d

clear
echo "已经安装完成"
check_docker_app_ip
}


docker_app_update() {
cd /home/docker/dsm/ && docker compose down --rmi all
docker_app_install
}


docker_app_uninstall() {
cd /home/docker/dsm/ && docker compose down --rmi all
rm -rf /home/docker/dsm
echo "应用已卸载"
}

docker_app_plus

;;






b)
clear

View file

@ -1,5 +1,5 @@
#!/bin/bash
sh_v="4.1.3"
sh_v="4.1.4"


gl_hui='\e[37m'
@ -1560,7 +1560,7 @@ fi

add_yuming() {
ip_address
echo -e "First resolve the domain name to the native IP:${gl_huang}$ipv4_address $ipv6_address${gl_bai}"
echo -e "First resolve the domain name to the local IP:${gl_huang}$ipv4_address $ipv6_address${gl_bai}"
read -e -p "Please enter your IP or the resolved domain name:" yuming
}

@ -1742,7 +1742,7 @@ nginx_waf() {
wget -O /home/web/nginx.conf "${gh_proxy}raw.githubusercontent.com/kejilion/nginx/main/nginx10.conf"
fi

# Decide to turn on or off WAF according to mode parameters
# Decide to turn on or off WAF according to the mode parameter
if [ "$mode" == "on" ]; then
# Turn on WAF: Remove comments
sed -i 's|# load_module /etc/nginx/modules/ngx_http_modsecurity_module.so;|load_module /etc/nginx/modules/ngx_http_modsecurity_module.so;|' /home/web/nginx.conf > /dev/null 2>&1
@ -2123,7 +2123,7 @@ web_security() {

22)
send_stats "High load on 5 seconds shield"
echo -e "${gl_huang}The website automatically detects every 5 minutes. When it reaches the detection of a high load, the shield will be automatically turned on, and the low load will be automatically turned off for 5 seconds.${gl_bai}"
echo -e "${gl_huang}The website automatically detects every 5 minutes. When high load is detected, the shield will be automatically turned on, and low load will be automatically turned off for 5 seconds.${gl_bai}"
echo "--------------"
echo "Get CF parameters:"
echo -e "Go to the upper right corner of the cf background, select the API token on the left, and obtain it${gl_huang}Global API Key${gl_bai}"
@ -4334,9 +4334,11 @@ set_dns() {

ip_address

chattr -i /etc/resolv.conf
rm /etc/resolv.conf
touch /etc/resolv.conf


if [ -n "$ipv4_address" ]; then
echo "nameserver $dns1_ipv4" >> /etc/resolv.conf
echo "nameserver $dns2_ipv4" >> /etc/resolv.conf
@ -4347,6 +4349,8 @@ if [ -n "$ipv6_address" ]; then
echo "nameserver $dns2_ipv6" >> /etc/resolv.conf
fi

chattr +i /etc/resolv.conf

}


@ -4391,7 +4395,9 @@ while true; do
;;
3)
install nano
chattr -i /etc/resolv.conf
nano /etc/resolv.conf
chattr +i /etc/resolv.conf
send_stats "Manually edit DNS configuration"
;;
*)
@ -4526,7 +4532,7 @@ sed -i 's/^\s*#\?\s*PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_confi
sed -i 's/^\s*#\?\s*PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config;
rm -rf /etc/ssh/sshd_config.d/* /etc/ssh/ssh_config.d/*
restart_ssh
echo -e "${gl_lv}ROOT login settings are complete!${gl_bai}"
echo -e "${gl_lv}ROOT login is set up!${gl_bai}"

}

@ -5004,7 +5010,7 @@ elrepo_install() {
linux_Settings
fi
# Print detected operating system information
echo "Detected operating systems:$os_name $os_version"
echo "Operating system detected:$os_name $os_version"
# Install the corresponding ELRepo warehouse configuration according to the system version
if [[ "$os_version" == 8 ]]; then
echo "Install ELRepo repository configuration (version 8)..."
@ -8866,7 +8872,7 @@ while true; do
echo -e "${gl_kjlan}53. ${color53}llama3 chat AI model${gl_kjlan}54. ${color54}AMH Host Website Building Management Panel"
echo -e "${gl_kjlan}55. ${color55}FRP intranet penetration (server side)${gl_huang}★${gl_bai} ${gl_kjlan}56. ${color56}FRP intranet penetration (client)${gl_huang}★${gl_bai}"
echo -e "${gl_kjlan}57. ${color57}Deepseek chat AI big model${gl_kjlan}58. ${color58}Dify big model knowledge base${gl_huang}★${gl_bai}"
echo -e "${gl_kjlan}59. ${color59}NewAPI Big Model Asset Management${gl_kjlan}60. ${color60}JumpServer open source bastion machine"
echo -e "${gl_kjlan}59. ${color59}NewAPI big model asset management${gl_kjlan}60. ${color60}JumpServer open source bastion machine"
echo -e "${gl_kjlan}------------------------"
echo -e "${gl_kjlan}61. ${color61}Online translation server${gl_kjlan}62. ${color62}RAGFlow big model knowledge base"
echo -e "${gl_kjlan}63. ${color63}OpenWebUI self-hosted AI platform${gl_huang}★${gl_bai} ${gl_kjlan}64. ${color64}it-tools toolbox"
@ -8890,6 +8896,7 @@ while true; do
echo -e "${gl_kjlan}93. ${color93}Dufs minimalist static file server${gl_kjlan}94. ${color94}Gopeed high-speed download tool"
echo -e "${gl_kjlan}95. ${color95}paperless document management platform${gl_kjlan}96. ${color96}2FAuth self-hosted two-step validator"
echo -e "${gl_kjlan}97. ${color97}WireGuard networking (server side)${gl_kjlan}98. ${color98}WireGuard networking (client)"
echo -e "${gl_kjlan}99. ${color99}DSM Synology Virtual Machine"
echo -e "${gl_kjlan}------------------------"
echo -e "${gl_kjlan}b. ${gl_bai}Back up all application data${gl_kjlan}r. ${gl_bai}Restore all application data"
echo -e "${gl_kjlan}------------------------"
@ -11816,16 +11823,16 @@ while true; do
mkdir -p /home/docker/2fauth/data
chmod -R 777 /home/docker/2fauth/
cd /home/docker/2fauth

curl -o /home/docker/2fauth/docker-compose.yml ${gh_proxy}raw.githubusercontent.com/kejilion/docker/main/2fauth-docker-compose.yml

sed -i "s/8000:8000/${docker_port}:8000/g" /home/docker/2fauth/docker-compose.yml
sed -i "s/yuming.com/${yuming}/g" /home/docker/2fauth/docker-compose.yml
sed -i "s/yuming.com/${yuming}/g" /home/docker/2fauth/docker-compose.yml
cd /home/docker/2fauth
docker compose up -d

ldnmp_Proxy ${yuming} 127.0.0.1 ${docker_port}
block_container_port "$docker_name" "$ipv4_address"
block_container_port "$docker_name" "$ipv4_address"

clear
echo "Installed"
@ -11939,7 +11946,7 @@ while true; do
echo -e "${gl_huang}All client configuration codes:${gl_bai}"
docker exec wireguard sh -c 'for d in /config/peer_*; do echo "# $(basename $d) "; cat $d/*.conf; echo; done'
sleep 2
echo -e "${gl_lv}${COUNT}All outputs are all configured by each client, and the usage method is as follows:${gl_bai}"
echo -e "${gl_lv}${COUNT}All outputs are provided by each client. The usage method is as follows:${gl_bai}"
echo -e "${gl_lv}1. Download wg's APP on your mobile phone, scan the QR code above to quickly connect to the network${gl_bai}"
echo -e "${gl_lv}2. Download the Windows client and copy the configuration code to connect to the network.${gl_bai}"
echo -e "${gl_lv}3. Linux uses scripts to deploy WG clients and copy configuration code to connect to the network.${gl_bai}"
@ -11993,7 +12000,7 @@ while true; do
fi
done

# Write to configuration file
# Write to the configuration file
echo "$input" > "$CONFIG_FILE"

echo "Client configuration has been saved to$CONFIG_FILE"
@ -12028,6 +12035,64 @@ while true; do
;;


99|dsm)

local app_id="99"

local app_name="dsm群晖虚拟机"
local app_text="Docker容器中的虚拟DSM"
local app_url="官网: https://github.com/vdsm/virtual-dsm"
local docker_name="dsm"
local docker_port="8099"
local app_size="16"

docker_app_install() {

read -e -p "Set the number of CPU cores (default 2):" CPU_CORES
local CPU_CORES=${CPU_CORES:-2}

read -e -p "Set the memory size (default 4G):" RAM_SIZE
local RAM_SIZE=${RAM_SIZE:-4}

mkdir -p /home/docker/dsm
mkdir -p /home/docker/dsm/dev
chmod -R 777 /home/docker/dsm/
cd /home/docker/dsm

curl -o /home/docker/dsm/docker-compose.yml ${gh_proxy}raw.githubusercontent.com/kejilion/docker/main/dsm-docker-compose.yml

sed -i "s/5000:5000/${docker_port}:5000/g" /home/docker/dsm/docker-compose.yml
sed -i "s|CPU_CORES: "2"|CPU_CORES: "${CPU_CORES}"|g" /home/docker/dsm/docker-compose.yml
sed -i "s|RAM_SIZE: "2G"|RAM_SIZE: "${RAM_SIZE}G"|g" /home/docker/dsm/docker-compose.yml
cd /home/docker/dsm
docker compose up -d

clear
echo "Installed"
check_docker_app_ip
}


docker_app_update() {
cd /home/docker/dsm/ && docker compose down --rmi all
docker_app_install
}


docker_app_uninstall() {
cd /home/docker/dsm/ && docker compose down --rmi all
rm -rf /home/docker/dsm
echo "The app has been uninstalled"
}

docker_app_plus

;;






b)
clear
@ -12319,7 +12384,7 @@ linux_Settings() {
echo -e "${gl_kjlan}17. ${gl_bai}Firewall Advanced Manager${gl_kjlan}18. ${gl_bai}Modify the host name"
echo -e "${gl_kjlan}19. ${gl_bai}Switch system update source${gl_kjlan}20. ${gl_bai}Timing task management"
echo -e "${gl_kjlan}------------------------"
echo -e "${gl_kjlan}21. ${gl_bai}Native host analysis${gl_kjlan}22. ${gl_bai}SSH Defense Program"
echo -e "${gl_kjlan}21. ${gl_bai}Native host parsing${gl_kjlan}22. ${gl_bai}SSH Defense Program"
echo -e "${gl_kjlan}23. ${gl_bai}Automatic shutdown of current limit${gl_kjlan}24. ${gl_bai}ROOT private key login mode"
echo -e "${gl_kjlan}25. ${gl_bai}TG-bot system monitoring and early warning${gl_kjlan}26. ${gl_bai}Fix OpenSSH high-risk vulnerabilities"
echo -e "${gl_kjlan}27. ${gl_bai}Red Hat Linux kernel upgrade${gl_kjlan}28. ${gl_bai}Optimization of kernel parameters in Linux system${gl_huang}★${gl_bai}"
@ -12350,7 +12415,7 @@ linux_Settings() {
fi
find /usr/local/bin/ -type l -exec bash -c 'test "$(readlink -f {})" = "/usr/local/bin/k" && rm -f {}' \;
ln -s /usr/local/bin/k /usr/local/bin/$kuaijiejian
echo "Shortcut keys have been set"
echo "Shortcut keys are set"
send_stats "Script shortcut keys have been set"
break_end
linux_Settings
@ -12542,13 +12607,14 @@ EOF
clear
echo "Set v4/v6 priority"
echo "------------------------"
local ipv6_disabled=$(sysctl -n net.ipv6.conf.all.disable_ipv6)

if [ "$ipv6_disabled" -eq 1 ]; then

if grep -Eq '^\s*precedence\s+::ffff:0:0/96\s+100\s*$' /etc/gai.conf 2>/dev/null; then
echo -e "Current network priority settings:${gl_huang}IPv4${gl_bai}priority"
else
echo -e "Current network priority settings:${gl_huang}IPv6${gl_bai}priority"
fi

echo ""
echo "------------------------"
echo "1. IPv4 priority 2. IPv6 priority 3. IPv6 repair tool"
@ -12559,12 +12625,13 @@ EOF

case $choice in
1)
sysctl -w net.ipv6.conf.all.disable_ipv6=1 > /dev/null 2>&1
grep -q '^precedence ::ffff:0:0/96 100' /etc/gai.conf 2>/dev/null \
|| echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf
echo "Switched to IPv4 priority"
send_stats "Switched to IPv4 priority"
;;
2)
sysctl -w net.ipv6.conf.all.disable_ipv6=0 > /dev/null 2>&1
rm -f /etc/gai.conf
echo "Switched to IPv6 priority"
send_stats "Switched to IPv6 priority"
;;
@ -12794,7 +12861,7 @@ EOF
echo "3. Tokyo time in Japan 4. Seoul time in South Korea"
echo "5. Singapore time 6. Kolkata time in India"
echo "7. Dubai time in the UAE 8. Sydney time in Australia"
echo "9. Time in Bangkok, Thailand"
echo "9. Bangkok Time, Thailand"
echo "------------------------"
echo "Europe"
echo "11. London time in the UK 12. Paris time in France"
@ -13020,7 +13087,7 @@ EOF

;;
2)
read -e -p "Please enter the keywords for parsing content that need to be deleted:" delhost
read -e -p "Please enter the keywords of parsing content that need to be deleted:" delhost
sed -i "/$delhost/d" /etc/hosts
send_stats "Local host parsing and deletion"
;;

View file

@ -1,5 +1,5 @@
#!/bin/bash
sh_v="4.1.3"
sh_v="4.1.4"


gl_hui='\e[37m'
@ -1560,7 +1560,7 @@ fi

add_yuming() {
ip_address
echo -e "最初にドメイン名をネイティブIPに解決します。${gl_huang}$ipv4_address $ipv6_address${gl_bai}"
echo -e "最初にドメイン名をローカルIPに解決します。${gl_huang}$ipv4_address $ipv6_address${gl_bai}"
read -e -p "IPまたは解決されたドメイン名を入力してください" yuming
}

@ -1742,7 +1742,7 @@ nginx_waf() {
wget -O /home/web/nginx.conf "${gh_proxy}raw.githubusercontent.com/kejilion/nginx/main/nginx10.conf"
fi

# モードパラメーターに従ってWAFをオンまたはオフにすることを決定します
# モードパラメーターに従ってWAFをオンまたはオフにすることにしました
if [ "$mode" == "on" ]; then
# WAFをオンにしてくださいコメントを削除します
sed -i 's|# load_module /etc/nginx/modules/ngx_http_modsecurity_module.so;|load_module /etc/nginx/modules/ngx_http_modsecurity_module.so;|' /home/web/nginx.conf > /dev/null 2>&1
@ -2123,7 +2123,7 @@ web_security() {

22)
send_stats "5秒シールドでの高負荷"
echo -e "${gl_huang}ウェブサイトは5分ごとに自動的に検出されます。高負荷の検出に達すると、シールドが自動的にオンになり、低負荷が5秒間自動的にオフになります。${gl_bai}"
echo -e "${gl_huang}ウェブサイトは5分ごとに自動的に検出されます。高負荷が検出されると、シールドが自動的にオンになり、低負荷が5秒間自動的にオフになります。${gl_bai}"
echo "--------------"
echo "CFパラメーターを取得します"
echo -e "CFバックグラウンドの右上隅に移動し、左側のAPIトークンを選択して、取得します${gl_huang}Global API Key${gl_bai}"
@ -4334,9 +4334,11 @@ set_dns() {

ip_address

chattr -i /etc/resolv.conf
rm /etc/resolv.conf
touch /etc/resolv.conf


if [ -n "$ipv4_address" ]; then
echo "nameserver $dns1_ipv4" >> /etc/resolv.conf
echo "nameserver $dns2_ipv4" >> /etc/resolv.conf
@ -4347,6 +4349,8 @@ if [ -n "$ipv6_address" ]; then
echo "nameserver $dns2_ipv6" >> /etc/resolv.conf
fi

chattr +i /etc/resolv.conf

}


@ -4391,7 +4395,9 @@ while true; do
;;
3)
install nano
chattr -i /etc/resolv.conf
nano /etc/resolv.conf
chattr +i /etc/resolv.conf
send_stats "DNS構成を手動で編集します"
;;
*)
@ -4526,7 +4532,7 @@ sed -i 's/^\s*#\?\s*PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_confi
sed -i 's/^\s*#\?\s*PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config;
rm -rf /etc/ssh/sshd_config.d/* /etc/ssh/ssh_config.d/*
restart_ssh
echo -e "${gl_lv}ルートログイン設定が完了しました!${gl_bai}"
echo -e "${gl_lv}ルートログインがセットアップされます!${gl_bai}"

}

@ -8227,7 +8233,7 @@ linux_ldnmp() {
clear
echo -e "[${gl_huang}3/6${gl_bai}] PHPバージョンを選択してください"
echo "-------------"
read -e -p "1。PHPの最新バージョン| 2。Php7.4" pho_v
read -e -p "1. The latest version of php | 2。Php7.4" pho_v
case "$pho_v" in
1)
sed -i "s#php:9000#php:9000#g" /home/web/conf.d/$yuming.conf
@ -8274,7 +8280,7 @@ linux_ldnmp() {
;;
2)
echo "データベースのバックアップは、.GZ-endコンプレッションパッケージである必要があります。 Pagoda/1panelのバックアップデータのインポートをサポートするために、/home/directoryに入れてください。"
read -e -p "ダウンロードリンクを入力して、バックアップデータをリモートでダウンロードすることもできます。 Enterを直接押して、リモートダウンロードをスキップします" url_download_db
read -e -p "ダウンロードリンクを入力して、バックアップデータをリモートでダウンロードすることもできます。 Enterを直接押してリモートダウンロードをスキップします。" url_download_db

cd /home/
if [ -n "$url_download_db" ]; then
@ -8890,6 +8896,7 @@ while true; do
echo -e "${gl_kjlan}93. ${color93}DUFS Minimalist Static File Server${gl_kjlan}94. ${color94}ゴープ高速ダウンロードツール"
echo -e "${gl_kjlan}95. ${color95}ペーパーレスドキュメント管理プラットフォーム${gl_kjlan}96. ${color96}2Fauth自己ホストの2段階検証装置"
echo -e "${gl_kjlan}97. ${color97}ワイヤガードネットワーキング(サーバー側)${gl_kjlan}98. ${color98}ワイヤガードネットワーキング(クライアント)"
echo -e "${gl_kjlan}99. ${color99}DSM Synology仮想マシン"
echo -e "${gl_kjlan}------------------------"
echo -e "${gl_kjlan}b. ${gl_bai}すべてのアプリケーションデータをバックアップします${gl_kjlan}r. ${gl_bai}すべてのアプリケーションデータを復元します"
echo -e "${gl_kjlan}------------------------"
@ -11816,16 +11823,16 @@ while true; do
mkdir -p /home/docker/2fauth/data
chmod -R 777 /home/docker/2fauth/
cd /home/docker/2fauth

curl -o /home/docker/2fauth/docker-compose.yml ${gh_proxy}raw.githubusercontent.com/kejilion/docker/main/2fauth-docker-compose.yml

sed -i "s/8000:8000/${docker_port}:8000/g" /home/docker/2fauth/docker-compose.yml
sed -i "s/yuming.com/${yuming}/g" /home/docker/2fauth/docker-compose.yml
sed -i "s/yuming.com/${yuming}/g" /home/docker/2fauth/docker-compose.yml
cd /home/docker/2fauth
docker compose up -d

ldnmp_Proxy ${yuming} 127.0.0.1 ${docker_port}
block_container_port "$docker_name" "$ipv4_address"
block_container_port "$docker_name" "$ipv4_address"

clear
echo "インストール"
@ -11939,7 +11946,7 @@ while true; do
echo -e "${gl_huang}すべてのクライアント構成コード:${gl_bai}"
docker exec wireguard sh -c 'for d in /config/peer_*; do echo "# $(basename $d) "; cat $d/*.conf; echo; done'
sleep 2
echo -e "${gl_lv}${COUNT}すべての出力はすべて各クライアントによって構成されており、使用方法は次のとおりです。${gl_bai}"
echo -e "${gl_lv}${COUNT}すべての出力は各クライアントによって提供されます。使用方法は次のとおりです。${gl_bai}"
echo -e "${gl_lv}1.携帯電話にWGのアプリをダウンロードして、上のQRコードをスキャンしてネットワークにすばやく接続します${gl_bai}"
echo -e "${gl_lv}2。Windowsクライアントをダウンロードし、構成コードをコピーしてネットワークに接続します。${gl_bai}"
echo -e "${gl_lv}3。Linuxはスクリプトを使用してWGクライアントを展開し、構成コードをコピーしてネットワークに接続します。${gl_bai}"
@ -12028,6 +12035,64 @@ while true; do
;;


99|dsm)

local app_id="99"

local app_name="dsm群晖虚拟机"
local app_text="Docker容器中的虚拟DSM"
local app_url="官网: https://github.com/vdsm/virtual-dsm"
local docker_name="dsm"
local docker_port="8099"
local app_size="16"

docker_app_install() {

read -e -p "CPUコアの数を設定しますデフォルト2" CPU_CORES
local CPU_CORES=${CPU_CORES:-2}

read -e -p "メモリサイズを設定しますデフォルト4G" RAM_SIZE
local RAM_SIZE=${RAM_SIZE:-4}

mkdir -p /home/docker/dsm
mkdir -p /home/docker/dsm/dev
chmod -R 777 /home/docker/dsm/
cd /home/docker/dsm

curl -o /home/docker/dsm/docker-compose.yml ${gh_proxy}raw.githubusercontent.com/kejilion/docker/main/dsm-docker-compose.yml

sed -i "s/5000:5000/${docker_port}:5000/g" /home/docker/dsm/docker-compose.yml
sed -i "s|CPU_CORES: "2"|CPU_CORES: "${CPU_CORES}"|g" /home/docker/dsm/docker-compose.yml
sed -i "s|RAM_SIZE: "2G"|RAM_SIZE: "${RAM_SIZE}G"|g" /home/docker/dsm/docker-compose.yml
cd /home/docker/dsm
docker compose up -d

clear
echo "インストール"
check_docker_app_ip
}


docker_app_update() {
cd /home/docker/dsm/ && docker compose down --rmi all
docker_app_install
}


docker_app_uninstall() {
cd /home/docker/dsm/ && docker compose down --rmi all
rm -rf /home/docker/dsm
echo "アプリはアンインストールされています"
}

docker_app_plus

;;






b)
clear
@ -12542,13 +12607,14 @@ EOF
clear
echo "V4/V6の優先度を設定します"
echo "------------------------"
local ipv6_disabled=$(sysctl -n net.ipv6.conf.all.disable_ipv6)

if [ "$ipv6_disabled" -eq 1 ]; then

if grep -Eq '^\s*precedence\s+::ffff:0:0/96\s+100\s*$' /etc/gai.conf 2>/dev/null; then
echo -e "現在のネットワーク優先設定:${gl_huang}IPv4${gl_bai}優先度"
else
echo -e "現在のネットワーク優先設定:${gl_huang}IPv6${gl_bai}優先度"
fi

echo ""
echo "------------------------"
echo "1。IPv4優先度2。IPv6優先度3。IPv6修理ツール"
@ -12559,12 +12625,13 @@ EOF

case $choice in
1)
sysctl -w net.ipv6.conf.all.disable_ipv6=1 > /dev/null 2>&1
grep -q '^precedence ::ffff:0:0/96 100' /etc/gai.conf 2>/dev/null \
|| echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf
echo "IPv4の優先度に切り替えました"
send_stats "IPv4の優先度に切り替えました"
;;
2)
sysctl -w net.ipv6.conf.all.disable_ipv6=0 > /dev/null 2>&1
rm -f /etc/gai.conf
echo "IPv6の優先度に切り替えました"
send_stats "IPv6の優先度に切り替えました"
;;
@ -12794,7 +12861,7 @@ EOF
echo "3。日本の東京時間4。韓国のソウル時間"
echo "5。シンガポール時間6。インドのコルカタ時間"
echo "7。アラブ首長国連邦のドバイ時間8。オーストラリアのシドニー時間"
echo "9。タイのバンコクでの時間"
echo "9。バンコク・タイム、タイ"
echo "------------------------"
echo "ヨーロッパ"
echo "11。英国のロンドン時間12。パリの時間フランスの時間"
@ -13020,7 +13087,7 @@ EOF

;;
2)
read -e -p "削除する必要があるコンテンツを解析するために、キーワードを入力してください。" delhost
read -e -p "削除する必要があるコンテンツの解析のキーワードを入力してください。" delhost
sed -i "/$delhost/d" /etc/hosts
send_stats "ローカルホストの解析と削除"
;;
@ -13221,7 +13288,7 @@ EOF
echo "TG-BOTモニタリングと早期警告機能"
echo "ビデオの紹介https//youtu.be/vll-eb3z_ty"
echo "------------------------------------------------"
echo "ネイティブCPU、メモリ、ハードディスク、トラフィック、およびSSHログインのリアルタイム監視と早期警告を実現するために、TG Robot APIとユーザーIDを構成する必要があります。"
echo "ネイティブCPU、メモリ、ハードディスク、トラフィック、SSHログインのリアルタイム監視と早期警告を実現するために、TG Robot APIとユーザーIDを構成する必要があります。"
echo "しきい値に達した後、ユーザーはユーザーに送信されます"
echo -e "${gl_hui}- トラフィックに関しては、サーバーの再起動が再計算されます -${gl_bai}"
read -e -p "必ず続行しますか? y/n" choice

View file

@ -1,5 +1,5 @@
#!/bin/bash
sh_v="4.1.3"
sh_v="4.1.4"


gl_hui='\e[37m'
@ -4334,9 +4334,11 @@ set_dns() {

ip_address

chattr -i /etc/resolv.conf
rm /etc/resolv.conf
touch /etc/resolv.conf


if [ -n "$ipv4_address" ]; then
echo "nameserver $dns1_ipv4" >> /etc/resolv.conf
echo "nameserver $dns2_ipv4" >> /etc/resolv.conf
@ -4347,6 +4349,8 @@ if [ -n "$ipv6_address" ]; then
echo "nameserver $dns2_ipv6" >> /etc/resolv.conf
fi

chattr +i /etc/resolv.conf

}


@ -4391,7 +4395,9 @@ while true; do
;;
3)
install nano
chattr -i /etc/resolv.conf
nano /etc/resolv.conf
chattr +i /etc/resolv.conf
send_stats "手动编辑DNS配置"
;;
*)
@ -8890,6 +8896,7 @@ while true; do
echo -e "${gl_kjlan}93. ${color93}Dufs极简静态文件服务器 ${gl_kjlan}94. ${color94}Gopeed高速下载工具"
echo -e "${gl_kjlan}95. ${color95}paperless文档管理平台 ${gl_kjlan}96. ${color96}2FAuth自托管二步验证器"
echo -e "${gl_kjlan}97. ${color97}WireGuard组网(服务端) ${gl_kjlan}98. ${color98}WireGuard组网(客户端)"
echo -e "${gl_kjlan}99. ${color99}DSM群晖虚拟机"
echo -e "${gl_kjlan}------------------------"
echo -e "${gl_kjlan}b. ${gl_bai}备份全部应用数据 ${gl_kjlan}r. ${gl_bai}还原全部应用数据"
echo -e "${gl_kjlan}------------------------"
@ -11816,16 +11823,16 @@ while true; do
mkdir -p /home/docker/2fauth/data
chmod -R 777 /home/docker/2fauth/
cd /home/docker/2fauth

curl -o /home/docker/2fauth/docker-compose.yml ${gh_proxy}raw.githubusercontent.com/kejilion/docker/main/2fauth-docker-compose.yml

sed -i "s/8000:8000/${docker_port}:8000/g" /home/docker/2fauth/docker-compose.yml
sed -i "s/yuming.com/${yuming}/g" /home/docker/2fauth/docker-compose.yml
sed -i "s/yuming.com/${yuming}/g" /home/docker/2fauth/docker-compose.yml
cd /home/docker/2fauth
docker compose up -d

ldnmp_Proxy ${yuming} 127.0.0.1 ${docker_port}
block_container_port "$docker_name" "$ipv4_address"
block_container_port "$docker_name" "$ipv4_address"

clear
echo "已经安装完成"
@ -12028,6 +12035,64 @@ while true; do
;;


99|dsm)

local app_id="99"

local app_name="dsm群晖虚拟机"
local app_text="Docker容器中的虚拟DSM"
local app_url="官网: https://github.com/vdsm/virtual-dsm"
local docker_name="dsm"
local docker_port="8099"
local app_size="16"

docker_app_install() {

read -e -p "设置 CPU 核数 (默认 2): " CPU_CORES
local CPU_CORES=${CPU_CORES:-2}

read -e -p "设置内存大小 (默认 4G): " RAM_SIZE
local RAM_SIZE=${RAM_SIZE:-4}

mkdir -p /home/docker/dsm
mkdir -p /home/docker/dsm/dev
chmod -R 777 /home/docker/dsm/
cd /home/docker/dsm

curl -o /home/docker/dsm/docker-compose.yml ${gh_proxy}raw.githubusercontent.com/kejilion/docker/main/dsm-docker-compose.yml

sed -i "s/5000:5000/${docker_port}:5000/g" /home/docker/dsm/docker-compose.yml
sed -i "s|CPU_CORES: "2"|CPU_CORES: "${CPU_CORES}"|g" /home/docker/dsm/docker-compose.yml
sed -i "s|RAM_SIZE: "2G"|RAM_SIZE: "${RAM_SIZE}G"|g" /home/docker/dsm/docker-compose.yml
cd /home/docker/dsm
docker compose up -d

clear
echo "已经安装完成"
check_docker_app_ip
}


docker_app_update() {
cd /home/docker/dsm/ && docker compose down --rmi all
docker_app_install
}


docker_app_uninstall() {
cd /home/docker/dsm/ && docker compose down --rmi all
rm -rf /home/docker/dsm
echo "应用已卸载"
}

docker_app_plus

;;






b)
clear

View file

@ -1298,4 +1298,8 @@ docker管理增加全局备份还原迁移功能。
应用市场新增2FAuth自托管二步验证器的安装及使用。
系统工具IPV4和IPV6优先进行优化不再粗暴关闭V6来实现V4优先了。
------------------------
2025-09-10 v4.1.4
系统工具中DNS优化支持文件锁定功能解决重启后文件复原问题。
应用市场新增了DSM群晖虚拟机的安装及使用。
------------------------


View file

@ -1,5 +1,5 @@
#!/bin/bash
sh_v="4.1.3"
sh_v="4.1.4"


gl_hui='\e[37m'
@ -1560,7 +1560,7 @@ fi

add_yuming() {
ip_address
echo -e "먼저 도메인 이름을 기본 IP로 해결합니다.${gl_huang}$ipv4_address $ipv6_address${gl_bai}"
echo -e "먼저 도메인 이름을 로컬 IP로 해결합니다.${gl_huang}$ipv4_address $ipv6_address${gl_bai}"
read -e -p "IP 또는 해결 된 도메인 이름을 입력하십시오." yuming
}

@ -2123,7 +2123,7 @@ web_security() {

22)
send_stats "5 초 방패의 높은 하중"
echo -e "${gl_huang}웹 사이트는 5 분마다 자동으로 감지됩니다. 높은 하중의 감지에 도달하면 방패가 자동으로 켜지고 낮은 부하가 자동으로 5 초 동안 꺼집니다.${gl_bai}"
echo -e "${gl_huang}웹 사이트는 5 분마다 자동으로 감지됩니다. 높은 부하가 감지되면 방패가 자동으로 켜지고 5 초 동안 낮은 부하가 자동으로 꺼집니다.${gl_bai}"
echo "--------------"
echo "CF 매개 변수 가져 오기 :"
echo -e "CF 배경의 오른쪽 상단 모서리로 이동하여 왼쪽의 API 토큰을 선택하고 얻습니다.${gl_huang}Global API Key${gl_bai}"
@ -4334,9 +4334,11 @@ set_dns() {

ip_address

chattr -i /etc/resolv.conf
rm /etc/resolv.conf
touch /etc/resolv.conf


if [ -n "$ipv4_address" ]; then
echo "nameserver $dns1_ipv4" >> /etc/resolv.conf
echo "nameserver $dns2_ipv4" >> /etc/resolv.conf
@ -4347,6 +4349,8 @@ if [ -n "$ipv6_address" ]; then
echo "nameserver $dns2_ipv6" >> /etc/resolv.conf
fi

chattr +i /etc/resolv.conf

}


@ -4391,7 +4395,9 @@ while true; do
;;
3)
install nano
chattr -i /etc/resolv.conf
nano /etc/resolv.conf
chattr +i /etc/resolv.conf
send_stats "DNS 구성을 수동으로 편집합니다"
;;
*)
@ -4526,7 +4532,7 @@ sed -i 's/^\s*#\?\s*PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_confi
sed -i 's/^\s*#\?\s*PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config;
rm -rf /etc/ssh/sshd_config.d/* /etc/ssh/ssh_config.d/*
restart_ssh
echo -e "${gl_lv}루트 로그인 설정이 완료되었습니다!${gl_bai}"
echo -e "${gl_lv}루트 로그인이 설정되었습니다!${gl_bai}"

}

@ -5004,7 +5010,7 @@ elrepo_install() {
linux_Settings
fi
# 감지 된 운영 체제 정보를 인쇄합니다
echo "감지 된 운영 체제 :$os_name $os_version"
echo "운영 체제 감지 :$os_name $os_version"
# 시스템 버전에 따라 해당 Elrepo 창고 구성을 설치하십시오.
if [[ "$os_version" == 8 ]]; then
echo "Elrepo 저장소 구성 (버전 8)을 설치하십시오 ..."
@ -8890,6 +8896,7 @@ while true; do
echo -e "${gl_kjlan}93. ${color93}DUFS 미니멀리스트 정적 파일 서버${gl_kjlan}94. ${color94}고속 다운로드 도구"
echo -e "${gl_kjlan}95. ${color95}종이없는 문서 관리 플랫폼${gl_kjlan}96. ${color96}2FAUTH 자체 호스팅 2 단계 유효성 검사기"
echo -e "${gl_kjlan}97. ${color97}와이어 가드 네트워킹 (서버 측)${gl_kjlan}98. ${color98}와이어 가드 네트워킹 (클라이언트)"
echo -e "${gl_kjlan}99. ${color99}DSM Synology Virtual Machine"
echo -e "${gl_kjlan}------------------------"
echo -e "${gl_kjlan}b. ${gl_bai}모든 응용 프로그램 데이터를 백업합니다${gl_kjlan}r. ${gl_bai}모든 응용 프로그램 데이터를 복원하십시오"
echo -e "${gl_kjlan}------------------------"
@ -11816,16 +11823,16 @@ while true; do
mkdir -p /home/docker/2fauth/data
chmod -R 777 /home/docker/2fauth/
cd /home/docker/2fauth

curl -o /home/docker/2fauth/docker-compose.yml ${gh_proxy}raw.githubusercontent.com/kejilion/docker/main/2fauth-docker-compose.yml

sed -i "s/8000:8000/${docker_port}:8000/g" /home/docker/2fauth/docker-compose.yml
sed -i "s/yuming.com/${yuming}/g" /home/docker/2fauth/docker-compose.yml
sed -i "s/yuming.com/${yuming}/g" /home/docker/2fauth/docker-compose.yml
cd /home/docker/2fauth
docker compose up -d

ldnmp_Proxy ${yuming} 127.0.0.1 ${docker_port}
block_container_port "$docker_name" "$ipv4_address"
block_container_port "$docker_name" "$ipv4_address"

clear
echo "설치"
@ -11939,7 +11946,7 @@ while true; do
echo -e "${gl_huang}모든 클라이언트 구성 코드 :${gl_bai}"
docker exec wireguard sh -c 'for d in /config/peer_*; do echo "# $(basename $d) "; cat $d/*.conf; echo; done'
sleep 2
echo -e "${gl_lv}${COUNT}모든 출력은 모두 각 클라이언트에 의해 구성되며 사용 방법은 다음과 같습니다.${gl_bai}"
echo -e "${gl_lv}${COUNT}모든 출력은 각 클라이언트가 제공합니다. 사용법은 다음과 같습니다.${gl_bai}"
echo -e "${gl_lv}1. 휴대 전화에서 WG의 앱을 다운로드하고 위의 QR 코드를 스캔하여 네트워크에 빠르게 연결하십시오.${gl_bai}"
echo -e "${gl_lv}2. Windows 클라이언트를 다운로드하고 구성 코드를 복사하여 네트워크에 연결하십시오.${gl_bai}"
echo -e "${gl_lv}3. Linux는 스크립트를 사용하여 WG 클라이언트를 배포하고 구성 코드를 복사하여 네트워크에 연결합니다.${gl_bai}"
@ -11993,7 +12000,7 @@ while true; do
fi
done

# 구성 파일에 씁니다
# 구성 파일에 쓰십시오
echo "$input" > "$CONFIG_FILE"

echo "클라이언트 구성이 저장되었습니다$CONFIG_FILE"
@ -12028,6 +12035,64 @@ while true; do
;;


99|dsm)

local app_id="99"

local app_name="dsm群晖虚拟机"
local app_text="Docker容器中的虚拟DSM"
local app_url="官网: https://github.com/vdsm/virtual-dsm"
local docker_name="dsm"
local docker_port="8099"
local app_size="16"

docker_app_install() {

read -e -p "CPU 코어 수를 설정 (기본값 2) :" CPU_CORES
local CPU_CORES=${CPU_CORES:-2}

read -e -p "메모리 크기를 설정 (기본 4G) :" RAM_SIZE
local RAM_SIZE=${RAM_SIZE:-4}

mkdir -p /home/docker/dsm
mkdir -p /home/docker/dsm/dev
chmod -R 777 /home/docker/dsm/
cd /home/docker/dsm

curl -o /home/docker/dsm/docker-compose.yml ${gh_proxy}raw.githubusercontent.com/kejilion/docker/main/dsm-docker-compose.yml

sed -i "s/5000:5000/${docker_port}:5000/g" /home/docker/dsm/docker-compose.yml
sed -i "s|CPU_CORES: "2"|CPU_CORES: "${CPU_CORES}"|g" /home/docker/dsm/docker-compose.yml
sed -i "s|RAM_SIZE: "2G"|RAM_SIZE: "${RAM_SIZE}G"|g" /home/docker/dsm/docker-compose.yml
cd /home/docker/dsm
docker compose up -d

clear
echo "설치"
check_docker_app_ip
}


docker_app_update() {
cd /home/docker/dsm/ && docker compose down --rmi all
docker_app_install
}


docker_app_uninstall() {
cd /home/docker/dsm/ && docker compose down --rmi all
rm -rf /home/docker/dsm
echo "앱이 제거되었습니다"
}

docker_app_plus

;;






b)
clear
@ -12319,7 +12384,7 @@ linux_Settings() {
echo -e "${gl_kjlan}17. ${gl_bai}방화벽 고급 관리자${gl_kjlan}18. ${gl_bai}호스트 이름을 수정하십시오"
echo -e "${gl_kjlan}19. ${gl_bai}스위치 시스템 업데이트 소스${gl_kjlan}20. ${gl_bai}타이밍 작업 관리"
echo -e "${gl_kjlan}------------------------"
echo -e "${gl_kjlan}21. ${gl_bai}기본 호스트 분석${gl_kjlan}22. ${gl_bai}SSH 방어 프로그램"
echo -e "${gl_kjlan}21. ${gl_bai}기본 호스트 구문 분석${gl_kjlan}22. ${gl_bai}SSH 방어 프로그램"
echo -e "${gl_kjlan}23. ${gl_bai}현재 한도의 자동 종료${gl_kjlan}24. ${gl_bai}루트 비공개 키 로그인 모드"
echo -e "${gl_kjlan}25. ${gl_bai}TG-BOT 시스템 모니터링 및 조기 경고${gl_kjlan}26. ${gl_bai}OpenSsh 고위험 취약점을 수정하십시오"
echo -e "${gl_kjlan}27. ${gl_bai}Red Hat Linux 커널 업그레이드${gl_kjlan}28. ${gl_bai}Linux 시스템에서 커널 매개 변수의 최적화${gl_huang}★${gl_bai}"
@ -12350,7 +12415,7 @@ linux_Settings() {
fi
find /usr/local/bin/ -type l -exec bash -c 'test "$(readlink -f {})" = "/usr/local/bin/k" && rm -f {}' \;
ln -s /usr/local/bin/k /usr/local/bin/$kuaijiejian
echo "바로 가기 키가 설정되었습니다"
echo "바로 가기 키가 설정되어 있습니다"
send_stats "스크립트 바로 가기 키가 설정되었습니다"
break_end
linux_Settings
@ -12542,13 +12607,14 @@ EOF
clear
echo "V4/V6 우선 순위를 설정하십시오"
echo "------------------------"
local ipv6_disabled=$(sysctl -n net.ipv6.conf.all.disable_ipv6)

if [ "$ipv6_disabled" -eq 1 ]; then

if grep -Eq '^\s*precedence\s+::ffff:0:0/96\s+100\s*$' /etc/gai.conf 2>/dev/null; then
echo -e "현재 네트워크 우선 순위 설정 :${gl_huang}IPv4${gl_bai}우선 사항"
else
echo -e "현재 네트워크 우선 순위 설정 :${gl_huang}IPv6${gl_bai}우선 사항"
fi

echo ""
echo "------------------------"
echo "1. IPv4 우선 순위 2. IPv6 우선 순위 3. IPv6 수리 도구"
@ -12559,12 +12625,13 @@ EOF

case $choice in
1)
sysctl -w net.ipv6.conf.all.disable_ipv6=1 > /dev/null 2>&1
grep -q '^precedence ::ffff:0:0/96 100' /etc/gai.conf 2>/dev/null \
|| echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf
echo "IPv4 우선 순위로 전환되었습니다"
send_stats "IPv4 우선 순위로 전환되었습니다"
;;
2)
sysctl -w net.ipv6.conf.all.disable_ipv6=0 > /dev/null 2>&1
rm -f /etc/gai.conf
echo "IPv6 우선 순위로 전환되었습니다"
send_stats "IPv6 우선 순위로 전환되었습니다"
;;
@ -12794,7 +12861,7 @@ EOF
echo "3. 일본의 도쿄 시간 4. 한국의 서울 시간"
echo "5. 싱가포르 시간 6. 인도의 콜카타 시간"
echo "7. UAE 8의 두바이 시간. 호주 시드니 시간"
echo "9. 태국 방콕에서의 시간"
echo "9. 방콕 시간, 태국"
echo "------------------------"
echo "유럽"
echo "11. 영국의 런던 시간 12. 프랑스의 파리 시간"
@ -13020,7 +13087,7 @@ EOF

;;
2)
read -e -p "삭제 해야하는 콘텐츠를 구문 분석하기위한 키워드를 입력하십시오." delhost
read -e -p "삭제 해야하는 구문 분석 컨텐츠의 키워드를 입력하십시오." delhost
sed -i "/$delhost/d" /etc/hosts
send_stats "로컬 호스트 구문 분석 및 삭제"
;;

View file

@ -1,5 +1,5 @@
#!/bin/bash
sh_v="4.1.3"
sh_v="4.1.4"


gl_hui='\e[37m'
@ -4334,9 +4334,11 @@ set_dns() {

ip_address

chattr -i /etc/resolv.conf
rm /etc/resolv.conf
touch /etc/resolv.conf


if [ -n "$ipv4_address" ]; then
echo "nameserver $dns1_ipv4" >> /etc/resolv.conf
echo "nameserver $dns2_ipv4" >> /etc/resolv.conf
@ -4347,6 +4349,8 @@ if [ -n "$ipv6_address" ]; then
echo "nameserver $dns2_ipv6" >> /etc/resolv.conf
fi

chattr +i /etc/resolv.conf

}


@ -4391,7 +4395,9 @@ while true; do
;;
3)
install nano
chattr -i /etc/resolv.conf
nano /etc/resolv.conf
chattr +i /etc/resolv.conf
send_stats "手動編輯DNS配置"
;;
*)
@ -8890,6 +8896,7 @@ while true; do
echo -e "${gl_kjlan}93. ${color93}Dufs極簡靜態文件服務器${gl_kjlan}94. ${color94}Gopeed高速下載工具"
echo -e "${gl_kjlan}95. ${color95}paperless文檔管理平台${gl_kjlan}96. ${color96}2FAuth自託管二步驗證器"
echo -e "${gl_kjlan}97. ${color97}WireGuard組網(服務端)${gl_kjlan}98. ${color98}WireGuard組網(客戶端)"
echo -e "${gl_kjlan}99. ${color99}DSM群暉虛擬機"
echo -e "${gl_kjlan}------------------------"
echo -e "${gl_kjlan}b. ${gl_bai}備份全部應用數據${gl_kjlan}r. ${gl_bai}還原全部應用數據"
echo -e "${gl_kjlan}------------------------"
@ -11816,16 +11823,16 @@ while true; do
mkdir -p /home/docker/2fauth/data
chmod -R 777 /home/docker/2fauth/
cd /home/docker/2fauth

curl -o /home/docker/2fauth/docker-compose.yml ${gh_proxy}raw.githubusercontent.com/kejilion/docker/main/2fauth-docker-compose.yml

sed -i "s/8000:8000/${docker_port}:8000/g" /home/docker/2fauth/docker-compose.yml
sed -i "s/yuming.com/${yuming}/g" /home/docker/2fauth/docker-compose.yml
sed -i "s/yuming.com/${yuming}/g" /home/docker/2fauth/docker-compose.yml
cd /home/docker/2fauth
docker compose up -d

ldnmp_Proxy ${yuming} 127.0.0.1 ${docker_port}
block_container_port "$docker_name" "$ipv4_address"
block_container_port "$docker_name" "$ipv4_address"

clear
echo "已經安裝完成"
@ -12028,6 +12035,64 @@ while true; do
;;


99|dsm)

local app_id="99"

local app_name="dsm群晖虚拟机"
local app_text="Docker容器中的虚拟DSM"
local app_url="官网: https://github.com/vdsm/virtual-dsm"
local docker_name="dsm"
local docker_port="8099"
local app_size="16"

docker_app_install() {

read -e -p "設置 CPU 核數 (默認 2):" CPU_CORES
local CPU_CORES=${CPU_CORES:-2}

read -e -p "設置內存大小 (默認 4G):" RAM_SIZE
local RAM_SIZE=${RAM_SIZE:-4}

mkdir -p /home/docker/dsm
mkdir -p /home/docker/dsm/dev
chmod -R 777 /home/docker/dsm/
cd /home/docker/dsm

curl -o /home/docker/dsm/docker-compose.yml ${gh_proxy}raw.githubusercontent.com/kejilion/docker/main/dsm-docker-compose.yml

sed -i "s/5000:5000/${docker_port}:5000/g" /home/docker/dsm/docker-compose.yml
sed -i "s|CPU_CORES: "2"|CPU_CORES: "${CPU_CORES}"|g" /home/docker/dsm/docker-compose.yml
sed -i "s|RAM_SIZE: "2G"|RAM_SIZE: "${RAM_SIZE}G"|g" /home/docker/dsm/docker-compose.yml
cd /home/docker/dsm
docker compose up -d

clear
echo "已經安裝完成"
check_docker_app_ip
}


docker_app_update() {
cd /home/docker/dsm/ && docker compose down --rmi all
docker_app_install
}


docker_app_uninstall() {
cd /home/docker/dsm/ && docker compose down --rmi all
rm -rf /home/docker/dsm
echo "應用已卸載"
}

docker_app_plus

;;






b)
clear
@ -12542,13 +12607,14 @@ EOF
clear
echo "設置v4/v6優先級"
echo "------------------------"
local ipv6_disabled=$(sysctl -n net.ipv6.conf.all.disable_ipv6)

if [ "$ipv6_disabled" -eq 1 ]; then

if grep -Eq '^\s*precedence\s+::ffff:0:0/96\s+100\s*$' /etc/gai.conf 2>/dev/null; then
echo -e "當前網絡優先級設置:${gl_huang}IPv4${gl_bai}優先"
else
echo -e "當前網絡優先級設置:${gl_huang}IPv6${gl_bai}優先"
fi

echo ""
echo "------------------------"
echo "1. IPv4 優先 2. IPv6 優先 3. IPv6 修復工具"
@ -12559,12 +12625,13 @@ EOF

case $choice in
1)
sysctl -w net.ipv6.conf.all.disable_ipv6=1 > /dev/null 2>&1
grep -q '^precedence ::ffff:0:0/96 100' /etc/gai.conf 2>/dev/null \
|| echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf
echo "已切換為 IPv4 優先"
send_stats "已切換為 IPv4 優先"
;;
2)
sysctl -w net.ipv6.conf.all.disable_ipv6=0 > /dev/null 2>&1
rm -f /etc/gai.conf
echo "已切換為 IPv6 優先"
send_stats "已切換為 IPv6 優先"
;;