-start on AML work (incomplete)

This commit is contained in:
Christian Grothoff 2023-02-09 17:54:14 +01:00
parent d0b43b0e6a
commit 19132b6716
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
16 changed files with 228 additions and 481 deletions

View File

@ -141,6 +141,7 @@ CONFIG = /research/taler/exchange/src/auditor/auditor-basedb.conf
[taler] [taler]
CURRENCY_ROUND_UNIT = TESTKUDOS:0.01 CURRENCY_ROUND_UNIT = TESTKUDOS:0.01
CURRENCY = TESTKUDOS CURRENCY = TESTKUDOS
AML_THRESHOLD = TESTKUDOS:1000000
[merchantdb-postgres] [merchantdb-postgres]
CONFIG = postgres:///auditor-basedb CONFIG = postgres:///auditor-basedb

View File

@ -148,6 +148,12 @@ struct Shard
*/ */
static struct TALER_Amount currency_round_unit; static struct TALER_Amount currency_round_unit;
/**
* What is the largest amount we transfer before triggering
* an AML check?
*/
static struct TALER_Amount aml_threshold;
/** /**
* What is the base URL of this exchange? Used in the * What is the base URL of this exchange? Used in the
* wire transfer subjects so that merchants and governments * wire transfer subjects so that merchants and governments
@ -294,11 +300,20 @@ parse_aggregator_config (void)
"taler", "taler",
"CURRENCY_ROUND_UNIT", "CURRENCY_ROUND_UNIT",
&currency_round_unit)) || &currency_round_unit)) ||
( (0 != currency_round_unit.fraction) && (TALER_amount_is_zero (&currency_round_unit)) )
(0 != currency_round_unit.value) ) )
{ {
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Need non-zero value in section `TALER' under `CURRENCY_ROUND_UNIT'\n"); "Need non-zero amount in section `TALER' under `CURRENCY_ROUND_UNIT'\n");
return GNUNET_SYSERR;
}
if (GNUNET_OK !=
TALER_config_get_amount (cfg,
"taler",
"AML_THRESHOLD",
&aml_threshold))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Need amount in section `TALER' under `AML_THRESHOLD'\n");
return GNUNET_SYSERR; return GNUNET_SYSERR;
} }
@ -524,6 +539,81 @@ kyc_satisfied (struct AggregationUnit *au_active)
} }
/**
* Function called on each @a amount that was found to
* be relevant for an AML check.
*
* @param cls closure with the `struct TALER_Amount *` where we store the sum
* @param amount encountered transaction amount
* @param date when was the amount encountered
* @return #GNUNET_OK to continue to iterate,
* #GNUNET_NO to abort iteration
* #GNUNET_SYSERR on internal error (also abort itaration)
*/
static enum GNUNET_GenericReturnValue
sum_for_aml (
void *cls,
const struct TALER_Amount *amount,
struct GNUNET_TIME_Absolute date)
{
struct TALER_Amount *sum = cls;
(void) date;
if (0 >
TALER_amount_add (sum,
sum,
amount))
{
GNUNET_break (0);
return GNUNET_SYSERR;
}
return GNUNET_OK;
}
/**
* Test if AML is required for a transfer to @a h_payto.
*
* @param[in,out] au_active aggregation unit to check for
* @return true if AML checks are satisfied
*/
static bool
aml_satisfied (struct AggregationUnit *au_active)
{
enum GNUNET_DB_QueryStatus qs;
struct TALER_Amount total;
total = au_active->final_amount;
qs = db_plugin->select_aggregation_amounts_for_kyc_check (
db_plugin->cls,
&au_active->h_payto,
GNUNET_TIME_absolute_subtract (GNUNET_TIME_absolute_get (),
GNUNET_TIME_UNIT_MONTHS),
&sum_for_aml,
&total);
if (qs < 0)
{
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
return false;
}
if (0 >= TALER_amount_cmp (&total,
&aml_threshold))
{
/* total <= aml_threshold, do nothing */
return true;
}
qs = db_plugin->trigger_aml_process (db_plugin->cls,
&au_active->h_payto,
&total);
if (qs < 0)
{
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
return false;
}
return false;
}
/** /**
* Perform the main aggregation work for @a au. Expects to be in * Perform the main aggregation work for @a au. Expects to be in
* a working transaction, which the caller must also ultimately commit * a working transaction, which the caller must also ultimately commit
@ -649,7 +739,8 @@ do_aggregate (struct AggregationUnit *au)
TALER_amount_round_down (&au->final_amount, TALER_amount_round_down (&au->final_amount,
&currency_round_unit)) || &currency_round_unit)) ||
(TALER_amount_is_zero (&au->final_amount)) || (TALER_amount_is_zero (&au->final_amount)) ||
(! kyc_satisfied (au)) ) (! kyc_satisfied (au)) ||
(! aml_satisfied (au)) )
{ {
GNUNET_log (GNUNET_ERROR_TYPE_INFO, GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Not ready for wire transfer (%d/%s)\n", "Not ready for wire transfer (%d/%s)\n",

View File

@ -233,9 +233,8 @@ again:
MHD_HTTP_OK, MHD_HTTP_OK,
GNUNET_JSON_pack_timestamp ("exchange_timestamp", GNUNET_JSON_pack_timestamp ("exchange_timestamp",
bdc->exchange_timestamp), bdc->exchange_timestamp),
GNUNET_JSON_pack_data_auto ( GNUNET_JSON_pack_data_auto ("exchange_pub",
"exchange_pub", &pub),
&pub),
GNUNET_JSON_pack_array_steal ("exchange_sigs", GNUNET_JSON_pack_array_steal ("exchange_sigs",
arr)); arr));
} }
@ -268,13 +267,12 @@ batch_deposit_transaction (void *cls,
* insert or update the record. */ * insert or update the record. */
if (dc->has_policy) if (dc->has_policy)
{ {
qs = TEH_plugin->persist_policy_details (TEH_plugin->cls, qs = TEH_plugin->persist_policy_details (
&dc->policy_details, TEH_plugin->cls,
&dc->policy_details_serial_id, &dc->policy_details,
&dc->policy_details. &dc->policy_details_serial_id,
accumulated_total, &dc->policy_details.accumulated_total,
&dc->policy_details. &dc->policy_details.fulfillment_state);
fulfillment_state);
if (qs < 0) if (qs < 0)
return qs; return qs;
} }
@ -295,9 +293,9 @@ batch_deposit_transaction (void *cls,
deposit, deposit,
known_coin_id, known_coin_id,
&dc->h_payto, &dc->h_payto,
(dc->has_policy) dc->has_policy
? &dc->policy_details_serial_id ? &dc->policy_details_serial_id
: NULL, : NULL,
&dc->exchange_timestamp, &dc->exchange_timestamp,
&balance_ok, &balance_ok,
&in_conflict); &in_conflict);

