summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2023-11-08 03:31:54 +0000
committerLaurent Bercot <ska@appnovation.com>2023-11-08 03:31:54 +0000
commit0cab505405d61922e07096f97159838584d3787d (patch)
treefbec9a665cda492949d5f44b46f7e20e0ef6b483 /src
parent4eda14316376fb1e657ac2da269533e2422d2399 (diff)
downloadtipidee-0cab505405d61922e07096f97159838584d3787d.tar.xz
Prepare for 0.0.2.0. Add global executable_means_cgi config directive.
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src')
-rw-r--r--src/config/defaults.c3
-rw-r--r--src/config/lexparse.c3
-rw-r--r--src/tipideed/tipideed-internal.h4
-rw-r--r--src/tipideed/tipideed.c2
4 files changed, 9 insertions, 3 deletions
diff --git a/src/config/defaults.c b/src/config/defaults.c
index dfc13f2..7dbab8a 100644
--- a/src/config/defaults.c
+++ b/src/config/defaults.c
@@ -23,8 +23,9 @@ static struct defaults_s const defaults[] =
RECU32("G:cgi_timeout", 0),
RECU32("G:max_request_body_length", 8192),
RECU32("G:max_cgi_body_length", 4194304),
- RECS("G:index-file", "index.html"),
RECU32("G:logv", TIPIDEE_LOG_DEFAULT),
+ RECU32("G:executable_means_cgi", 0),
+ RECS("G:index-file", "index.html"),
RECS("T:html", "text/html"),
RECS("T:htm", "text/html"),
diff --git a/src/config/lexparse.c b/src/config/lexparse.c
index afd22a5..799b17f 100644
--- a/src/config/lexparse.c
+++ b/src/config/lexparse.c
@@ -98,6 +98,7 @@ static inline void parse_global (char const *s, size_t const *word, size_t n, md
static char const *const globalkeys[] =
{
"cgi_timeout",
+ "executable_means_cgi",
"max_cgi_body_length",
"max_request_body_length",
"read_timeout",
@@ -536,7 +537,7 @@ static inline char next (buffer *b, mdt const *md)
void conf_lexparse (buffer *b, char const *ifile)
{
- static uint8_t const table[4][5] = /* see PARSING.txt */
+ static uint8_t const table[4][5] = /* see PARSING-config.txt */
{
{ 0x04, 0x02, 0x01, 0x80, 0x33 },
{ 0x04, 0x01, 0x01, 0x80, 0x01 },
diff --git a/src/tipideed/tipideed-internal.h b/src/tipideed/tipideed-internal.h
index 1efe291..8b0e114 100644
--- a/src/tipideed/tipideed-internal.h
+++ b/src/tipideed/tipideed-internal.h
@@ -40,6 +40,7 @@ struct global_s
uint16_t indexn : 4 ;
uint16_t cont : 2 ;
uint16_t ssl : 1 ;
+ uint16_t xiscgi : 1 ;
} ;
#define GLOBAL_ZERO \
{ \
@@ -62,7 +63,8 @@ struct global_s
.defaultport = 0, \
.indexn = 0, \
.cont = 1, \
- .ssl = 0 \
+ .ssl = 0, \
+ .xiscgi = 0 \
}
extern struct global_s g ;
diff --git a/src/tipideed/tipideed.c b/src/tipideed/tipideed.c
index 56ef46c..1c07cf3 100644
--- a/src/tipideed/tipideed.c
+++ b/src/tipideed/tipideed.c
@@ -277,6 +277,7 @@ static inline int serve (tipidee_rql *rql, char const *docroot, char *uribuf, ti
}
tipidee_log_debug(g.logv, "serve: docroot ", docroot, " file ", fn, " infopath ", infopath ? infopath : "(none)") ;
+ if (g.xiscgi && st.st_mode & S_IXOTH) ra.flags |= TIPIDEE_RA_FLAG_CGI ;
get_resattr(rql, docroot, fn, &ra) ;
if (!ra.flags & TIPIDEE_RA_FLAG_CGI)
@@ -351,6 +352,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
g.maxrqbody = get_uint32("G:max_request_body_length") ;
g.maxcgibody = get_uint32("G:max_cgi_body_length") ;
g.logv = get_uint32("G:logv") ;
+ g.xiscgi = !!get_uint32("G:executable_means_cgi") ;
n = tipidee_conf_get_argv(&g.conf, "G:index-file", g.indexnames, 16, &g.indexlen) ;
if (!n) strerr_dief3x(102, "bad", " config value for ", "G:index_file") ;
g.indexn = n-1 ;