diff options
Diffstat (limited to 'src/bank-lib/taler-fakebank-run.c')
-rw-r--r-- | src/bank-lib/taler-fakebank-run.c | 77 |
1 files changed, 64 insertions, 13 deletions
diff --git a/src/bank-lib/taler-fakebank-run.c b/src/bank-lib/taler-fakebank-run.c index 7fa730469..c15145ecb 100644 --- a/src/bank-lib/taler-fakebank-run.c +++ b/src/bank-lib/taler-fakebank-run.c @@ -1,6 +1,6 @@ /* This file is part of TALER - Copyright (C) 2016, 2017 Taler Systems SA + Copyright (C) 2016-2022 Taler Systems SA TALER is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published @@ -52,6 +52,10 @@ static struct TALER_FAKEBANK_Handle *fb; */ static struct GNUNET_SCHEDULER_Task *keepalive; +/** + * Amount to credit an account with on /register. + */ +static struct TALER_Amount signup_bonus; /** * Stop the process. @@ -101,8 +105,10 @@ run (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg) { unsigned long long port = 8082; - unsigned long long ram = 1024 * 1024 * 128; /* 128 M entries */ + unsigned long long ram = 1024 * 128; /* 128 k entries */ char *currency_string; + char *hostname; + char *exchange_url; (void) cls; (void) args; @@ -125,6 +131,23 @@ run (void *cls, port); } if (GNUNET_OK != + GNUNET_CONFIGURATION_get_value_string (cfg, + "bank", + "SUGGESTED_EXCHANGE", + &exchange_url)) + { + /* no suggested exchange */ + exchange_url = NULL; + } + if (GNUNET_OK != + GNUNET_CONFIGURATION_get_value_string (cfg, + "bank", + "HOSTNAME", + &hostname)) + { + hostname = GNUNET_strdup ("localhost"); + } + if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_number (cfg, "bank", "RAM_LIMIT", @@ -142,17 +165,37 @@ run (void *cls, go |= TALER_MHD_GO_FORCE_CONNECTION_CLOSE; TALER_MHD_setup (go); } - fb = TALER_FAKEBANK_start2 ((uint16_t) port, + if (GNUNET_OK != + TALER_amount_is_valid (&signup_bonus)) + { + GNUNET_assert (GNUNET_OK == + TALER_amount_set_zero (currency_string, + &signup_bonus)); + } + if (0 != strcmp (currency_string, + signup_bonus.currency)) + { + fprintf (stderr, + "Signup bonus and main currency do not match\n"); + ret = EXIT_INVALIDARGUMENT; + return; + } + fb = TALER_FAKEBANK_start3 (hostname, + (uint16_t) port, + exchange_url, currency_string, ram, - num_threads); + num_threads, + &signup_bonus); + GNUNET_free (hostname); + GNUNET_free (exchange_url); + GNUNET_free (currency_string); if (NULL == fb) { GNUNET_break (0); ret = EXIT_FAILURE; return; } - GNUNET_free (currency_string); keepalive = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &keepalive_task, NULL); @@ -183,16 +226,24 @@ main (int argc, "NUM_THREADS", "size of the thread pool", &num_threads), + TALER_getopt_get_amount ('s', + "signup-bonus", + "AMOUNT", + "amount to credit newly registered account (created out of thin air)", + &signup_bonus), GNUNET_GETOPT_OPTION_END }; - - if (GNUNET_OK != - GNUNET_PROGRAM_run (argc, argv, - "taler-fakebank-run", - "Runs the fakebank", - options, - &run, - NULL)) + enum GNUNET_GenericReturnValue iret; + + iret = GNUNET_PROGRAM_run (argc, argv, + "taler-fakebank-run", + "Runs the fakebank", + options, + &run, + NULL); + if (GNUNET_SYSERR == iret) return EXIT_INVALIDARGUMENT; + if (GNUNET_NO == iret) + return EXIT_SUCCESS; return ret; } |