View File

@ -556,8 +556,10 @@ EXTRA_DIST = \
test_exchange_api.conf \ test_exchange_api.conf \
test_exchange_api-cs.conf \ test_exchange_api-cs.conf \
test_exchange_api-rsa.conf \ test_exchange_api-rsa.conf \
test_exchange_api_twisted.conf \
test_exchange_api_twisted-cs.conf \ test_exchange_api_twisted-cs.conf \
test_exchange_api_twisted-rsa.conf \ test_exchange_api_twisted-rsa.conf \
test_exchange_api_keys_cherry_picking.conf \
test_exchange_api_keys_cherry_picking-cs.conf \ test_exchange_api_keys_cherry_picking-cs.conf \
test_exchange_api_keys_cherry_picking-rsa.conf \ test_exchange_api_keys_cherry_picking-rsa.conf \
test_exchange_api_expire_reserve_now-cs.conf \ test_exchange_api_expire_reserve_now-cs.conf \

View File

@ -17,6 +17,7 @@ DURATION = 14 days
# Currency supported by the exchange (can only be one) # Currency supported by the exchange (can only be one)
CURRENCY = EUR CURRENCY = EUR
CURRENCY_ROUND_UNIT = EUR:0.01 CURRENCY_ROUND_UNIT = EUR:0.01
AML_THRESHOLD = EUR:1000000
[exchange] [exchange]
# The DB plugin to use # The DB plugin to use

