From eedb4dd4edaf9874200c1b29de841b85f7a97d82 Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Mon, 23 Apr 2018 17:04:19 +0200 Subject: auditor tool to reset db tables. --- src/auditor/taler-auditor-dbinit.c | 130 +++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 src/auditor/taler-auditor-dbinit.c (limited to 'src/auditor/taler-auditor-dbinit.c') diff --git a/src/auditor/taler-auditor-dbinit.c b/src/auditor/taler-auditor-dbinit.c new file mode 100644 index 000000000..185a39413 --- /dev/null +++ b/src/auditor/taler-auditor-dbinit.c @@ -0,0 +1,130 @@ +/* + 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, see +*/ +/** + * @file auditor/taler-auditor-dbinit.c + * @brief Create tables for the auditor database. + * @author Florian Dold + * @author Marcello Stanisci + */ +#include "platform.h" +#include +#include "taler_auditordb_plugin.h" + + +/** + * Return value from main(). + */ +static int global_ret; + +/** + * -r option: do full DB reset + */ +static int reset_db; + +/** + * -g option: garbage collect DB reset + */ +static int gc_db; + +/** + * 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) +{ + struct TALER_AUDITORDB_Plugin *plugin; + + if (NULL == + (plugin = TALER_AUDITORDB_plugin_load (cfg))) + { + fprintf (stderr, + "Failed to initialize database plugin.\n"); + global_ret = 1; + return; + } + if (reset_db) + (void) plugin->drop_tables (plugin->cls); + if (GNUNET_OK != + plugin->create_tables (plugin->cls)) + { + fprintf (stderr, + "Failed to initialize database.\n"); + TALER_AUDITORDB_plugin_unload (plugin); + global_ret = 1; + return; + } + if (gc_db) + { + if (GNUNET_SYSERR == plugin->gc (plugin->cls)) + fprintf (stderr, + "Garbage collection failed!\n"); + } + TALER_AUDITORDB_plugin_unload (plugin); +} + + +/** + * The main function of the database initialization tool. + * Used to initialize the Taler Exchange's database. + * + * @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_flag ('r', + "reset", + "reset database (DANGEROUS: all existing data is lost!)", + &reset_db), + GNUNET_GETOPT_option_flag ('g', + "gc", + "garbage collect database", + &gc_db), + GNUNET_GETOPT_OPTION_END + }; + + /* force linker to link against libtalerutil; if we do + not do this, the linker may "optimize" libtalerutil + away and skip #TALER_OS_init(), which we do need */ + (void) TALER_project_data_default (); + GNUNET_assert (GNUNET_OK == + GNUNET_log_setup ("taler-auditor-dbinit", + "INFO", + NULL)); + if (GNUNET_OK != + GNUNET_PROGRAM_run (argc, argv, + "taler-auditor-dbinit", + "Initialize Taler auditor database", + options, + &run, NULL)) + return 1; + return global_ret; +} + + +/* end of taler-auditor-dbinit.c */ -- cgit v1.2.3