From 338b5f110f50916b90dada6a2a0f1b8621643f5f Mon Sep 17 00:00:00 2001 From: Kit Chan Date: Sat, 12 Dec 2020 23:49:31 -0800 Subject: [PATCH 1/5] Provide a default client address from lua fetch api --- plugins/lua/ts_lua_fetch.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/plugins/lua/ts_lua_fetch.c b/plugins/lua/ts_lua_fetch.c index 88c7660d38e..1e49f0f3bde 100644 --- a/plugins/lua/ts_lua_fetch.c +++ b/plugins/lua/ts_lua_fetch.c @@ -262,9 +262,19 @@ ts_lua_fetch_one_item(lua_State *L, const char *url, size_t url_len, ts_lua_fetc return 0; } } + } else { + if (TS_ERROR == TSIpStringToAddr(TS_LUA_FETCH_CLIENT_ADDRPORT, TS_LUA_FETCH_CLIENT_ADDRPORT_LEN, &clientaddr)) { + TSError("[ts_lua][%s] Default client ip parse failed!", TS_LUA_DEBUG_TAG); + return 0; + } } lua_pop(L, 1); + } else { + if (TS_ERROR == TSIpStringToAddr(TS_LUA_FETCH_CLIENT_ADDRPORT, TS_LUA_FETCH_CLIENT_ADDRPORT_LEN, &clientaddr)) { + TSError("[ts_lua][%s] Default client ip parse failed!", TS_LUA_DEBUG_TAG); + return 0; + } } /* option */ From 1edbfc772c662ee36d877f1c4df37942c304f508 Mon Sep 17 00:00:00 2001 From: Kit Chan Date: Tue, 5 Jan 2021 23:52:16 -0800 Subject: [PATCH 2/5] add support for TSHttpTxnServerSsnTransactionCount() --- doc/admin-guide/plugins/lua.en.rst | 12 +++++++++++- plugins/lua/ts_lua_http.c | 17 +++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/doc/admin-guide/plugins/lua.en.rst b/doc/admin-guide/plugins/lua.en.rst index b8819aabb07..2e47f3046c6 100644 --- a/doc/admin-guide/plugins/lua.en.rst +++ b/doc/admin-guide/plugins/lua.en.rst @@ -2977,7 +2977,7 @@ ts.http.transaction_count **context:** do_remap/do_os_response or do_global_* or later -**description:** This function returns the number of transaction in this connection +**description:** This function returns the number of transaction in this client connection Here is an example @@ -2991,6 +2991,16 @@ Here is an example :ref:`TOP ` +ts.http.server_transaction_count +-------------------------------- +**syntax:** *ts.http.server_transaction_count()* + +**context:** do_remap/do_os_response or do_global_* or later + +**description:** This function returns the number of transaction in this server connection + +:ref:`TOP ` + ts.http.redirect_url_set ------------------------ **syntax:** *ts.http.redirect_url_set()* diff --git a/plugins/lua/ts_lua_http.c b/plugins/lua/ts_lua_http.c index 5763f62f423..370befca163 100644 --- a/plugins/lua/ts_lua_http.c +++ b/plugins/lua/ts_lua_http.c @@ -95,6 +95,7 @@ static int ts_lua_http_is_internal_request(lua_State *L); static int ts_lua_http_is_aborted(lua_State *L); static int ts_lua_http_skip_remapping_set(lua_State *L); static int ts_lua_http_transaction_count(lua_State *L); +static int ts_lua_http_server_transaction_count(lua_State *L); static int ts_lua_http_redirect_url_set(lua_State *L); static int ts_lua_http_get_server_state(lua_State *L); @@ -249,6 +250,9 @@ ts_lua_inject_http_misc_api(lua_State *L) lua_pushcfunction(L, ts_lua_http_transaction_count); lua_setfield(L, -2, "transaction_count"); + lua_pushcfunction(L, ts_lua_http_server_transaction_count); + lua_setfield(L, -2, "server_transaction_count"); + lua_pushcfunction(L, ts_lua_http_redirect_url_set); lua_setfield(L, -2, "redirect_url_set"); @@ -806,6 +810,19 @@ ts_lua_http_transaction_count(lua_State *L) return 1; } +static int +ts_lua_http_server_transaction_count(lua_State *L) +{ + ts_lua_http_ctx *http_ctx; + + GET_HTTP_CONTEXT(http_ctx, L); + + int n = TSHttpTxnServerSsnTransactonCount(http_ctx->txnp); + lua_pushnumber(L, n); + + return 1; +} + static int ts_lua_http_redirect_url_set(lua_State *L) { From 6a3825c3dcb8e8abcd215aa57c9b738002eb1e03 Mon Sep 17 00:00:00 2001 From: Kit Chan Date: Wed, 6 Jan 2021 22:57:08 -0800 Subject: [PATCH 3/5] add support for TSMgmtConfigFileAdd API --- doc/admin-guide/plugins/lua.en.rst | 15 +++++++++++++++ plugins/lua/ts_lua_mgmt.c | 20 ++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/doc/admin-guide/plugins/lua.en.rst b/doc/admin-guide/plugins/lua.en.rst index 2e47f3046c6..ed2b2b922df 100644 --- a/doc/admin-guide/plugins/lua.en.rst +++ b/doc/admin-guide/plugins/lua.en.rst @@ -4245,6 +4245,21 @@ ts.mgmt.get_string :ref:`TOP ` +ts.mgmt.add_config_file +----------------------- +**syntax:** *ts.mgmt.add_config_file(parent, filename)* + +**context:** do_remap/do_os_response or do_global_* or later. + +**description:** This function invokes ``TSMgmtConfigFileAdd`` API. + +:: + + remap = ts.mgmt.get_string('proxy.config.url_remap.filename') + ts.mgmt.add_config_file(remap, '/etc/my.config') + +:ref:`TOP ` + ts.stat_create -------------- **syntax:** *val = ts.stat_create(STAT_NAME, RECORDDATA_TYPE, PERSISTENT, SYNC)* diff --git a/plugins/lua/ts_lua_mgmt.c b/plugins/lua/ts_lua_mgmt.c index e403c359392..1faecb83d98 100644 --- a/plugins/lua/ts_lua_mgmt.c +++ b/plugins/lua/ts_lua_mgmt.c @@ -22,6 +22,7 @@ static int ts_lua_mgmt_get_int(lua_State *L); static int ts_lua_mgmt_get_counter(lua_State *L); static int ts_lua_mgmt_get_float(lua_State *L); static int ts_lua_mgmt_get_string(lua_State *L); +static int ts_lua_mgmt_add_config_file(lua_State *L); void ts_lua_inject_mgmt_api(lua_State *L) @@ -40,6 +41,9 @@ ts_lua_inject_mgmt_api(lua_State *L) lua_pushcfunction(L, ts_lua_mgmt_get_string); lua_setfield(L, -2, "get_string"); + lua_pushcfunction(L, ts_lua_mgmt_add_config_file); + lua_setfield(L, -2, "add_config_file"); + lua_setfield(L, -2, "mgmt"); } @@ -107,3 +111,19 @@ ts_lua_mgmt_get_string(lua_State *L) return 0; } + +static int +ts_lua_mgmt_add_config_file(lua_State *L) +{ + const char *parent; + const char *filename; + size_t parent_len = 0, filename_len = 0; + + if (lua_gettop(L) == 2) { + filename = luaL_checklstring(L, 2, &filename_len); + parent = luaL_checklstring(L, 1, &parent_len); + TSMgmtConfigFileAdd(parent, filename); + } + + return 0; +} From e358ea1eb901335d2e1ebf8ad320fd86b85ac760 Mon Sep 17 00:00:00 2001 From: Kit Chan Date: Wed, 6 Jan 2021 23:03:57 -0800 Subject: [PATCH 4/5] fix typo on doc --- doc/admin-guide/plugins/lua.en.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/admin-guide/plugins/lua.en.rst b/doc/admin-guide/plugins/lua.en.rst index ed2b2b922df..7117cdfa0b5 100644 --- a/doc/admin-guide/plugins/lua.en.rst +++ b/doc/admin-guide/plugins/lua.en.rst @@ -4251,7 +4251,7 @@ ts.mgmt.add_config_file **context:** do_remap/do_os_response or do_global_* or later. -**description:** This function invokes ``TSMgmtConfigFileAdd`` API. +**description:** This function invokes ``TSMgmtConfigFileAdd`` API. :: From 1d39d5f4139d7aa6b87f9f810c2fcf797f7fca85 Mon Sep 17 00:00:00 2001 From: Kit Chan Date: Wed, 6 Jan 2021 23:12:44 -0800 Subject: [PATCH 5/5] fix typo --- plugins/lua/ts_lua_http.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/lua/ts_lua_http.c b/plugins/lua/ts_lua_http.c index 370befca163..3cd4aec0f91 100644 --- a/plugins/lua/ts_lua_http.c +++ b/plugins/lua/ts_lua_http.c @@ -817,7 +817,7 @@ ts_lua_http_server_transaction_count(lua_State *L) GET_HTTP_CONTEXT(http_ctx, L); - int n = TSHttpTxnServerSsnTransactonCount(http_ctx->txnp); + int n = TSHttpTxnServerSsnTransactionCount(http_ctx->txnp); lua_pushnumber(L, n); return 1;