重构代码, update 端口相关函数

This commit is contained in:
Olia Lisa
2026-05-28 15:08:00 +08:00
parent 499b085f05
commit c0824d99c0
3 changed files with 38 additions and 23 deletions
+25 -13
View File
@@ -2,21 +2,25 @@
# ==========================================
# 更新 sing-box 配置文件中的监听端口,并开放对应防火墙规则
# 参数: 端口号(可选,不传则设置一个5000 到 15000的空闲端口)
# 参数1: 配置文件路径
# 参数2: 端口号(可选,不传则设置一个5000 到 15000的空闲端口)
# --- 使用示例 ---
# 指定端口
# update_port 8080
# update_port "$CONFIG_FILE" 8080
# ==========================================
update_port(){
local PORT=$1
local CONFIG_FILE="$1"
local PORT="$2"
if [[ -z "$CONFIG_FILE" ]]; then
echo "[Error] config_file配置文件路径 不能为空"
return 1
fi
# 如果没有提供端口参数,则自动查找一个随机空闲端口
if [[ -z "$PORT" ]]; then
PORT=$(find_free_port 5000 15000)
fi
fi
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
local CONFIG_DIR="$SCRIPT_DIR/../config"
modify_json_file "$CONFIG_DIR/config.json" ".inbounds[0].listen_port" "$PORT"
modify_json_file "$CONFIG_FILE" ".inbounds[0].listen_port" "$PORT"
port_manage allow "$PORT"
echo "设置端口成功"
}
@@ -187,18 +191,26 @@ port_manage() {
# 通过交互方式更新端口
ask_update_port(){
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
local CONFIG_FILE="${1}"
local CURRENT_PORT=$(get_listen_port)
if [[ -z "$CONFIG_FILE" ]]; then
echo "[Error] config_file配置文件路径 不能为空"
return 1
fi
local CURRENT_PORT=$(get_listen_port "$CONFIG_FILE")
local NEW_PORT=$(ask_update "请输入新的端口号" "$CURRENT_PORT")
update_port "$NEW_PORT"
update_port "$CONFIG_FILE" "$NEW_PORT"
}
# 获取当前配置的监听端口
get_listen_port(){
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
local CONFIG_FILE="${1}"
if [[ -z "$CONFIG_FILE" ]]; then
echo "[Error] config_file配置文件路径 不能为空"
return 1
fi
local PORT=$(jq -r ".inbounds[0].listen_port" "$CONFIG_FILE")
echo $PORT