implement #4993
This commit is contained in:
parent
27c921c7c4
commit
405859d068
@ -162,6 +162,7 @@ handle_admin_add_incoming_finished (void *cls,
|
|||||||
* to the operators of the bank.
|
* to the operators of the bank.
|
||||||
*
|
*
|
||||||
* @param ctx curl context for the event loop
|
* @param ctx curl context for the event loop
|
||||||
|
* @param auth authentication data to send to the bank
|
||||||
* @param bank_base_url URL of the bank (used to execute this request)
|
* @param bank_base_url URL of the bank (used to execute this request)
|
||||||
* @param exchange_base_url base URL of the exchange (for tracking)
|
* @param exchange_base_url base URL of the exchange (for tracking)
|
||||||
* @param wtid wire transfer identifier for the transfer
|
* @param wtid wire transfer identifier for the transfer
|
||||||
@ -176,6 +177,7 @@ handle_admin_add_incoming_finished (void *cls,
|
|||||||
*/
|
*/
|
||||||
struct TALER_BANK_AdminAddIncomingHandle *
|
struct TALER_BANK_AdminAddIncomingHandle *
|
||||||
TALER_BANK_admin_add_incoming (struct GNUNET_CURL_Context *ctx,
|
TALER_BANK_admin_add_incoming (struct GNUNET_CURL_Context *ctx,
|
||||||
|
const json_t *auth,
|
||||||
const char *bank_base_url,
|
const char *bank_base_url,
|
||||||
const char *exchange_base_url,
|
const char *exchange_base_url,
|
||||||
const struct TALER_WireTransferIdentifierRawP *wtid,
|
const struct TALER_WireTransferIdentifierRawP *wtid,
|
||||||
@ -189,8 +191,9 @@ TALER_BANK_admin_add_incoming (struct GNUNET_CURL_Context *ctx,
|
|||||||
json_t *admin_obj;
|
json_t *admin_obj;
|
||||||
CURL *eh;
|
CURL *eh;
|
||||||
|
|
||||||
admin_obj = json_pack ("{s:s, s:o, s:o, s:I, s:I}",
|
admin_obj = json_pack ("{s:s, s:O, s:o, s:o, s:I, s:I}",
|
||||||
"exchange_url", exchange_base_url,
|
"exchange_url", exchange_base_url,
|
||||||
|
"auth", auth,
|
||||||
"wtid", GNUNET_JSON_from_data_auto (wtid),
|
"wtid", GNUNET_JSON_from_data_auto (wtid),
|
||||||
"amount", TALER_JSON_from_amount (amount),
|
"amount", TALER_JSON_from_amount (amount),
|
||||||
"debit_account", (json_int_t) debit_account_no,
|
"debit_account", (json_int_t) debit_account_no,
|
||||||
|
@ -318,11 +318,13 @@ handle_mhd_request (void *cls,
|
|||||||
t = GNUNET_new (struct Transaction);
|
t = GNUNET_new (struct Transaction);
|
||||||
{
|
{
|
||||||
const char *base_url;
|
const char *base_url;
|
||||||
|
json_t *auth;
|
||||||
struct GNUNET_JSON_Specification spec[] = {
|
struct GNUNET_JSON_Specification spec[] = {
|
||||||
GNUNET_JSON_spec_fixed_auto ("wtid", &t->wtid),
|
GNUNET_JSON_spec_fixed_auto ("wtid", &t->wtid),
|
||||||
GNUNET_JSON_spec_uint64 ("debit_account", &t->debit_account),
|
GNUNET_JSON_spec_uint64 ("debit_account", &t->debit_account),
|
||||||
GNUNET_JSON_spec_uint64 ("credit_account", &t->credit_account),
|
GNUNET_JSON_spec_uint64 ("credit_account", &t->credit_account),
|
||||||
TALER_JSON_spec_amount ("amount", &t->amount),
|
TALER_JSON_spec_amount ("amount", &t->amount),
|
||||||
|
TALER_JSON_spec_json ("auth", &auth),
|
||||||
GNUNET_JSON_spec_string ("exchange_url", &base_url),
|
GNUNET_JSON_spec_string ("exchange_url", &base_url),
|
||||||
GNUNET_JSON_spec_end ()
|
GNUNET_JSON_spec_end ()
|
||||||
};
|
};
|
||||||
@ -335,6 +337,10 @@ handle_mhd_request (void *cls,
|
|||||||
json_decref (json);
|
json_decref (json);
|
||||||
return MHD_NO;
|
return MHD_NO;
|
||||||
}
|
}
|
||||||
|
/* For now, we ignore authentication, this is the fakebank.
|
||||||
|
We may choose to support "proper" authentication once
|
||||||
|
it is non-trivial and actually needs to be tested. */
|
||||||
|
json_decref (auth);
|
||||||
t->exchange_base_url = GNUNET_strdup (base_url);
|
t->exchange_base_url = GNUNET_strdup (base_url);
|
||||||
GNUNET_CONTAINER_DLL_insert (h->transactions_head,
|
GNUNET_CONTAINER_DLL_insert (h->transactions_head,
|
||||||
h->transactions_tail,
|
h->transactions_tail,
|
||||||
|
@ -188,6 +188,7 @@ interpreter_run (void *cls)
|
|||||||
struct TALER_WireTransferIdentifierRawP wtid;
|
struct TALER_WireTransferIdentifierRawP wtid;
|
||||||
struct TALER_Amount amount;
|
struct TALER_Amount amount;
|
||||||
const struct GNUNET_SCHEDULER_TaskContext *tc;
|
const struct GNUNET_SCHEDULER_TaskContext *tc;
|
||||||
|
json_t *auth;
|
||||||
|
|
||||||
is->task = NULL;
|
is->task = NULL;
|
||||||
tc = GNUNET_SCHEDULER_get_task_context ();
|
tc = GNUNET_SCHEDULER_get_task_context ();
|
||||||
@ -219,8 +220,14 @@ interpreter_run (void *cls)
|
|||||||
GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE,
|
GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE,
|
||||||
&cmd->details.admin_add_incoming.wtid,
|
&cmd->details.admin_add_incoming.wtid,
|
||||||
sizeof (cmd->details.admin_add_incoming.wtid));
|
sizeof (cmd->details.admin_add_incoming.wtid));
|
||||||
|
auth = json_pack ("{s:s, s:{s:s, s:s}}",
|
||||||
|
"type", "basic",
|
||||||
|
"data",
|
||||||
|
"username", "user",
|
||||||
|
"password", "pass");
|
||||||
cmd->details.admin_add_incoming.aih
|
cmd->details.admin_add_incoming.aih
|
||||||
= TALER_BANK_admin_add_incoming (is->ctx,
|
= TALER_BANK_admin_add_incoming (is->ctx,
|
||||||
|
auth,
|
||||||
"http://localhost:8081",
|
"http://localhost:8081",
|
||||||
cmd->details.admin_add_incoming.exchange_base_url,
|
cmd->details.admin_add_incoming.exchange_base_url,
|
||||||
&cmd->details.admin_add_incoming.wtid,
|
&cmd->details.admin_add_incoming.wtid,
|
||||||
@ -229,6 +236,7 @@ interpreter_run (void *cls)
|
|||||||
cmd->details.admin_add_incoming.credit_account_no,
|
cmd->details.admin_add_incoming.credit_account_no,
|
||||||
&add_incoming_cb,
|
&add_incoming_cb,
|
||||||
is);
|
is);
|
||||||
|
json_decref (auth);
|
||||||
if (NULL == cmd->details.admin_add_incoming.aih)
|
if (NULL == cmd->details.admin_add_incoming.aih)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
This file is part of TALER
|
This file is part of TALER
|
||||||
Copyright (C) 2015, 2016 GNUnet e.V.
|
Copyright (C) 2015, 2016, 2017 GNUnet e.V. & Inria
|
||||||
|
|
||||||
TALER is free software; you can redistribute it and/or modify it under the
|
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
|
terms of the GNU Affero General Public License as published by the Free Software
|
||||||
@ -57,6 +57,7 @@ typedef void
|
|||||||
* to the operators of the bank.
|
* to the operators of the bank.
|
||||||
*
|
*
|
||||||
* @param ctx curl context for the event loop
|
* @param ctx curl context for the event loop
|
||||||
|
* @param auth authentication data to send to the bank
|
||||||
* @param bank_base_url URL of the bank (used to execute this request)
|
* @param bank_base_url URL of the bank (used to execute this request)
|
||||||
* @param exchange_base_url base URL of the exchange (for tracking)
|
* @param exchange_base_url base URL of the exchange (for tracking)
|
||||||
* @param wtid wire transfer identifier for the transfer
|
* @param wtid wire transfer identifier for the transfer
|
||||||
@ -71,6 +72,7 @@ typedef void
|
|||||||
*/
|
*/
|
||||||
struct TALER_BANK_AdminAddIncomingHandle *
|
struct TALER_BANK_AdminAddIncomingHandle *
|
||||||
TALER_BANK_admin_add_incoming (struct GNUNET_CURL_Context *ctx,
|
TALER_BANK_admin_add_incoming (struct GNUNET_CURL_Context *ctx,
|
||||||
|
const json_t *auth,
|
||||||
const char *bank_base_url,
|
const char *bank_base_url,
|
||||||
const char *exchange_base_url,
|
const char *exchange_base_url,
|
||||||
const struct TALER_WireTransferIdentifierRawP *wtid,
|
const struct TALER_WireTransferIdentifierRawP *wtid,
|
||||||
|
@ -45,6 +45,11 @@ struct TestClosure
|
|||||||
*/
|
*/
|
||||||
char *bank_uri;
|
char *bank_uri;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Authentication information.
|
||||||
|
*/
|
||||||
|
json_t *auth;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle to the context for sending funds to the bank.
|
* Handle to the context for sending funds to the bank.
|
||||||
*/
|
*/
|
||||||
@ -721,6 +726,7 @@ test_execute_wire_transfer (void *cls,
|
|||||||
eh->cc = cc;
|
eh->cc = cc;
|
||||||
eh->cc_cls = cc_cls;
|
eh->cc_cls = cc_cls;
|
||||||
eh->aaih = TALER_BANK_admin_add_incoming (tc->ctx,
|
eh->aaih = TALER_BANK_admin_add_incoming (tc->ctx,
|
||||||
|
tc->auth,
|
||||||
tc->bank_uri,
|
tc->bank_uri,
|
||||||
exchange_base_url,
|
exchange_base_url,
|
||||||
&bf.wtid,
|
&bf.wtid,
|
||||||
@ -773,6 +779,8 @@ libtaler_plugin_wire_test_init (void *cls)
|
|||||||
struct GNUNET_CONFIGURATION_Handle *cfg = cls;
|
struct GNUNET_CONFIGURATION_Handle *cfg = cls;
|
||||||
struct TestClosure *tc;
|
struct TestClosure *tc;
|
||||||
struct TALER_WIRE_Plugin *plugin;
|
struct TALER_WIRE_Plugin *plugin;
|
||||||
|
char *user;
|
||||||
|
char *pass;
|
||||||
|
|
||||||
tc = GNUNET_new (struct TestClosure);
|
tc = GNUNET_new (struct TestClosure);
|
||||||
if (NULL != cfg)
|
if (NULL != cfg)
|
||||||
@ -815,6 +823,40 @@ libtaler_plugin_wire_test_init (void *cls)
|
|||||||
GNUNET_free (tc);
|
GNUNET_free (tc);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_CONFIGURATION_get_value_string (cfg,
|
||||||
|
"exchange-wire-outgoing-test",
|
||||||
|
"USERNAME",
|
||||||
|
&user))
|
||||||
|
{
|
||||||
|
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
|
||||||
|
"exchange-wire-outgoing-test",
|
||||||
|
"USERNAME");
|
||||||
|
GNUNET_free (tc->bank_uri);
|
||||||
|
GNUNET_free (tc);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_CONFIGURATION_get_value_string (cfg,
|
||||||
|
"exchange-wire-outgoing-test",
|
||||||
|
"PASSWORD",
|
||||||
|
&pass))
|
||||||
|
{
|
||||||
|
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
|
||||||
|
"exchange-wire-outgoing-test",
|
||||||
|
"PASSWORD");
|
||||||
|
GNUNET_free (tc->bank_uri);
|
||||||
|
GNUNET_free (tc);
|
||||||
|
GNUNET_free (user);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
tc->auth = json_pack ("{s:s, s:{s:s, s:s}}",
|
||||||
|
"type", "basic",
|
||||||
|
"data",
|
||||||
|
"username", user,
|
||||||
|
"password", pass);
|
||||||
|
GNUNET_free (user);
|
||||||
|
GNUNET_free (pass);
|
||||||
tc->ctx = GNUNET_CURL_init (&GNUNET_CURL_gnunet_scheduler_reschedule,
|
tc->ctx = GNUNET_CURL_init (&GNUNET_CURL_gnunet_scheduler_reschedule,
|
||||||
&tc->rc);
|
&tc->rc);
|
||||||
tc->rc = GNUNET_CURL_gnunet_rc_create (tc->ctx);
|
tc->rc = GNUNET_CURL_gnunet_rc_create (tc->ctx);
|
||||||
@ -823,6 +865,7 @@ libtaler_plugin_wire_test_init (void *cls)
|
|||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
GNUNET_free (tc->currency);
|
GNUNET_free (tc->currency);
|
||||||
GNUNET_free (tc->bank_uri);
|
GNUNET_free (tc->bank_uri);
|
||||||
|
json_decref (tc->auth);
|
||||||
GNUNET_free (tc);
|
GNUNET_free (tc);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -863,6 +906,11 @@ libtaler_plugin_wire_test_done (void *cls)
|
|||||||
GNUNET_CURL_gnunet_rc_destroy (tc->rc);
|
GNUNET_CURL_gnunet_rc_destroy (tc->rc);
|
||||||
tc->rc = NULL;
|
tc->rc = NULL;
|
||||||
}
|
}
|
||||||
|
if (NULL != tc->auth)
|
||||||
|
{
|
||||||
|
json_decref (tc->auth);
|
||||||
|
tc->auth = NULL;
|
||||||
|
}
|
||||||
GNUNET_free_non_null (tc->currency);
|
GNUNET_free_non_null (tc->currency);
|
||||||
GNUNET_free_non_null (tc->bank_uri);
|
GNUNET_free_non_null (tc->bank_uri);
|
||||||
GNUNET_free (tc);
|
GNUNET_free (tc);
|
||||||
|
@ -20,3 +20,7 @@ EXCHANGE_ACCOUNT_NUMBER = 2
|
|||||||
# the URI of the bank (where the /admin/add/incoming API
|
# the URI of the bank (where the /admin/add/incoming API
|
||||||
# is avaialble).
|
# is avaialble).
|
||||||
# BANK_URI = https://bank.demo.taler.net/
|
# BANK_URI = https://bank.demo.taler.net/
|
||||||
|
|
||||||
|
# Authentication information for basic authentication
|
||||||
|
USERNAME = user
|
||||||
|
PASSWORD = pass
|
||||||
|
Loading…
Reference in New Issue
Block a user