donau

Donation authority for GNU Taler (experimental)
Log | Files | Refs | Submodules | README | LICENSE

commit 3a42b4c8f95b703ab2bfd733059ff0a815dfefc9
parent e37f6310b513aa4d18b8d27f148b10beb5e1588c
Author: Casaburi Johannes <johannes.casaburi@students.bfh.ch>
Date:   Mon,  8 Jan 2024 22:35:37 +0100

added back terms

Diffstat:
Msrc/donau/Makefile.am | 3++-
Msrc/donau/donau-httpd.c | 46+++++++++++++++++++++++++++++-----------------
Asrc/donau/donau-httpd_terms.c | 82+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/donau/donau-httpd_terms.h | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 179 insertions(+), 18 deletions(-)

diff --git a/src/donau/Makefile.am b/src/donau/Makefile.am @@ -42,7 +42,8 @@ donau_httpd_SOURCES = \ donau-httpd_keys.c donau-httpd_keys.h \ donau-httpd_config.c donau-httpd_config.h \ donau-httpd_get-charities.c donau_httpd_charity.h \ - donau-httpd_get-charity.c donau-httpd_post-charity.c + donau-httpd_get-charity.c donau-httpd_post-charity.c \ + donau-httpd_terms.c donau-httpd_terms.h # Testcases diff --git a/src/donau/donau-httpd.c b/src/donau/donau-httpd.c @@ -30,12 +30,13 @@ // #include "taler/taler_templating_lib.h" #include "taler/taler_mhd_lib.h" #include "donaudb_lib.h" -#include "donaudb_plugin.h" -#include <gnunet/gnunet_mhd_compat.h> #include "donau_util.h" #include "donau-httpd_config.h" #include "donau-httpd_keys.h" #include "donau-httpd_charity.h" +#include "donau-httpd_terms.h" +#include "donaudb_plugin.h" +#include <gnunet/gnunet_mhd_compat.h> /** * Backlog for listen operation on unix domain sockets. @@ -243,20 +244,19 @@ handle_mhd_completion_callback (void *cls, TALER_MHD_parse_post_cleanup_callback (rc->opaque_post_parsing_context); /* Sanity-check that we didn't leave any transactions hanging */ - // GNUNET_break (GNUNET_OK == - // DH_plugin->preflight (DH_plugin->cls)); - // { - // struct GNUNET_TIME_Relative latency; - - // latency = GNUNET_TIME_absolute_get_duration (rc->start_time); - // if (latency.rel_value_us > - // WARN_LATENCY.rel_value_us) - // GNUNET_log (GNUNET_ERROR_TYPE_INFO, - // "Request for `%s' took %s\n", - // rc->url, - // GNUNET_STRINGS_relative_time_to_string (latency, - // GNUNET_YES)); - // } + GNUNET_break (GNUNET_OK == + DH_plugin->preflight (DH_plugin->cls)); + { + struct GNUNET_TIME_Relative latency; + latency = GNUNET_TIME_absolute_get_duration (rc->start_time); + if (latency.rel_value_us > + WARN_LATENCY.rel_value_us) + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Request for `%s' took %s\n", + rc->url, + GNUNET_STRINGS_relative_time_to_string (latency, + GNUNET_YES)); + } GNUNET_free (rc); *con_cls = NULL; GNUNET_async_scope_restore (&old_scope); @@ -420,6 +420,18 @@ handle_mhd_request (void *cls, .data = "User-agent: *\nDisallow: /\n", .response_code = MHD_HTTP_OK }, + /* Terms of service */ + { + .url = "terms", + .method = MHD_HTTP_METHOD_GET, + .handler.get = &DH_handler_terms + }, + /* Privacy policy */ + { + .url = "privacy", + .method = MHD_HTTP_METHOD_GET, + .handler.get = &DH_handler_privacy + }, /* Configuration */ { .url = "config", @@ -872,7 +884,7 @@ run (void *cls, return; } - // DH_load_terms (DH_cfg); + DH_load_terms (DH_cfg); DH_curl_ctx = GNUNET_CURL_init (&GNUNET_CURL_gnunet_scheduler_reschedule, &donau_curl_rc); diff --git a/src/donau/donau-httpd_terms.c b/src/donau/donau-httpd_terms.c @@ -0,0 +1,82 @@ +/* + This file is part of TALER + Copyright (C) 2019, 2021 Taler Systems SA + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU Affero 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License along with + TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> +*/ +/** + * @file donau-httpd_terms.c + * @brief Handle /terms requests to return the terms of service + * @author Christian Grothoff + */ +#include "taler/platform.h" +#include <gnunet/gnunet_util_lib.h> +#include <gnunet/gnunet_json_lib.h> +#include <jansson.h> +#include <microhttpd.h> +#include "taler/taler_mhd_lib.h" +#include "donau-httpd_terms.h" +// #include "donau-httpd_responses.h" + +/** + * Our terms of service. + */ +static struct TALER_MHD_Legal *tos; + + +/** + * Our privacy policy. + */ +static struct TALER_MHD_Legal *pp; + + +MHD_RESULT +DH_handler_terms (struct DH_RequestContext *rc, + const char *const args[]) +{ + (void) args; + return TALER_MHD_reply_legal (rc->connection, + tos); +} + + +MHD_RESULT +DH_handler_privacy (struct DH_RequestContext *rc, + const char *const args[]) +{ + (void) args; + return TALER_MHD_reply_legal (rc->connection, + pp); +} + + +void +DH_load_terms (const struct GNUNET_CONFIGURATION_Handle *cfg) +{ + tos = TALER_MHD_legal_load (cfg, + "donau", + "TERMS_DIR", + "TERMS_ETAG"); + if (NULL == tos) + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Terms of service not configured\n"); + pp = TALER_MHD_legal_load (cfg, + "donau", + "PRIVACY_DIR", + "PRIVACY_ETAG"); + if (NULL == pp) + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Privacy policy not configured\n"); +} + + +/* end of donau-httpd_terms.c */ diff --git a/src/donau/donau-httpd_terms.h b/src/donau/donau-httpd_terms.h @@ -0,0 +1,66 @@ +/* + This file is part of TALER + Copyright (C) 2019, 2021 Taler Systems SA + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU Affero 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License along with + TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> +*/ +/** + * @file donau-httpd_terms.h + * @brief Handle /terms requests to return the terms of service + * @author Christian Grothoff + */ +#ifndef DONAU_HTTPD_TERMS_H +#define DONAU_HTTPD_TERMS_H +#include "taler/platform.h" +#include <gnunet/gnunet_util_lib.h> +#include <gnunet/gnunet_json_lib.h> +#include <jansson.h> +#include <microhttpd.h> +#include "taler/taler_mhd_lib.h" +#include "donau-httpd.h" +// #include "donau-httpd_responses.h" + + +/** + * Handle a "/terms" request. + * + * @param rc request context + * @param args array of additional options (must be empty for this function) + * @return MHD result code + */ +MHD_RESULT +DH_handler_terms (struct DH_RequestContext *rc, + const char *const args[]); + + +/** + * Handle a "/privacy" request. + * + * @param rc request context + * @param args array of additional options (must be empty for this function) + * @return MHD result code + */ +MHD_RESULT +DH_handler_privacy (struct DH_RequestContext *rc, + const char *const args[]); + + +/** + * Load our terms of service as per configuration. + * + * @param cfg configuration to process + */ +void +DH_load_terms (const struct GNUNET_CONFIGURATION_Handle *cfg); + + +#endif