Last active
April 26, 2023 15:14
-
-
Save robbat2/6c75f78e0d857b6d8649d591bc44c452 to your computer and use it in GitHub Desktop.
HAProxy Lua AppletHTTP to dump fetches & converters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
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