diff options
author | Christian Grothoff <christian@grothoff.org> | 2024-09-12 23:18:25 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2024-09-12 23:18:25 +0200 |
commit | bc3c92eec5e6398eb4479eafaf50a1a9307e5510 (patch) | |
tree | dc0fd4c6c02196d7b195af077b62b8cf999af095 /src | |
parent | 24a265fe1375e5deecaf6a4f938b1bc13bb163d1 (diff) |
implement #9189, and also expose new shopping_url
Diffstat (limited to 'src')
-rw-r--r-- | src/exchange/taler-exchange-httpd.c | 55 | ||||
-rw-r--r-- | src/exchange/taler-exchange-httpd.h | 12 | ||||
-rw-r--r-- | src/exchange/taler-exchange-httpd_config.c | 3 | ||||
-rw-r--r-- | src/exchange/taler-exchange-httpd_keys.c | 9 |
4 files changed, 77 insertions, 2 deletions
diff --git a/src/exchange/taler-exchange-httpd.c b/src/exchange/taler-exchange-httpd.c index f45865381..a3169ea0a 100644 --- a/src/exchange/taler-exchange-httpd.c +++ b/src/exchange/taler-exchange-httpd.c @@ -96,7 +96,7 @@ * Above what request latency do we start to log? */ #define WARN_LATENCY GNUNET_TIME_relative_multiply ( \ - GNUNET_TIME_UNIT_MILLISECONDS, 500) + GNUNET_TIME_UNIT_MILLISECONDS, 500) /** * Are clients allowed to request /keys for times other than the @@ -166,6 +166,12 @@ struct TALER_Amount TEH_stefan_abs; struct TALER_Amount TEH_stefan_log; /** + * Smallest amount that can be transferred. Used for the + * KYC auth transfers by default. + */ +struct TALER_Amount TEH_tiny_amount; + +/** * Linear STEFAN parameter. */ float TEH_stefan_lin; @@ -181,6 +187,12 @@ json_t *TEH_hard_limits; json_t *TEH_zero_limits; /** + * URL where users can discover shops accepting digital cash + * issued by this exchange. Can be NULL. + */ +char *TEH_shopping_url; + +/** * Where to redirect users from "/"? */ static char *toplevel_redirect_url; @@ -2245,6 +2257,24 @@ exchange_serve_process_config (const char *cfg_fn) GNUNET_break (0); return GNUNET_SYSERR; } + GNUNET_assert (GNUNET_OK == + TALER_amount_set_zero (TEH_currency, + &TEH_tiny_amount)); + if ( (GNUNET_OK != + TALER_config_get_amount (TEH_cfg, + "exchange", + "TINY_AMOUNT", + &TEH_tiny_amount)) && + (GNUNET_OK != + TALER_config_get_amount (TEH_cfg, + "auditor", + "TINY_AMOUNT", + &TEH_tiny_amount)) ) + { + GNUNET_log_config_missing (GNUNET_ERROR_TYPE_WARNING, + "exchange", + "TINY_AMOUNT"); + } TEH_stefan_lin = 0.0f; if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_float (TEH_cfg, @@ -2267,7 +2297,8 @@ exchange_serve_process_config (const char *cfg_fn) "BASE_URL"); return GNUNET_SYSERR; } - if (! TALER_url_valid_charset (TEH_base_url)) + if ( (! TALER_url_valid_charset (TEH_base_url)) || + (! TALER_is_web_url (TEH_base_url) ) ) { GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, "exchange", @@ -2275,6 +2306,26 @@ exchange_serve_process_config (const char *cfg_fn) "invalid URL"); return GNUNET_SYSERR; } + if (GNUNET_SYSERR != + GNUNET_CONFIGURATION_get_value_string (TEH_cfg, + "exchange", + "SHOPPING_URL", + &TEH_shopping_url)) + { + GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, + "exchange", + "SHOPPING_URL"); + return GNUNET_SYSERR; + } + if ( (NULL != TEH_shopping_url) && + (! TALER_is_web_url (TEH_shopping_url)) ) + { + GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, + "exchange", + "SHOPPING_URL", + "invalid URL"); + return GNUNET_SYSERR; + } { char *master_public_key_str; diff --git a/src/exchange/taler-exchange-httpd.h b/src/exchange/taler-exchange-httpd.h index 7f2233eab..a5b597f31 100644 --- a/src/exchange/taler-exchange-httpd.h +++ b/src/exchange/taler-exchange-httpd.h @@ -118,6 +118,18 @@ extern struct TALER_Amount TEH_stefan_abs; extern struct TALER_Amount TEH_stefan_log; /** + * Smallest amount that can be transferred. Used for the + * KYC auth transfers by default. + */ +extern struct TALER_Amount TEH_tiny_amount; + +/** + * URL where users can discover shops accepting digital cash + * issued by this exchange. Can be NULL. + */ +extern char *TEH_shopping_url; + +/** * Linear STEFAN parameter. */ extern float TEH_stefan_lin; diff --git a/src/exchange/taler-exchange-httpd_config.c b/src/exchange/taler-exchange-httpd_config.c index 35d0705e9..48a7deec0 100644 --- a/src/exchange/taler-exchange-httpd_config.c +++ b/src/exchange/taler-exchange-httpd_config.c @@ -63,6 +63,9 @@ TEH_handler_config (struct TEH_RequestContext *rc, GNUNET_JSON_pack_array_steal ( "wallet_balance_limit_without_kyc", TALER_KYCLOGIC_get_wallet_thresholds ())), + GNUNET_JSON_pack_allow_null ( + GNUNET_JSON_pack_string ("shopping_url", + TEH_shopping_url)), /* Deprecate? */ GNUNET_JSON_pack_array_steal ( "supported_kyc_requirements", diff --git a/src/exchange/taler-exchange-httpd_keys.c b/src/exchange/taler-exchange-httpd_keys.c index 9998ccbbb..ab6798dc6 100644 --- a/src/exchange/taler-exchange-httpd_keys.c +++ b/src/exchange/taler-exchange-httpd_keys.c @@ -2458,6 +2458,15 @@ create_krd (struct TEH_KeyStateHandle *ksh, GNUNET_JSON_pack_array_steal ( "wallet_balance_limit_without_kyc", TALER_KYCLOGIC_get_wallet_thresholds ())), + GNUNET_JSON_pack_allow_null ( + GNUNET_JSON_pack_string ("shopping_url", + TEH_shopping_url)), + GNUNET_JSON_pack_allow_null ( + TALER_amount_is_zero (&TEH_tiny_amount) + ? GNUNET_JSON_pack_string ("dummy", + NULL) + : TALER_JSON_pack_amount ("tiny_amount", + &TEH_tiny_amount)), GNUNET_JSON_pack_data_auto ("exchange_pub", &exchange_pub), GNUNET_JSON_pack_data_auto ("exchange_sig", |