View File

@ -17,6 +17,7 @@ DURATION = 14 days
# Currency supported by the exchange (can only be one) # Currency supported by the exchange (can only be one)
CURRENCY = EUR CURRENCY = EUR
CURRENCY_ROUND_UNIT = EUR:0.01 CURRENCY_ROUND_UNIT = EUR:0.01
AML_THRESHOLD = EUR:1000000
[exchange] [exchange]
# The DB plugin to use # The DB plugin to use

View File

@ -21,6 +21,7 @@ DURATION = 14 days
# Currency supported by the exchange (can only be one) # Currency supported by the exchange (can only be one)
CURRENCY = EUR CURRENCY = EUR
CURRENCY_ROUND_UNIT = EUR:0.01 CURRENCY_ROUND_UNIT = EUR:0.01
AML_THRESHOLD = EUR:1000000
[auditor] [auditor]
BASE_URL = "http://localhost:8083/" BASE_URL = "http://localhost:8083/"

View File

@ -21,6 +21,7 @@ DURATION = 14 days
# Currency supported by the exchange (can only be one) # Currency supported by the exchange (can only be one)
CURRENCY = EUR CURRENCY = EUR
CURRENCY_ROUND_UNIT = EUR:0.01 CURRENCY_ROUND_UNIT = EUR:0.01
AML_THRESHOLD = EUR:1000000
[auditor] [auditor]
BASE_URL = "http://localhost:8083/" BASE_URL = "http://localhost:8083/"

View File

@ -20,6 +20,7 @@ DURATION = 14 days
# Currency supported by the exchange (can only be one) # Currency supported by the exchange (can only be one)
CURRENCY = EUR CURRENCY = EUR
CURRENCY_ROUND_UNIT = EUR:0.01 CURRENCY_ROUND_UNIT = EUR:0.01
AML_THRESHOLD = EUR:1000000
[auditor] [auditor]
BASE_URL = "http://localhost:8083/" BASE_URL = "http://localhost:8083/"

View File

@ -1,91 +1,11 @@
# This file is in the public domain. # This file is in the public domain.
# #
[PATHS] @INLINE@ test_exchange_api_keys_cherry_picking.conf
# Persistent data storage for the testcase
TALER_TEST_HOME = test_exchange_api_keys_cherry_picking_home/
TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/${USER:-}/taler-system-runtime/
# Persistent data storage
TALER_DATA_HOME = $TALER_HOME/.local/share/taler/
# Configuration files
TALER_CONFIG_HOME = $TALER_HOME/.config/taler/
# Cached data, no big deal if lost
TALER_CACHE_HOME = $TALER_HOME/.cache/taler/
[taler]
# Currency supported by the exchange (can only be one)
CURRENCY = EUR
[taler-exchange-secmod-cs]
# Reduce from 1 year to speed up test
LOOKAHEAD_SIGN = 24 days
[taler-exchange-secmod-eddsa]
# Reduce from 1 year to speed up test
LOOKAHEAD_SIGN = 24 days
# Reduce from 12 weeks to ensure we have multiple
DURATION = 14 days
[auditor]
BASE_URL = "http://localhost:8083/"
# HTTP port the auditor listens to
PORT = 8083
[exchange]
# HTTP port the exchange listens to
PORT = 8081
# Master public key used to sign the exchange's various keys
MASTER_PUBLIC_KEY = 98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG
# How to access our database
DB = postgres
# Base URL of the exchange. Must be set to a URL where the
# exchange (or the twister) is actually listening.
BASE_URL = "http://localhost:8081/"
[exchangedb-postgres]
CONFIG = "postgres:///talercheck"
[auditordb-postgres]
CONFIG = "postgres:///talercheck"
[exchange-account-1]
PAYTO_URI = "payto://x-taler-bank/localhost/42?receiver-name=42"
[exchange-accountcredentials-1]
WIRE_GATEWAY_URL = "http://localhost:9082/42/"
[exchange-account-2]
PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
ENABLE_DEBIT = YES
ENABLE_CREDIT = YES
[exchange-accountcredentials-2]
WIRE_GATEWAY_URL = "http://localhost:9082/2/"
# Authentication information for basic authentication
TALER_BANK_AUTH_METHOD = "basic"
USERNAME = user
PASSWORD = pass
[bank]
HTTP_PORT=8082
[taler-exchange-secmod-cs] [taler-exchange-secmod-cs]
OVERLAP_DURATION = 1 s OVERLAP_DURATION = 1 s
LOOKAHEAD_SIGN = 20 s LOOKAHEAD_SIGN = 20 s
[taler-exchange-secmod-eddsa]
OVERLAP_DURATION = 1 s
DURATION = 30 s
LOOKAHEAD_SIGN = 20 s
[coin_eur_1] [coin_eur_1]
value = EUR:1 value = EUR:1
duration_withdraw = 5 s duration_withdraw = 5 s

