add `param' keyword

This commit is contained in:
Omar Polo 2021-06-11 15:49:46 +00:00
parent f740b61b03
commit c92b802b6a
3 changed files with 29 additions and 10 deletions

View File

@ -1,5 +1,7 @@
2021-06-11 Omar Polo <op@omarpolo.com>
* parse.y (servopt): add `param' keyword
* fcgi.c (send_fcgi_req): send GATEWAY_INTERFACE, AUTH_TYPE,
REMOTE_USER, TLS_CLIENT_ISSUER, TLS_CLIENT_HASH, TLS_VERSION,
TLS_CIPHER, TLS_CIPHER_STRENGTH and TLS_CLIENT_NOT_BEFORE/AFTER.

1
lex.l
View File

@ -70,6 +70,7 @@ lang return TLANG;
location return TLOCATION;
log return TLOG;
mime return TMIME;
param return TPARAM;
port return TPORT;
prefork return TPREFORK;
protocols return TPROTOCOLS;

36
parse.y
View File

@ -49,6 +49,7 @@ void advance_loc(void);
void only_once(const void*, const char*);
void only_oncei(int, const char*);
int fastcgi_conf(char *, char *, char *);
void add_param(char *, char *, int);
%}
@ -63,7 +64,7 @@ int fastcgi_conf(char *, char *, char *);
%token TIPV6 TPORT TPROTOCOLS TMIME TDEFAULT TTYPE TCHROOT TUSER TSERVER
%token TPREFORK TLOCATION TCERT TKEY TROOT TCGI TENV TLANG TLOG TINDEX TAUTO
%token TSTRIP TBLOCK TRETURN TENTRYPOINT TREQUIRE TCLIENT TCA TALIAS TTCP
%token TFASTCGI TSPAWN
%token TFASTCGI TSPAWN TPARAM
%token TERR
@ -150,20 +151,15 @@ servopt : TALIAS TSTRING {
host->entrypoint = $2;
}
| TENV TSTRING TSTRING {
struct envlist *e;
e = xcalloc(1, sizeof(*e));
e->name = $2;
e->value = $3;
if (TAILQ_EMPTY(&host->env))
TAILQ_INSERT_HEAD(&host->env, e, envs);
else
TAILQ_INSERT_TAIL(&host->env, e, envs);
add_param($2, $3, 1);
}
| TKEY TSTRING {
only_once(host->key, "key");
host->key = ensure_absolute_path($2);
}
| TPARAM TSTRING TSTRING {
add_param($2, $3, 0);
}
| locopt
;
@ -422,3 +418,23 @@ fastcgi_conf(char *path, char *port, char *prog)
yyerror("too much `fastcgi' rules defined.");
return -1;
}
void
add_param(char *name, char *val, int env)
{
struct envlist *e;
struct envhead *h;
if (env)
h = &host->env;
else
h = &host->params;
e = xcalloc(1, sizeof(*e));
e->name = name;
e->value = val;
if (TAILQ_EMPTY(h))
TAILQ_INSERT_HEAD(h, e, envs);
else
TAILQ_INSERT_TAIL(h, e, envs);
}