/* This file is part of Anastasis Copyright (C) 2020 Taler Systems SA Anastasis is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. Anastasis 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 Anastasis; see the file COPYING.GPL. If not, see */ /** * @file backend/anastasis-httpd_config.c * @brief headers for /terms handler * @author Christian Grothoff * @author Dennis Neufeld * @author Dominik Meister */ #include "platform.h" #include #include "anastasis-httpd_config.h" #include "anastasis-httpd.h" #include #include "anastasis_authorization_lib.h" /** * Add enabled methods and their fees to the ``/config`` response. * * @param[in,out] cls a `json_t` array to build * @param section configuration section to inspect */ static void add_methods (void *cls, const char *section) { json_t *method_arr = cls; struct ANASTASIS_AuthorizationPlugin *p; struct TALER_Amount cost; json_t *method; if (0 != strncasecmp (section, "authorization-", strlen ("authorization-"))) return; if (GNUNET_YES != GNUNET_CONFIGURATION_get_value_yesno (AH_cfg, section, "ENABLED")) return; section += strlen ("authorization-"); p = ANASTASIS_authorization_plugin_load (section, AH_cfg, &cost); if (NULL == p) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to load authorization plugin `%s'\n", section); return; } method = json_pack ("{s:s, s:o}", "type", section, "cost", TALER_JSON_from_amount (&cost)); GNUNET_assert (NULL != method); GNUNET_assert ( 0 == json_array_append_new (method_arr, method)); } MHD_RESULT AH_handler_config (struct AH_RequestHandler *rh, struct MHD_Connection *connection) { json_t *method_arr = json_array (); GNUNET_assert (NULL != method_arr); { json_t *method; method = json_pack ("{s:s, s:o}", "type", "question", "cost", TALER_JSON_from_amount (&AH_question_cost)); GNUNET_assert ( 0 == json_array_append_new (method_arr, method)); } GNUNET_CONFIGURATION_iterate_sections (AH_cfg, &add_methods, method_arr); return TALER_MHD_reply_json_pack (connection, MHD_HTTP_OK, "{s:s, s:s, s:s, s:s, s:o, s:I," " s:o, s:o, s:o, s:o }", "name", "anastasis", "version", "0:0:0", "business_name", AH_business_name, "currency", (char *) AH_currency, "methods", method_arr, "storage_limit_in_megabytes", (json_int_t) AH_upload_limit_mb, /* 6 */ "annual_fee", TALER_JSON_from_amount (&AH_annual_fee), "truth_upload_fee", TALER_JSON_from_amount ( &AH_truth_upload_fee), "liability_limit", TALER_JSON_from_amount (&AH_insurance), "server_salt", GNUNET_JSON_from_data_auto ( &AH_server_salt)); } /* end of anastasis-httpd_config.c */