View File

@ -1,91 +1,11 @@
# This file is in the public domain. # This file is in the public domain.
# #
[PATHS] @INLINE@ test_exchange_api_keys_cherry_picking.conf
# Persistent data storage for the testcase
TALER_TEST_HOME = test_exchange_api_keys_cherry_picking_home/
TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/${USER:-}/taler-system-runtime/
# Persistent data storage
TALER_DATA_HOME = $TALER_HOME/.local/share/taler/
# Configuration files
TALER_CONFIG_HOME = $TALER_HOME/.config/taler/
# Cached data, no big deal if lost
TALER_CACHE_HOME = $TALER_HOME/.cache/taler/
[taler]
# Currency supported by the exchange (can only be one)
CURRENCY = EUR
[taler-exchange-secmod-rsa]
# Reduce from 1 year to speed up test
LOOKAHEAD_SIGN = 24 days
[taler-exchange-secmod-eddsa]
# Reduce from 1 year to speed up test
LOOKAHEAD_SIGN = 24 days
# Reduce from 12 weeks to ensure we have multiple
DURATION = 14 days
[auditor]
BASE_URL = "http://localhost:8083/"
# HTTP port the auditor listens to
PORT = 8083
[exchange]
# HTTP port the exchange listens to
PORT = 8081
# Master public key used to sign the exchange's various keys
MASTER_PUBLIC_KEY = 98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG
# How to access our database
DB = postgres
# Base URL of the exchange. Must be set to a URL where the
# exchange (or the twister) is actually listening.
BASE_URL = "http://localhost:8081/"
[exchangedb-postgres]
CONFIG = "postgres:///talercheck"
[auditordb-postgres]
CONFIG = "postgres:///talercheck"
[exchange-account-1]
PAYTO_URI = "payto://x-taler-bank/localhost/42?receiver-name=42"
[exchange-accountcredentials-1]
WIRE_GATEWAY_URL = "http://localhost:9082/42/"
[exchange-account-2]
PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
ENABLE_DEBIT = YES
ENABLE_CREDIT = YES
[exchange-accountcredentials-2]
WIRE_GATEWAY_URL = "http://localhost:9082/2/"
# Authentication information for basic authentication
TALER_BANK_AUTH_METHOD = "basic"
USERNAME = user
PASSWORD = pass
[bank]
HTTP_PORT=8082
[taler-exchange-secmod-rsa] [taler-exchange-secmod-rsa]
OVERLAP_DURATION = 1 s OVERLAP_DURATION = 1 s
LOOKAHEAD_SIGN = 20 s LOOKAHEAD_SIGN = 20 s
[taler-exchange-secmod-eddsa]
OVERLAP_DURATION = 1 s
DURATION = 30 s
LOOKAHEAD_SIGN = 20 s
[coin_eur_1] [coin_eur_1]
value = EUR:1 value = EUR:1
duration_withdraw = 5 s duration_withdraw = 5 s

View File

