summaryrefslogtreecommitdiff
path: root/src/tipideed/tipideed-internal.h
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2023-10-13 12:17:45 +0000
committerLaurent Bercot <ska@appnovation.com>2023-10-13 12:17:45 +0000
commitff9c276c144bc24c70f1d5b531a8fd412c34c3d9 (patch)
tree428e16ebf99802946e230853c76b2ae3b407c87b /src/tipideed/tipideed-internal.h
parent8179edd85cd504058ec7c569ef87eebf5979646e (diff)
downloadtipidee-ff9c276c144bc24c70f1d5b531a8fd412c34c3d9.tar.xz
Improved logging system
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/tipideed/tipideed-internal.h')
-rw-r--r--src/tipideed/tipideed-internal.h90
1 files changed, 37 insertions, 53 deletions
diff --git a/src/tipideed/tipideed-internal.h b/src/tipideed/tipideed-internal.h
index 770596b..fe01152 100644
--- a/src/tipideed/tipideed-internal.h
+++ b/src/tipideed/tipideed-internal.h
@@ -18,26 +18,11 @@
#define URI_BUFSIZE 4096
#define HDR_BUFSIZE 8192
-typedef struct tipidee_resattr_s tipidee_resattr, *tipidee_resattr_ref ;
-struct tipidee_resattr_s
-{
- char const *content_type ;
- uint32_t iscgi : 1 ;
- uint32_t isnph : 1 ;
-} ;
-#define TIPIDEE_RESATTR_ZERO { .content_type = 0, .iscgi = 0, .isnph = 0 }
-
struct global_s
{
tipidee_conf conf ;
stralloc sa ;
size_t envlen ;
- size_t localip ;
- size_t localport ;
- size_t localhost ;
- size_t remoteip ;
- size_t remoteport ;
- size_t remotehost ;
size_t cwdlen ;
size_t indexlen ;
tain readtto ;
@@ -46,11 +31,11 @@ struct global_s
char const *defaulthost ;
char const *indexnames[16] ;
int p[2] ;
+ uint32_t logv ;
uint32_t maxrqbody ;
uint32_t maxcgibody ;
uint16_t defaultport ;
uint16_t indexn : 4 ;
- uint16_t verbosity : 3 ;
uint16_t cont : 2 ;
uint16_t ssl : 1 ;
} ;
@@ -59,12 +44,6 @@ struct global_s
.conf = TIPIDEE_CONF_ZERO, \
.sa = STRALLOC_ZERO, \
.envlen = 0, \
- .localip = 0, \
- .localport = 0, \
- .localhost = 0, \
- .remoteip = 0, \
- .remoteport = 0, \
- .remotehost = 0, \
.cwdlen = 1, \
.indexlen = 0, \
.readtto = TAIN_ZERO, \
@@ -73,11 +52,11 @@ struct global_s
.defaulthost = "@", \
.indexnames = { 0 }, \
.p = { -1, -1 }, \
+ .logv = TIPIDEE_LOG_DEFAULT, \
.maxrqbody = 0, \
.maxcgibody = 0, \
.defaultport = 0, \
.indexn = 0, \
- .verbosity = 1, \
.cont = 1, \
.ssl = 0 \
}
@@ -92,27 +71,43 @@ extern void tipideed_harden (unsigned int) ;
/* Responses */
-extern void response_error (tipidee_rql const *, char const *, char const *, int) ;
-extern void response_error_and_exit (tipidee_rql const *, char const *, char const *) gccattr_noreturn ;
-extern void response_error_and_die (tipidee_rql const *, int e, char const *, char const *, char const *const *, unsigned int, int) gccattr_noreturn ;
-
-#define exit_400(r, s) response_error_and_exit(r, "400 Bad Request", s)
-extern void exit_405 (tipidee_rql const *, uint32_t) gccattr_noreturn ;
-#define exit_408(r) response_error_and_exit(r, "408 Request Timeout", "")
-#define exit_413(r, s) response_error_and_exit(r, "413 Request Entity Too Large", s)
-#define exit_501(r, s) response_error_and_exit(r, "501 Not Implemented", s)
-
-#define respond_403(r) response_error(r, "403 Forbidden", "Missing credentials to access the URI.", 0)
-#define respond_404(r) response_error(r, "404 Not Found", "The request URI was not found.", 0)
-#define respond_414(r) response_error(r, "414 URI Too Long", "The request URI had an oversized component.", 0)
+extern void response_error (tipidee_rql const *, unsigned int, char const *, char const *, uint32_t) ; /* set bit 0 for Connection: close, bit 1 for preexit */
+extern void response_error_and_exit (tipidee_rql const *, unsigned int, char const *, char const *, uint32_t) gccattr_noreturn ;
+extern void response_error_and_die (tipidee_rql const *, int e, unsigned int, char const *, char const *, char const *const *, unsigned int, uint32_t) gccattr_noreturn ;
+
+ /*
+ preexit is meant to be called before tipidee_log_request(), it won't log an answer line.
+ Use for early parsing, when the request isn't even validated yet.
+ exit is meant to be called after tipidee_log_request(), it will log an answer line.
+ respond can only happen after tipidee_log_request(), it will log an answer line.
+
+ exit will log an informational exit line.
+ die will not; there will be a fatal line instead.
+ die will log an answer line. There is no "predie", we just use strerr_die instead.
+ */
+
+#define preexit_400(r, s) response_error_and_exit(r, 400, "Bad Request", s, 2)
+#define exit_400(r, s) response_error_and_exit(r, 400, "Bad Request", s, 0)
+extern void exit_405 (tipidee_rql const *, uint32_t) gccattr_noreturn ; /* set bit 0 for Allow: POST, bit 1 for preexit */
+#define preexit_408(r) response_error_and_exit(r, 408, "Request Timeout", "", 2)
+#define exit_408(r) response_error_and_exit(r, 408, "Request Timeout", "", 0)
+#define preexit_413(r, s) response_error_and_exit(r, 413, "Request Entity Too Large", s, 2)
+#define exit_413(r, s) response_error_and_exit(r, 413, "Request Entity Too Large", s, 0)
+#define preexit_501(r, s) response_error_and_exit(r, 501, "Not Implemented", s, 2)
+#define exit_501(r, s) response_error_and_exit(r, 501, "Not Implemented", s, 0)
+
+#define respond_403(r) response_error(r, 403, "Forbidden", "Missing credentials to access the URI.", 0)
+#define respond_404(r) response_error(r, 404, "Not Found", "The request URI was not found.", 0)
+#define respond_414(r) response_error(r, 414, "URI Too Long", "The request URI had an oversized component.", 0)
extern void respond_30x (tipidee_rql const *, tipidee_redirection const *) ;
-#define respond_504(r) response_error(r, "504 Gateway Timeout", "The CGI script took too long to answer.", 0)
+#define respond_504(r) response_error(r, 504, "Gateway Timeout", "The CGI script took too long to answer.", 0)
+
+#define diefx(r, e, status, rsl, text, ...) response_error_and_die(r, e, status, rsl, text, strerr_array(PROG, ": fatal: ", __VA_ARGS__), sizeof(strerr_array(__VA_ARGS__))/sizeof(char const *)+2, 0)
+#define diefusys(r, e, status, rsl, text, ...) response_error_and_die(r, e, status, rsl, text, strerr_array(PROG, ": fatal: ", "unable to ", __VA_ARGS__), sizeof(strerr_array(__VA_ARGS__))/sizeof(char const *)+3, 1)
+#define die500x(r, e, ...) diefx(r, e, 500, "Internal Server Error", "Bad server configuration.", __VA_ARGS__)
+#define die500sys(r, e, ...) diefusys(r, e, 500, "Internal Server Error", "System error.", __VA_ARGS__)
+#define die502x(r, e, ...) diefx(r, e, 502, "Bad Gateway", "Bad CGI script.", __VA_ARGS__)
-#define diefx(r, e, rsl, text, ...) response_error_and_die(r, e, rsl, text, strerr_array(PROG, ": fatal: ", __VA_ARGS__), sizeof(strerr_array(__VA_ARGS__))/sizeof(char const *)+2, 0)
-#define diefusys(r, e, rsl, text, ...) response_error_and_die(r, e, rsl, text, strerr_array(PROG, ": fatal: ", "unable to ", __VA_ARGS__), sizeof(strerr_array(__VA_ARGS__))/sizeof(char const *)+3, 1)
-#define die500x(r, e, ...) diefx(r, e, "500 Internal Server Error", "Bad server configuration.", __VA_ARGS__)
-#define die500sys(r, e, ...) diefusys(r, e, "500 Internal Server Error", "System error.", __VA_ARGS__)
-#define die502x(r, e, ...) diefx(r, e, "502 Bad Gateway", "Bad CGI script.", __VA_ARGS__)
/* Trace */
@@ -140,15 +135,4 @@ extern int respond_304 (tipidee_rql const *, char const *, struct stat const *)
extern int respond_cgi (tipidee_rql *, char const *, size_t, char const *, char *, tipidee_headers const *, tipidee_resattr const *, char const *, size_t) ;
-
- /* log */
-
-extern void log_start (void) ;
-extern void log_and_exit (int) gccattr_noreturn ;
-extern void log_request (tipidee_rql const *) ;
-extern void log_regular (char const *, char const *, int, char const *) ;
-extern void log_response (char const *, char const *) ;
-extern void log_nph (char const *const *, char const *const *) ;
-extern void log_cgi (char const *const *, char const *const *) ;
-
#endif