summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric Zwahlen <cedric.zwahlen@students.bfh.ch>2024-04-18 23:42:21 +0200
committerCedric Zwahlen <cedric.zwahlen@students.bfh.ch>2024-04-19 20:47:38 +0200
commit8d593e3bb3f60d5d5fd1ea4a47d7814fc008302b (patch)
treeff390c0191e4e210572f067c9cd9b32aab265fd6
parentc905aefd4117e90fb747d399e2f68682a457648e (diff)
downloadexchange-8d593e3bb3f60d5d5fd1ea4a47d7814fc008302b.tar.gz
exchange-8d593e3bb3f60d5d5fd1ea4a47d7814fc008302b.tar.bz2
exchange-8d593e3bb3f60d5d5fd1ea4a47d7814fc008302b.zip
Add auth token
-rw-r--r--src/auditor/generate-auditor-basedb.conf1
-rw-r--r--src/auditor/taler-auditor-httpd.c353
-rw-r--r--src/auditor/taler-auditor-httpd.h6
-rw-r--r--src/auditor/taler-auditor-httpd_denomination-key-validity-withdraw-inconsistency-get.c2
-rw-r--r--src/auditor/taler-auditor-httpd_denominations-without-sigs-get.c4
-rw-r--r--src/auditor/taler-auditor-httpd_emergency-by-count-get.c9
-rw-r--r--src/auditor/taler-auditor-httpd_emergency-get.c9
-rw-r--r--src/auditor/taler-auditor-httpd_historic-denomination-revenue-get.c38
-rw-r--r--src/auditor/taler-auditor-httpd_purse-not-closed-inconsistencies-get.c62
-rw-r--r--src/auditor/taler-auditor-httpd_reserve-not-closed-inconsistency-get.c2
-rw-r--r--src/include/taler_auditordb_plugin.h57
-rwxr-xr-xsrc/testing/taler-unified-setup.sh3
12 files changed, 335 insertions, 211 deletions
diff --git a/src/auditor/generate-auditor-basedb.conf b/src/auditor/generate-auditor-basedb.conf
index 8cf63fbba..9ecbf11c7 100644
--- a/src/auditor/generate-auditor-basedb.conf
+++ b/src/auditor/generate-auditor-basedb.conf
@@ -114,6 +114,7 @@ BASE_URL = http://localhost:8083/
TINY_AMOUNT = TESTKUDOS:0.01
PUBLIC_KEY = 0EHPW5WEKHXPPN4MPJNGA7Z6D29JP21GKVNV8ARFB1YW7WWJX20G
db = postgres
+TALER_AUDITOR_TOKEN = secret-token:abc
[auditordb-postgres]
CONFIG = postgres:///auditor-basedb
diff --git a/src/auditor/taler-auditor-httpd.c b/src/auditor/taler-auditor-httpd.c
index 3cec1a665..608059df0 100644
--- a/src/auditor/taler-auditor-httpd.c
+++ b/src/auditor/taler-auditor-httpd.c
@@ -336,6 +336,44 @@ handle_config (struct TAH_RequestHandler *rh,
}
+char *TMA_auth;
+
+#define RFC_8959_PREFIX "secret-token:"
+
+/**
+ * Extract the token from authorization header value @a auth.
+ *
+ * @param auth pointer to authorization header value,
+ * will be updated to point to the start of the token
+ * or set to NULL if header value is invalid
+ */
+static void
+extract_token (const char **auth)
+{
+ const char *bearer = "Bearer ";
+ const char *tok = *auth;
+
+ if (0 != strncmp (tok,
+ bearer,
+ strlen (bearer)))
+ {
+ *auth = NULL;
+ return;
+ }
+ tok += strlen (bearer);
+ while (' ' == *tok)
+ tok++;
+ if (0 != strncasecmp (tok,
+ RFC_8959_PREFIX,
+ strlen (RFC_8959_PREFIX)))
+ {
+ *auth = NULL;
+ return;
+ }
+ *auth = tok;
+}
+
+
/**
* Handle incoming HTTP request.
*
@@ -359,593 +397,594 @@ handle_mhd_request (void *cls,
size_t *upload_data_size,
void **con_cls)
{
+
static struct TAH_RequestHandler handlers[] = {
/* Our most popular handler (thus first!), used by merchants to
probabilistically report us their deposit confirmations. */
{ "/deposit-confirmation", MHD_HTTP_METHOD_PUT, "application/json",
NULL, 0,
- &TAH_DEPOSIT_CONFIRMATION_handler, MHD_HTTP_OK },
+ &TAH_DEPOSIT_CONFIRMATION_handler, MHD_HTTP_OK, false },
{ "/deposit-confirmation", MHD_HTTP_METHOD_GET, "application/json",
NULL, 0,
- &TAH_DEPOSIT_CONFIRMATION_handler_get, MHD_HTTP_OK },
+ &TAH_DEPOSIT_CONFIRMATION_handler_get, MHD_HTTP_OK, false },
{ "/deposit-confirmation", MHD_HTTP_METHOD_DELETE, "application/json",
NULL, 0,
- &TAH_DEPOSIT_CONFIRMATION_handler_delete, MHD_HTTP_OK },
+ &TAH_DEPOSIT_CONFIRMATION_handler_delete, MHD_HTTP_OK, false },
{ "/amount-arithmetic-inconsistency", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
- &TAH_AMOUNT_ARITHMETIC_INCONSISTENCY_handler_get, MHD_HTTP_OK },
+ &TAH_AMOUNT_ARITHMETIC_INCONSISTENCY_handler_get, MHD_HTTP_OK, false },
{ "/amount-arithmetic-inconsistency", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
- &TAH_AMOUNT_ARITHMETIC_INCONSISTENCY_PUT_handler, MHD_HTTP_OK },
+ &TAH_AMOUNT_ARITHMETIC_INCONSISTENCY_PUT_handler, MHD_HTTP_OK, false },
{ "/amount-arithmetic-inconsistency", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
- &TAH_AMOUNT_ARITHMETIC_INCONSISTENCY_handler_delete, MHD_HTTP_OK },
+ &TAH_AMOUNT_ARITHMETIC_INCONSISTENCY_handler_delete, MHD_HTTP_OK, false },
{ "/coin-inconsistency", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
- &TAH_COIN_INCONSISTENCY_handler_get, MHD_HTTP_OK },
+ &TAH_COIN_INCONSISTENCY_handler_get, MHD_HTTP_OK, false },
{ "/coin-inconsistency", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
- &TAH_COIN_INCONSISTENCY_PUT_handler, MHD_HTTP_OK },
+ &TAH_COIN_INCONSISTENCY_PUT_handler, MHD_HTTP_OK, false },
{ "/coin-inconsistency", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
- &TAH_COIN_INCONSISTENCY_handler_delete, MHD_HTTP_OK },
+ &TAH_COIN_INCONSISTENCY_handler_delete, MHD_HTTP_OK, false },
{ "/row-inconsistency", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
- &TAH_ROW_INCONSISTENCY_handler_get, MHD_HTTP_OK },
+ &TAH_ROW_INCONSISTENCY_handler_get, MHD_HTTP_OK, false },
{ "/row-inconsistency", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
- &TAH_ROW_INCONSISTENCY_PUT_handler, MHD_HTTP_OK },
+ &TAH_ROW_INCONSISTENCY_PUT_handler, MHD_HTTP_OK, false },
{ "/row-inconsistency", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
- &TAH_ROW_INCONSISTENCY_handler_delete, MHD_HTTP_OK },
+ &TAH_ROW_INCONSISTENCY_handler_delete, MHD_HTTP_OK, false },
{ "/reserve-balance-insufficient-inconsistency", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_RESERVE_BALANCE_INSUFFICIENT_INCONSISTENCY_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-balance-insufficient-inconsistency", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_RESERVE_BALANCE_INSUFFICIENT_INCONSISTENCY_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-balance-insufficient-inconsistency", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_RESERVE_BALANCE_INSUFFICIENT_INCONSISTENCY_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/bad-sig-losses", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_BAD_SIG_LOSSES_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/bad-sig-losses", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_BAD_SIG_LOSSES_PUT_handler,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/bad-sig-losses", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_BAD_SIG_LOSSES_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/bad-sig-losses", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_BAD_SIG_LOSSES_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/closure-lags", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_CLOSURE_LAGS_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/closure-lags", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_CLOSURE_LAGS_PUT_handler,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/closure-lags", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_CLOSURE_LAGS_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/closure-lags", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_CLOSURE_LAGS_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/emergency", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_EMERGENCY_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/emergency", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_EMERGENCY_PUT_handler,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/emergency", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_EMERGENCY_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/emergency", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_EMERGENCY_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/refreshes-hanging", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_REFRESHES_HANGING_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/refreshes-hanging", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_REFRESHES_HANGING_PUT_handler,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/refreshes-hanging", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_REFRESHES_HANGING_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/refreshes-hanging", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_REFRESHES_HANGING_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/denomination-key-validity-withdraw-inconsistency", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_DENOMINATION_KEY_VALIDITY_WITHDRAW_INCONSISTENCY_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/denomination-key-validity-withdraw-inconsistency", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_DENOMINATION_KEY_VALIDITY_WITHDRAW_INCONSISTENCY_PUT_handler,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/denomination-key-validity-withdraw-inconsistency",
MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_DENOMINATION_KEY_VALIDITY_WITHDRAW_INCONSISTENCY_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/denomination-key-validity-withdraw-inconsistency",
MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_DENOMINATION_KEY_VALIDITY_WITHDRAW_INCONSISTENCY_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/progress", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_PROGRESS_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/progress", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_PROGRESS_PUT_handler,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/progress", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_PROGRESS_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/progress", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_PROGRESS_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-balance-insufficient-inconsistency", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_RESERVE_BALANCE_INSUFFICIENT_INCONSISTENCY_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-balance-insufficient-inconsistency", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_RESERVE_BALANCE_INSUFFICIENT_INCONSISTENCY_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-balance-insufficient-inconsistency", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_RESERVE_BALANCE_INSUFFICIENT_INCONSISTENCY_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-balance-insufficient-inconsistency", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_RESERVE_BALANCE_INSUFFICIENT_INCONSISTENCY_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/purse-not-closed-inconsistencies", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_PURSE_NOT_CLOSED_INCONSISTENCIES_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/purse-not-closed-inconsistencies", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_PURSE_NOT_CLOSED_INCONSISTENCIES_PUT_handler,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/purse-not-closed-inconsistencies", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_PURSE_NOT_CLOSED_INCONSISTENCIES_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/purse-not-closed-inconsistencies", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_PURSE_NOT_CLOSED_INCONSISTENCIES_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/emergency-by-count", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_EMERGENCY_BY_COUNT_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/emergency-by-count", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_EMERGENCY_BY_COUNT_PUT_handler,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/emergency-by-count", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_EMERGENCY_BY_COUNT_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/emergency-by-count", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_EMERGENCY_BY_COUNT_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-in-inconsistency", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_RESERVE_IN_INCONSISTENCY_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-in-inconsistency", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_RESERVE_IN_INCONSISTENCY_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-in-inconsistency", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_RESERVE_IN_INCONSISTENCY_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-in-inconsistency", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_RESERVE_IN_INCONSISTENCY_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-not-closed-inconsistency", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_RESERVE_NOT_CLOSED_INCONSISTENCY_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-not-closed-inconsistency", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_RESERVE_NOT_CLOSED_INCONSISTENCY_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-not-closed-inconsistency", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_RESERVE_NOT_CLOSED_INCONSISTENCY_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-not-closed-inconsistency", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_RESERVE_NOT_CLOSED_INCONSISTENCY_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/denominations-without-sigs", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_DENOMINATIONS_WITHOUT_SIGS_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/denominations-without-sigs", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_DENOMINATIONS_WITHOUT_SIGS_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/denominations-without-sigs", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_DENOMINATIONS_WITHOUT_SIGS_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/denominations-without-sigs", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_DENOMINATIONS_WITHOUT_SIGS_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/misattribution-in-inconsistency", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_MISATTRIBUTION_IN_INCONSISTENCY_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/misattribution-in-inconsistency", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_MISATTRIBUTION_IN_INCONSISTENCY_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/misattribution-in-inconsistency", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_MISATTRIBUTION_IN_INCONSISTENCY_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/misattribution-in-inconsistency", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_MISATTRIBUTION_IN_INCONSISTENCY_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserves", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_RESERVES_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserves", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_RESERVES_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserves", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_RESERVES_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserves", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_RESERVES_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/purses", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_PURSES_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/purses", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_PURSES_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/purses", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_PURSES_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/purses", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_PURSES_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/historic-denomination-revenue", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_HISTORIC_DENOMINATION_REVENUE_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/historic-denomination-revenue", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_HISTORIC_DENOMINATION_REVENUE_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/historic-denomination-revenue", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_HISTORIC_DENOMINATION_REVENUE_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/historic-denomination-revenue", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_HISTORIC_DENOMINATION_REVENUE_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/denomination-pending", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_DENOMINATION_PENDING_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/denomination-pending", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_DENOMINATION_PENDING_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/denomination-pending", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_DENOMINATION_PENDING_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/denomination-pending", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_DENOMINATION_PENDING_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/historic-reserve-summary", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_HISTORIC_RESERVE_SUMMARY_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/historic-reserve-summary", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_HISTORIC_RESERVE_SUMMARY_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/historic-reserve-summary", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_HISTORIC_RESERVE_SUMMARY_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/historic-reserve-summary", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_HISTORIC_RESERVE_SUMMARY_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/exchange-signkeys", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_EXCHANGE_SIGNKEYS_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/exchange-signkeys", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_EXCHANGE_SIGNKEYS_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/exchange-signkeys", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_EXCHANGE_SIGNKEYS_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/exchange-signkeys", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_EXCHANGE_SIGNKEYS_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/wire-format-inconsistency", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_WIRE_FORMAT_INCONSISTENCY_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/wire-format-inconsistency", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_WIRE_FORMAT_INCONSISTENCY_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/wire-format-inconsistency", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_WIRE_FORMAT_INCONSISTENCY_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/wire-format-inconsistency", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_WIRE_FORMAT_INCONSISTENCY_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/wire-out-inconsistency", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_WIRE_OUT_INCONSISTENCY_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/wire-out-inconsistency", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_WIRE_OUT_INCONSISTENCY_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/wire-out-inconsistency", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_WIRE_OUT_INCONSISTENCY_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/wire-out-inconsistency", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_WIRE_OUT_INCONSISTENCY_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-balance-summary-wrong-inconsistency", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_RESERVE_BALANCE_SUMMARY_WRONG_INCONSISTENCY_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-balance-summary-wrong-inconsistency", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_RESERVE_BALANCE_SUMMARY_WRONG_INCONSISTENCY_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-balance-summary-wrong-inconsistency", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_RESERVE_BALANCE_SUMMARY_WRONG_INCONSISTENCY_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/reserve-balance-summary-wrong-inconsistency", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_RESERVE_BALANCE_SUMMARY_WRONG_INCONSISTENCY_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/row-minor-inconsistencies", MHD_HTTP_METHOD_GET,
"application/json",
NULL, 0,
&TAH_ROW_MINOR_INCONSISTENCIES_handler_get,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/row-minor-inconsistencies", MHD_HTTP_METHOD_PUT,
"application/json",
NULL, 0,
&TAH_ROW_MINOR_INCONSISTENCIES_handler_put,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/row-minor-inconsistencies", MHD_HTTP_METHOD_DELETE,
"application/json",
NULL, 0,
&TAH_ROW_MINOR_INCONSISTENCIES_handler_delete,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/row-minor-inconsistencies", MHD_HTTP_METHOD_PATCH,
"application/json",
NULL, 0,
&TAH_ROW_MINOR_INCONSISTENCIES_handler_update,
- MHD_HTTP_OK },
+ MHD_HTTP_OK, false },
{ "/config", MHD_HTTP_METHOD_GET, "application/json",
NULL, 0,
- &handle_config, MHD_HTTP_OK },
+ &handle_config, MHD_HTTP_OK, true },
/* Landing page, for now tells humans to go away
* (NOTE: ideally, the reverse proxy will respond with a nicer page) */
{ "/", MHD_HTTP_METHOD_GET, "text/plain",
"Hello, I'm the Taler auditor. This HTTP server is not for humans.\n", 0,
- &TAH_MHD_handler_static_response, MHD_HTTP_OK },
+ &TAH_MHD_handler_static_response, MHD_HTTP_OK, true },
/* /robots.txt: disallow everything */
{ "/robots.txt", MHD_HTTP_METHOD_GET, "text/plain",
"User-agent: *\nDisallow: /\n", 0,
- &TAH_MHD_handler_static_response, MHD_HTTP_OK },
+ &TAH_MHD_handler_static_response, MHD_HTTP_OK, true },
/* AGPL licensing page, redirect to source. As per the AGPL-license,
every deployment is required to offer the user a download of the
source. We make this easy by including a redirect t the source
here. */
{ "/agpl", MHD_HTTP_METHOD_GET, "text/plain",
NULL, 0,
- &TAH_MHD_handler_agpl_redirect, MHD_HTTP_FOUND },
- { NULL, NULL, NULL, NULL, 0, NULL, 0 }
+ &TAH_MHD_handler_agpl_redirect, MHD_HTTP_FOUND, true },
+ { NULL, NULL, NULL, NULL, 0, NULL, 0, false }
};
(void) cls;
@@ -996,12 +1035,76 @@ handle_mhd_request (void *cls,
( (NULL == rh->method) ||
(0 == strcasecmp (method,
rh->method)) ) )
+ {
+
+ if (! rh->no_auth_required)
+ {
+
+ const char *auth;
+
+ /* PATCHing an instance can alternatively be checked against
+ the default instance */
+ auth = MHD_lookup_connection_value (connection,
+ MHD_HEADER_KIND,
+ MHD_HTTP_HEADER_AUTHORIZATION);
+
+// let some requests as through, even if they don't have an auth token
+ if (NULL != auth)
+ {
+ /* We _only_ complain about malformed auth headers if
+ authorization was truly required (#6737). This helps
+ in case authorization was disabled in the backend
+ because some reverse proxy is already doing it, and
+ then that reverse proxy may forward malformed auth
+ headers to the backend. */
+ extract_token (&auth);
+ if (NULL == auth)
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_UNAUTHORIZED,
+ TALER_EC_GENERIC_PARAMETER_MALFORMED,
+ "'" RFC_8959_PREFIX
+ "' prefix or 'Bearer' missing in 'Authorization' header");
+
+ if (strcmp (auth,TMA_auth) == 0)
+ {
+
+ printf ("AUTH SUCCESS \n");
+
+ }
+ else
+ {
+
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_UNAUTHORIZED,
+ TALER_EC_MERCHANT_GENERIC_UNAUTHORIZED,
+ "Check 'Authorization' header");
+
+
+ }
+
+
+ }
+ else
+ {
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_UNAUTHORIZED,
+ TALER_EC_MERCHANT_GENERIC_UNAUTHORIZED,
+ "Check 'Authorization' header");
+ }
+
+
+ }
+
return rh->handler (rh,
connection,
con_cls,
upload_data,
upload_data_size,
args);
+
+ }
+
+
}
#define NOT_FOUND "<html><title>404: not found</title></html>"
return TALER_MHD_reply_static (connection,
@@ -1195,6 +1298,32 @@ run (void *cls,
enum TALER_MHD_GlobalOptions go;
int fh;
+ {
+ const char *tok;
+
+ tok = getenv ("TALER_AUDITOR_TOKEN");
+
+ printf ("token: %s\n", tok);
+
+ if ( (NULL != tok) &&
+ (NULL == TMA_auth) )
+ TMA_auth = GNUNET_strdup (tok);
+ if ( (NULL != TMA_auth) &&
+ (0 != strncmp (TMA_auth,
+ RFC_8959_PREFIX,
+ strlen (RFC_8959_PREFIX))) )
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Authentication token does not start with `%s' prefix\n",
+ RFC_8959_PREFIX);
+ global_ret = EXIT_NOTCONFIGURED;
+ GNUNET_SCHEDULER_shutdown ();
+ return;
+ }
+
+
+ }
+
(void) cls;
(void) args;
(void) cfgfile;
diff --git a/src/auditor/taler-auditor-httpd.h b/src/auditor/taler-auditor-httpd.h
index 5952c6934..a1b6f4710 100644
--- a/src/auditor/taler-auditor-httpd.h
+++ b/src/auditor/taler-auditor-httpd.h
@@ -102,6 +102,12 @@ struct TAH_RequestHandler
* Default response code.
*/
unsigned int response_code;
+
+ /**
+ * No authorization token required
+ */
+
+ bool no_auth_required;
};
diff --git a/src/auditor/taler-auditor-httpd_denomination-key-validity-withdraw-inconsistency-get.c b/src/auditor/taler-auditor-httpd_denomination-key-validity-withdraw-inconsistency-get.c
index 6b7ab2a2f..5a4a6d7df 100644
--- a/src/auditor/taler-auditor-httpd_denomination-key-validity-withdraw-inconsistency-get.c
+++ b/src/auditor/taler-auditor-httpd_denomination-key-validity-withdraw-inconsistency-get.c
@@ -49,7 +49,7 @@ process_denomination_key_validity_withdraw_inconsistency (void *cls,
// TODO: fill in
- GNUNET_JSON_pack_int64 ("execution_date", dc->execution_date),
+ GNUNET_JSON_pack_int64 ("execution_date", &dc->execution_date),
GNUNET_JSON_pack_data_auto ("reserve_pub", &dc->reserve_pub),
GNUNET_JSON_pack_data_auto ("execution_date", &dc->denompub_h)
diff --git a/src/auditor/taler-auditor-httpd_denominations-without-sigs-get.c b/src/auditor/taler-auditor-httpd_denominations-without-sigs-get.c
index 40b758376..c41001ddf 100644
--- a/src/auditor/taler-auditor-httpd_denominations-without-sigs-get.c
+++ b/src/auditor/taler-auditor-httpd_denominations-without-sigs-get.c
@@ -49,8 +49,8 @@ process_denominations_without_sigs (void *cls,
GNUNET_JSON_pack_int64 ("row_id", serial_id),
GNUNET_JSON_pack_data_auto ("denompub_h", &dc->denompub_h),
TALER_JSON_pack_amount ("value", &dc->value),
- GNUNET_JSON_pack_int64 ("start_time", dc->start_time),
- GNUNET_JSON_pack_int64 ("end_time", dc->end_time),
+ GNUNET_JSON_pack_int64 ("start_time", &dc->start_time),
+ GNUNET_JSON_pack_int64 ("end_time", &dc->end_time),
GNUNET_JSON_pack_bool ("suppressed", dc->suppressed)
diff --git a/src/auditor/taler-auditor-httpd_emergency-by-count-get.c b/src/auditor/taler-auditor-httpd_emergency-by-count-get.c
index ddf830426..738e8a879 100644
--- a/src/auditor/taler-auditor-httpd_emergency-by-count-get.c
+++ b/src/auditor/taler-auditor-httpd_emergency-by-count-get.c
@@ -46,18 +46,13 @@ process_emergency_by_count (void *cls,
obj = GNUNET_JSON_PACK (
- // TODO: fill in
-
- // GNUNET_JSON_pack_... ("", &dc->),
- // TALER_JSON_pack_... ("", &dc->),
-
GNUNET_JSON_pack_data_auto ("denompub_h", &dc->denompub_h),
GNUNET_JSON_pack_int64 ("num_issued", dc->num_issued),
GNUNET_JSON_pack_int64 ("num_known", dc->num_known),
TALER_JSON_pack_amount ("risk", &dc->risk),
- GNUNET_JSON_pack_int64 ("start", dc->start),
- GNUNET_JSON_pack_int64 ("deposit_end",dc->deposit_end),
+ GNUNET_JSON_pack_int64 ("start", &dc->start),
+ GNUNET_JSON_pack_int64 ("deposit_end",&dc->deposit_end),
TALER_JSON_pack_amount ("value", &dc->value)
);
diff --git a/src/auditor/taler-auditor-httpd_emergency-get.c b/src/auditor/taler-auditor-httpd_emergency-get.c
index 3afb4f639..d45838b7e 100644
--- a/src/auditor/taler-auditor-httpd_emergency-get.c
+++ b/src/auditor/taler-auditor-httpd_emergency-get.c
@@ -46,18 +46,13 @@ process_emergency (void *cls,
obj = GNUNET_JSON_PACK (
- // TODO: fill in
-
- // GNUNET_JSON_pack_... ("", &dc->),
- // TALER_JSON_pack_... ("", &dc->),
-
GNUNET_JSON_pack_data_auto ("denompub_h", &dc->denompub_h),
TALER_JSON_pack_amount ("denom_risk", &dc->denom_risk),
TALER_JSON_pack_amount ("denom_loss", &dc->denom_loss),
- GNUNET_JSON_pack_int64 ("deposit_start", dc->deposit_start),
- GNUNET_JSON_pack_int64 ("deposit_end", dc->deposit_end),
+ GNUNET_JSON_pack_int64 ("deposit_start", &dc->deposit_start),
+ GNUNET_JSON_pack_int64 ("deposit_end", &dc->deposit_end),
TALER_JSON_pack_amount ("value", &dc->value)
);
diff --git a/src/auditor/taler-auditor-httpd_historic-denomination-revenue-get.c b/src/auditor/taler-auditor-httpd_historic-denomination-revenue-get.c
index acb9535d4..ff9f7b71e 100644
--- a/src/auditor/taler-auditor-httpd_historic-denomination-revenue-get.c
+++ b/src/auditor/taler-auditor-httpd_historic-denomination-revenue-get.c
@@ -117,12 +117,40 @@ TAH_HISTORIC_DENOMINATION_REVENUE_handler_get (struct TAH_RequestHandler *rh,
&offset);
bool return_suppressed = false;
- const char *ret_s = MHD_lookup_connection_value (connection,
- MHD_GET_ARGUMENT_KIND,
- "return_suppressed");
- if (ret_s != NULL && strcmp (ret_s, "true") == 0)
+
+ struct GNUNET_JSON_Specification spec[] = {
+ GNUNET_JSON_spec_bool ("return_suppressed", &return_suppressed),
+ GNUNET_JSON_spec_end ()
+ };
+
+ // read the input json
+ json_t *json_in;
{
- return_suppressed = true;
+ enum GNUNET_GenericReturnValue res;
+
+ res = TALER_MHD_parse_post_json (connection,
+ connection_cls,
+ upload_data,
+ upload_data_size,
+ &json_in);
+ if (GNUNET_SYSERR == res)
+ return MHD_NO;
+ if ((GNUNET_NO == res) ||
+ (NULL == json_in))
+ return MHD_YES;
+ res = TALER_MHD_parse_json_data (connection,
+ json_in,
+ spec);
+ if (GNUNET_SYSERR == res)
+ {
+ json_decref (json_in);
+ return MHD_NO; /* hard failure */
+ }
+ if (GNUNET_NO == res)
+ {
+ json_decref (json_in);
+ return MHD_YES; /* failure */
+ }
}
qs = TAH_plugin->get_historic_denomination_revenue (
diff --git a/src/auditor/taler-auditor-httpd_purse-not-closed-inconsistencies-get.c b/src/auditor/taler-auditor-httpd_purse-not-closed-inconsistencies-get.c
index ef60854a4..8e5f8b0b9 100644
--- a/src/auditor/taler-auditor-httpd_purse-not-closed-inconsistencies-get.c
+++ b/src/auditor/taler-auditor-httpd_purse-not-closed-inconsistencies-get.c
@@ -53,7 +53,7 @@ process_purse_not_closed_inconsistencies (void *cls,
GNUNET_JSON_pack_data_auto ("purse_pub", &dc->purse_pub),
TALER_JSON_pack_amount ("amount", &dc->amount),
- GNUNET_JSON_pack_int64 ("expiration_date", dc->expiration_date)
+ GNUNET_JSON_pack_int64 ("expiration_date", &dc->expiration_date)
);
@@ -103,58 +103,24 @@ TAH_PURSE_NOT_CLOSED_INCONSISTENCIES_handler_get (struct TAH_RequestHandler *rh,
ja = json_array ();
GNUNET_break (NULL != ja);
- int64_t limit = -20;
- uint64_t offset;
+ int64_t limit = -20;
+ uint64_t offset;
- TALER_MHD_parse_request_snumber (connection,
- "limit",
- &limit);
+ TALER_MHD_parse_request_snumber (connection,
+ "limit",
+ &limit);
- if (limit < 0)
- offset = INT64_MAX;
- else
- offset = 0;
+ if (limit < 0)
+ offset = INT64_MAX;
+ else
+ offset = 0;
- TALER_MHD_parse_request_number (connection,
- "offset",
- &offset);
+ TALER_MHD_parse_request_number (connection,
+ "offset",
+ &offset);
- bool return_suppressed = false;
+ bool return_suppressed = false;
- struct GNUNET_JSON_Specification spec[] = {
- GNUNET_JSON_spec_bool ("return_suppressed", &return_suppressed),
- GNUNET_JSON_spec_end ()
- };
-
- // read the input json
- json_t *json_in;
- {
- enum GNUNET_GenericReturnValue res;
-
- res = TALER_MHD_parse_post_json (connection,
- connection_cls,
- upload_data,
- upload_data_size,
- &json_in);
- if (GNUNET_SYSERR == res)
- return MHD_NO;
- if ((GNUNET_NO == res) ||
- (NULL == json_in))
- return MHD_YES;
- res = TALER_MHD_parse_json_data (connection,
- json_in,
- spec);
- if (GNUNET_SYSERR == res)
- {
- json_decref (json_in);
- return MHD_NO; /* hard failure */
- }
- if (GNUNET_NO == res)
- {
- json_decref (json_in);
- return MHD_YES; /* failure */
- }
- }
qs = TAH_plugin->get_purse_not_closed_inconsistencies (
TAH_plugin->cls,
diff --git a/src/auditor/taler-auditor-httpd_reserve-not-closed-inconsistency-get.c b/src/auditor/taler-auditor-httpd_reserve-not-closed-inconsistency-get.c
index 693f1323f..3a323b542 100644
--- a/src/auditor/taler-auditor-httpd_reserve-not-closed-inconsistency-get.c
+++ b/src/auditor/taler-auditor-httpd_reserve-not-closed-inconsistency-get.c
@@ -49,7 +49,7 @@ process_reserve_not_closed_inconsistency (void *cls,
GNUNET_JSON_pack_int64 ("row_id", serial_id),
GNUNET_JSON_pack_data_auto ("reserve_pub", &dc->reserve_pub),
TALER_JSON_pack_amount ("balance", &dc->balance),
- GNUNET_JSON_pack_int64 ("expiration_time", dc->expiration_time),
+ GNUNET_JSON_pack_int64 ("expiration_time", &dc->expiration_time),
GNUNET_JSON_pack_data_auto ("diagnostic", &dc->diagnostic),
GNUNET_JSON_pack_bool ("suppressed", dc->suppressed)
diff --git a/src/include/taler_auditordb_plugin.h b/src/include/taler_auditordb_plugin.h
index 31923db6b..9fd1da42d 100644
--- a/src/include/taler_auditordb_plugin.h
+++ b/src/include/taler_auditordb_plugin.h
@@ -213,7 +213,7 @@ struct TALER_AUDITORDB_Generic_Update
struct TALER_AUDITORDB_AmountArithmeticInconsistency
{
unsigned int row_id;
- char*operation;
+ char *operation;
struct TALER_Amount exchange_amount;
struct TALER_Amount auditor_amount;
bool profitable;
@@ -225,10 +225,10 @@ struct TALER_AUDITORDB_AmountArithmeticInconsistency
struct TALER_AUDITORDB_CoinInconsistency
{
unsigned int row_id;
- char*operation; // TODO: change to string
+ char *operation; // TODO: change to string
struct TALER_Amount exchange_amount;
struct TALER_Amount auditor_amount;
- struct TALER_CoinSpendPublicKeyP coin_pub;
+ struct GNUNET_CRYPTO_EddsaPublicKey coin_pub;
bool profitable;
};
@@ -250,7 +250,7 @@ struct TALER_AUDITORDB_BadSigLosses
unsigned int row_id;
char *operation;
struct TALER_Amount loss;
- struct TALER_CoinSpendPublicKeyP operation_specific_pub;
+ struct GNUNET_CRYPTO_EddsaPublicKey operation_specific_pub;
};
/**
@@ -275,8 +275,8 @@ struct TALER_AUDITORDB_Emergency
struct TALER_DenominationHashP denompub_h;
struct TALER_Amount denom_risk;
struct TALER_Amount denom_loss;
- int64_t deposit_start;
- int64_t deposit_end;
+ struct GNUNET_TIME_Absolute deposit_start;
+ struct GNUNET_TIME_Absolute deposit_end;
struct TALER_Amount value;
};
@@ -290,8 +290,8 @@ struct TALER_AUDITORDB_EmergenciesByCount
int64_t num_issued;
int64_t num_known;
struct TALER_Amount risk;
- int64_t start;
- int64_t deposit_end;
+ struct GNUNET_TIME_Absolute start;
+ struct GNUNET_TIME_Absolute deposit_end;
struct TALER_Amount value;
};
@@ -312,7 +312,7 @@ struct TALER_AUDITORDB_RefreshesHanging
{
unsigned int row_id;
struct TALER_Amount amount;
- struct TALER_CoinSpendPublicKeyP coin_pub;
+ struct GNUNET_CRYPTO_EddsaPublicKey coin_pub;
};
/**
@@ -322,7 +322,7 @@ struct TALER_AUDITORDB_FeeTimeInconsistency
{
unsigned int row_id;
char *type;
- int64_t time;
+ struct GNUNET_TIME_Absolute time;
char *diagnostic;
};
@@ -332,7 +332,7 @@ struct TALER_AUDITORDB_FeeTimeInconsistency
struct TALER_AUDITORDB_DenominationKeyValidityWithdrawInconsistency
{
unsigned int row_id;
- int64_t execution_date;
+ struct GNUNET_TIME_Absolute execution_date;
struct TALER_ReservePublicKeyP reserve_pub;
struct TALER_DenominationHashP denompub_h;
};
@@ -343,9 +343,9 @@ struct TALER_AUDITORDB_DenominationKeyValidityWithdrawInconsistency
struct TALER_AUDITORDB_PurseNotClosedInconsistencies
{
unsigned int row_id;
- struct TALER_PurseContractPublicKeyP purse_pub;
+ struct GNUNET_CRYPTO_EddsaPublicKey purse_pub;
struct TALER_Amount amount;
- int64_t expiration_date;
+ struct GNUNET_TIME_Absolute expiration_date;
};
/**
@@ -354,7 +354,7 @@ struct TALER_AUDITORDB_PurseNotClosedInconsistencies
struct TALER_AUDITORDB_ReserveBalanceInsufficientInconsistency
{
unsigned int row_id;
- struct TALER_ReservePublicKeyP reserve_pub;
+ struct GNUNET_CRYPTO_EddsaPublicKey reserve_pub;
bool inconsistency_gain;
struct TALER_Amount inconsistency_amount;
};
@@ -651,8 +651,8 @@ struct TALER_AUDITORDB_DenominationsWithoutSigs
unsigned int row_id;
struct TALER_DenominationHashP denompub_h;
struct TALER_Amount value;
- int64_t start_time;
- int64_t end_time;
+ struct GNUNET_TIME_Absolute start_time;
+ struct GNUNET_TIME_Absolute end_time;
bool suppressed;
};
@@ -727,6 +727,7 @@ struct TALER_AUDITORDB_HistoricReserveSummary
int64_t start_date;
int64_t end_date;
struct TALER_Amount reserve_profits;
+ bool suppressed;
};
@@ -786,7 +787,7 @@ struct TALER_AUDITORDB_ReserveNotClosedInconsistency
unsigned int row_id;
struct TALER_ReservePublicKeyP reserve_pub;
struct TALER_Amount balance;
- int64_t expiration_time;
+ struct GNUNET_TIME_Absolute expiration_time;
char *diagnostic;
bool suppressed;
@@ -819,7 +820,7 @@ typedef enum GNUNET_GenericReturnValue
* @param deadline what was the earliest requested wire transfer deadline
*/
typedef void
-(*TALER_AUDITORDB_WireMissingCallback)(
+(*TALER_AUDITORDB_WireMissingCallback) (
void *cls,
uint64_t batch_deposit_serial_id,
const struct TALER_Amount *total_amount,
@@ -976,11 +977,11 @@ struct TALER_AUDITORDB_Plugin
* @return handle useful to cancel the listener
*/
struct GNUNET_DB_EventHandler *
- (*event_listen)(void *cls,
- const struct GNUNET_DB_EventHeaderP *es,
- struct GNUNET_TIME_Relative timeout,
- GNUNET_DB_EventCallback cb,
- void *cb_cls);
+ (*event_listen) (void *cls,
+ const struct GNUNET_DB_EventHeaderP *es,
+ struct GNUNET_TIME_Relative timeout,
+ GNUNET_DB_EventCallback cb,
+ void *cb_cls);
/**
* Stop notifications.
@@ -988,7 +989,7 @@ struct TALER_AUDITORDB_Plugin
* @param eh handle to unregister.
*/
void
- (*event_listen_cancel)(struct GNUNET_DB_EventHandler *eh);
+ (*event_listen_cancel) (struct GNUNET_DB_EventHandler *eh);
/**
@@ -1000,10 +1001,10 @@ struct TALER_AUDITORDB_Plugin
* @param extra_size number of bytes in @a extra
*/
void
- (*event_notify)(void *cls,
- const struct GNUNET_DB_EventHeaderP *es,
- const void *extra,
- size_t extra_size);
+ (*event_notify) (void *cls,
+ const struct GNUNET_DB_EventHeaderP *es,
+ const void *extra,
+ size_t extra_size);
/**
diff --git a/src/testing/taler-unified-setup.sh b/src/testing/taler-unified-setup.sh
index d933cc819..a2fcc351e 100755
--- a/src/testing/taler-unified-setup.sh
+++ b/src/testing/taler-unified-setup.sh
@@ -715,6 +715,9 @@ STAGE="auditor"
if [ "1" = "$START_AUDITOR" ]
then
echo -n "Starting auditor ..."
+
+ export TALER_AUDITOR_TOKEN=$(taler-config -c "$CONF" -s AUDITOR -o TALER_AUDITOR_TOKEN)
+
AUDITOR_URL=$(taler-config -c "$CONF" -s AUDITOR -o BASE_URL)
AUDITOR_PRIV_FILE=$(taler-config -f -c "$CONF" -s AUDITOR -o AUDITOR_PRIV_FILE)
AUDITOR_PRIV_DIR=$(dirname "$AUDITOR_PRIV_FILE")