diff options
Diffstat (limited to 'src/exchange/taler-exchange-httpd.h')
-rw-r--r-- | src/exchange/taler-exchange-httpd.h | 129 |
1 files changed, 112 insertions, 17 deletions
diff --git a/src/exchange/taler-exchange-httpd.h b/src/exchange/taler-exchange-httpd.h index e43426488..25e9e1105 100644 --- a/src/exchange/taler-exchange-httpd.h +++ b/src/exchange/taler-exchange-httpd.h @@ -1,6 +1,6 @@ /* This file is part of TALER - Copyright (C) 2014, 2015, 2020 Taler Systems SA + Copyright (C) 2014-2022 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 @@ -25,7 +25,9 @@ #include <microhttpd.h> #include "taler_json_lib.h" -#include "taler_crypto_lib.h" +#include "taler_util.h" +#include "taler_kyclogic_plugin.h" +#include "taler_extensions.h" #include <gnunet/gnunet_mhd_compat.h> @@ -50,6 +52,11 @@ extern const struct GNUNET_CONFIGURATION_Handle *TEH_cfg; extern char *TEH_exchange_directory; /** + * -I command-line flag given? + */ +extern int TEH_check_invariants_flag; + +/** * Are clients allowed to request /keys for times other than the * current time? Allowing this could be abused in a DoS-attack * as building new /keys responses is expensive. Should only be @@ -58,31 +65,95 @@ extern char *TEH_exchange_directory; extern int TEH_allow_keys_timetravel; /** + * Option set to #GNUNET_YES if rewards are allowed. + */ +extern int TEH_enable_rewards; + +/** * Main directory with revocation data. */ extern char *TEH_revocation_directory; /** + * True if we should commit suicide once all active + * connections are finished. Also forces /keys requests + * to terminate if they are long-polling. + */ +extern bool TEH_suicide; + +/** * Master public key (according to the * configuration in the exchange directory). */ extern struct TALER_MasterPublicKeyP TEH_master_public_key; /** + * Key used to encrypt KYC attribute data in our database. + */ +extern struct TALER_AttributeEncryptionKeyP TEH_attribute_key; + +/** * Our DB plugin. */ extern struct TALER_EXCHANGEDB_Plugin *TEH_plugin; /** + * Absolute STEFAN parameter. + */ +extern struct TALER_Amount TEH_stefan_abs; + +/** + * Logarithmic STEFAN parameter. + */ +extern struct TALER_Amount TEH_stefan_log; + +/** + * Linear STEFAN parameter. + */ +extern float TEH_stefan_lin; + +/** + * Default ways how to render #TEH_currency amounts. + */ +extern const struct TALER_CurrencySpecification *TEH_cspec; + +/** * Our currency. */ extern char *TEH_currency; /** + * Name of the KYC-AML-trigger evaluation binary. + */ +extern char *TEH_kyc_aml_trigger; + +/** + * What is the largest amount we allow a peer to + * merge into a reserve before always triggering + * an AML check? + */ +extern struct TALER_Amount TEH_aml_threshold; + +/** + * Our (externally visible) base URL. + */ +extern char *TEH_base_url; + +/** * Are we shutting down? */ extern volatile bool MHD_terminating; +/** + * Context for all CURL operations (useful to the event loop) + */ +extern struct GNUNET_CURL_Context *TEH_curl_ctx; + +/* + * Signature of the offline master key of all enabled extensions' configuration + */ +extern struct TALER_MasterSignatureP TEH_extensions_sig; +extern bool TEH_extensions_signed; /** * @brief Struct describing an URL and the handler for it. @@ -103,6 +174,11 @@ struct TEH_RequestContext struct GNUNET_AsyncScopeId async_scope_id; /** + * When was this request started? + */ + struct GNUNET_TIME_Absolute start_time; + + /** * Opaque parsing context. */ void *opaque_post_parsing_context; @@ -123,6 +199,11 @@ struct TEH_RequestContext struct MHD_Connection *connection; /** + * JSON root of uploaded data (or NULL, if none). + */ + json_t *root; + + /** * @e rh-specific cleanup routine. Function called * upon completion of the request that should * clean up @a rh_ctx. Can be NULL. @@ -162,11 +243,10 @@ struct TEH_RequestHandler union { /** - * Function to call to handle a GET requests (and those + * Function to call to handle GET requests (and those * with @e method NULL). * * @param rc context for the request - * @param mime_type the @e mime_type for the reply (hint, can be NULL) * @param args array of arguments, needs to be of length @e args_expected * @return MHD result code */ @@ -176,11 +256,11 @@ struct TEH_RequestHandler /** - * Function to call to handle a POST request. + * Function to call to handle POST requests. * * @param rc context for the request * @param json uploaded JSON data - * @param args array of arguments, needs to be of length @e args_expected + * @param args array of arguments, needs to be of length @e nargs * @return MHD result code */ MHD_RESULT @@ -188,18 +268,18 @@ struct TEH_RequestHandler const json_t *root, const char *const args[]); - } handler; - - /** - * Number of arguments this handler expects in the @a args array. - */ - unsigned int nargs; + /** + * Function to call to handle DELETE requests. + * + * @param rc context for the request + * @param args array of arguments, needs to be of length @e nargs + * @return MHD result code + */ + MHD_RESULT + (*delete)(struct TEH_RequestContext *rc, + const char *const args[]); - /** - * Is the number of arguments given in @e nargs only an upper bound, - * and calling with fewer arguments could be OK? - */ - bool nargs_is_upper_bound; + } handler; /** * Mime type to use in reply (hint, can be NULL). @@ -220,7 +300,22 @@ struct TEH_RequestHandler * Default response code. 0 for none provided. */ unsigned int response_code; + + /** + * Number of arguments this handler expects in the @a args array. + */ + unsigned int nargs; + + /** + * Is the number of arguments given in @e nargs only an upper bound, + * and calling with fewer arguments could be OK? + */ + bool nargs_is_upper_bound; }; +/* Age restriction configuration */ +extern bool TEH_age_restriction_enabled; +extern struct TALER_AgeRestrictionConfig TEH_age_restriction_config; + #endif |