Skip to content

Instantly share code, notes, and snippets.

@robbat2
Last active April 26, 2023 15:14
Show Gist options
  • Save robbat2/6c75f78e0d857b6d8649d591bc44c452 to your computer and use it in GitHub Desktop.
Save robbat2/6c75f78e0d857b6d8649d591bc44c452 to your computer and use it in GitHub Desktop.
HAProxy Lua AppletHTTP to dump fetches & converters
core.register_service("dump", "http", function(applet)
local response = core.concat()
response:add('---\n')
members = { 'sf', 'f', 'sc', 'c' }
for i,m in ipairs(members) do
response:add('applet.' .. m .. ':\n')
for k, v in pairs(getmetatable(applet[m])) do
if k == "__index" then
local funcs = {}
for i, j in pairs(v) do
table.insert(funcs, i)
end
table.sort(funcs)
for i,j in ipairs(funcs) do
response:add('- "' .. tostring(j) .. '"\n')
end
break
end
end
response:add('\n')
end
response = response:dump()
applet:set_status(200)
applet:add_header("content-length", string.len(response))
applet:add_header("content-type", "text/yaml")
applet:start_response()
applet:send(response)
end)
---
applet.sf:
- "always_false"
- "always_true"
- "avg_queue"
- "base"
- "base32"
- "base32_src"
- "be_conn"
- "be_id"
- "be_name"
- "be_sess_rate"
- "capture_req_hdr"
- "capture_req_method"
- "capture_req_uri"
- "capture_req_ver"
- "capture_res_hdr"
- "capture_res_ver"
- "connslots"
- "cook"
- "cook_cnt"
- "cook_val"
- "cookie"
- "date"
- "date_us"
- "dst"
- "dst_conn"
- "dst_is_local"
- "dst_port"
- "env"
- "fc_fackets"
- "fc_http_major"
- "fc_lost"
- "fc_rcvd_proxy"
- "fc_reordering"
- "fc_retrans"
- "fc_rtt"
- "fc_rttvar"
- "fc_sacked"
- "fc_unacked"
- "fe_conn"
- "fe_defbe"
- "fe_id"
- "fe_name"
- "fe_req_rate"
- "fe_sess_rate"
- "hdr"
- "hdr_cnt"
- "hdr_ip"
- "hdr_val"
- "hostname"
- "http_auth"
- "http_auth_group"
- "http_first_req"
- "int"
- "ipv4"
- "ipv6"
- "method"
- "nbproc"
- "nbsrv"
- "path"
- "payload"
- "payload_lv"
- "proc"
- "query"
- "queue"
- "rand"
- "rdp_cookie"
- "rdp_cookie_cnt"
- "rep_ssl_hello_type"
- "req_body"
- "req_body_len"
- "req_body_param"
- "req_body_size"
- "req_cook"
- "req_cook_cnt"
- "req_cook_val"
- "req_fhdr"
- "req_fhdr_cnt"
- "req_hdr"
- "req_hdr_cnt"
- "req_hdr_ip"
- "req_hdr_names"
- "req_hdr_val"
- "req_hdrs"
- "req_hdrs_bin"
- "req_len"
- "req_payload"
- "req_payload_lv"
- "req_proto_http"
- "req_rdp_cookie"
- "req_rdp_cookie_cnt"
- "req_ssl_ec_ext"
- "req_ssl_hello_type"
- "req_ssl_sni"
- "req_ssl_st_ext"
- "req_ssl_ver"
- "req_ver"
- "res_comp"
- "res_comp_algo"
- "res_cook"
- "res_cook_cnt"
- "res_cook_val"
- "res_fhdr"
- "res_fhdr_cnt"
- "res_hdr"
- "res_hdr_cnt"
- "res_hdr_ip"
- "res_hdr_names"
- "res_hdr_val"
- "res_len"
- "res_payload"
- "res_payload_lv"
- "res_ssl_hello_type"
- "res_ver"
- "resp_ver"
- "sc0_bytes_in_rate"
- "sc0_bytes_out_rate"
- "sc0_clr_gpc0"
- "sc0_clr_gpc1"
- "sc0_conn_cnt"
- "sc0_conn_cur"
- "sc0_conn_rate"
- "sc0_get_gpc0"
- "sc0_get_gpc1"
- "sc0_get_gpt0"
- "sc0_gpc0_rate"
- "sc0_gpc1_rate"
- "sc0_http_err_cnt"
- "sc0_http_err_rate"
- "sc0_http_req_cnt"
- "sc0_http_req_rate"
- "sc0_inc_gpc0"
- "sc0_inc_gpc1"
- "sc0_kbytes_in"
- "sc0_kbytes_out"
- "sc0_sess_cnt"
- "sc0_sess_rate"
- "sc0_tracked"
- "sc0_trackers"
- "sc1_bytes_in_rate"
- "sc1_bytes_out_rate"
- "sc1_clr_gpc0"
- "sc1_clr_gpc1"
- "sc1_conn_cnt"
- "sc1_conn_cur"
- "sc1_conn_rate"
- "sc1_get_gpc0"
- "sc1_get_gpc1"
- "sc1_get_gpt0"
- "sc1_gpc0_rate"
- "sc1_gpc1_rate"
- "sc1_http_err_cnt"
- "sc1_http_err_rate"
- "sc1_http_req_cnt"
- "sc1_http_req_rate"
- "sc1_inc_gpc0"
- "sc1_inc_gpc1"
- "sc1_kbytes_in"
- "sc1_kbytes_out"
- "sc1_sess_cnt"
- "sc1_sess_rate"
- "sc1_tracked"
- "sc1_trackers"
- "sc2_bytes_in_rate"
- "sc2_bytes_out_rate"
- "sc2_clr_gpc0"
- "sc2_clr_gpc1"
- "sc2_conn_cnt"
- "sc2_conn_cur"
- "sc2_conn_rate"
- "sc2_get_gpc0"
- "sc2_get_gpc1"
- "sc2_get_gpt0"
- "sc2_gpc0_rate"
- "sc2_gpc1_rate"
- "sc2_http_err_cnt"
- "sc2_http_err_rate"
- "sc2_http_req_cnt"
- "sc2_http_req_rate"
- "sc2_inc_gpc0"
- "sc2_inc_gpc1"
- "sc2_kbytes_in"
- "sc2_kbytes_out"
- "sc2_sess_cnt"
- "sc2_sess_rate"
- "sc2_tracked"
- "sc2_trackers"
- "sc_bytes_in_rate"
- "sc_bytes_out_rate"
- "sc_clr_gpc0"
- "sc_clr_gpc1"
- "sc_conn_cnt"
- "sc_conn_cur"
- "sc_conn_rate"
- "sc_get_gpc0"
- "sc_get_gpc1"
- "sc_get_gpt0"
- "sc_gpc0_rate"
- "sc_gpc1_rate"
- "sc_http_err_cnt"
- "sc_http_err_rate"
- "sc_http_req_cnt"
- "sc_http_req_rate"
- "sc_inc_gpc0"
- "sc_inc_gpc1"
- "sc_kbytes_in"
- "sc_kbytes_out"
- "sc_sess_cnt"
- "sc_sess_rate"
- "sc_tracked"
- "sc_trackers"
- "scook"
- "scook_cnt"
- "scook_val"
- "set_cookie"
- "shdr"
- "shdr_cnt"
- "shdr_ip"
- "shdr_val"
- "so_id"
- "src"
- "src_bytes_in_rate"
- "src_bytes_out_rate"
- "src_clr_gpc0"
- "src_clr_gpc1"
- "src_conn_cnt"
- "src_conn_cur"
- "src_conn_rate"
- "src_get_gpc0"
- "src_get_gpc1"
- "src_get_gpt0"
- "src_gpc0_rate"
- "src_gpc1_rate"
- "src_http_err_cnt"
- "src_http_err_rate"
- "src_http_req_cnt"
- "src_http_req_rate"
- "src_inc_gpc0"
- "src_inc_gpc1"
- "src_is_local"
- "src_kbytes_in"
- "src_kbytes_out"
- "src_port"
- "src_sess_cnt"
- "src_sess_rate"
- "src_updt_conn_cnt"
- "srv_conn"
- "srv_id"
- "srv_is_up"
- "srv_queue"
- "srv_sess_rate"
- "status"
- "stopping"
- "str"
- "table_avl"
- "table_cnt"
- "thread"
- "unique_id"
- "url"
- "url32"
- "url32_src"
- "url_ip"
- "url_param"
- "url_port"
- "urlp"
- "urlp_val"
- "wait_end"
applet.f:
- "always_false"
- "always_true"
- "avg_queue"
- "base"
- "base32"
- "base32_src"
- "be_conn"
- "be_id"
- "be_name"
- "be_sess_rate"
- "capture_req_hdr"
- "capture_req_method"
- "capture_req_uri"
- "capture_req_ver"
- "capture_res_hdr"
- "capture_res_ver"
- "connslots"
- "cook"
- "cook_cnt"
- "cook_val"
- "cookie"
- "date"
- "date_us"
- "dst"
- "dst_conn"
- "dst_is_local"
- "dst_port"
- "env"
- "fc_fackets"
- "fc_http_major"
- "fc_lost"
- "fc_rcvd_proxy"
- "fc_reordering"
- "fc_retrans"
- "fc_rtt"
- "fc_rttvar"
- "fc_sacked"
- "fc_unacked"
- "fe_conn"
- "fe_defbe"
- "fe_id"
- "fe_name"
- "fe_req_rate"
- "fe_sess_rate"
- "hdr"
- "hdr_cnt"
- "hdr_ip"
- "hdr_val"
- "hostname"
- "http_auth"
- "http_auth_group"
- "http_first_req"
- "int"
- "ipv4"
- "ipv6"
- "method"
- "nbproc"
- "nbsrv"
- "path"
- "payload"
- "payload_lv"
- "proc"
- "query"
- "queue"
- "rand"
- "rdp_cookie"
- "rdp_cookie_cnt"
- "rep_ssl_hello_type"
- "req_body"
- "req_body_len"
- "req_body_param"
- "req_body_size"
- "req_cook"
- "req_cook_cnt"
- "req_cook_val"
- "req_fhdr"
- "req_fhdr_cnt"
- "req_hdr"
- "req_hdr_cnt"
- "req_hdr_ip"
- "req_hdr_names"
- "req_hdr_val"
- "req_hdrs"
- "req_hdrs_bin"
- "req_len"
- "req_payload"
- "req_payload_lv"
- "req_proto_http"
- "req_rdp_cookie"
- "req_rdp_cookie_cnt"
- "req_ssl_ec_ext"
- "req_ssl_hello_type"
- "req_ssl_sni"
- "req_ssl_st_ext"
- "req_ssl_ver"
- "req_ver"
- "res_comp"
- "res_comp_algo"
- "res_cook"
- "res_cook_cnt"
- "res_cook_val"
- "res_fhdr"
- "res_fhdr_cnt"
- "res_hdr"
- "res_hdr_cnt"
- "res_hdr_ip"
- "res_hdr_names"
- "res_hdr_val"
- "res_len"
- "res_payload"
- "res_payload_lv"
- "res_ssl_hello_type"
- "res_ver"
- "resp_ver"
- "sc0_bytes_in_rate"
- "sc0_bytes_out_rate"
- "sc0_clr_gpc0"
- "sc0_clr_gpc1"
- "sc0_conn_cnt"
- "sc0_conn_cur"
- "sc0_conn_rate"
- "sc0_get_gpc0"
- "sc0_get_gpc1"
- "sc0_get_gpt0"
- "sc0_gpc0_rate"
- "sc0_gpc1_rate"
- "sc0_http_err_cnt"
- "sc0_http_err_rate"
- "sc0_http_req_cnt"
- "sc0_http_req_rate"
- "sc0_inc_gpc0"
- "sc0_inc_gpc1"
- "sc0_kbytes_in"
- "sc0_kbytes_out"
- "sc0_sess_cnt"
- "sc0_sess_rate"
- "sc0_tracked"
- "sc0_trackers"
- "sc1_bytes_in_rate"
- "sc1_bytes_out_rate"
- "sc1_clr_gpc0"
- "sc1_clr_gpc1"
- "sc1_conn_cnt"
- "sc1_conn_cur"
- "sc1_conn_rate"
- "sc1_get_gpc0"
- "sc1_get_gpc1"
- "sc1_get_gpt0"
- "sc1_gpc0_rate"
- "sc1_gpc1_rate"
- "sc1_http_err_cnt"
- "sc1_http_err_rate"
- "sc1_http_req_cnt"
- "sc1_http_req_rate"
- "sc1_inc_gpc0"
- "sc1_inc_gpc1"
- "sc1_kbytes_in"
- "sc1_kbytes_out"
- "sc1_sess_cnt"
- "sc1_sess_rate"
- "sc1_tracked"
- "sc1_trackers"
- "sc2_bytes_in_rate"
- "sc2_bytes_out_rate"
- "sc2_clr_gpc0"
- "sc2_clr_gpc1"
- "sc2_conn_cnt"
- "sc2_conn_cur"
- "sc2_conn_rate"
- "sc2_get_gpc0"
- "sc2_get_gpc1"
- "sc2_get_gpt0"
- "sc2_gpc0_rate"
- "sc2_gpc1_rate"
- "sc2_http_err_cnt"
- "sc2_http_err_rate"
- "sc2_http_req_cnt"
- "sc2_http_req_rate"
- "sc2_inc_gpc0"
- "sc2_inc_gpc1"
- "sc2_kbytes_in"
- "sc2_kbytes_out"
- "sc2_sess_cnt"
- "sc2_sess_rate"
- "sc2_tracked"
- "sc2_trackers"
- "sc_bytes_in_rate"
- "sc_bytes_out_rate"
- "sc_clr_gpc0"
- "sc_clr_gpc1"
- "sc_conn_cnt"
- "sc_conn_cur"
- "sc_conn_rate"
- "sc_get_gpc0"
- "sc_get_gpc1"
- "sc_get_gpt0"
- "sc_gpc0_rate"
- "sc_gpc1_rate"
- "sc_http_err_cnt"
- "sc_http_err_rate"
- "sc_http_req_cnt"
- "sc_http_req_rate"
- "sc_inc_gpc0"
- "sc_inc_gpc1"
- "sc_kbytes_in"
- "sc_kbytes_out"
- "sc_sess_cnt"
- "sc_sess_rate"
- "sc_tracked"
- "sc_trackers"
- "scook"
- "scook_cnt"
- "scook_val"
- "set_cookie"
- "shdr"
- "shdr_cnt"
- "shdr_ip"
- "shdr_val"
- "so_id"
- "src"
- "src_bytes_in_rate"
- "src_bytes_out_rate"
- "src_clr_gpc0"
- "src_clr_gpc1"
- "src_conn_cnt"
- "src_conn_cur"
- "src_conn_rate"
- "src_get_gpc0"
- "src_get_gpc1"
- "src_get_gpt0"
- "src_gpc0_rate"
- "src_gpc1_rate"
- "src_http_err_cnt"
- "src_http_err_rate"
- "src_http_req_cnt"
- "src_http_req_rate"
- "src_inc_gpc0"
- "src_inc_gpc1"
- "src_is_local"
- "src_kbytes_in"
- "src_kbytes_out"
- "src_port"
- "src_sess_cnt"
- "src_sess_rate"
- "src_updt_conn_cnt"
- "srv_conn"
- "srv_id"
- "srv_is_up"
- "srv_queue"
- "srv_sess_rate"
- "status"
- "stopping"
- "str"
- "table_avl"
- "table_cnt"
- "thread"
- "unique_id"
- "url"
- "url32"
- "url32_src"
- "url_ip"
- "url_param"
- "url_port"
- "urlp"
- "urlp_val"
- "wait_end"
applet.sc:
- "b64dec"
- "base64"
- "bool"
- "bytes"
- "capture_req"
- "capture_res"
- "cpl"
- "crc32"
- "crc32c"
- "djb2"
- "even"
- "hex"
- "hex2i"
- "http_date"
- "in_table"
- "ipmask"
- "language"
- "length"
- "lower"
- "ltime"
- "nbsrv"
- "neg"
- "not"
- "odd"
- "sdbm"
- "sha1"
- "table_bytes_in_rate"
- "table_bytes_out_rate"
- "table_conn_cnt"
- "table_conn_cur"
- "table_conn_rate"
- "table_gpc0"
- "table_gpc0_rate"
- "table_gpc1"
- "table_gpc1_rate"
- "table_gpt0"
- "table_http_err_cnt"
- "table_http_err_rate"
- "table_http_req_cnt"
- "table_http_req_rate"
- "table_kbytes_in"
- "table_kbytes_out"
- "table_server_id"
- "table_sess_cnt"
- "table_sess_rate"
- "table_trackers"
- "upper"
- "url_dec"
- "utime"
- "wt6"
- "xxh32"
- "xxh64"
applet.c:
- "b64dec"
- "base64"
- "bool"
- "bytes"
- "capture_req"
- "capture_res"
- "cpl"
- "crc32"
- "crc32c"
- "djb2"
- "even"
- "hex"
- "hex2i"
- "http_date"
- "in_table"
- "ipmask"
- "language"
- "length"
- "lower"
- "ltime"
- "nbsrv"
- "neg"
- "not"
- "odd"
- "sdbm"
- "sha1"
- "table_bytes_in_rate"
- "table_bytes_out_rate"
- "table_conn_cnt"
- "table_conn_cur"
- "table_conn_rate"
- "table_gpc0"
- "table_gpc0_rate"
- "table_gpc1"
- "table_gpc1_rate"
- "table_gpt0"
- "table_http_err_cnt"
- "table_http_err_rate"
- "table_http_req_cnt"
- "table_http_req_rate"
- "table_kbytes_in"
- "table_kbytes_out"
- "table_server_id"
- "table_sess_cnt"
- "table_sess_rate"
- "table_trackers"
- "upper"
- "url_dec"
- "utime"
- "wt6"
- "xxh32"
- "xxh64"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment