commit 08ba86d4ee0e6b5e7f01f78eccb84ea2ccaca57e parent 4c5dae577a442e77794fb16dc5917ac2a46cb672 Author: Christian Grothoff <christian@grothoff.org> Date: Tue, 15 Apr 2025 13:52:28 +0200 misc fixes Diffstat:
9 files changed, 27 insertions(+), 28 deletions(-)
diff --git a/src/kyclogic/taler-exchange-helper-measure-enable-deposits b/src/kyclogic/taler-exchange-helper-measure-enable-deposits @@ -96,23 +96,23 @@ TOS_ACCEPTED=$(echo "$INPUTS" | jq '.attributes.ACCEPTED_TERMS_OF_SERVICE // nul # Get current rules. CURRENT_RULES=$(echo "$INPUTS" | jq '.current_rules // null') # Get context values. -VALIDITY_YEARS=$(echo "$INPUTS" | jq '.context.validity_years) +VALIDITY_YEARS=$(echo "$INPUTS" | jq -r '.context.validity_years') # Convert to seconds after epoch -EXPIRATION_STAMP=$(($VALIDITY_YEARS * 365 * 24 * 60 * 60 + $(date +%s))) +EXPIRATION_STAMP=$((VALIDITY_YEARS * 365 * 24 * 60 * 60 + $(date +%s))) # Convert to GNUnet-style JSON timestamp EXPIRATION_TIME=$(jq -n --argjson es "$EXPIRATION_STAMP" '{"t_s":$es}') SUCCESSOR_MEASURE=$(echo "$INPUTS" | jq '.context.successor_measure // .current_rules.successor_measure // null') # Validate accepted ToS version -if $(echo "$TOS_ACCEPTED" | grep "${EXCHANGE_AML_PROGRAM_TOPS_ENABLE_DEPOSITS_TOS_NAME}" > /dev/null) +if eval echo "$TOS_ACCEPTED" | grep "${EXCHANGE_AML_PROGRAM_TOPS_ENABLE_DEPOSITS_TOS_NAME}" > /dev/null then # Valid ToS acceptance # Remove limitation from current rules. NEW_RULES=$(echo "$CURRENT_RULES" | jq 'walk(if ( (type == "object") and (.operation_type == "deposit") and (.threshold == "${EXCHANGE_AML_PROGRAM_TOPS_ENABLE_DEPOSITS_THRESHOLD }}") ) then del(.) else . end)') else # Invalid ToS version - echo "Version of accepted ToS ${TOS_ACCEPTED} invalid." 1&>2 + echo "Version of accepted ToS ${TOS_ACCEPTED} invalid." 1>&2 NEW_RULES="$CURRENT_RULES" fi diff --git a/src/kyclogic/taler-exchange-helper-measure-tops-3rdparty-check b/src/kyclogic/taler-exchange-helper-measure-tops-3rdparty-check @@ -89,7 +89,7 @@ fi INPUTS=$(jq '{"current_rules":.current_rules,"attributes":.attributes}') # Get entity type -CONTROL3P=$(echo "$INPUTS" | jq '.attributes.CONTROLLING_ENTITY_THIRD_PERSON // null') +CONTROL3P=$(echo "$INPUTS" | jq -r '.attributes.THIRD_PARTY_OWNERSHIP // null') # Get current rules. CURRENT_RULES=$(echo "$INPUTS" | jq '.current_rules // null') # Get context values. @@ -113,7 +113,7 @@ in "error") # This should not happen, immediately trigger investigation and show error to the user. echo "ERROR: Unexpected value for controlling entity is 3rd person '${CONTROL3P}'" 1>&2 - NEW_RULES=$(echo "$CURRENT_RULES" | jq '(.rules[] | select (.rule_name=="deposit-limit-zero") | .measures=["form-info-internal-error"])') + NEW_RULES=$(echo "$CURRENT_RULES" | jq '(.rules[] |= if (.rule_name=="deposit-limit-zero" or .measures[0] == "form-vqf-902.11") then .measures=["form-info-internal-error"] else . end)') INVESTIGATE="true" ;; "none") @@ -123,10 +123,10 @@ in ;; *) # Proceed to FORM. - echo "Selected VQF form ${FORM}." 1&>2 + echo "Selected VQF form ${FORM}." 1>&2 # Force user to fill in $FORM - NEW_RULES=$(echo "$CURRENT_RULES" | jq '(.rules[] |= if (.rule_name=="deposit-limit-zero") then .measures=["form-${FORM}"] else . end)') + NEW_RULES=$(echo "$CURRENT_RULES" | jq '(.rules[] |= if (.rule_name=="deposit-limit-zero" or .measures[0] == "form-vqf-902.11") then .measures=["form-${FORM}"] else . end)') INVESTIGATE="false" ;; esac diff --git a/src/kyclogic/taler-exchange-helper-measure-tops-address-check b/src/kyclogic/taler-exchange-helper-measure-tops-address-check @@ -135,10 +135,10 @@ CUSTOM_MEASURES=$(jq -n \ '{"custom-address-investigation":{"context":{"initial_address":$address},"check_name":"postal-registration","prog_name":"inform-investigate","operation_type":"DEPOSIT"}}') # Then trigger Challenger address check via oauth2, kyc-check-postal-registration -NEW_RULES=$(echo "$CURRENT_RULES" | jq '(.rules[] |= if (.measures[0]=="kyx") then .measures=["custom-address-investigation"] else . end)' | jq --argjson cm "$CUSTOM_MEASURES" '.custom_measures=$cm') +NEW_RULES=$(echo "$CURRENT_RULES" | jq --argjson cm "$CUSTOM_MEASURES" '(.rules[] |= if (.measures[0]=="kyx" or .rule_name=="deposit-limit-zero" or .rule_name=="p2p-domestic-identification-requirement") then .measures=["custom-address-investigation"] else . end) | .custom_measures=$cm') # Replace all existing 'postal-registration' measures with 'custom-address-investigation' -NEW_RULES=$(echo "$NEW_RULES" | jq '(.rules[].measures[] |= if (. =="postal-registration") then "custom-address-investigation" else . end)' | jq --argjson cm "$CUSTOM_MEASURES" '.custom_measures=$cm') +NEW_RULES=$(echo "$NEW_RULES" | jq --argjson cm "$CUSTOM_MEASURES" '(.rules[].measures[] |= if (. =="postal-registration") then "custom-address-investigation" else . end) | .custom_measures=$cm') # Finally, output the new rules. # See https://docs.taler.net/taler-kyc-manual.html#tsref-type-AmlOutcome diff --git a/src/kyclogic/taler-exchange-helper-measure-tops-kyx-check b/src/kyclogic/taler-exchange-helper-measure-tops-kyx-check @@ -126,7 +126,7 @@ in "error") # This should not happen, immediately trigger investigation and show error to the user. echo "ERROR: Unexpected legal entity '${LEGAL_ENTITY}'" 1>&2 - NEW_RULES=$(echo "$CURRENT_RULES" | jq '(.rules[] |= if (.rule_name=="deposit-limit-zero") then .measures=["form-info-internal-error"] else . end)') + NEW_RULES=$(echo "$CURRENT_RULES" | jq '(.rules[] |= if (.measures[0]=="kyx") then .measures=["form-info-internal-error"] else . end)') INVESTIGATE="true" ;; "none") @@ -136,10 +136,9 @@ in ;; *) # Proceed to FORM. - echo "Selected VQF form ${FORM}." 1&>2 - + echo "Selected VQF form ${FORM}." 1>&2 # Force user to fill in $FORM - NEW_RULES=$(echo "$CURRENT_RULES" | jq '(.rules[] |= if (.rule_name=="deposit-limit-zero") then .measures=["form-${FORM}"] else . end)') + NEW_RULES=$(echo "$CURRENT_RULES" | jq '(.rules[] |= if (.measures[0]=="kyx") then .measures=["form-${FORM}"] else . end)') INVESTIGATE="false" ;; esac diff --git a/src/kyclogic/taler-exchange-helper-measure-tops-postal-check b/src/kyclogic/taler-exchange-helper-measure-tops-postal-check @@ -99,7 +99,7 @@ SUCCESSOR_MEASURE=$(echo "$INPUTS" | jq '.context.successor_measure // .current_ CUSTOM_MEASURES=$(echo "$INPUTS" | jq '.context.custom_measures // null') # Validate country -if $(echo "$COUNTRY" | grep -E -e ${EXCHANGE_AML_PROGRAM_TOPS_POSTAL_CHECK_COUNTRY_REGEX} > /dev/null) +if eval echo "$COUNTRY" | grep -E -e "${EXCHANGE_AML_PROGRAM_TOPS_POSTAL_CHECK_COUNTRY_REGEX}" > /dev/null then # Valid country # Remove limitation from current rules. @@ -107,7 +107,7 @@ then else # Invalid country - echo "Country ${COUNTRY} invalid." 1&>2 + echo "Country ${COUNTRY} invalid." 1>&2 NEW_RULES="$CURRENT_RULES" fi diff --git a/src/kyclogic/taler-exchange-helper-measure-tops-sms-check b/src/kyclogic/taler-exchange-helper-measure-tops-sms-check @@ -97,7 +97,7 @@ SUCCESSOR_MEASURE=$(echo "$INPUTS" | jq '.context.successor_measure // .current_ CUSTOM_MEASURES=$(echo "$INPUTS" | jq '.context.custom_measures // null') # Validate phone number -if $(echo "$PHONE_NUMBER" | grep -E -e ${EXCHANGE_AML_PROGRAM_TOPS_SMS_CHECK_REGEX} > /dev/null) +if eval echo "$PHONE_NUMBER" | grep -E -e "${EXCHANGE_AML_PROGRAM_TOPS_SMS_CHECK_REGEX}" > /dev/null then # Valid phone number # Remove limitation from current rules. @@ -110,7 +110,7 @@ NEW_RULES=$(echo "$NEW_RULES" | jq 'del(.rules[] | select (.rule_name=="balance- else # Invalid phone number echo "Phone number ${PHONE_NUMBER} invalid." 1>&2 - NEW_RULES=$(echo $CURRENT_RULES | jq '.+{"to_investigate": true}') + NEW_RULES=$(echo "$CURRENT_RULES" | jq '.+{"to_investigate": true}') TO_INVESTIGATE="true" fi diff --git a/src/kyclogic/taler-exchange-kyc-kycaid-converter.sh b/src/kyclogic/taler-exchange-kyc-kycaid-converter.sh @@ -37,18 +37,18 @@ DOCS_JSON="" for ID in $(jq -r '.documents[]|select(.status=="valid")|.id') do TYPE=$(jq -r ".documents[]|select(.id==\"$ID\")|.type") - EXPIRY=$(jq -r ".documents[]|select(.id==\"$ID\")|.expiry_date") +# EXPIRY=$(jq -r ".documents[]|select(.id==\"$ID\")|.expiry_date") DOCUMENT_FILE=$(mktemp -t tmp.XXXXXXXXXX) # Authorization: Token $TOKEN DOCUMENT_URL="https://api.kycaid.com/documents/$ID" if [ -z "${TOKEN:-}" ] then wget -q --output-document=- "$DOCUMENT_URL" \ - | gnunet-base32 > ${DOCUMENT_FILE} + | gnunet-base32 > "${DOCUMENT_FILE}" else wget -q --output-document=- "$DOCUMENT_URL" \ --header "Authorization: Token $TOKEN" \ - | gnunet-base32 > ${DOCUMENT_FILE} + | gnunet-base32 > "${DOCUMENT_FILE}" fi DOCS_RAW="$DOCS_RAW --rawfile photo$N \"${DOCUMENT_FILE}\"" if [ "$N" = 0 ] @@ -57,7 +57,7 @@ do else DOCS_JSON="{\"type\":\"$TYPE\",\"image\":\$photo$N},$DOCS_JSON" fi - N=$(expr $N + 1) + N=$((N + 1)) done @@ -81,7 +81,7 @@ else # Combine into final result for business. echo "$J" \ | jq \ - $DOCS_RAW \ + "$DOCS_RAW" \ "{\"company_name\":.company_name,\"phone\":.phone,\"email\":.email,\"registration_country\":.registration_country,\"documents\":[${DOCS_JSON}]}" \ | jq \ 'del(..|select(.==null))' diff --git a/src/kyclogic/taler-exchange-kyc-oauth2-test-converter.sh b/src/kyclogic/taler-exchange-kyc-oauth2-test-converter.sh @@ -23,7 +23,7 @@ fi FULLNAME=$(echo "$J" | jq -r '[.first,.last]|join(" ")') -echo $J \ +echo "$J" \ | jq \ --arg full_name "${FULLNAME}" \ '{$full_name,"birthdate":.birthdate,"id":.id}' \ diff --git a/src/kyclogic/taler-exchange-kyc-persona-converter.sh b/src/kyclogic/taler-exchange-kyc-persona-converter.sh @@ -30,17 +30,17 @@ J=$(jq '{"first":.data.attributes."name-first","middle":.data.attributes."name-m # Next, combine some fields into larger values. FULLNAME=$(echo "$J" | jq -r '[.first,.middle,.last]|join(" ")') -STREET=$(echo $J | jq -r '[."street-1",."street-2"]|join(" ")') -CITY=$(echo $J | jq -r '[.postcode,.city,."address-subdivision,.cc"]|join(" ")') +STREET=$(echo "$J" | jq -r '[."street-1",."street-2"]|join(" ")') +CITY=$(echo "$J" | jq -r '[.postcode,.city,."address-subdivision,.cc"]|join(" ")') # Download and base32-encode the photo PHOTO_URL=$(echo "$J" | jq -r '.photo') PHOTO_FILE=$(mktemp -t tmp.XXXXXXXXXX) if [ -z "${TOKEN:-}" ] then - wget -q --output-document=- "$PHOTO_URL" | gnunet-base32 > ${PHOTO_FILE} + wget -q --output-document=- "$PHOTO_URL" | gnunet-base32 > "${PHOTO_FILE}" else - wget -q --output-document=- --header "Authorization: Bearer $TOKEN" "$PHOTO_URL" | gnunet-base32 > ${PHOTO_FILE} + wget -q --output-document=- --header "Authorization: Bearer $TOKEN" "$PHOTO_URL" | gnunet-base32 > "${PHOTO_FILE}" fi # Combine into final result.