]> git.ipfire.org Git - thirdparty/dehydrated.git/commitdiff
don't fail on nested json array in challenge info
authorLukas Schauer <lukas@schauer.so>
Sat, 13 Jan 2018 22:06:32 +0000 (23:06 +0100)
committerLukas Schauer <lukas@schauer.so>
Sat, 13 Jan 2018 22:10:31 +0000 (23:10 +0100)
dehydrated

index 1f8a31154c7e0aadaeed67b3ba73d0506756cfaf..3675d3d86b9c45b4e7ef387ce97690eb9d7ff5a4 100755 (executable)
@@ -651,14 +651,14 @@ sign_csr() {
     fi
 
     challenges="$(printf '%s\n' "${response}" | sed -n 's/.*\("challenges":[^\[]*\[[^]]*]\).*/\1/p')"
-    repl=$'\n''{' # fix syntax highlighting in Vim
-    challenge="$(printf "%s" "${challenges//\{/${repl}}" | grep \""${CHALLENGETYPE}"\")"
+    challenge="$(<<<"${challenges}" _sed -e 's/^[^\[]+\[(.+)\]$/\1/' -e 's/\}(, (\{)|(\]))/}\'$'\n''\2/g' | grep \""${CHALLENGETYPE}"\")"
+
     challenge_token="$(printf '%s' "${challenge}" | get_json_string_value token | _sed 's/[^A-Za-z0-9_\-]/_/g')"
     if [[ ${API} -eq 1 ]]; then
       challenge_uri="$(printf '%s' "${challenge}" | get_json_string_value uri)"
     else
       challenge_uri="$(printf '%s' "${challenge}" | get_json_string_value url)"
-   fi
+    fi
 
     if [[ -z "${challenge_token}" ]] || [[ -z "${challenge_uri}" ]]; then
       _exiterr "Can't retrieve challenges (${response})"