gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-challenger] branch master updated: return HTML errors in human-fa


From: gnunet
Subject: [taler-challenger] branch master updated: return HTML errors in human-facing endpoints
Date: Sat, 06 May 2023 21:20:04 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository challenger.

The following commit(s) were added to refs/heads/master by this push:
     new fd16b09  return HTML errors in human-facing endpoints
fd16b09 is described below

commit fd16b09121eada689a3e78639a505d5367e89561
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sat May 6 21:20:01 2023 +0200

    return HTML errors in human-facing endpoints
---
 src/challenger/challenger-httpd_challenge.c | 130 ++++++++---------------
 src/challenger/challenger-httpd_login.c     |  54 +++-------
 src/challenger/challenger-httpd_solve.c     | 158 +++++++---------------------
 3 files changed, 93 insertions(+), 249 deletions(-)

diff --git a/src/challenger/challenger-httpd_challenge.c 
b/src/challenger/challenger-httpd_challenge.c
index 9f8e680..451b03a 100644
--- a/src/challenger/challenger-httpd_challenge.c
+++ b/src/challenger/challenger-httpd_challenge.c
@@ -234,11 +234,12 @@ send_tan (struct ChallengeContext *bc)
   {
     MHD_RESULT mres;
 
-    // FIXME: generate HTML error instead...
-    mres = TALER_MHD_reply_with_error (bc->hc->connection,
-                                       MHD_HTTP_INTERNAL_SERVER_ERROR,
-                                       TALER_EC_CHALLENGER_HELPER_EXEC_FAILED,
-                                       "pipe");
+    GNUNET_break (0);
+    mres = TALER_TEMPLATING_reply_error (bc->hc->connection,
+                                         "internal-error",
+                                         MHD_HTTP_NOT_FOUND,
+                                         
TALER_EC_CHALLENGER_HELPER_EXEC_FAILED,
+                                         "pipe");
     bc->status = (MHD_YES == mres)
       ? GNUNET_NO
       : GNUNET_SYSERR;
@@ -256,12 +257,13 @@ send_tan (struct ChallengeContext *bc)
   {
     MHD_RESULT mres;
 
+    GNUNET_break (0);
     GNUNET_DISK_pipe_close (p);
-    // FIXME: generate HTML error instead...
-    mres = TALER_MHD_reply_with_error (bc->hc->connection,
-                                       MHD_HTTP_INTERNAL_SERVER_ERROR,
-                                       TALER_EC_CHALLENGER_HELPER_EXEC_FAILED,
-                                       "exec");
+    mres = TALER_TEMPLATING_reply_error (bc->hc->connection,
+                                         "internal-error",
+                                         MHD_HTTP_NOT_FOUND,
+                                         
TALER_EC_CHALLENGER_HELPER_EXEC_FAILED,
+                                         "exec");
     bc->status = (MHD_YES == mres)
       ? GNUNET_NO
       : GNUNET_SYSERR;
@@ -292,11 +294,12 @@ send_tan (struct ChallengeContext *bc)
       {
         MHD_RESULT mres;
 
-        // FIXME: generate HTML error instead...
-        mres = TALER_MHD_reply_with_error (bc->hc->connection,
-                                           MHD_HTTP_INTERNAL_SERVER_ERROR,
-                                           
TALER_EC_CHALLENGER_HELPER_EXEC_FAILED,
-                                           "write");
+        GNUNET_break (0);
+        mres = TALER_TEMPLATING_reply_error (bc->hc->connection,
+                                             "internal-error",
+                                             MHD_HTTP_NOT_FOUND,
+                                             
TALER_EC_CHALLENGER_HELPER_EXEC_FAILED,
+                                             "write");
         bc->status = (MHD_YES == mres)
           ? GNUNET_NO
           : GNUNET_SYSERR;
@@ -398,11 +401,11 @@ CH_handler_challenge (struct CH_HandlerContext *hc,
                                        sizeof (bc->nonce)))
     {
       GNUNET_break_op (0);
-      // FIXME: generate HTML error instead...
-      return TALER_MHD_reply_with_error (hc->connection,
-                                         MHD_HTTP_NOT_FOUND,
-                                         TALER_EC_GENERIC_PARAMETER_MISSING,
-                                         hc->path);
+      return TALER_TEMPLATING_reply_error (hc->connection,
+                                           "invalid-request",
+                                           MHD_HTTP_NOT_FOUND,
+                                           TALER_EC_GENERIC_PARAMETER_MISSING,
+                                           hc->path);
     }
     TALER_MHD_check_content_length (hc->connection,
                                     1024);
@@ -423,11 +426,11 @@ CH_handler_challenge (struct CH_HandlerContext *hc,
                      "%u/%d",
                      (unsigned int) bc->exit_code,
                      bc->pst);
-    // FIXME: generate HTML error instead...
-    return TALER_MHD_reply_with_error (hc->connection,
-                                       MHD_HTTP_INTERNAL_SERVER_ERROR,
-                                       TALER_EC_CHALLENGER_HELPER_EXEC_FAILED,
-                                       es);
+    return TALER_TEMPLATING_reply_error (hc->connection,
+                                         "internal-error",
+                                         MHD_HTTP_NOT_FOUND,
+                                         
TALER_EC_CHALLENGER_HELPER_EXEC_FAILED,
+                                         es);
   }
   /* handle upload */
   if (0 != *upload_data_size)
@@ -460,75 +463,32 @@ CH_handler_challenge (struct CH_HandlerContext *hc,
     switch (qs)
     {
     case GNUNET_DB_STATUS_HARD_ERROR:
-      {
-        enum GNUNET_GenericReturnValue ret;
-        json_t *root = json_object ();
-
-        GNUNET_assert (NULL != root);
-        GNUNET_break (0);
-        ret = TALER_TEMPLATING_reply (hc->connection,
-                                      MHD_HTTP_INTERNAL_SERVER_ERROR,
-                                      "internal-server-error.must",
-                                      NULL,
-                                      NULL,
-                                      root);
-        json_decref (root);
-        if (GNUNET_SYSERR == ret)
-        {
-          GNUNET_break (0);
-          return MHD_NO;
-        }
-        GNUNET_break (GNUNET_OK == ret);
-        return MHD_YES;
-      }
+      GNUNET_break (0);
+      return TALER_TEMPLATING_reply_error (hc->connection,
+                                           "internal-error",
+                                           MHD_HTTP_NOT_FOUND,
+                                           TALER_EC_GENERIC_DB_STORE_FAILED,
+                                           "set-address-and-pin");
     case GNUNET_DB_STATUS_SOFT_ERROR:
       GNUNET_break (0);
       return GNUNET_NO;
     case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
-      {
-        enum GNUNET_GenericReturnValue ret;
-        json_t *root = json_object ();
-
-        GNUNET_assert (NULL != root);
-        ret = TALER_TEMPLATING_reply (hc->connection,
-                                      MHD_HTTP_NOT_FOUND,
-                                      "validation-unknown.must",
-                                      NULL,
-                                      NULL,
-                                      root);
-        json_decref (root);
-        if (GNUNET_SYSERR == ret)
-        {
-          GNUNET_break (0);
-          return MHD_NO;
-        }
-        GNUNET_break (GNUNET_OK == ret);
-        return MHD_YES;
-      }
+      return TALER_TEMPLATING_reply_error (hc->connection,
+                                           "validation-unknown",
+                                           MHD_HTTP_NOT_FOUND,
+                                           
TALER_EC_CHALLENGER_GENERIC_VALIDATION_UNKNOWN,
+                                           NULL);
     case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
       break;
     }
     bc->db_finished = true;
     if (0 == bc->pin_attempts_left)
     {
-      enum GNUNET_GenericReturnValue ret;
-      json_t *root = json_object ();
-
-      GNUNET_assert (NULL != root);
-      ret = TALER_TEMPLATING_reply (hc->connection,
-                                    MHD_HTTP_TOO_MANY_REQUESTS,
-                                    "attempts-exhausted.must",
-                                    NULL,
-                                    NULL,
-                                    root);
-      json_decref (root);
-      if (GNUNET_SYSERR == ret)
-      {
-        GNUNET_break (0);
-        return MHD_NO;
-      }
-      GNUNET_break (GNUNET_OK == ret);
-      return MHD_YES;
+      return TALER_TEMPLATING_reply_error (hc->connection,
+                                           "attempts-exhausted",
+                                           MHD_HTTP_TOO_MANY_REQUESTS,
+                                           
TALER_EC_CHALLENGER_TOO_MANY_ATTEMPTS,
+                                           NULL);
     }
 
     if (bc->retransmit)
@@ -566,7 +526,7 @@ CH_handler_challenge (struct CH_HandlerContext *hc,
       );
     ret = TALER_TEMPLATING_reply (hc->connection,
                                   MHD_HTTP_OK,
-                                  "enter-tan-form.must",
+                                  "enter-tan-form",
                                   NULL,
                                   NULL,
                                   args);
diff --git a/src/challenger/challenger-httpd_login.c 
b/src/challenger/challenger-httpd_login.c
index d76f3e0..c2c3433 100644
--- a/src/challenger/challenger-httpd_login.c
+++ b/src/challenger/challenger-httpd_login.c
@@ -143,51 +143,21 @@ CH_handler_login (struct CH_HandlerContext *hc,
     switch (qs)
     {
     case GNUNET_DB_STATUS_HARD_ERROR:
-      {
-        enum GNUNET_GenericReturnValue ret;
-        json_t *root = json_object ();
-
-        GNUNET_assert (NULL != root);
-        GNUNET_break (0);
-        ret = TALER_TEMPLATING_reply (hc->connection,
-                                      MHD_HTTP_INTERNAL_SERVER_ERROR,
-                                      "internal-server-error.must",
-                                      NULL,
-                                      NULL,
-                                      root);
-        json_decref (root);
-        if (GNUNET_SYSERR == ret)
-        {
-          GNUNET_break (0);
-          return MHD_NO;
-        }
-        GNUNET_break (GNUNET_OK == ret);
-        return MHD_YES;
-      }
+      GNUNET_break (0);
+      return TALER_TEMPLATING_reply_error (hc->connection,
+                                           "internal-error",
+                                           MHD_HTTP_INTERNAL_SERVER_ERROR,
+                                           TALER_EC_GENERIC_DB_STORE_FAILED,
+                                           "login_start");
     case GNUNET_DB_STATUS_SOFT_ERROR:
       GNUNET_break (0);
       return GNUNET_NO;
     case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
-      {
-        enum GNUNET_GenericReturnValue ret;
-        json_t *root = json_object ();
-
-        GNUNET_assert (NULL != root);
-        ret = TALER_TEMPLATING_reply (hc->connection,
-                                      MHD_HTTP_NOT_FOUND,
-                                      "validation-unknown.must",
-                                      NULL,
-                                      NULL,
-                                      root);
-        json_decref (root);
-        if (GNUNET_SYSERR == ret)
-        {
-          GNUNET_break (0);
-          return MHD_NO;
-        }
-        GNUNET_break (GNUNET_OK == ret);
-        return MHD_YES;
-      }
+      return TALER_TEMPLATING_reply_error (hc->connection,
+                                           "validation-unknown",
+                                           MHD_HTTP_NOT_FOUND,
+                                           
TALER_EC_CHALLENGER_GENERIC_VALIDATION_UNKNOWN,
+                                           NULL);
     case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
       break;
     }
@@ -208,7 +178,7 @@ CH_handler_login (struct CH_HandlerContext *hc,
       ret = TALER_TEMPLATING_reply (
         hc->connection,
         MHD_HTTP_OK,
-        "enter-address-form.must",
+        "enter-address-form",
         NULL,
         NULL,
         args);
diff --git a/src/challenger/challenger-httpd_solve.c 
b/src/challenger/challenger-httpd_solve.c
index cd42b7d..cf9586f 100644
--- a/src/challenger/challenger-httpd_solve.c
+++ b/src/challenger/challenger-httpd_solve.c
@@ -152,10 +152,11 @@ CH_handler_solve (struct CH_HandlerContext *hc,
                                        sizeof (bc->nonce)))
     {
       GNUNET_break_op (0);
-      return TALER_MHD_reply_with_error (hc->connection,
-                                         MHD_HTTP_NOT_FOUND,
-                                         TALER_EC_GENERIC_PARAMETER_MISSING,
-                                         hc->path);
+      return TALER_TEMPLATING_reply_error (hc->connection,
+                                           "invalid-request",
+                                           MHD_HTTP_BAD_REQUEST,
+                                           
TALER_EC_CHALLENGER_HELPER_EXEC_FAILED,
+                                           hc->path);
     }
     TALER_MHD_check_content_length (hc->connection,
                                     1024);
@@ -185,25 +186,12 @@ CH_handler_solve (struct CH_HandlerContext *hc,
                      &pin,
                      &dummy))
     {
-      enum GNUNET_GenericReturnValue ret;
-      json_t *root = json_object ();
-
-      GNUNET_assert (NULL != root);
       GNUNET_break_op (0);
-      ret = TALER_TEMPLATING_reply (hc->connection,
-                                    MHD_HTTP_BAD_REQUEST,
-                                    "pin-must-be-number.must",
-                                    NULL,
-                                    NULL,
-                                    root);
-      json_decref (root);
-      if (GNUNET_SYSERR == ret)
-      {
-        GNUNET_break (0);
-        return MHD_NO;
-      }
-      GNUNET_break (GNUNET_OK == ret);
-      return MHD_YES;
+      return TALER_TEMPLATING_reply_error (hc->connection,
+                                           "invalid-request",
+                                           MHD_HTTP_BAD_REQUEST,
+                                           
TALER_EC_GENERIC_PARAMETER_MALFORMED,
+                                           "pin");
     }
 
     qs = CH_db->validate_solve_pin (CH_db->cls,
@@ -213,74 +201,30 @@ CH_handler_solve (struct CH_HandlerContext *hc,
     switch (qs)
     {
     case GNUNET_DB_STATUS_HARD_ERROR:
-      {
-        enum GNUNET_GenericReturnValue ret;
-        json_t *root = json_object ();
-
-        GNUNET_assert (NULL != root);
-        GNUNET_break (0);
-        ret = TALER_TEMPLATING_reply (hc->connection,
-                                      MHD_HTTP_INTERNAL_SERVER_ERROR,
-                                      "internal-server-error.must",
-                                      NULL,
-                                      NULL,
-                                      root);
-        json_decref (root);
-        if (GNUNET_SYSERR == ret)
-        {
-          GNUNET_break (0);
-          return MHD_NO;
-        }
-        GNUNET_break (GNUNET_OK == ret);
-        return MHD_YES;
-      }
+      return TALER_TEMPLATING_reply_error (hc->connection,
+                                           "internal-error",
+                                           MHD_HTTP_INTERNAL_SERVER_ERROR,
+                                           TALER_EC_GENERIC_DB_FETCH_FAILED,
+                                           "validate_solve_pin");
     case GNUNET_DB_STATUS_SOFT_ERROR:
       GNUNET_break (0);
       return GNUNET_NO;
     case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
-      {
-        enum GNUNET_GenericReturnValue ret;
-        json_t *root = json_object ();
-
-        GNUNET_assert (NULL != root);
-        ret = TALER_TEMPLATING_reply (hc->connection,
-                                      MHD_HTTP_NOT_FOUND,
-                                      "validation-unknown.must",
-                                      NULL,
-                                      NULL,
-                                      root);
-        json_decref (root);
-        if (GNUNET_SYSERR == ret)
-        {
-          GNUNET_break (0);
-          return MHD_NO;
-        }
-        GNUNET_break (GNUNET_OK == ret);
-        return MHD_YES;
-      }
+      return TALER_TEMPLATING_reply_error (hc->connection,
+                                           "validation-unknown",
+                                           MHD_HTTP_NOT_FOUND,
+                                           
TALER_EC_CHALLENGER_GENERIC_VALIDATION_UNKNOWN,
+                                           NULL);
     case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
       break;
     }
     if (! solved)
     {
-      enum GNUNET_GenericReturnValue ret;
-      json_t *root = json_object ();
-
-      GNUNET_assert (NULL != root);
-      ret = TALER_TEMPLATING_reply (hc->connection,
-                                    MHD_HTTP_FORBIDDEN,
-                                    "invalid-pin.must",
-                                    NULL,
-                                    NULL,
-                                    root);
-      json_decref (root);
-      if (GNUNET_SYSERR == ret)
-      {
-        GNUNET_break (0);
-        return MHD_NO;
-      }
-      GNUNET_break (GNUNET_OK == ret);
-      return MHD_YES;
+      return TALER_TEMPLATING_reply_error (hc->connection,
+                                           "invalid-pin",
+                                           MHD_HTTP_FORBIDDEN,
+                                           TALER_EC_CHALLENGER_INVALID_PIN,
+                                           NULL);
     }
   }
 
@@ -306,51 +250,21 @@ CH_handler_solve (struct CH_HandlerContext *hc,
       switch (qs)
       {
       case GNUNET_DB_STATUS_HARD_ERROR:
-        {
-          enum GNUNET_GenericReturnValue ret;
-          json_t *root = json_object ();
-
-          GNUNET_assert (NULL != root);
-          GNUNET_break (0);
-          ret = TALER_TEMPLATING_reply (hc->connection,
-                                        MHD_HTTP_INTERNAL_SERVER_ERROR,
-                                        "internal-server-error.must",
-                                        NULL,
-                                        NULL,
-                                        root);
-          json_decref (root);
-          if (GNUNET_SYSERR == ret)
-          {
-            GNUNET_break (0);
-            return MHD_NO;
-          }
-          GNUNET_break (GNUNET_OK == ret);
-          return MHD_YES;
-        }
+        GNUNET_break (0);
+        return TALER_TEMPLATING_reply_error (hc->connection,
+                                             "internal-server-error",
+                                             MHD_HTTP_INTERNAL_SERVER_ERROR,
+                                             TALER_EC_GENERIC_DB_FETCH_FAILED,
+                                             "validation_get");
       case GNUNET_DB_STATUS_SOFT_ERROR:
         GNUNET_break (0);
         return GNUNET_NO;
       case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
-        {
-          enum GNUNET_GenericReturnValue ret;
-          json_t *root = json_object ();
-
-          GNUNET_assert (NULL != root);
-          ret = TALER_TEMPLATING_reply (hc->connection,
-                                        MHD_HTTP_NOT_FOUND,
-                                        "validation-unknown.must",
-                                        NULL,
-                                        NULL,
-                                        root);
-          json_decref (root);
-          if (GNUNET_SYSERR == ret)
-          {
-            GNUNET_break (0);
-            return MHD_NO;
-          }
-          GNUNET_break (GNUNET_OK == ret);
-          return MHD_YES;
-        }
+        return TALER_TEMPLATING_reply_error (hc->connection,
+                                             "validation-unknown",
+                                             MHD_HTTP_NOT_FOUND,
+                                             
TALER_EC_CHALLENGER_GENERIC_VALIDATION_UNKNOWN,
+                                             NULL);
       case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
         break;
       }

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]