diff options
author | Christian Grothoff <christian@grothoff.org> | 2016-03-02 21:07:27 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2016-03-02 21:07:27 +0100 |
commit | 17ff4f5e97b981f0b3eebd6e3923fe60dc75edd5 (patch) | |
tree | 585b6cbe92aec91b2e186206c1bfe746a0cd85e6 /src/mint-tools/taler-mint-reservemod.c | |
parent | 531272a92a5aa08559436138ff5106a6bff1b361 (diff) | |
parent | 201b2b3d1af2a4d44fe32c8b0312d935845cf129 (diff) |
fixing #4230 in bank-lib
Diffstat (limited to 'src/mint-tools/taler-mint-reservemod.c')
-rw-r--r-- | src/mint-tools/taler-mint-reservemod.c | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/src/mint-tools/taler-mint-reservemod.c b/src/mint-tools/taler-mint-reservemod.c deleted file mode 100644 index 38d27054a..000000000 --- a/src/mint-tools/taler-mint-reservemod.c +++ /dev/null @@ -1,206 +0,0 @@ -/* - This file is part of TALER - Copyright (C) 2014, 2015 GNUnet e.V. - - TALER is free software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the Free Software - Foundation; either version 3, or (at your option) any later version. - - TALER is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with - TALER; see the file COPYING. If not, If not, see <http://www.gnu.org/licenses/> -*/ -/** - * @file taler-mint-reservemod.c - * @brief Modify reserves. Allows manipulation of reserve balances. - * @author Florian Dold - * @author Benedikt Mueller - */ -#include "platform.h" -#include <gnunet/gnunet_util_lib.h> -#include <libpq-fe.h> -#include <jansson.h> -#include "taler_mintdb_plugin.h" - -/** - * Director of the mint, containing the keys. - */ -static char *mint_directory; - -/** - * Handle to the mint's configuration - */ -static struct GNUNET_CONFIGURATION_Handle *cfg; - -/** - * Our DB plugin. - */ -static struct TALER_MINTDB_Plugin *plugin; - - -/** - * The main function of the reservemod tool - * - * @param argc number of arguments from the command line - * @param argv command line arguments - * @return 0 ok, 1 on error - */ -int -main (int argc, char *const *argv) -{ - char *reserve_pub_str = NULL; - char *add_str = NULL; - struct TALER_Amount add_value; - char *details = NULL; - json_t *jdetails; - json_error_t error; - struct TALER_ReservePublicKeyP reserve_pub; - struct TALER_MINTDB_Session *session; - const struct GNUNET_GETOPT_CommandLineOption options[] = { - {'a', "add", "DENOM", - "value to add", 1, - &GNUNET_GETOPT_set_string, &add_str}, - {'d', "mint-dir", "DIR", - "mint directory with keys to update", 1, - &GNUNET_GETOPT_set_filename, &mint_directory}, - {'D', "details", "JSON", - "details about the bank transaction which justify why we add this amount", 1, - &GNUNET_GETOPT_set_string, &details}, - TALER_GETOPT_OPTION_HELP ("Deposit funds into a Taler reserve"), - {'R', "reserve", "KEY", - "reserve (public key) to modify", 1, - &GNUNET_GETOPT_set_string, &reserve_pub_str}, - GNUNET_GETOPT_OPTION_VERSION (VERSION "-" VCS_VERSION), - GNUNET_GETOPT_OPTION_END - }; - int ret; - - GNUNET_assert (GNUNET_OK == - GNUNET_log_setup ("taler-mint-reservemod", - "WARNING", - NULL)); - - if (GNUNET_GETOPT_run ("taler-mint-reservemod", - options, - argc, argv) < 0) - return 1; - if (NULL == mint_directory) - { - fprintf (stderr, - "Mint directory not given\n"); - GNUNET_free_non_null (add_str); - GNUNET_free_non_null (details); - GNUNET_free_non_null (reserve_pub_str); - return 1; - } - if ((NULL == reserve_pub_str) || - (GNUNET_OK != - GNUNET_STRINGS_string_to_data (reserve_pub_str, - strlen (reserve_pub_str), - &reserve_pub, - sizeof (struct TALER_ReservePublicKeyP)))) - { - fprintf (stderr, - "Parsing reserve key invalid\n"); - GNUNET_free_non_null (add_str); - GNUNET_free_non_null (details); - GNUNET_free_non_null (reserve_pub_str); - return 1; - } - if ( (NULL == add_str) || - (GNUNET_OK != - TALER_string_to_amount (add_str, - &add_value)) ) - { - fprintf (stderr, - "Failed to parse currency amount `%s'\n", - add_str); - GNUNET_free_non_null (add_str); - GNUNET_free_non_null (details); - GNUNET_free_non_null (reserve_pub_str); - return 1; - } - - if (NULL == details) - { - fprintf (stderr, - "No wiring details given (justification required)\n"); - GNUNET_free_non_null (add_str); - GNUNET_free_non_null (reserve_pub_str); - return 1; - } - - cfg = TALER_config_load (mint_directory); - if (NULL == cfg) - { - fprintf (stderr, - "Failed to load mint configuration\n"); - GNUNET_free_non_null (add_str); - GNUNET_free_non_null (details); - GNUNET_free_non_null (reserve_pub_str); - return 1; - } - ret = 1; - if (NULL == - (plugin = TALER_MINTDB_plugin_load (cfg))) - { - fprintf (stderr, - "Failed to initialize database plugin.\n"); - goto cleanup; - } - - session = plugin->get_session (plugin->cls, - GNUNET_NO); - if (NULL == session) - { - fprintf (stderr, - "Failed to initialize DB session\n"); - goto cleanup; - } - jdetails = json_loads (details, - JSON_REJECT_DUPLICATES, - &error); - if (NULL == jdetails) - { - fprintf (stderr, - "Failed to parse JSON transaction details `%s': %s (%s)\n", - details, - error.text, - error.source); - goto cleanup; - } - /* FIXME: maybe allow passing timestamp via command-line? */ - ret = plugin->reserves_in_insert (plugin->cls, - session, - &reserve_pub, - &add_value, - GNUNET_TIME_absolute_get (), - jdetails); - json_decref (jdetails); - if (GNUNET_SYSERR == ret) - { - fprintf (stderr, - "Failed to update reserve.\n"); - goto cleanup; - } - if (GNUNET_NO == ret) - { - fprintf (stderr, - "Record exists, reserve not updated.\n"); - } - ret = 0; - cleanup: - if (NULL != plugin) - TALER_MINTDB_plugin_unload (plugin); - if (NULL != cfg) - GNUNET_CONFIGURATION_destroy (cfg); - GNUNET_free_non_null (add_str); - GNUNET_free_non_null (details); - GNUNET_free_non_null (reserve_pub_str); - return ret; -} - -/* end taler-mint-reservemod.c */ |