From 119ea751a7e7806850078b48f99028dfeedf125c Mon Sep 17 00:00:00 2001 From: bianliqiang001 Date: Thu, 16 Jun 2022 11:13:01 +0800 Subject: [PATCH] Improve wg-quick regex performance when key or value is too large string --- src/wg-quick/darwin.bash | 4 ++-- src/wg-quick/freebsd.bash | 4 ++-- src/wg-quick/linux.bash | 4 ++-- src/wg-quick/openbsd.bash | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/wg-quick/darwin.bash b/src/wg-quick/darwin.bash index 8e468189..1d27ad3d 100755 --- a/src/wg-quick/darwin.bash +++ b/src/wg-quick/darwin.bash @@ -60,8 +60,8 @@ parse_options() { shopt -s nocasematch while read -r line || [[ -n $line ]]; do stripped="${line%%\#*}" - key="${stripped%%=*}"; key="${key##*([[:space:]])}"; key="${key%%*([[:space:]])}" - value="${stripped#*=}"; value="${value##*([[:space:]])}"; value="${value%%*([[:space:]])}" + key="${stripped%%=*}";key=$(echo $key | sed s/^[[:space:]]*//g | sed s/[[:space:]]*$//g) + value="${stripped#*=}"; value=$(echo $value | sed s/^[[:space:]]*//g | sed s/[[:space:]]*$//g) [[ $key == "["* ]] && interface_section=0 [[ $key == "[Interface]" ]] && interface_section=1 if [[ $interface_section -eq 1 ]]; then diff --git a/src/wg-quick/freebsd.bash b/src/wg-quick/freebsd.bash index b529ab2a..8c7abc30 100755 --- a/src/wg-quick/freebsd.bash +++ b/src/wg-quick/freebsd.bash @@ -78,8 +78,8 @@ parse_options() { shopt -s nocasematch while read -r line || [[ -n $line ]]; do stripped="${line%%\#*}" - key="${stripped%%=*}"; key="${key##*([[:space:]])}"; key="${key%%*([[:space:]])}" - value="${stripped#*=}"; value="${value##*([[:space:]])}"; value="${value%%*([[:space:]])}" + key="${stripped%%=*}";key=$(echo $key | sed s/^[[:space:]]*//g | sed s/[[:space:]]*$//g) + value="${stripped#*=}"; value=$(echo $value | sed s/^[[:space:]]*//g | sed s/[[:space:]]*$//g) [[ $key == "["* ]] && interface_section=0 [[ $key == "[Interface]" ]] && interface_section=1 if [[ $interface_section -eq 1 ]]; then diff --git a/src/wg-quick/linux.bash b/src/wg-quick/linux.bash index e4d4c4f0..98db5e0e 100755 --- a/src/wg-quick/linux.bash +++ b/src/wg-quick/linux.bash @@ -49,8 +49,8 @@ parse_options() { shopt -s nocasematch while read -r line || [[ -n $line ]]; do stripped="${line%%\#*}" - key="${stripped%%=*}"; key="${key##*([[:space:]])}"; key="${key%%*([[:space:]])}" - value="${stripped#*=}"; value="${value##*([[:space:]])}"; value="${value%%*([[:space:]])}" + key="${stripped%%=*}";key=$(echo $key | sed s/^[[:space:]]*//g | sed s/[[:space:]]*$//g) + value="${stripped#*=}"; value=$(echo $value | sed s/^[[:space:]]*//g | sed s/[[:space:]]*$//g) [[ $key == "["* ]] && interface_section=0 [[ $key == "[Interface]" ]] && interface_section=1 if [[ $interface_section -eq 1 ]]; then diff --git a/src/wg-quick/openbsd.bash b/src/wg-quick/openbsd.bash index 2adfe460..94b5320b 100755 --- a/src/wg-quick/openbsd.bash +++ b/src/wg-quick/openbsd.bash @@ -50,8 +50,8 @@ parse_options() { shopt -s nocasematch while read -r line || [[ -n $line ]]; do stripped="${line%%\#*}" - key="${stripped%%=*}"; key="${key##*([[:space:]])}"; key="${key%%*([[:space:]])}" - value="${stripped#*=}"; value="${value##*([[:space:]])}"; value="${value%%*([[:space:]])}" + key="${stripped%%=*}";key=$(echo $key | sed s/^[[:space:]]*//g | sed s/[[:space:]]*$//g) + value="${stripped#*=}"; value=$(echo $value | sed s/^[[:space:]]*//g | sed s/[[:space:]]*$//g) [[ $key == "["* ]] && interface_section=0 [[ $key == "[Interface]" ]] && interface_section=1 if [[ $interface_section -eq 1 ]]; then