@ -0,0 +1,74 @@
# This file is in the public domain.
#
[PATHS]
# Persistent data storage for the testcase
TALER_TEST_HOME = test_exchange_api_keys_cherry_picking_home/
TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/${USER:-}/taler-system-runtime/
# Persistent data storage
TALER_DATA_HOME = $TALER_HOME/.local/share/taler/
# Configuration files
TALER_CONFIG_HOME = $TALER_HOME/.config/taler/
# Cached data, no big deal if lost
TALER_CACHE_HOME = $TALER_HOME/.cache/taler/
[taler]
# Currency supported by the exchange (can only be one)
CURRENCY = EUR
[taler-exchange-secmod-eddsa]
OVERLAP_DURATION = 1 s
DURATION = 30 s
LOOKAHEAD_SIGN = 20 s
[auditor]
BASE_URL = "http://localhost:8083/"
# HTTP port the auditor listens to
PORT = 8083
[exchange]
# HTTP port the exchange listens to
PORT = 8081
# Master public key used to sign the exchange's various keys
MASTER_PUBLIC_KEY = 98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG
# How to access our database
DB = postgres
# Base URL of the exchange. Must be set to a URL where the
# exchange (or the twister) is actually listening.
BASE_URL = "http://localhost:8081/"
[exchangedb-postgres]
CONFIG = "postgres:///talercheck"
[auditordb-postgres]
CONFIG = "postgres:///talercheck"
[exchange-account-1]
PAYTO_URI = "payto://x-taler-bank/localhost/42?receiver-name=42"
[exchange-accountcredentials-1]
WIRE_GATEWAY_URL = "http://localhost:9082/42/"
[exchange-account-2]
PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
ENABLE_DEBIT = YES
ENABLE_CREDIT = YES
[exchange-accountcredentials-2]
WIRE_GATEWAY_URL = "http://localhost:9082/2/"
# Authentication information for basic authentication
TALER_BANK_AUTH_METHOD = "basic"
USERNAME = user
PASSWORD = pass
[bank]
HTTP_PORT=8082

View File

@ -1,150 +1,4 @@
# This file is in the public domain. # This file is in the public domain.
[PATHS] @INLINE@ test_exchange_api-cs.conf
# Persistent data storage for the testcase @INLINE@ test_exchange_api-twisted.conf
TALER_TEST_HOME = test_exchange_api_home/
TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/${USER:-}/taler-system-runtime/
[taler-exchange-secmod-rsa]
# Reduce from 1 year to speed up test
LOOKAHEAD_SIGN = 24 days
[taler-exchange-secmod-eddsa]
# Reduce from 1 year to speed up test
LOOKAHEAD_SIGN = 24 days
# Reduce from 12 weeks to ensure we have multiple
DURATION = 14 days
[taler]
# Currency supported by the exchange (can only be one)
CURRENCY = EUR
CURRENCY_ROUND_UNIT = EUR:0.01
[exchange]
# HTTP port the exchange listens to
PORT = 8081
# Master public key used to sign the exchange's various keys
MASTER_PUBLIC_KEY = 98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG
# How to access our database
DB = postgres
# Base URL of the exchange ('S PROXY). This URL is where the
# twister listens at, so that it will be able to get all the
# connection addressed to the exchange. In fact, the presence
# of the twister is 100% transparent to the test case, as it
# only seeks the exchange/BASE_URL URL to connect to the exchange.
BASE_URL = "http://localhost:8888/"
[exchangedb-postgres]
CONFIG = "postgres:///talercheck"
[auditor]
BASE_URL = "http://localhost:8083/"
PORT = 8083
[auditordb-postgres]
CONFIG = "postgres:///talercheck"
[exchange-account-1]
# What is the URL of our account?
PAYTO_URI = "payto://x-taler-bank/localhost/42?receiver-name=42"
[exchange-accountcredentials-1]
WIRE_GATEWAY_URL = "http://localhost:9081/42/"
WIRE_GATEWAY_AUTH_METHOD = NONE
[exchange-account-2]
PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
ENABLE_DEBIT = YES
ENABLE_CREDIT = YES
[exchange-accountcredentials-2]
WIRE_GATEWAY_URL = "http://localhost:8082/2/"
WIRE_GATEWAY_AUTH_METHOD = BASIC
USERNAME = user
PASSWORD = pass
[bank]
HTTP_PORT = 8082
[twister]
# HTTP listen port for twister
HTTP_PORT = 8888
SERVE = tcp
# HTTP Destination for twister. The test-Webserver needs
# to listen on the port used here. Note: no trailing '/'!
DESTINATION_BASE_URL = "http://localhost:8081"
# Control port for TCP
# PORT = 8889
HOSTNAME = localhost
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
# Control port for UNIX
UNIXPATH = /tmp/taler-service-twister.sock
UNIX_MATCH_UID = NO
UNIX_MATCH_GID = YES
# Launching of twister by ARM
# BINARY = taler-service-twister
# AUTOSTART = NO
# FORCESTART = NO
[coin_eur_ct_1]
value = EUR:0.01
duration_withdraw = 7 days
duration_spend = 2 years
duration_legal = 3 years
fee_withdraw = EUR:0.00
fee_deposit = EUR:0.00
fee_refresh = EUR:0.01
fee_refund = EUR:0.01
CIPHER = CS
[coin_eur_ct_10]
value = EUR:0.10
duration_withdraw = 7 days
duration_spend = 2 years
duration_legal = 3 years
fee_withdraw = EUR:0.01
fee_deposit = EUR:0.01
fee_refresh = EUR:0.03
fee_refund = EUR:0.01
CIPHER = CS
[coin_eur_1]
value = EUR:1
duration_withdraw = 7 days
duration_spend = 2 years
duration_legal = 3 years
fee_withdraw = EUR:0.01
fee_deposit = EUR:0.01
fee_refresh = EUR:0.03
fee_refund = EUR:0.01
CIPHER = CS
[coin_eur_5]
value = EUR:5
duration_withdraw = 7 days
duration_spend = 2 years
duration_legal = 3 years
fee_withdraw = EUR:0.01
fee_deposit = EUR:0.01
fee_refresh = EUR:0.03
fee_refund = EUR:0.01
CIPHER = CS
[coin_eur_10]
value = EUR:10
duration_withdraw = 7 days
duration_spend = 2 years
duration_legal = 3 years
fee_withdraw = EUR:0.01
fee_deposit = EUR:0.01
fee_refresh = EUR:0.03
fee_refund = EUR:0.01
CIPHER = CS

