From bd2372f20ef7259d87c44e92de32c66b26e6632f Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 11 Apr 2015 16:38:09 +0200 Subject: implementing #3740 --- contrib/mint-template/config/mint-common.conf | 14 ++++++++++---- src/mint/taler-mint-httpd.c | 24 +++++++++++++++++++++++- src/mint/taler-mint-httpd.h | 5 ++--- src/mint/taler-mint-httpd_parsing.c | 6 +++--- src/mint/taler-mint-httpd_refresh.c | 4 ++-- 5 files changed, 40 insertions(+), 13 deletions(-) diff --git a/contrib/mint-template/config/mint-common.conf b/contrib/mint-template/config/mint-common.conf index 4e13a3ef3..00cbc82fa 100644 --- a/contrib/mint-template/config/mint-common.conf +++ b/contrib/mint-template/config/mint-common.conf @@ -1,6 +1,12 @@ [mint] -db = postgres:///taler -port = 4241 -TMH_master_public_key = ... -refresh_security_parameter = 3 +# Currency supported by the mint (can only be one) +CURRENCY = EUR +# How to access our database +DB = postgres:///taler + +# HTTP port the mint listens to +PORT = 4241 + +# Master public key used to sign the mint's various keys +TMH_MASTER_PUBLIC_KEY = ... diff --git a/src/mint/taler-mint-httpd.c b/src/mint/taler-mint-httpd.c index 1315ba204..dd1e234cb 100644 --- a/src/mint/taler-mint-httpd.c +++ b/src/mint/taler-mint-httpd.c @@ -36,6 +36,10 @@ #include "taler-mint-httpd_keystate.h" #include "taler_mintdb_plugin.h" +/** + * Which currency is used by this mint? + */ +char *TMH_mint_currency_string; /** * Base directory of the mint (global) @@ -248,9 +252,27 @@ mint_serve_process_config (const char *mint_directory) if (NULL == cfg) { fprintf (stderr, - "can't load mint configuration\n"); + "Failed to load mint configuration\n"); return 1; } + if (GNUNET_OK != + GNUNET_CONFIGURATION_get_value_string (cfg, + "mint", + "currency", + &TMH_mint_currency_string)) + { + fprintf (stderr, + "No currency given in mint configuration."); + return GNUNET_NO; + } + if (strlen (TMH_mint_currency_string) >= TALER_CURRENCY_LEN) + { + fprintf (stderr, + "Currency `%s' longer than the allowed limit of %u characters.", + TMH_mint_currency_string, + (unsigned int) TALER_CURRENCY_LEN); + return GNUNET_NO; + } if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_string (cfg, "mint", diff --git a/src/mint/taler-mint-httpd.h b/src/mint/taler-mint-httpd.h index 5a65ba438..c674a9daa 100644 --- a/src/mint/taler-mint-httpd.h +++ b/src/mint/taler-mint-httpd.h @@ -28,10 +28,9 @@ #include /** - * For now, we just do EUR. Should become configurable in the future! (#3740) + * Which currency is used by this mint? */ -#define TMH_MINT_CURRENCY "EUR" - +extern char *TMH_mint_currency_string; /** * The mint's configuration. diff --git a/src/mint/taler-mint-httpd_parsing.c b/src/mint/taler-mint-httpd_parsing.c index c492eccef..d079da5cc 100644 --- a/src/mint/taler-mint-httpd_parsing.c +++ b/src/mint/taler-mint-httpd_parsing.c @@ -1025,7 +1025,7 @@ TMH_PARSE_amount_json (struct MHD_Connection *connection, return GNUNET_NO; } if (0 != strcmp (currency, - TMH_MINT_CURRENCY)) + TMH_mint_currency_string)) { TALER_LOG_WARNING ("Currency specified not supported by this mint\n"); if (MHD_YES != @@ -1039,8 +1039,8 @@ TMH_PARSE_amount_json (struct MHD_Connection *connection, } amount->value = (uint64_t) value; amount->fraction = (uint32_t) fraction; - GNUNET_assert (strlen (TMH_MINT_CURRENCY) < TALER_CURRENCY_LEN); - strcpy (amount->currency, TMH_MINT_CURRENCY); + GNUNET_assert (strlen (TMH_mint_currency_string) < TALER_CURRENCY_LEN); + strcpy (amount->currency, TMH_mint_currency_string); TALER_amount_normalize (amount); return GNUNET_OK; } diff --git a/src/mint/taler-mint-httpd_refresh.c b/src/mint/taler-mint-httpd_refresh.c index ffe65911f..805d4f9c5 100644 --- a/src/mint/taler-mint-httpd_refresh.c +++ b/src/mint/taler-mint-httpd_refresh.c @@ -75,7 +75,7 @@ handle_refresh_melt_binary (struct MHD_Connection *connection, struct TALER_Amount total_melt; GNUNET_assert (GNUNET_OK == - TALER_amount_get_zero (TMH_MINT_CURRENCY, + TALER_amount_get_zero (TMH_mint_currency_string, &total_cost)); key_state = TMH_KS_acquire (); for (i=0;i