#!/bin/bash print_share_link() { # 检查jq是否安装 check_jq local CONFIG_FILE=${1} local TYPE=$(jq -r '.inbounds[0].type' "$CONFIG_FILE") if [ "$TYPE" = "tuic" ]; then print_tuic_share_link "$CONFIG_FILE" return 0 fi if [ "$TYPE" = "hysteria2" ]; then print_hysteria_share_link "$CONFIG_FILE" return 0 fi red "error: 不支持的协议类型: $TYPE" } print_tuic_share_link() { local CONFIG_FILE=${1} # 配置文件路径 # 检查配置是否正确 local UUID=$(jq -r '.inbounds[0].users[0].uuid' "$CONFIG_FILE") if [ "$UUID" = "你的UUID" ] || [ -z "$UUID" ] || [[ "$UUID" == null ]]; then red "error: 配置有误, 请重新生成配置" exit 1 fi # 读取配置文件内容 local CONFIG=$(cat "$CONFIG_FILE") # 提取所需信息 UUID=$(echo "$CONFIG" | jq -r '.inbounds[0].users[0].uuid') local SNI=$(echo "$CONFIG" | jq -r '.inbounds[0].tls.server_name') local IPV4=$(curl -4 -sSL --connect-timeout 3 --retry 2 ip.sb || echo "null") local PORT=$(echo "$CONFIG" | jq -r '.inbounds[0].listen_port') local PASSWORD=$(echo "$CONFIG" | jq -r '.inbounds[0].users[0].password') local CONGESTION_CONTROL=$(echo "$CONFIG" | jq -r '.inbounds[0].congestion_control') local ALLOW_INSECURE=1 # 是否跳过证书验证,1表示跳过,0表示不跳过 local INSECURE=1 # 是否允许不安全连接,1表示允许,0表示不允许 # 检查是否使用ACME申请证书 if is_config_use_acme "$CONFIG_FILE"; then ALLOW_INSECURE=0 # 不跳过证书验证 INSECURE=0 fi # 构建分享链接 local SHARE_LINK="tuic://$UUID:$PASSWORD@$IPV4:$PORT?sni=$SNI&alpn=h3&insecure=$INSECURE&allowInsecure=$ALLOW_INSECURE&congestion_control=$CONGESTION_CONTROL#Tuic节点" # 输出分享链接 echo -e "\033[32m" echo "IPV4: $IPV4" echo "port: $PORT" echo "uuid: $UUID" echo "password: $PASSWORD" echo "sni: $SNI" echo "congestion_control(拥塞控制算法): $CONGESTION_CONTROL" echo "" echo "分享链接: $SHARE_LINK" echo -e "\033[0m" } print_hysteria_share_link(){ local CONFIG_FILE=${1} # 配置文件路径 local INSECURE=1 local ALLOW_INSECURE=1 # 检查是否使用ACME申请证书 if is_config_use_acme "$CONFIG_FILE"; then ALLOW_INSECURE=0 # 不跳过证书验证 INSECURE=0 fi # 读取配置文件内容 local CONFIG=$(cat "$CONFIG_FILE") # 提取所需信息 local IPV4=$(curl -4 -sSL --connect-timeout 3 --retry 2 ip.sb || echo "null") local PORT=$(echo "$CONFIG" | jq -r '.inbounds[0].listen_port') local SNI=$(echo "$CONFIG" | jq -r '.inbounds[0].tls.server_name') local PASSWORD=$(echo "$CONFIG" | jq -r '.inbounds[0].users[0].password') local OBFS_TYPE=$(echo "$CONFIG" | jq -r '.inbounds[0].obfs.type') local OBFS_PASSWORD=$(echo "$CONFIG" | jq -r '.inbounds[0].obfs.password') # 构建分享链接 local SHARE_LINK="hysteria2://${PASSWORD}@${IPV4}:${PORT}/?sni=${SNI}&insecure=${INSECURE}&obfs=${OBFS_TYPE}&obfs-password=${OBFS_PASSWORD}&allowInsecure=${ALLOW_INSECURE}#Hysteria2节点" # 输出分享链接 echo -e "\033[32m" echo "IPV4: $IPV4" echo "port: $PORT" echo "password: $PASSWORD" echo "sni: $SNI" echo "obfs_type: $OBFS_TYPE" echo "obfs_password(混淆密码): $OBFS_PASSWORD" echo "" echo "分享链接: $SHARE_LINK" echo -e "\033[0m" } # 检查是否使用ACME申请证书 is_config_use_acme(){ local CONFIG_FILE="$1" if jq -e '.inbounds[0].tls.acme' "$CONFIG_FILE" > /dev/null 2>&1; then return 0 fi return 1; }