aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2024-09-12 23:18:25 +0200
committerChristian Grothoff <christian@grothoff.org>2024-09-12 23:18:25 +0200
commitbc3c92eec5e6398eb4479eafaf50a1a9307e5510 (patch)
treedc0fd4c6c02196d7b195af077b62b8cf999af095 /src
parent24a265fe1375e5deecaf6a4f938b1bc13bb163d1 (diff)
implement #9189, and also expose new shopping_url
Diffstat (limited to 'src')
-rw-r--r--src/exchange/taler-exchange-httpd.c55
-rw-r--r--src/exchange/taler-exchange-httpd.h12
-rw-r--r--src/exchange/taler-exchange-httpd_config.c3
-rw-r--r--src/exchange/taler-exchange-httpd_keys.c9
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",