-fix FTBFS in taler-exchange-httpd_kyc.c

This commit is contained in:
Christian Grothoff 2022-08-04 12:52:30 +02:00
parent 61f39f0941
commit c78331b6c2
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
4 changed files with 71 additions and 50 deletions

View File

@ -132,6 +132,7 @@ taler_exchange_httpd_SOURCES = \
taler-exchange-httpd_deposits_get.c taler-exchange-httpd_deposits_get.h \
taler-exchange-httpd_extensions.c taler-exchange-httpd_extensions.h \
taler-exchange-httpd_keys.c taler-exchange-httpd_keys.h \
taler-exchange-httpd_kyc.c taler-exchange-httpd_kyc.h \
taler-exchange-httpd_kyc-check.c taler-exchange-httpd_kyc-check.h \
taler-exchange-httpd_kyc-proof.c taler-exchange-httpd_kyc-proof.h \
taler-exchange-httpd_kyc-wallet.c taler-exchange-httpd_kyc-wallet.h \

View File

@ -19,7 +19,9 @@
* @author Christian Grothoff
*/
#include "platform.h"
#include "taler-exchange-httpd.h"
#include "taler-exchange-httpd_kyc.h"
#include "taler_exchangedb_plugin.h"
/**
* Information about a KYC provider.
@ -40,7 +42,7 @@ struct TEH_KycCheck
/**
* Array of @e num_providers providers that offer this type of KYC check.
*/
struct TEH_KycProvider *providers;
struct TEH_KycProvider **providers;
/**
* Length of the @e providers array.
@ -65,13 +67,13 @@ struct TEH_KycProvider
/**
* Logic to run for this provider.
*/
struct TEH_KYCLOGIC_Plugin *logic;
struct TALER_KYCLOGIC_Plugin *logic;
/**
* @e provider_section_name specific details to
* pass to the @e logic functions.
*/
struct TEH_KYCLOGIC_ProviderDetails *pd;
struct TALER_KYCLOGIC_ProviderDetails *pd;
/**
* Cost of running this provider's KYC.
@ -130,12 +132,12 @@ struct TEH_KycTrigger
/**
* Array of @e num_kyc_logics KYC logic plugins we have loaded.
*/
static struct TEH_KYCLOGIC_Plugin **kyc_logics;
static struct TALER_KYCLOGIC_Plugin **kyc_logics;
/**
* Length of the #kyc_logics array.
*/
static unsigned in num_kyc_logics;
static unsigned int num_kyc_logics;
/**
* Array of @e num_kyc_checks known types of
@ -267,11 +269,22 @@ TEH_kyc_user_type2s (enum TEH_KycUserType ut)
* @param name name of the plugin
* @return NULL on error
*/
static struct TEH_KYCLOGIC_Plugin *
static struct TALER_KYCLOGIC_Plugin *
load_logic (const char *name)
{
GNUNET_break (0);
return NULL;
char *lib_name;
struct TALER_KYCLOGIC_Plugin *plugin;
GNUNET_asprintf (&lib_name,
"libtaler_plugin_kyclogic_%s",
name);
plugin = GNUNET_PLUGIN_load (lib_name,
(void *) TEH_cfg);
if (NULL != plugin)
plugin->library_name = lib_name;
else
GNUNET_free (lib_name);
return plugin;
}
@ -312,16 +325,16 @@ add_check (const char *check)
*/
static void
add_checks (char *checks,
struct TEH_KycCheck **p_checks,
struct TEH_KycCheck ***p_checks,
unsigned int *num_p_checks)
{
char *sptr;
struct TEH_KycCheck *rchecks = NULL;
struct TEH_KycCheck **rchecks = NULL;
unsigned int num_rchecks = 0;
for (char *tok = strtok_r (checks, " ", &sptr);
NULL != tok;
tok = strtok_r (checks, NULL, &sptr))
tok = strtok_r (NULL, " ", &sptr))
{
struct TEH_KycCheck *kc;
@ -348,6 +361,7 @@ add_provider (const char *section)
char *ut_s;
enum TEH_KycUserType ut;
char *checks;
struct TALER_KYCLOGIC_Plugin *lp;
if (GNUNET_OK !=
GNUNET_CONFIGURATION_get_value_number (TEH_cfg,
@ -429,8 +443,8 @@ add_provider (const char *section)
&kp->provided_checks,
&kp->num_checks);
GNUNET_free (checks);
kp->pd = lp->load (lp->cls,
section);
kp->pd = lp->load_configuration (lp->cls,
section);
if (NULL == kp->pd)
{
GNUNET_free (kp);
@ -462,10 +476,10 @@ add_trigger (const char *section)
enum TEH_KycTriggerEvent ot;
if (GNUNET_OK !=
TALER_CONFIGURATION_get_value_amount (TEH_cfg,
section,
"THRESHOLD",
&threshold))
TALER_config_get_amount (TEH_cfg,
section,
"THRESHOLD",
&threshold))
{
GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR,
section,
@ -539,8 +553,8 @@ add_trigger (const char *section)
&kt->required_checks,
&kt->num_checks);
GNUNET_free (checks);
GNUNET_array_append (kyc_checks,
num_kyc_checks,
GNUNET_array_append (kyc_triggers,
num_kyc_triggers,
kt);
}
return GNUNET_OK;
@ -589,11 +603,11 @@ handle_section (void *cls,
* @return -1 if p1 < p2, 0 if p1==p2, 1 if p1 > p2.
*/
static int
sort_by_timeframe (void *p1,
void *p2)
sort_by_timeframe (const void *p1,
const void *p2)
{
struct TEH_KycTrigger **t1 = p1;
struct TEH_KycTrigger **t2 = p2;
struct TEH_KycTrigger **t1 = (struct TEH_KycTrigger **) p1;
struct TEH_KycTrigger **t2 = (struct TEH_KycTrigger **) p2;
if (GNUNET_TIME_relative_cmp ((*t1)->timeframe,
<,
@ -610,7 +624,7 @@ sort_by_timeframe (void *p1,
enum GNUNET_GenericReturnValue
TEH_kyc_init (void)
{
book ok = true;
bool ok = true;
GNUNET_CONFIGURATION_iterate_sections (TEH_cfg,
&handle_section,
@ -659,7 +673,7 @@ TEH_kyc_done (void)
{
struct TEH_KycProvider *kp = kyc_providers[i];
kp->logic->unload (kp->pd);
kp->logic->unload_configuration (kp->pd);
GNUNET_array_grow (kp->provided_checks,
kp->num_checks,
0);
@ -670,9 +684,12 @@ TEH_kyc_done (void)
0);
for (unsigned int i = 0; i<num_kyc_logics; i++)
{
struct TEH_KYCLOGIC_Plugin *lp = kyc_logics[i];
struct TALER_KYCLOGIC_Plugin *lp = kyc_logics[i];
char *lib_name = lp->library_name;
unload_plugin (lp);
GNUNET_assert (NULL == GNUNET_PLUGIN_unload (lib_name,
lp));
GNUNET_free (lib_name);
}
GNUNET_array_grow (kyc_logics,
num_kyc_logics,
@ -759,17 +776,17 @@ eval_trigger (void *cls,
{
const struct TEH_KycTrigger *kt = kyc_triggers[i];
if (event != kt->trigger)
if (ttc->event != kt->trigger)
continue;
timeframe = GNUNET_TIME_relative_max (timeframe,
kt->timeframe);
duration = GNUNET_TIME_relative_max (duration,
kt->timeframe);
if (GNUNET_TIME_relative_cmp (kt->timeframe,
>,
duration))
{
if (bump)
ttc->start = i;
return;
return GNUNET_OK;
}
if (-1 ==
TALER_amount_cmp (&ttc->total,
@ -868,7 +885,7 @@ const char *
TEH_kyc_test_required (enum TEH_KycTriggerEvent event,
const struct TALER_PaytoHashP *h_payto,
TEH_KycAmountIterator ai,
void *cls)
void *ai_cls)
{
struct TEH_KycCheck *needed[num_kyc_checks];
unsigned int needed_cnt = 0;
@ -977,8 +994,8 @@ TEH_kyc_test_required (enum TEH_KycTriggerEvent event,
enum GNUNET_GenericReturnValue
TEH_kyc_get_logic (const char *provider_section_name,
struct TEH_KYCLOGIC_Plugin **plugin,
struct TEH_KYCLOGIC_ProviderDetails **pd)
struct TALER_KYCLOGIC_Plugin **plugin,
struct TALER_KYCLOGIC_ProviderDetails **pd)
{
for (unsigned int i = 0; i<num_kyc_providers; i++)
{

View File

@ -150,7 +150,7 @@ TEH_kyc_done (void);
* #GNUNET_NO to abort iteration
* #GNUNET_SYSERR on internal error (also abort itaration)
*/
enum GNUNET_GenericReturnValue
typedef enum GNUNET_GenericReturnValue
(*TEH_KycAmountCallback)(void *cls,
const struct TALER_Amount *amount,
struct GNUNET_TIME_Absolute date);
@ -171,7 +171,7 @@ enum GNUNET_GenericReturnValue
* order
* @param cb_cls closure for @a cb
*/
void
typedef void
(*TEH_KycAmountIterator)(void *cls,
struct GNUNET_TIME_Absolute limit,
TEH_KycAmountCallback cb,
@ -192,14 +192,14 @@ void
* @param ai callback offered to inquire about historic
* amounts involved in this type of operation
* at the given account
* @param cls closure for @a pi and @a ai
* @param ai_cls closure for @a ai
* @return NULL if no check is needed
*/
const char *
TEH_kyc_test_required (enum TEH_KycTriggerEvent event,
const struct TALER_PaytoHashP *h_payto,
TEH_KycAmountIterator ai,
void *cls);
void *ai_cls);
/**
@ -212,8 +212,8 @@ TEH_kyc_test_required (enum TEH_KycTriggerEvent event,
*/
enum GNUNET_GenericReturnValue
TEH_kyc_get_logic (const char *provider_section_name,
struct TEH_KYCLOGIC_Plugin **plugin,
struct TEH_KYCLOGIC_ProviderDetails **pd);
struct TALER_KYCLOGIC_Plugin **plugin,
struct TALER_KYCLOGIC_ProviderDetails **pd);
#endif

View File

@ -23,18 +23,19 @@
#include <jansson.h>
#include <gnunet/gnunet_util_lib.h>
#include "taler_util.h"
/**
* Plugin-internal specification of the configuration
* of the plugin for a given KYC provider.
*/
struct TEH_KYCLOGIC_ProviderDetails;
struct TALER_KYCLOGIC_ProviderDetails;
/**
* Handle for an initiation operation.
*/
struct TEH_KYCLOGIC_InitiateHandle;
struct TALER_KYCLOGIC_InitiateHandle;
/**
@ -48,7 +49,7 @@ struct TEH_KYCLOGIC_InitiateHandle;
* @param error_msg_hint set to additional details to return to user, NULL on success
*/
typedef void
(*TEH_KYCLOGIC_InitiateCallback)(
(*TALER_KYCLOGIC_InitiateCallback)(
enum TALER_ErrorCode ec,
const char *redirect_url,
const char *provider_user_id,
@ -77,11 +78,13 @@ struct TALER_KYCLOGIC_Plugin
/**
* Load the configuration of the KYC provider.
*
* @param cls closure
* @param provider_section_name configuration section to parse
* @return NULL if configuration is invalid
*/
struct TEH_KYCLOGIC_ProviderDetails *
(*load_configuration)(const char *provider_section_name);
struct TALER_KYCLOGIC_ProviderDetails *
(*load_configuration)(void *cls,
const char *provider_section_name);
/**
* Release configuration resources previously loaded
@ -89,7 +92,7 @@ struct TALER_KYCLOGIC_Plugin
* @param[in] pd configuration to release
*/
void
(*unload_configuration)(struct TEH_KYCLOGIC_ProviderDetails *pd);
(*unload_configuration)(struct TALER_KYCLOGIC_ProviderDetails *pd);
/**
@ -100,11 +103,11 @@ struct TALER_KYCLOGIC_Plugin
* @param account_id which account to trigger process for
* @return handle to cancel operation early
*/
struct TEH_KYCLOGIC_InitiateHandle *
struct TALER_KYCLOGIC_InitiateHandle *
(*initiate)(void *cls,
const struct TEH_KYCLOGIC_ProviderDetails *pd,
const struct TALER_KYCLOGIC_ProviderDetails *pd,
const struct TALER_PaytoHashP *account_id,
TEH_KYCLOGIC_InitiateCallback cb,
TALER_KYCLOGIC_InitiateCallback cb,
void *cb_cls);
/**
@ -113,7 +116,7 @@ struct TALER_KYCLOGIC_Plugin
* @param[in] ih handle of operation to cancel
*/
void
(*initiate_cancel) (struct TEH_KYCLOGIC_InitiateHandle *ih);
(*initiate_cancel) (struct TALER_KYCLOGIC_InitiateHandle *ih);
// FIXME: add callback pair for kyc_proof