summaryrefslogtreecommitdiff
path: root/src/exchange-tools/taler-exchange-reservemod.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/exchange-tools/taler-exchange-reservemod.c')
-rw-r--r--src/exchange-tools/taler-exchange-reservemod.c225
1 files changed, 0 insertions, 225 deletions
diff --git a/src/exchange-tools/taler-exchange-reservemod.c b/src/exchange-tools/taler-exchange-reservemod.c
deleted file mode 100644
index e901b694d..000000000
--- a/src/exchange-tools/taler-exchange-reservemod.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- This file is part of TALER
- Copyright (C) 2014-2017 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, see <http://www.gnu.org/licenses/>
-*/
-/**
- * @file taler-exchange-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 <gnunet/gnunet_json_lib.h>
-#include <libpq-fe.h>
-#include <jansson.h>
-#include "taler_exchangedb_plugin.h"
-
-/**
- * Director of the exchange, containing the keys.
- */
-static char *exchange_directory;
-
-/**
- * Our DB plugin.
- */
-static struct TALER_EXCHANGEDB_Plugin *plugin;
-
-/**
- * Public key of the reserve.
- */
-static struct TALER_ReservePublicKeyP reserve_pub;
-
-/**
- * Amount to add. Invalid if not initialized.
- */
-static struct TALER_Amount add_value;
-
-/**
- * Details about the sender account in JSON format.
- */
-static json_t *sender_details;
-
-/**
- * Details about the wire transfer in JSON format.
- */
-static json_t *transfer_details;
-
-/**
- * Return value from main().
- */
-static int global_ret;
-
-
-/**
- * Run the database transaction.
- *
- * @param reserve_pub public key of the reserve to use
- * @param add_value value to add
- * @param jdetails JSON details about sender
- * @param tdetails JSON details about transfer
- * @return #GNUNET_OK on success, #GNUNET_SYSERR on hard error,
- * #GNUNET_NO if record exists
- */
-static int
-run_transaction (const struct TALER_ReservePublicKeyP *reserve_pub,
- const struct TALER_Amount *add_value,
- json_t *jdetails,
- json_t *tdetails)
-{
- int ret;
- struct TALER_EXCHANGEDB_Session *session;
- void *json_str;
- struct GNUNET_TIME_Absolute now;
-
- session = plugin->get_session (plugin->cls);
- if (NULL == session)
- {
- fprintf (stderr,
- "Failed to initialize DB session\n");
- return GNUNET_SYSERR;
- }
- /* FIXME: maybe allow passing timestamp via command-line? */
- json_str = json_dumps (tdetails,
- JSON_INDENT(2));
- if (NULL == json_str)
- {
- GNUNET_break (0); /* out of memory? */
- return GNUNET_SYSERR;
- }
- now = GNUNET_TIME_absolute_get ();
- (void) GNUNET_TIME_round_abs (&now);
- ret = plugin->reserves_in_insert (plugin->cls,
- session,
- reserve_pub,
- add_value,
- now,
- jdetails,
- json_str,
- strlen (json_str));
- free (json_str);
- if (GNUNET_SYSERR == ret)
- {
- fprintf (stderr,
- "Failed to update reserve.\n");
- }
- if (GNUNET_NO == ret)
- {
- fprintf (stderr,
- "Record exists, reserve not updated.\n");
- }
- return ret;
-}
-
-
-/**
- * Main function that will be run.
- *
- * @param cls closure
- * @param args remaining command-line arguments
- * @param cfgfile name of the configuration file used (for saving, can be NULL!)
- * @param cfg configuration
- */
-static void
-run (void *cls,
- char *const *args,
- const char *cfgfile,
- const struct GNUNET_CONFIGURATION_Handle *cfg)
-{
- if (GNUNET_OK !=
- GNUNET_CONFIGURATION_get_value_filename (cfg,
- "exchange",
- "KEYDIR",
- &exchange_directory))
- {
- GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
- "exchange",
- "KEYDIR");
- global_ret = 1;
- return;
- }
- if (NULL ==
- (plugin = TALER_EXCHANGEDB_plugin_load (cfg)))
- {
- fprintf (stderr,
- "Failed to initialize database plugin.\n");
- global_ret = 1;
- return;
- }
- if (GNUNET_SYSERR ==
- run_transaction (&reserve_pub,
- &add_value,
- sender_details,
- transfer_details))
- global_ret = 1;
- TALER_EXCHANGEDB_plugin_unload (plugin);
- json_decref (transfer_details);
- json_decref (sender_details);
-}
-
-
-/**
- * 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)
-{
- const struct GNUNET_GETOPT_CommandLineOption options[] = {
- GNUNET_GETOPT_option_mandatory
- (TALER_getopt_get_amount ('a',
- "add",
- "DENOM",
- "value to add",
- &add_value)),
- GNUNET_GETOPT_option_mandatory
- (GNUNET_JSON_getopt ('s',
- "sender",
- "JSON",
- "details about the sender's bank account",
- &sender_details)),
- GNUNET_GETOPT_option_mandatory
- (GNUNET_JSON_getopt ('t',
- "transfer",
- "JSON",
- "details that uniquely identify the bank transfer",
- &transfer_details)),
- GNUNET_GETOPT_option_help ("Deposit funds into a Taler reserve"),
- GNUNET_GETOPT_option_mandatory
- (GNUNET_GETOPT_option_base32_auto ('R',
- "reserve",
- "KEY",
- "reserve (public key) to modify",
- &reserve_pub)),
- GNUNET_GETOPT_OPTION_END
- };
-
- GNUNET_assert (GNUNET_OK ==
- GNUNET_log_setup ("taler-exchange-reservemod",
- "WARNING",
- NULL));
- if (GNUNET_OK !=
- GNUNET_PROGRAM_run (argc, argv,
- "taler-exchange-reservemod",
- "Deposit funds into a Taler reserve",
- options,
- &run, NULL))
- return 1;
- return global_ret;
-}
-
-/* end taler-exchange-reservemod.c */