View File

@ -1,156 +1,4 @@
# This file is in the public domain. # This file is in the public domain.
[PATHS] @INLINE@ test_exchange_api-rsa.conf
# Persistent data storage for the testcase @INLINE@ test_exchange_api-twisted.conf
TALER_TEST_HOME = test_exchange_api_home/
TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/${USER:-}/taler-system-runtime/
[taler-exchange-secmod-rsa]
# Reduce from 1 year to speed up test
LOOKAHEAD_SIGN = 24 days
[taler-exchange-secmod-eddsa]
# Reduce from 1 year to speed up test
LOOKAHEAD_SIGN = 24 days
# Reduce from 12 weeks to ensure we have multiple
DURATION = 14 days
[taler]
# Currency supported by the exchange (can only be one)
CURRENCY = EUR
CURRENCY_ROUND_UNIT = EUR:0.01
[exchange]
# HTTP port the exchange listens to
PORT = 8081
# Master public key used to sign the exchange's various keys
MASTER_PUBLIC_KEY = 98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG
# How to access our database
DB = postgres
# Base URL of the exchange ('S PROXY). This URL is where the
# twister listens at, so that it will be able to get all the
# connection addressed to the exchange. In fact, the presence
# of the twister is 100% transparent to the test case, as it
# only seeks the exchange/BASE_URL URL to connect to the exchange.
BASE_URL = "http://localhost:8888/"
[exchangedb-postgres]
CONFIG = "postgres:///talercheck"
[auditor]
BASE_URL = "http://localhost:8083/"
PORT = 8083
[auditordb-postgres]
CONFIG = "postgres:///talercheck"
[exchange-account-1]
# What is the URL of our account?
PAYTO_URI = "payto://x-taler-bank/localhost/42?receiver-name=42"
[exchange-accountcredentials-1]
WIRE_GATEWAY_URL = "http://localhost:9081/42/"
WIRE_GATEWAY_AUTH_METHOD = NONE
[exchange-account-2]
PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
ENABLE_DEBIT = YES
ENABLE_CREDIT = YES
[exchange-accountcredentials-2]
WIRE_GATEWAY_URL = "http://localhost:8082/2/"
WIRE_GATEWAY_AUTH_METHOD = BASIC
USERNAME = user
PASSWORD = pass
[bank]
HTTP_PORT = 8082
[twister]
# HTTP listen port for twister
HTTP_PORT = 8888
SERVE = tcp
# HTTP Destination for twister. The test-Webserver needs
# to listen on the port used here. Note: no trailing '/'!
DESTINATION_BASE_URL = "http://localhost:8081"
# Control port for TCP
# PORT = 8889
HOSTNAME = localhost
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
# Control port for UNIX
UNIXPATH = /tmp/taler-service-twister.sock
UNIX_MATCH_UID = NO
UNIX_MATCH_GID = YES
# Launching of twister by ARM
# BINARY = taler-service-twister
# AUTOSTART = NO
# FORCESTART = NO
[coin_eur_ct_1]
value = EUR:0.01
duration_withdraw = 7 days
duration_spend = 2 years
duration_legal = 3 years
fee_withdraw = EUR:0.00
fee_deposit = EUR:0.00
fee_refresh = EUR:0.01
fee_refund = EUR:0.01
rsa_keysize = 1024
CIPHER = RSA
[coin_eur_ct_10]
value = EUR:0.10
duration_withdraw = 7 days
duration_spend = 2 years
duration_legal = 3 years
fee_withdraw = EUR:0.01
fee_deposit = EUR:0.01
fee_refresh = EUR:0.03
fee_refund = EUR:0.01
rsa_keysize = 1024
CIPHER = RSA
[coin_eur_1]
value = EUR:1
duration_withdraw = 7 days
duration_spend = 2 years
duration_legal = 3 years
fee_withdraw = EUR:0.01
fee_deposit = EUR:0.01
fee_refresh = EUR:0.03
fee_refund = EUR:0.01
rsa_keysize = 1024
CIPHER = RSA
[coin_eur_5]
value = EUR:5
duration_withdraw = 7 days
duration_spend = 2 years
duration_legal = 3 years
fee_withdraw = EUR:0.01
fee_deposit = EUR:0.01
fee_refresh = EUR:0.03
fee_refund = EUR:0.01
rsa_keysize = 1024
CIPHER = RSA
[coin_eur_10]
value = EUR:10
duration_withdraw = 7 days
duration_spend = 2 years
duration_legal = 3 years
fee_withdraw = EUR:0.01
fee_deposit = EUR:0.01
fee_refresh = EUR:0.03
fee_refund = EUR:0.01
rsa_keysize = 1024
CIPHER = RSA

