diff options
author | Christian Grothoff <christian@grothoff.org> | 2024-11-19 21:57:04 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2024-11-19 21:57:04 +0100 |
commit | db476a2a7c5ebe2df2ae21960595684e2e9046bf (patch) | |
tree | 848bce204b208d2ff0be9c9ed659851ecc3d4193 /src/kyclogic/taler-exchange-helper-measure-preserve-set-expiration | |
parent | 2f57aa7932358534f34414d3c1b6f00a50b1b4a4 (diff) |
add new taler-exchange-helper-measure programs
Diffstat (limited to 'src/kyclogic/taler-exchange-helper-measure-preserve-set-expiration')
-rw-r--r-- | src/kyclogic/taler-exchange-helper-measure-preserve-set-expiration | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/src/kyclogic/taler-exchange-helper-measure-preserve-set-expiration b/src/kyclogic/taler-exchange-helper-measure-preserve-set-expiration new file mode 100644 index 000000000..ba09d5489 --- /dev/null +++ b/src/kyclogic/taler-exchange-helper-measure-preserve-set-expiration @@ -0,0 +1,106 @@ +#!/bin/bash +# +# This file is part of TALER +# Copyright (C) 2024 Taler Systems SA +# +# TALER is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3, or (at your option) any later version. +# +# TALER is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# TALER; see the file COPYING. If not, If not, see <http://www.gnu.org/license> +# + +# Hard error reporting on. +set -eu + + + +# Exit, with error message (hard failure) +function exit_fail() { + echo " FAIL: " "$@" >&2 + EXIT_STATUS=1 + exit "$EXIT_STATUS" +} + +CONF="$HOME/.config/taler-exchange.conf" +VERBOSE=0 + +while getopts 'ac:hirvV' OPTION; +do + case "$OPTION" in + a) + # No attributes are required. + exit 0 + ;; + c) + # shellcheck disable=SC2034 + CONF="$OPTARG" + ;; + h) + echo "This is a KYC measure program that preserves the current rules of an account, but sets expiration rules based on the context." + echo 'Supported options:' + echo ' -a -- show required attributes' + # shellcheck disable=SC2016 + echo ' -c $CONF -- set configuration' + echo ' -h -- print this help' + echo ' -i -- show required inputs' + echo ' -r -- show required context' + echo ' -v -- show version' + echo ' -V -- be verbose' + ;; + i) + # Need context and current_rules. + echo "context" + echo "current_rules" + exit 0 + ;; + r) + # Need expiration time and successor measure. + echo "expiration_time" + echo "successor_measure" + exit 0 + ;; + v) + echo "$0 v0.0.0" + exit 0 + ;; + V) + VERBOSE=1 + ;; + ?) + exit_fail "Unrecognized command line option" + ;; + esac +done + +if [ 1 = "$VERBOSE" ] +then + echo "Running $0" 1>&2 +fi + +# See https://docs.taler.net/taler-kyc-manual.html#tsref-type-AmlProgramInput +# for the full JSON with possible inputs. + +# First, extract inputs we need +INPUTS=$(jq '{"current_rules":.current_rules,"context":.context}') + +# Get context values. +EXPIRATION_TIME=$(echo "$INPUTS" | jq '.context.expiration_time // null') +SUCCESSOR_MEASURE=$(echo "$INPUTS" | jq '.context.successor_measure // null') + +# Finally, output the new rules. +# See https://docs.taler.net/taler-kyc-manual.html#tsref-type-AmlOutcome +# for the required output format. + +echo "$INPUTS" \ + | jq \ + --jsonarg et "$EXPIRATION_TIME" \ + --jsonarg sm "$SUCCESSOR_MEASURE" \ + '.current_rules+{"new_rules":(.new_rules+{"expiration_time":$et,"successor_measure":$sm})}|del(..|nulls)' + +exit 0 |