diff options
author | Marcello Stanisci <stanisci.m@gmail.com> | 2018-04-23 17:04:19 +0200 |
---|---|---|
committer | Marcello Stanisci <stanisci.m@gmail.com> | 2018-04-23 17:04:19 +0200 |
commit | eedb4dd4edaf9874200c1b29de841b85f7a97d82 (patch) | |
tree | f5eceaa8b39b98c271e54010279b4d39a3929f46 /src/auditor | |
parent | b8ab8f01c7c1deee65091c9dfb40401a0ba420d2 (diff) |
auditor tool to reset db tables.
Diffstat (limited to 'src/auditor')
-rw-r--r-- | src/auditor/Makefile.am | 18 | ||||
-rw-r--r-- | src/auditor/taler-auditor-dbinit.c | 130 |
2 files changed, 147 insertions, 1 deletions
diff --git a/src/auditor/Makefile.am b/src/auditor/Makefile.am index 0770338ac..105f91c29 100644 --- a/src/auditor/Makefile.am +++ b/src/auditor/Makefile.am @@ -14,7 +14,23 @@ pkgcfg_DATA = \ bin_PROGRAMS = \ taler-auditor \ taler-wire-auditor \ - taler-auditor-sign + taler-auditor-sign \ + taler-auditor-dbinit + +taler_auditor_dbinit_SOURCES = \ + taler-auditor-dbinit.c +taler_auditor_dbinit_LDADD = \ + $(LIBGCRYPT_LIBS) \ + $(top_builddir)/src/util/libtalerutil.la \ + $(top_builddir)/src/pq/libtalerpq.la \ + $(top_builddir)/src/auditordb/libtalerauditordb.la \ + -lgnunetutil $(XLIB) +taler_auditor_dbinit_LDFLAGS = \ + $(POSTGRESQL_LDFLAGS) +taler_auditor_dbinit_CPPFLAGS = \ + -I$(top_srcdir)/src/include \ + -I$(top_srcdir)/src/pq/ \ + $(POSTGRESQL_CPPFLAGS) taler_auditor_SOURCES = \ taler-auditor.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 <http://www.gnu.org/licenses/> +*/ +/** + * @file auditor/taler-auditor-dbinit.c + * @brief Create tables for the auditor database. + * @author Florian Dold + * @author Marcello Stanisci + */ +#include "platform.h" +#include <gnunet/gnunet_util_lib.h> +#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 */ |