View File

@ -0,0 +1,33 @@
# This file is in the public domain.
[exchange]
# Base URL of the exchange ('S PROXY). This URL is where the
# twister listens at, so that it will be able to get all the
# connection addressed to the exchange. In fact, the presence
# of the twister is 100% transparent to the test case, as it
# only seeks the exchange/BASE_URL URL to connect to the exchange.
BASE_URL = "http://localhost:8888/"
[bank]
HTTP_PORT = 8082
[twister]
# HTTP listen port for twister
HTTP_PORT = 8888
SERVE = tcp
# HTTP Destination for twister. The test-Webserver needs
# to listen on the port used here. Note: no trailing '/'!
DESTINATION_BASE_URL = "http://localhost:8081"
# Control port for TCP
# PORT = 8889
HOSTNAME = localhost
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
# Control port for UNIX
UNIXPATH = /tmp/taler-service-twister.sock
UNIX_MATCH_UID = NO
UNIX_MATCH_GID = YES

View File

@ -21,6 +21,7 @@ DURATION = 14 days
# Currency supported by the exchange (can only be one) # Currency supported by the exchange (can only be one)
CURRENCY = EUR CURRENCY = EUR
CURRENCY_ROUND_UNIT = EUR:0.01 CURRENCY_ROUND_UNIT = EUR:0.01
AML_THRESHOLD = EUR:1000000
[auditor] [auditor]
BASE_URL = "http://localhost:8083/" BASE_URL = "http://localhost:8083/"