diff --git a/install_easy.sh b/install_easy.sh index 031ba26..90e8087 100755 --- a/install_easy.sh +++ b/install_easy.sh @@ -148,6 +148,56 @@ random() echo $(( ($r % ($2-$1+1)) + $1 )) } +parse_var_checked() +{ + # $1 - file name + # $2 - var name + local sed="sed -nre s/^[[:space:]]*$2=[\\\"|\']?([^\\\"|\']*)[\\\"|\']?/\1/p" + local v="$($sed <"$1" | head -n 1)" + eval $2=\"$v\" +} +parse_vars_checked() +{ + # $1 - file name + # $2,$3,... - var names + local f="$1" + shift + while [ -n "$1" ]; do + + parse_var_checked "$f" $1 + shift + done +} +edit_file() +{ + # $1 - file name + local ed="$EDITOR" + [ -n "$ed" ] || { + for e in mcedit nano vi; do + exists "$e" && { + ed="$e" + break + } + done + } + [ -n "$ed" ] && "$ed" "$1" +} +edit_vars() +{ + # $1,$2,... - var names + local n=1 var v tmp="/tmp/zvars" + rm -f "$tmp" + while [ 1=1 ]; do + eval var="\$$n" + [ -n "$var" ] || break + eval v="\$$var" + echo $var=\"$v\" >>"$tmp" + n=$(($n+1)) + done + edit_file "$tmp" && parse_vars_checked "$tmp" "$@" + rm -f "$tmp" +} + check_system() { echo \* checking system @@ -324,25 +374,36 @@ write_config_var() select_mode_mode() { - local MODES="tpws tpws-socks nfqws filter custom" + local v vars MODES="tpws tpws-socks nfqws filter custom" [ "$SYSTEM" = "macos" ] && MODES="tpws tpws-socks filter custom" echo echo select MODE : ask_list MODE "$MODES" tpws && write_config_var MODE + case $MODE in tpws) - echo - echo tpws options : $TPWS_OPT - echo to change : edit TPWS_OPT in $ZAPRET_CONFIG + vars="TPWS_OPT" ;; nfqws) - echo - echo "nfqws options (default) : $NFQWS_OPT_DESYNC" - echo "nfqws options (http) : $NFQWS_OPT_DESYNC_HTTP" - echo "nfqws options (https) : $NFQWS_OPT_DESYNC_HTTPS" - echo to change : edit NFQWS_OPT_DESYNC, NFQWS_OPT_DESYNC_HTTP, NFQWS_OPT_DESYNC_HTTPS in $ZAPRET_CONFIG + vars="NFQWS_OPT_DESYNC NFQWS_OPT_DESYNC_HTTP NFQWS_OPT_DESYNC_HTTPS" ;; esac + [ -n "$vars" ] && { + while [ 1=1 ]; do + for var in $vars; do + eval v="\$$var" + echo $var=\"$v\" + done + ask_yes_no N "do you want to edit the options" || { + for var in $vars; do + write_config_var $var + done + break + } + edit_vars $vars + echo ..edited.. + done + } } select_mode_http() {