merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

commit 9f6610110475dfc0e6ef9bf35d0f3ca71b7f4dbf
parent 974384b090ecbb4538bb39f7691cecc0a8e600ab
Author: Christian Grothoff <grothoff@gnunet.org>
Date:   Thu, 29 Jan 2026 18:03:45 +0900

rename for consistency

Diffstat:
Msrc/backend/Makefile.am | 2+-
Dsrc/backend/taler-merchant-httpd_config.c | 208-------------------------------------------------------------------------------
Dsrc/backend/taler-merchant-httpd_config.h | 39---------------------------------------
Msrc/backend/taler-merchant-httpd_dispatcher.c | 2+-
Asrc/backend/taler-merchant-httpd_get-config.c | 208+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/backend/taler-merchant-httpd_get-config.h | 39+++++++++++++++++++++++++++++++++++++++
6 files changed, 249 insertions(+), 249 deletions(-)

diff --git a/src/backend/Makefile.am b/src/backend/Makefile.am @@ -78,7 +78,7 @@ taler_merchant_httpd_SOURCES = \ taler-merchant-httpd.c taler-merchant-httpd.h \ taler-merchant-httpd_auth.c \ taler-merchant-httpd_auth.h \ - taler-merchant-httpd_config.c taler-merchant-httpd_config.h \ + taler-merchant-httpd_get-config.c taler-merchant-httpd_get-config.h \ taler-merchant-httpd_contract.c taler-merchant-httpd_contract.h \ taler-merchant-httpd_dispatcher.c \ taler-merchant-httpd_dispatcher.h \ diff --git a/src/backend/taler-merchant-httpd_config.c b/src/backend/taler-merchant-httpd_config.c @@ -1,208 +0,0 @@ -/* - This file is part of TALER - (C) 2019, 2020, 2021, 2023, 2024, 2025 Taler Systems SA - - TALER is free software; you can redistribute it and/or modify it under the - terms of the GNU Affero 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, see <http://www.gnu.org/licenses/> -*/ -/** - * @file taler-merchant-httpd_config.c - * @brief implement API for querying configuration data of the backend - * @author Florian Dold - */ -#include "platform.h" -#include <jansson.h> -#include <taler/taler_util.h> -#include <taler/taler_json_lib.h> -#include "taler-merchant-httpd.h" -#include "taler-merchant-httpd_config.h" -#include "taler-merchant-httpd_mhd.h" -#include "taler-merchant-httpd_exchanges.h" - - -/** - * Taler protocol version in the format CURRENT:REVISION:AGE - * as used by GNU libtool. See - * https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html - * - * Please be very careful when updating and follow - * https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info - * precisely. Note that this version has NOTHING to do with the - * release version, and the format is NOT the same that semantic - * versioning uses either. - * - * When changing this version, you likely want to also update - * #MERCHANT_PROTOCOL_CURRENT and #MERCHANT_PROTOCOL_AGE in - * merchant_api_get_config.c! - */ -#define MERCHANT_PROTOCOL_VERSION "25:0:13" - - -/** - * Callback on an exchange known to us. Does not warrant - * that the "keys" information is actually available for - * @a exchange. - * - * @param cls closure with `json_t *` array to expand - * @param url base URL of the exchange - * @param exchange internal handle for the exchange - */ -static void -add_exchange (void *cls, - const char *url, - const struct TMH_Exchange *exchange) -{ - json_t *xa = cls; - json_t *xi; - - xi = GNUNET_JSON_PACK ( - GNUNET_JSON_pack_data_auto ("master_pub", - TMH_EXCHANGES_get_master_pub (exchange)), - GNUNET_JSON_pack_string ("currency", - TMH_EXCHANGES_get_currency (exchange)), - GNUNET_JSON_pack_string ("base_url", - url)); - GNUNET_assert (NULL != xi); - GNUNET_assert (0 == - json_array_append_new (xa, - xi)); -} - - -/** - * Function to iterate over configuration sections, looking for - * the report generators. - * - * @param cls closure with the `json *` array to build - * @param section name of the section - */ -static void -add_report_generator (void *cls, - const char *section) -{ - json_t *rgs = cls; - - if (0 != strncasecmp (section, - "report-generator-", - strlen ("report-generator-"))) - return; - if (GNUNET_YES != - GNUNET_CONFIGURATION_have_value (TMH_cfg, - section, - "BINARY")) - { - GNUNET_log_config_missing (GNUNET_ERROR_TYPE_WARNING, - section, - "BINARY"); - return; - } - GNUNET_assert (0 == - json_array_append_new (rgs, - json_string (section - + strlen ( - "report-generator-")))); -} - - -MHD_RESULT -MH_handler_config (const struct TMH_RequestHandler *rh, - struct MHD_Connection *connection, - struct TMH_HandlerContext *hc) -{ - static struct MHD_Response *response; - - (void) rh; - (void) hc; - if (NULL == response) - { - json_t *specs = json_object (); - json_t *exchanges = json_array (); - json_t *mtc = json_array (); - json_t *rgs = json_array (); - - GNUNET_assert (NULL != specs); - GNUNET_assert (NULL != exchanges); - GNUNET_assert (NULL != mtc); - GNUNET_assert (NULL != rgs); - GNUNET_CONFIGURATION_iterate_sections (TMH_cfg, - &add_report_generator, - rgs); - TMH_exchange_get_trusted (&add_exchange, - exchanges); - if (0 != (TEH_TCS_SMS & TEH_mandatory_tan_channels)) - GNUNET_assert (0 == - json_array_append_new (mtc, - json_string ("sms"))); - if (0 != (TEH_TCS_EMAIL & TEH_mandatory_tan_channels)) - GNUNET_assert (0 == - json_array_append_new (mtc, - json_string ("email"))); - for (unsigned int i = 0; i<TMH_num_cspecs; i++) - { - const struct TALER_CurrencySpecification *cspec = &TMH_cspecs[i]; - - if (TMH_test_exchange_configured_for_currency (cspec->currency)) - GNUNET_assert (0 == - json_object_set_new ( - specs, - cspec->currency, - TALER_JSON_currency_specs_to_json ( - cspec))); - } - response = TALER_MHD_MAKE_JSON_PACK ( - GNUNET_JSON_pack_string ("currency", - TMH_currency), - GNUNET_JSON_pack_string ("payment_target_types", - TMH_allowed_payment_targets), - GNUNET_JSON_pack_time_rel ("default_refund_delay", - TMH_default_refund_delay), - GNUNET_JSON_pack_time_rel ("default_wire_transfer_delay", - TMH_default_wire_transfer_delay), - GNUNET_JSON_pack_time_rel ("default_pay_delay", - TMH_default_pay_delay), - GNUNET_JSON_pack_string ("default_persona", - TMH_default_persona), - GNUNET_JSON_pack_allow_null ( - GNUNET_JSON_pack_string ("payment_target_regex", - TMH_payment_target_regex)), - GNUNET_JSON_pack_bool ("have_self_provisioning", - GNUNET_YES == - TMH_have_self_provisioning), -#ifdef HAVE_DONAU_DONAU_SERVICE_H - GNUNET_JSON_pack_bool ("have_donau", - true), -#else - GNUNET_JSON_pack_bool ("have_donau", - false), -#endif - GNUNET_JSON_pack_object_steal ("currencies", - specs), - GNUNET_JSON_pack_array_steal ("report_generators", - rgs), - GNUNET_JSON_pack_array_steal ("exchanges", - exchanges), - GNUNET_JSON_pack_array_steal ("mandatory_tan_channels", - mtc), - GNUNET_JSON_pack_string ( - "implementation", - "urn:net:taler:specs:taler-merchant:c-reference"), - GNUNET_JSON_pack_string ("name", - "taler-merchant"), - GNUNET_JSON_pack_string ("version", - MERCHANT_PROTOCOL_VERSION)); - } - return MHD_queue_response (connection, - MHD_HTTP_OK, - response); -} - - -/* end of taler-merchant-httpd_config.c */ diff --git a/src/backend/taler-merchant-httpd_config.h b/src/backend/taler-merchant-httpd_config.h @@ -1,39 +0,0 @@ -/* - This file is part of TALER - (C) 2019, 2020 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, see <http://www.gnu.org/licenses/> -*/ -/** - * @file taler-merchant-httpd_config.h - * @brief headers for /config handler - * @author Florian Dold - */ -#ifndef TALER_MERCHANT_HTTPD_CONFIG_H -#define TALER_MERCHANT_HTTPD_CONFIG_H -#include <microhttpd.h> -#include "taler-merchant-httpd.h" - -/** - * Manages a /config call. - * - * @param rh context of the handler - * @param connection the MHD connection to handle - * @param[in,out] hc handler context (can be updated) - * @return MHD result code - */ -MHD_RESULT -MH_handler_config (const struct TMH_RequestHandler *rh, - struct MHD_Connection *connection, - struct TMH_HandlerContext *hc); - -#endif diff --git a/src/backend/taler-merchant-httpd_dispatcher.c b/src/backend/taler-merchant-httpd_dispatcher.c @@ -19,7 +19,7 @@ * @author Christian Grothoff */ #include "platform.h" -#include "taler-merchant-httpd_config.h" +#include "taler-merchant-httpd_get-config.h" #include "taler-merchant-httpd_dispatcher.h" #include "taler-merchant-httpd_exchanges.h" #include "taler-merchant-httpd_get-orders-ID.h" diff --git a/src/backend/taler-merchant-httpd_get-config.c b/src/backend/taler-merchant-httpd_get-config.c @@ -0,0 +1,208 @@ +/* + This file is part of TALER + (C) 2019, 2020, 2021, 2023, 2024, 2025 Taler Systems SA + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU Affero 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, see <http://www.gnu.org/licenses/> +*/ +/** + * @file taler-merchant-httpd_config.c + * @brief implement API for querying configuration data of the backend + * @author Florian Dold + */ +#include "platform.h" +#include <jansson.h> +#include <taler/taler_util.h> +#include <taler/taler_json_lib.h> +#include "taler-merchant-httpd.h" +#include "taler-merchant-httpd_get-config.h" +#include "taler-merchant-httpd_mhd.h" +#include "taler-merchant-httpd_exchanges.h" + + +/** + * Taler protocol version in the format CURRENT:REVISION:AGE + * as used by GNU libtool. See + * https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html + * + * Please be very careful when updating and follow + * https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info + * precisely. Note that this version has NOTHING to do with the + * release version, and the format is NOT the same that semantic + * versioning uses either. + * + * When changing this version, you likely want to also update + * #MERCHANT_PROTOCOL_CURRENT and #MERCHANT_PROTOCOL_AGE in + * merchant_api_get_config.c! + */ +#define MERCHANT_PROTOCOL_VERSION "25:0:13" + + +/** + * Callback on an exchange known to us. Does not warrant + * that the "keys" information is actually available for + * @a exchange. + * + * @param cls closure with `json_t *` array to expand + * @param url base URL of the exchange + * @param exchange internal handle for the exchange + */ +static void +add_exchange (void *cls, + const char *url, + const struct TMH_Exchange *exchange) +{ + json_t *xa = cls; + json_t *xi; + + xi = GNUNET_JSON_PACK ( + GNUNET_JSON_pack_data_auto ("master_pub", + TMH_EXCHANGES_get_master_pub (exchange)), + GNUNET_JSON_pack_string ("currency", + TMH_EXCHANGES_get_currency (exchange)), + GNUNET_JSON_pack_string ("base_url", + url)); + GNUNET_assert (NULL != xi); + GNUNET_assert (0 == + json_array_append_new (xa, + xi)); +} + + +/** + * Function to iterate over configuration sections, looking for + * the report generators. + * + * @param cls closure with the `json *` array to build + * @param section name of the section + */ +static void +add_report_generator (void *cls, + const char *section) +{ + json_t *rgs = cls; + + if (0 != strncasecmp (section, + "report-generator-", + strlen ("report-generator-"))) + return; + if (GNUNET_YES != + GNUNET_CONFIGURATION_have_value (TMH_cfg, + section, + "BINARY")) + { + GNUNET_log_config_missing (GNUNET_ERROR_TYPE_WARNING, + section, + "BINARY"); + return; + } + GNUNET_assert (0 == + json_array_append_new (rgs, + json_string (section + + strlen ( + "report-generator-")))); +} + + +MHD_RESULT +MH_handler_config (const struct TMH_RequestHandler *rh, + struct MHD_Connection *connection, + struct TMH_HandlerContext *hc) +{ + static struct MHD_Response *response; + + (void) rh; + (void) hc; + if (NULL == response) + { + json_t *specs = json_object (); + json_t *exchanges = json_array (); + json_t *mtc = json_array (); + json_t *rgs = json_array (); + + GNUNET_assert (NULL != specs); + GNUNET_assert (NULL != exchanges); + GNUNET_assert (NULL != mtc); + GNUNET_assert (NULL != rgs); + GNUNET_CONFIGURATION_iterate_sections (TMH_cfg, + &add_report_generator, + rgs); + TMH_exchange_get_trusted (&add_exchange, + exchanges); + if (0 != (TEH_TCS_SMS & TEH_mandatory_tan_channels)) + GNUNET_assert (0 == + json_array_append_new (mtc, + json_string ("sms"))); + if (0 != (TEH_TCS_EMAIL & TEH_mandatory_tan_channels)) + GNUNET_assert (0 == + json_array_append_new (mtc, + json_string ("email"))); + for (unsigned int i = 0; i<TMH_num_cspecs; i++) + { + const struct TALER_CurrencySpecification *cspec = &TMH_cspecs[i]; + + if (TMH_test_exchange_configured_for_currency (cspec->currency)) + GNUNET_assert (0 == + json_object_set_new ( + specs, + cspec->currency, + TALER_JSON_currency_specs_to_json ( + cspec))); + } + response = TALER_MHD_MAKE_JSON_PACK ( + GNUNET_JSON_pack_string ("currency", + TMH_currency), + GNUNET_JSON_pack_string ("payment_target_types", + TMH_allowed_payment_targets), + GNUNET_JSON_pack_time_rel ("default_refund_delay", + TMH_default_refund_delay), + GNUNET_JSON_pack_time_rel ("default_wire_transfer_delay", + TMH_default_wire_transfer_delay), + GNUNET_JSON_pack_time_rel ("default_pay_delay", + TMH_default_pay_delay), + GNUNET_JSON_pack_string ("default_persona", + TMH_default_persona), + GNUNET_JSON_pack_allow_null ( + GNUNET_JSON_pack_string ("payment_target_regex", + TMH_payment_target_regex)), + GNUNET_JSON_pack_bool ("have_self_provisioning", + GNUNET_YES == + TMH_have_self_provisioning), +#ifdef HAVE_DONAU_DONAU_SERVICE_H + GNUNET_JSON_pack_bool ("have_donau", + true), +#else + GNUNET_JSON_pack_bool ("have_donau", + false), +#endif + GNUNET_JSON_pack_object_steal ("currencies", + specs), + GNUNET_JSON_pack_array_steal ("report_generators", + rgs), + GNUNET_JSON_pack_array_steal ("exchanges", + exchanges), + GNUNET_JSON_pack_array_steal ("mandatory_tan_channels", + mtc), + GNUNET_JSON_pack_string ( + "implementation", + "urn:net:taler:specs:taler-merchant:c-reference"), + GNUNET_JSON_pack_string ("name", + "taler-merchant"), + GNUNET_JSON_pack_string ("version", + MERCHANT_PROTOCOL_VERSION)); + } + return MHD_queue_response (connection, + MHD_HTTP_OK, + response); +} + + +/* end of taler-merchant-httpd_config.c */ diff --git a/src/backend/taler-merchant-httpd_get-config.h b/src/backend/taler-merchant-httpd_get-config.h @@ -0,0 +1,39 @@ +/* + This file is part of TALER + (C) 2019, 2020 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, see <http://www.gnu.org/licenses/> +*/ +/** + * @file taler-merchant-httpd_config.h + * @brief headers for /config handler + * @author Florian Dold + */ +#ifndef TALER_MERCHANT_HTTPD_GET_CONFIG_H +#define TALER_MERCHANT_HTTPD_GET_CONFIG_H +#include <microhttpd.h> +#include "taler-merchant-httpd.h" + +/** + * Manages a /config call. + * + * @param rh context of the handler + * @param connection the MHD connection to handle + * @param[in,out] hc handler context (can be updated) + * @return MHD result code + */ +MHD_RESULT +MH_handler_config (const struct TMH_RequestHandler *rh, + struct MHD_Connection *connection, + struct TMH_HandlerContext *hc); + +#endif