From a532a827c6317046990e565092139726d7963c6e Mon Sep 17 00:00:00 2001 From: swrup Date: Mon, 13 Oct 2025 02:07:07 +0200 Subject: [PATCH] + database --- src/config.ml | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/src/config.ml b/src/config.ml index fa4fb746..d25883ec 100644 --- a/src/config.ml +++ b/src/config.ml @@ -18,6 +18,7 @@ type duration (* TODO make it Amount.t *) type amount = string +type payto_uri = string (* TODO still need to parse them and tell that its not supported @@ -374,6 +375,65 @@ module type Secmod_rsa = Secmod module type Secmod_cs = Secmod module type Secmod_eddsa = Secmod +(* The following options must be in the section "[exchangedb]". *) +module type Database = sig + (* TODO not sure about what unit of time/duration is used here *) + + (* + After which time period should reserves be closed if they are idle? *) + val idle_reserve_expiration_time : seconds + + (* + After what time do we forget about (drained) reserves during garbage collection? *) + val legal_reserve_expiration_time : seconds + + (* + Delay between a deposit being eligible for aggregation and + the aggregator actually triggering. *) + val aggregator_shift : seconds + + (* + Number of concurrent purses that a reserve may have active + if it is paid to be opened for a year. *) + val default_purse_limit : int + + (* + Maximum time an AML program is allowed to run. + (Optional for taler-auditor.) *) + val max_aml_program_runtime : int option + + (* +The following options must be in section “[exchangedb-postgres]” if the +“postgres” plugin was selected for the database. *) + module type Postgres_backend = sig + (* + How to access the database, e.g. “postgres:///taler-exchange” to use the + “taler-exchange” database. Testcases use “talercheck”. *) + val config : string + end +end + +(* +An exchange (or merchant) can have multiple bank accounts. The following +options are for sections named “[exchange-account-SOMETHING]”. The ``SOMETHING`` is +arbitrary and should be chosen to uniquely identify the bank account for +the operator. These options are used by the **taler-exchange-aggregator**, **taler-exchange-closer**, **taler-exchange-transfer** and **taler-exchange-wirewatch** tools. *) +module type Account = sig + val payto_uri : payto_uri + val enable_debit : [ `YES | `NO ] + val enable_credit : [ `YES | `NO ] +end + +(* +Additionally, for each enabled account there MUST be another matching section named “[exchange-accountcredentials-SOMETHING]”. This section SHOULD be in a ``secret/`` configuration file that is only readable for the **taler-exchange-wirewatch** and **taler-exchange-transfer** processes. It contains the credentials to access the bank account: *) +module type Account_secret = sig + val wire_gateway_url : url + val wire_gateway_auth_method : string + val username : string + val password : string + val token : string +end + (* -- ********************************** -- *) let currency = `Eur let currency_to_string = function `Eur -> "EUR"