diff options
author | Cedric Zwahlen <cedric.zwahlen@students.bfh.ch> | 2024-04-18 23:42:21 +0200 |
---|---|---|
committer | Cedric Zwahlen <cedric.zwahlen@students.bfh.ch> | 2024-04-19 20:47:38 +0200 |
commit | 8d593e3bb3f60d5d5fd1ea4a47d7814fc008302b (patch) | |
tree | ff390c0191e4e210572f067c9cd9b32aab265fd6 | |
parent | c905aefd4117e90fb747d399e2f68682a457648e (diff) | |
download | exchange-8d593e3bb3f60d5d5fd1ea4a47d7814fc008302b.tar.gz exchange-8d593e3bb3f60d5d5fd1ea4a47d7814fc008302b.tar.bz2 exchange-8d593e3bb3f60d5d5fd1ea4a47d7814fc008302b.zip |
Add auth token
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") |