nghttpx: Refactor option name lookup
This commit is contained in:
parent
27da08ee68
commit
8c1e863523
|
@ -0,0 +1,117 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from gentokenlookup import gentokenlookup
|
||||||
|
|
||||||
|
OPTIONS = [
|
||||||
|
"private-key-file",
|
||||||
|
"private-key-passwd-file",
|
||||||
|
"certificate-file",
|
||||||
|
"dh-param-file",
|
||||||
|
"subcert",
|
||||||
|
"backend",
|
||||||
|
"frontend",
|
||||||
|
"workers",
|
||||||
|
"http2-max-concurrent-streams",
|
||||||
|
"log-level",
|
||||||
|
"daemon",
|
||||||
|
"http2-proxy",
|
||||||
|
"http2-bridge",
|
||||||
|
"client-proxy",
|
||||||
|
"add-x-forwarded-for",
|
||||||
|
"strip-incoming-x-forwarded-for",
|
||||||
|
"no-via",
|
||||||
|
"frontend-http2-read-timeout",
|
||||||
|
"frontend-read-timeout",
|
||||||
|
"frontend-write-timeout",
|
||||||
|
"backend-read-timeout",
|
||||||
|
"backend-write-timeout",
|
||||||
|
"stream-read-timeout",
|
||||||
|
"stream-write-timeout",
|
||||||
|
"accesslog-file",
|
||||||
|
"accesslog-syslog",
|
||||||
|
"accesslog-format",
|
||||||
|
"errorlog-file",
|
||||||
|
"errorlog-syslog",
|
||||||
|
"backend-keep-alive-timeout",
|
||||||
|
"frontend-http2-window-bits",
|
||||||
|
"backend-http2-window-bits",
|
||||||
|
"frontend-http2-connection-window-bits",
|
||||||
|
"backend-http2-connection-window-bits",
|
||||||
|
"frontend-no-tls",
|
||||||
|
"backend-no-tls",
|
||||||
|
"backend-tls-sni-field",
|
||||||
|
"pid-file",
|
||||||
|
"user",
|
||||||
|
"syslog-facility",
|
||||||
|
"backlog",
|
||||||
|
"ciphers",
|
||||||
|
"client",
|
||||||
|
"insecure",
|
||||||
|
"cacert",
|
||||||
|
"backend-ipv4",
|
||||||
|
"backend-ipv6",
|
||||||
|
"backend-http-proxy-uri",
|
||||||
|
"read-rate",
|
||||||
|
"read-burst",
|
||||||
|
"write-rate",
|
||||||
|
"write-burst",
|
||||||
|
"worker-read-rate",
|
||||||
|
"worker-read-burst",
|
||||||
|
"worker-write-rate",
|
||||||
|
"worker-write-burst",
|
||||||
|
"npn-list",
|
||||||
|
"tls-proto-list",
|
||||||
|
"verify-client",
|
||||||
|
"verify-client-cacert",
|
||||||
|
"client-private-key-file",
|
||||||
|
"client-cert-file",
|
||||||
|
"frontend-http2-dump-request-header",
|
||||||
|
"frontend-http2-dump-response-header",
|
||||||
|
"http2-no-cookie-crumbling",
|
||||||
|
"frontend-frame-debug",
|
||||||
|
"padding",
|
||||||
|
"altsvc",
|
||||||
|
"add-request-header",
|
||||||
|
"add-response-header",
|
||||||
|
"worker-frontend-connections",
|
||||||
|
"no-location-rewrite",
|
||||||
|
"no-host-rewrite",
|
||||||
|
"backend-http1-connections-per-host",
|
||||||
|
"backend-http1-connections-per-frontend",
|
||||||
|
"listener-disable-timeout",
|
||||||
|
"tls-ticket-key-file",
|
||||||
|
"rlimit-nofile",
|
||||||
|
"backend-request-buffer",
|
||||||
|
"backend-response-buffer",
|
||||||
|
"no-server-push",
|
||||||
|
"backend-http2-connections-per-worker",
|
||||||
|
"fetch-ocsp-response-file",
|
||||||
|
"ocsp-update-interval",
|
||||||
|
"no-ocsp",
|
||||||
|
"header-field-buffer",
|
||||||
|
"max-header-fields",
|
||||||
|
"include",
|
||||||
|
"conf",
|
||||||
|
]
|
||||||
|
|
||||||
|
LOGVARS = [
|
||||||
|
"remote_addr",
|
||||||
|
"time_local",
|
||||||
|
"time_iso8601",
|
||||||
|
"request",
|
||||||
|
"status",
|
||||||
|
"body_bytes_sent",
|
||||||
|
"remote_port",
|
||||||
|
"server_port",
|
||||||
|
"request_time",
|
||||||
|
"pid",
|
||||||
|
"alpn",
|
||||||
|
"ssl_cipher",
|
||||||
|
"ssl_protocol",
|
||||||
|
"ssl_session_id",
|
||||||
|
"ssl_session_reused",
|
||||||
|
]
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
gentokenlookup(OPTIONS, 'SHRPX_OPTID', value_type='char', comp_fun='util::strieq_l')
|
||||||
|
gentokenlookup(LOGVARS, 'SHRPX_LOGF', value_type='char', comp_fun='util::strieq_l')
|
|
@ -33,10 +33,10 @@ enum {'''
|
||||||
{}_MAXIDX,
|
{}_MAXIDX,
|
||||||
}};'''.format(prefix)
|
}};'''.format(prefix)
|
||||||
|
|
||||||
def gen_index_header(tokens, prefix):
|
def gen_index_header(tokens, prefix, value_type, comp_fun):
|
||||||
print '''\
|
print '''\
|
||||||
int lookup_token(const uint8_t *name, size_t namelen) {
|
int lookup_token(const {} *name, size_t namelen) {{
|
||||||
switch (namelen) {'''
|
switch (namelen) {{'''.format(value_type)
|
||||||
b = build_header(tokens)
|
b = build_header(tokens)
|
||||||
for size in sorted(b.keys()):
|
for size in sorted(b.keys()):
|
||||||
ents = b[size]
|
ents = b[size]
|
||||||
|
@ -50,9 +50,9 @@ int lookup_token(const uint8_t *name, size_t namelen) {
|
||||||
case '{}':'''.format(c)
|
case '{}':'''.format(c)
|
||||||
for k in headers:
|
for k in headers:
|
||||||
print '''\
|
print '''\
|
||||||
if (util::streq_l("{}", name, {})) {{
|
if ({}("{}", name, {})) {{
|
||||||
return {};
|
return {};
|
||||||
}}'''.format(k[:-1], size - 1, to_enum_hd(k, prefix))
|
}}'''.format(comp_fun, k[:-1], size - 1, to_enum_hd(k, prefix))
|
||||||
print '''\
|
print '''\
|
||||||
break;'''
|
break;'''
|
||||||
print '''\
|
print '''\
|
||||||
|
@ -63,7 +63,7 @@ int lookup_token(const uint8_t *name, size_t namelen) {
|
||||||
return -1;
|
return -1;
|
||||||
}'''
|
}'''
|
||||||
|
|
||||||
def gentokenlookup(tokens, prefix):
|
def gentokenlookup(tokens, prefix, value_type='uint8_t', comp_fun='util::streq_l'):
|
||||||
gen_enum(tokens, prefix)
|
gen_enum(tokens, prefix)
|
||||||
print ''
|
print ''
|
||||||
gen_index_header(tokens, prefix)
|
gen_index_header(tokens, prefix, value_type, comp_fun)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue