From 4d2faa5ec92213efc4ee40f707ab0ad3615e5433 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Fri, 3 Mar 2017 19:23:34 +0100 Subject: changing wire plugin specification from [exchange]WIREFORMAT to [exchange-wire-PLUGIN]enable=YES/NO --- src/wire/wire-sepa.conf | 6 ++++ src/wire/wire-test.conf | 6 ++++ src/wire/wire.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 89 insertions(+), 1 deletion(-) (limited to 'src/wire') diff --git a/src/wire/wire-sepa.conf b/src/wire/wire-sepa.conf index b7c09153f..88d2ac03c 100644 --- a/src/wire/wire-sepa.conf +++ b/src/wire/wire-sepa.conf @@ -1,5 +1,11 @@ +# This file is in the public domain. +# # Configuration for SEPA wire plugin. +[exchange-wire-sepa] +# Set to "YES" to activate the 'sepa' plugin. +ENABLE = NO + [exchange-wire-incoming-sepa] # This is the response we give out for the /wire request. It provides # wallets with the bank information for transfers to the exchange. diff --git a/src/wire/wire-test.conf b/src/wire/wire-test.conf index fc03f1b83..fcc156426 100644 --- a/src/wire/wire-test.conf +++ b/src/wire/wire-test.conf @@ -1,5 +1,11 @@ # This file is in the public domain. # +# Configuration for TEST wire plugin. +# +[exchange-wire-test] +# Set to "YES" to activate the 'test' plugin. +ENABLE = NO + [exchange-wire-incoming-test] # This is the response we give out for the /wire request. It provides # wallets with the bank information for transfers to the exchange. diff --git a/src/wire/wire.c b/src/wire/wire.c index 4d53b0d0b..c799334f9 100644 --- a/src/wire/wire.c +++ b/src/wire/wire.c @@ -1,6 +1,6 @@ /* This file is part of TALER - (C) 2015, 2016 GNUnet e.V. + (C) 2015, 2016, 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 @@ -69,4 +69,80 @@ TALER_WIRE_plugin_unload (struct TALER_WIRE_Plugin *plugin) } +/** + * Closure of #check_for_wire. + */ +struct FindEnabledWireContext +{ + /** + * Configuration we are usign. + */ + const struct GNUNET_CONFIGURATION_Handle *cfg; + + /** + * Callback to invoke. + */ + TALER_WIRE_EnabledCallback cb; + + /** + * Closure for @e cb. + */ + void *cb_cls; +}; + + +/** + * Check if @a section begins with "exchange-wire-", and if + * so if the "ENABLE" option is set to "YES". If both are + * true, call the callback from the context with the + * rest of the section name. + * + * @param cls our `struct FindEnabledWireContext` + * @param section name of a section in the configuration + */ +static void +check_for_wire (void *cls, + const char *section) +{ + struct FindEnabledWireContext *ctx = cls; + const char *name; + + if (0 != strncasecmp (section, + "exchange-wire-", + strlen ("exchange-wire-"))) + return; + if (GNUNET_YES != + GNUNET_CONFIGURATION_get_value_yesno (ctx->cfg, + section, + "ENABLE")) + return; + name = §ion[strlen ("exchange-wire-")]; + ctx->cb (ctx->cb_cls, + name); +} + + +/** + * Check which wire plugins are enabled in @a cfg and call @a cb for each one. + * + * @param cfg configuration to use + * @param cb callback to invoke + * @param cb_cls closure for @a cb + */ +void +TALER_WIRE_find_enabled (const struct GNUNET_CONFIGURATION_Handle *cfg, + TALER_WIRE_EnabledCallback cb, + void *cb_cls) +{ + struct FindEnabledWireContext ctx; + + ctx.cfg = cfg; + ctx.cb = cb; + ctx.cb_cls = cb_cls; + GNUNET_CONFIGURATION_iterate_sections (cfg, + &check_for_wire, + &ctx); +} + + /* end of wire.c */ -- cgit v1.2.3