sync

Backup service to store encrypted wallet databases (experimental)
Log | Files | Refs | Submodules | README | LICENSE

commit c96c9e1656e86c059ab5e8ce239783fc8cbebda7
parent 398692841c64a0c486af1bfbeb47df3bc0cc3534
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sun, 17 Nov 2019 21:01:42 +0100

adjust to spec

Diffstat:
Msrc/include/sync_service.h | 1+
Msrc/sync/sync-httpd.c | 33+++++++++++++++++++++++++--------
Msrc/sync/sync-httpd.h | 4++--
Msrc/sync/sync-httpd_backup_post.c | 2+-
Msrc/sync/sync-httpd_terms.c | 6++++--
Msrc/sync/sync.conf | 5++---
6 files changed, 35 insertions(+), 16 deletions(-)

diff --git a/src/include/sync_service.h b/src/include/sync_service.h @@ -22,6 +22,7 @@ #define SYNC_SERVICE_H #include <gnunet/gnunet_util_lib.h> +#include <taler/taler_error_codes.h> #include <gnunet/gnunet_curl_lib.h> #include <jansson.h> diff --git a/src/sync/sync-httpd.c b/src/sync/sync-httpd.c @@ -61,9 +61,9 @@ struct TALER_Amount SH_annual_fee; char *SH_backend_url; /** - * Our own base URL + * Our fulfillment URL. */ -char *SH_my_base_url; +char *SH_fulfillment_url; /** * Our context for making HTTP requests. @@ -187,6 +187,11 @@ url_handler (void *cls, &SH_handler_terms, MHD_HTTP_OK }, {NULL, NULL, NULL, NULL, 0, 0 } }; + static struct SH_RequestHandler h400 = { + "", NULL, "text/plain", + "Invalid account key", 0, + &SH_MHD_handler_static_response, MHD_HTTP_BAD_REQUEST + }; static struct SH_RequestHandler h404 = { "", NULL, "text/html", "<html><title>404: not found</title></html>", 0, @@ -235,11 +240,23 @@ url_handler (void *cls, method, url); - if (GNUNET_OK == - GNUNET_CRYPTO_eddsa_public_key_from_string (url, - strlen (url), - &account_pub.eddsa_pub)) + if (0 == strncmp (url, + "/backups/", + strlen ("/backups/"))) { + const char *ac = &url[strlen ("/backups/")]; + + if (GNUNET_OK != + GNUNET_CRYPTO_eddsa_public_key_from_string (ac, + strlen (ac), + &account_pub.eddsa_pub)) + { + return SH_MHD_handler_static_response (&h400, + connection, + con_cls, + upload_data, + upload_data_size); + } if (0 == strcasecmp (method, MHD_HTTP_METHOD_GET)) { @@ -537,8 +554,8 @@ run (void *cls, if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_string (config, "sync", - "BASE_URL", - &SH_my_base_url)) + "FULFILLMENT_URL", + &SH_fulfillment_url)) { GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, "sync", diff --git a/src/sync/sync-httpd.h b/src/sync/sync-httpd.h @@ -147,9 +147,9 @@ extern struct TALER_Amount SH_annual_fee; extern char *SH_backend_url; /** - * Our own base URL + * Our fulfillment URL */ -extern char *SH_my_base_url; +extern char *SH_fulfillment_url; /** * Our context for making HTTP requests. diff --git a/src/sync/sync-httpd_backup_post.c b/src/sync/sync-httpd_backup_post.c @@ -449,7 +449,7 @@ begin_payment (struct BackupContext *bc, order = json_pack ("{s:o, s:s, s:s}", "amount", TALER_JSON_from_amount (&SH_annual_fee), "summary", "annual fee for sync service", - "fulfillment_url", SH_my_base_url); + "fulfillment_url", SH_fulfillment_url); bc->po = TALER_MERCHANT_order_put (SH_ctx, SH_backend_url, order, diff --git a/src/sync/sync-httpd_terms.c b/src/sync/sync-httpd_terms.c @@ -43,9 +43,11 @@ SH_handler_terms (struct SH_RequestHandler *rh, { return SH_RESPONSE_reply_json_pack (connection, MHD_HTTP_OK, - "{s:I, s:o}", + "{s:I, s:o, s:s}", "storage_limit_in_megabytes", (json_int_t) SH_upload_limit_mb, "annual_fee", - TALER_JSON_from_amount (&SH_annual_fee)); + TALER_JSON_from_amount (&SH_annual_fee), + "version", + "0.0"); } diff --git a/src/sync/sync.conf b/src/sync/sync.conf @@ -31,9 +31,8 @@ ANNUAL_FEE = TESTKUDOS:0.1 # Upload limit per backup, in megabytes UPLOAD_LIMIT_MB = 16 -# Public base URL of the SYNC service itself. Used for the -# fulfillment URL. -BASE_URL = https://localhost:9967/ +# Fulfillment URL of the SYNC service itself. +FULFILLMENT_URL = taler://fulfillment-success # Base URL of our payment backend PAYMENT_BACKEND_URL = http://localhost:9966/