Merge pull request #192 from yonggekkk/beta

Beta
This commit is contained in:
甬哥侃侃侃ygkkk
2025-03-21 10:40:34 +08:00
committed by GitHub
+89 -26
View File
@@ -42,6 +42,8 @@ IP=$(head -n 1 ip.txt | awk -F ':' '{print $1}')
fi
fi
fi
echo "$IP" > $WORKDIR/ipone.txt
IP=$(<$WORKDIR/ipone.txt)
green "你选择的IP为: $IP"
}
@@ -50,6 +52,8 @@ read_uuid() {
if [[ -z "$UUID" ]]; then
UUID=$(uuidgen -r)
fi
echo "$UUID" > $WORKDIR/UUID.txt
UUID=$(<$WORKDIR/UUID.txt)
green "你的uuid为: $UUID"
}
@@ -63,6 +67,8 @@ read_reym() {
elif [[ "$reym" == "s" || "$reym" == "S" ]]; then
reym=www.speedtest.net
fi
echo "$reym" > $WORKDIR/reym.txt
reym=$(<$WORKDIR/reym.txt)
green "你的reality域名为: $reym"
}
@@ -103,13 +109,15 @@ else
ps aux | grep '[t]unnel --n' > /dev/null && green "Argo固定隧道已启动" || yellow "Argo固定隧道启动失败,请先在CF更改隧道端口:$vmess_port,再重启下Argo隧道"
fi
fi
cd $WORKDIR
showhostunolist
cd
}
check_port () {
port_list=$(devil port list)
tcp_ports=$(echo "$port_list" | grep -c "tcp")
udp_ports=$(echo "$port_list" | grep -c "udp")
if [[ $tcp_ports -ne 2 || $udp_ports -ne 1 ]]; then
red "端口数量不符合要求,正在调整..."
@@ -120,7 +128,6 @@ if [[ $tcp_ports -ne 2 || $udp_ports -ne 1 ]]; then
green "已删除TCP端口: $port"
done
fi
if [[ $udp_ports -gt 1 ]]; then
udp_to_delete=$((udp_ports - 1))
echo "$port_list" | awk '/udp/ {print $1, $2}' | head -n $udp_to_delete | while read port type; do
@@ -128,7 +135,6 @@ if [[ $tcp_ports -ne 2 || $udp_ports -ne 1 ]]; then
green "已删除UDP端口: $port"
done
fi
if [[ $tcp_ports -lt 2 ]]; then
tcp_ports_to_add=$((2 - tcp_ports))
tcp_ports_added=0
@@ -148,7 +154,6 @@ if [[ $tcp_ports -ne 2 || $udp_ports -ne 1 ]]; then
fi
done
fi
if [[ $udp_ports -lt 1 ]]; then
while true; do
udp_port=$(shuf -i 10000-65535 -n 1)
@@ -170,7 +175,6 @@ else
tcp_port1=$(echo "$tcp_ports" | sed -n '1p')
tcp_port2=$(echo "$tcp_ports" | sed -n '2p')
udp_port=$(echo "$port_list" | awk '/udp/ {print $1}')
purple "当前TCP端口: $tcp_port1$tcp_port2"
purple "当前UDP端口: $udp_port"
fi
@@ -262,7 +266,6 @@ reading "\n注意!!!清理所有进程并清空所有安装内容,将退
esac
}
# Generating argo Config
argo_configure() {
while true; do
yellow "方式一:(推荐)无需域名的Argo临时隧道:输入回车"
@@ -288,8 +291,8 @@ argo_configure() {
done
}
# Download Dependency Files
download_and_run_singbox() {
if [ ! -s sb.txt ] && [ ! -s ag.txt ]; then
DOWNLOAD_DIR="." && mkdir -p "$DOWNLOAD_DIR" && FILE_INFO=()
FILE_INFO=("https://github.com/yonggekkk/Cloudflare_vless_trojan/releases/download/serv00/sb web" "https://github.com/yonggekkk/Cloudflare_vless_trojan/releases/download/serv00/server bot")
declare -A FILE_MAP
@@ -339,12 +342,17 @@ for entry in "${FILE_INFO[@]}"; do
FILE_MAP[$(echo "$entry" | cut -d ' ' -f 2)]="$NEW_FILENAME"
done
wait
fi
if [ ! -e private_key.txt ]; then
output=$(./"$(basename ${FILE_MAP[web]})" generate reality-keypair)
private_key=$(echo "${output}" | awk '/PrivateKey:/ {print $2}')
public_key=$(echo "${output}" | awk '/PublicKey:/ {print $2}')
echo "${private_key}" > private_key.txt
echo "${public_key}" > public_key.txt
fi
private_key=$(<private_key.txt)
public_key=$(<public_key.txt)
openssl ecparam -genkey -name prime256v1 -out "private.key"
openssl req -new -x509 -days 3650 -key "private.key" -out "cert.pem" -subj "/CN=$USERNAME.${address}"
cat > config.json << EOF
@@ -524,6 +532,8 @@ else
EOF
fi
if ! ps aux | grep '[r]un -c con' > /dev/null; then
ps aux | grep '[r]un -c con' | awk '{print $2}' | xargs -r kill -9 > /dev/null 2>&1
if [ -e "$(basename "${FILE_MAP[web]}")" ]; then
echo "$(basename "${FILE_MAP[web]}")" > sb.txt
sbb=$(cat sb.txt)
@@ -532,21 +542,31 @@ if [ -e "$(basename "${FILE_MAP[web]}")" ]; then
if pgrep -x "$sbb" > /dev/null; then
green "$sbb 主进程已启动"
else
for ((i=1; i<=5; i++)); do
red "$sbb 主进程未启动, 重启中... (尝试次数: $i)"
red "$sbb 主进程未启动, 重启中..."
pkill -x "$sbb"
nohup ./"$sbb" run -c config.json >/dev/null 2>&1 &
sleep 2
purple "$sbb 主进程已重启"
fi
else
sbb=$(cat sb.txt)
nohup ./"$sbb" run -c config.json >/dev/null 2>&1 &
sleep 5
if pgrep -x "$sbb" > /dev/null; then
purple "$sbb 主进程已成功重"
break
fi
if [[ $i -eq 5 ]]; then
red "$sbb 主进程重启失败"
fi
done
green "$sbb 主进程已启"
else
red "$sbb 主进程未启动, 重启中..."
pkill -x "$sbb"
nohup ./"$sbb" run -c config.json >/dev/null 2>&1 &
sleep 2
purple "$sbb 主进程已重启"
fi
fi
else
green "主进程已启动"
fi
cfgo() {
rm -rf boot.log
if [ -e "$(basename "${FILE_MAP[bot]}")" ]; then
echo "$(basename "${FILE_MAP[bot]}")" > ag.txt
agg=$(cat ag.txt)
@@ -560,22 +580,52 @@ if [ -e "$(basename "${FILE_MAP[bot]}")" ]; then
nohup ./"$agg" $args >/dev/null 2>&1 &
sleep 10
if pgrep -x "$agg" > /dev/null; then
green "$agg Argo进程已启动"
green "$agg Arog进程已启动"
else
for ((i=1; i<=5; i++)); do
red "$agg Argo进程未启动, 重启中...(尝试次数: $i)"
red "$agg Argo进程未启动, 重启中..."
pkill -x "$agg"
nohup ./"$agg" "${args}" >/dev/null 2>&1 &
sleep 5
purple "$agg Argo进程已重启"
fi
else
agg=$(cat ag.txt)
if [[ $ARGO_AUTH =~ ^[A-Z0-9a-z=]{120,250}$ ]]; then
#args="tunnel --edge-ip-version auto --no-autoupdate --protocol http2 run --token ${ARGO_AUTH}"
args="tunnel --no-autoupdate run --token ${ARGO_AUTH}"
else
#args="tunnel --edge-ip-version auto --no-autoupdate --protocol http2 --logfile boot.log --loglevel info --url http://localhost:$vmess_port"
args="tunnel --url http://localhost:$vmess_port --no-autoupdate --logfile boot.log --loglevel info"
fi
nohup ./"$agg" $args >/dev/null 2>&1 &
sleep 10
if pgrep -x "$agg" > /dev/null; then
purple "$agg Argo进程已成功重"
break
green "$agg Arog进程已启"
else
red "$agg Argo进程未启动, 重启中..."
pkill -x "$agg"
nohup ./"$agg" "${args}" >/dev/null 2>&1 &
sleep 5
purple "$agg Argo进程已重启"
fi
if [[ $i -eq 5 ]]; then
red "$agg Argo进程重启失败,Argo节点暂不可用(保活过程中会自动恢复),其他节点依旧可用"
fi
done
}
if [ -f "$WORKDIR/boot.log" ]; then
argosl=$(cat "$WORKDIR/boot.log" 2>/dev/null | grep -a trycloudflare.com | awk 'NR==2{print}' | awk -F// '{print $2}' | awk '{print $1}')
checkhttp=$(curl -o /dev/null -s -w "%{http_code}\n" "https://$argosl")
else
argogd=$(cat $WORKDIR/ARGO_DOMAIN.log 2>/dev/null)
checkhttp=$(curl --max-time 2 -o /dev/null -s -w "%{http_code}\n" "https://$argogd")
fi
if ([ -z "$ARGO_DOMAIN" ] && ! ps aux | grep '[t]unnel --u' > /dev/null) || [ "$checkhttp" -ne 404 ]; then
ps aux | grep '[t]unnel --u' | awk '{print $2}' | xargs -r kill -9 > /dev/null 2>&1
cfgo
elif ([ -n "$ARGO_DOMAIN" ] && ! ps aux | grep '[t]unnel --n' > /dev/null) || [ "$checkhttp" -ne 404 ]; then
ps aux | grep '[t]unnel --n' | awk '{print $2}' | xargs -r kill -9 > /dev/null 2>&1
cfgo
else
green "Arog进程已启动"
fi
sleep 2
if ! pgrep -x "$(cat sb.txt)" > /dev/null; then
@@ -1339,10 +1389,10 @@ fi
resargo(){
if [[ -e $WORKDIR/config.json ]]; then
cd $WORKDIR
argoport=$(jq -r '.inbounds[4].listen_port' config.json)
argogdshow(){
echo
if [ -f ARGO_AUTH_show.log ]; then
argoport=$(jq -r '.inbounds[4].listen_port' config.json)
purple "如果你想设置原先的Argo固定隧道,请明确以下三点"
purple "1:已设置Argo固定域名:$(cat ARGO_DOMAIN_show.log)"
purple "2:固定隧道token$(cat ARGO_AUTH_show.log)"
@@ -1395,13 +1445,26 @@ for ((i=1; i<=5; i++)); do
done
fi
curl -sk "http://${snb}.${USERNAME}.${hona}.net/up" > /dev/null 2>&1
purple "Argo域名:$(get_argodomain)"
showhostunolist
cd
else
red "未安装脚本,请选择1进行安装" && exit
fi
}
showhostunolist(){
if [ "$hona" != "serv00" ]; then
IP=$(<$WORKDIR/ipone.txt)
UUID=$(<$WORKDIR/UUID.txt)
reym=$(<$WORKDIR/reym.txt)
ARGO_DOMAIN=$(cat "$WORKDIR/ARGO_DOMAIN.log" 2>/dev/null)
ARGO_AUTH=$(cat "$WORKDIR/ARGO_AUTH.log" 2>/dev/null)
check_port >/dev/null 2>&1
download_and_run_singbox >/dev/null 2>&1
get_links
fi
}
menu() {
clear
echo "============================================================"