fix: production wg dump compatibility defect
This commit is contained in:
+7
-1
@@ -504,6 +504,12 @@ parse_metadata() {
|
||||
for file in "$METADATA_DIR"/*; do [[ -e "$file" ]] || continue; parse_metadata_file "$file" || return $?; done
|
||||
}
|
||||
|
||||
validate_dump_keepalive() {
|
||||
local value=$1
|
||||
[[ $value == off ]] && return 0
|
||||
is_uint "$value" && (( 10#$value <= 65535 ))
|
||||
}
|
||||
|
||||
parse_runtime_dump() {
|
||||
local line fields_count line_number=0 key endpoint allowed handshake rx tx keepalive
|
||||
local output=$1
|
||||
@@ -525,7 +531,7 @@ parse_runtime_dump() {
|
||||
[[ $endpoint == '-' || -z $endpoint ]] || validate_peer_endpoint_value "$endpoint" || { die "$EXIT_VALIDATION" 'Некорректный Endpoint в wg dump'; return $?; }
|
||||
[[ -z ${RUNTIME_HANDSHAKE[$key]+x} ]] || { die "$EXIT_VALIDATION" 'Дублирующийся PublicKey в wg dump'; return $?; }
|
||||
if [[ $allowed != '-' ]]; then normalize_allowed_ips "$allowed" >/dev/null || { die "$EXIT_VALIDATION" 'Некорректные AllowedIPs в wg dump'; return $?; }; fi
|
||||
is_uint "$handshake" && is_uint "$rx" && is_uint "$tx" && is_uint "$keepalive" || { die "$EXIT_VALIDATION" 'Некорректные числа в wg dump'; return $?; }
|
||||
is_uint "$handshake" && is_uint "$rx" && is_uint "$tx" && validate_dump_keepalive "$keepalive" || { die "$EXIT_VALIDATION" 'Некорректные числа в wg dump'; return $?; }
|
||||
RUNTIME_ENDPOINT["$key"]=${endpoint:--}; if [[ $allowed == '-' ]]; then RUNTIME_ALLOWED["$key"]='-'; else RUNTIME_ALLOWED["$key"]=$(normalize_allowed_ips "$allowed"); fi; RUNTIME_HANDSHAKE["$key"]=$handshake; RUNTIME_RX["$key"]=$rx; RUNTIME_TX["$key"]=$tx
|
||||
done <<<"$output"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user