You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by yu...@apache.org on 2013/12/16 08:12:42 UTC

git commit: TS-2335: add features for ts_lua

Updated Branches:
  refs/heads/master 5b73f528d -> 7429793dc


TS-2335: add features for ts_lua

1) inject remap vars
2) free memory which is allocated by TSUrlStringGet
3) add ts.client_request.get_pristine_url()

Signed-off-by: Quehan <qu...@taobao.com>
Signed-off-by: Yunkai Zhang <qi...@taobao.com>


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/7429793d
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/7429793d
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/7429793d

Branch: refs/heads/master
Commit: 7429793dcc1e2715452723bd5d401cb6c114bec3
Parents: 5b73f52
Author: Quehan <qu...@taobao.com>
Authored: Sun Dec 15 00:48:21 2013 +0800
Committer: Yunkai Zhang <qi...@taobao.com>
Committed: Mon Dec 16 15:10:01 2013 +0800

----------------------------------------------------------------------
 plugins/experimental/ts_lua/Makefile.am         |  2 +-
 .../experimental/ts_lua/ts_lua_client_request.c | 45 ++++++++++++-
 plugins/experimental/ts_lua/ts_lua_remap.c      | 67 ++++++++++++++++++++
 plugins/experimental/ts_lua/ts_lua_remap.h      | 28 ++++++++
 plugins/experimental/ts_lua/ts_lua_util.c       |  3 +
 5 files changed, 142 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/7429793d/plugins/experimental/ts_lua/Makefile.am
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/Makefile.am b/plugins/experimental/ts_lua/Makefile.am
index f1c1b27..a519578 100644
--- a/plugins/experimental/ts_lua/Makefile.am
+++ b/plugins/experimental/ts_lua/Makefile.am
@@ -29,7 +29,7 @@ tslua_la_CPPFLAGS = \
 pkglib_LTLIBRARIES = tslua.la
 
 tslua_la_LIBADD = $(LUA_LIBS)
-tslua_la_SOURCES = ts_lua.c ts_lua_cached_response.c ts_lua_client_request.c ts_lua_client_response.c ts_lua_context.c ts_lua_hook.c ts_lua_http.c ts_lua_http_intercept.c ts_lua_log.c ts_lua_misc.c ts_lua_server_request.c ts_lua_server_response.c ts_lua_transform.c ts_lua_util.c
+tslua_la_SOURCES = ts_lua.c ts_lua_cached_response.c ts_lua_client_request.c ts_lua_client_response.c ts_lua_context.c ts_lua_hook.c ts_lua_http.c ts_lua_http_intercept.c ts_lua_log.c ts_lua_misc.c ts_lua_server_request.c ts_lua_server_response.c ts_lua_transform.c ts_lua_util.c ts_lua_remap.c
 tslua_la_LDFLAGS = $(TS_PLUGIN_LDFLAGS)
 
 endif

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/7429793d/plugins/experimental/ts_lua/ts_lua_client_request.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_client_request.c b/plugins/experimental/ts_lua/ts_lua_client_request.c
index 2dffed8..9512486 100644
--- a/plugins/experimental/ts_lua/ts_lua_client_request.c
+++ b/plugins/experimental/ts_lua/ts_lua_client_request.c
@@ -26,6 +26,7 @@ static void ts_lua_inject_client_request_server_addr_api(lua_State *L);
 static int ts_lua_client_request_header_get(lua_State *L);
 static int ts_lua_client_request_header_set(lua_State *L);
 static int ts_lua_client_request_get_url(lua_State *L);
+static int ts_lua_client_request_get_pristine_url(lua_State *L);
 static int ts_lua_client_request_get_uri(lua_State *L);
 static int ts_lua_client_request_set_uri(lua_State *L);
 static int ts_lua_client_request_set_uri_args(lua_State *L);
@@ -206,6 +207,9 @@ ts_lua_inject_client_request_url_api(lua_State *L)
 {
     lua_pushcfunction(L, ts_lua_client_request_get_url);
     lua_setfield(L, -2, "get_url");
+
+    lua_pushcfunction(L, ts_lua_client_request_get_pristine_url);
+    lua_setfield(L, -2, "get_pristine_url");
 }
 
 static void
@@ -221,7 +225,7 @@ ts_lua_inject_client_request_uri_api(lua_State *L)
 static int
 ts_lua_client_request_get_url(lua_State *L)
 {
-    const char  *url;
+    char        *url;
     int         url_len;
 
     ts_lua_http_ctx  *http_ctx;
@@ -230,7 +234,44 @@ ts_lua_client_request_get_url(lua_State *L)
 
     url = TSUrlStringGet(http_ctx->client_request_bufp, http_ctx->client_request_url, &url_len);
 
-    lua_pushlstring(L, url, url_len);
+    if (url) {
+        lua_pushlstring(L, url, url_len);
+        TSfree(url);
+
+    } else {
+        lua_pushnil(L);
+    }
+
+    return 1;
+}
+
+static int
+ts_lua_client_request_get_pristine_url(lua_State *L)
+{
+    char        *url;
+    int         url_len;
+
+    TSMBuffer   bufp;
+    TSMLoc      url_loc;
+
+    ts_lua_http_ctx  *http_ctx;
+
+    http_ctx = ts_lua_get_http_ctx(L);
+
+    if (TSHttpTxnPristineUrlGet(http_ctx->txnp, &bufp, &url_loc) != TS_SUCCESS)
+        return 0;
+
+    url = TSUrlStringGet(bufp, url_loc, &url_len);
+
+    if (url) {
+        lua_pushlstring(L, url, url_len);
+        TSfree(url);
+
+    } else {
+        lua_pushnil(L);
+    }
+
+    TSHandleMLocRelease(bufp, NULL, url_loc);
 
     return 1;
 }

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/7429793d/plugins/experimental/ts_lua/ts_lua_remap.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_remap.c b/plugins/experimental/ts_lua/ts_lua_remap.c
new file mode 100644
index 0000000..d6efaaf
--- /dev/null
+++ b/plugins/experimental/ts_lua/ts_lua_remap.c
@@ -0,0 +1,67 @@
+/*
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+ 
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+*/
+
+
+#include "ts_lua_remap.h"
+
+
+typedef enum {
+    TS_LUA_REMAP_NO_REMAP = 0,
+    TS_LUA_REMAP_DID_REMAP,
+    TS_LUA_REMAP_NO_REMAP_STOP,
+    TS_LUA_REMAP_DID_REMAP_STOP,
+    TS_LUA_REMAP_ERROR = -1,
+} TSLuaRemapStatus;
+
+int ts_lua_remap_status_id[] = {
+    TS_LUA_REMAP_NO_REMAP,
+    TS_LUA_REMAP_DID_REMAP,
+    TS_LUA_REMAP_NO_REMAP_STOP,
+    TS_LUA_REMAP_DID_REMAP_STOP,
+    TS_LUA_REMAP_ERROR,
+};
+
+char * ts_lua_remap_status_string[] = {
+    "TS_LUA_REMAP_NO_REMAP",
+    "TS_LUA_REMAP_DID_REMAP",
+    "TS_LUA_REMAP_NO_REMAP_STOP",
+    "TS_LUA_REMAP_DID_REMAP_STOP",
+    "TS_LUA_REMAP_ERROR",
+};
+
+
+static void ts_lua_inject_remap_variables(lua_State *L);
+
+
+void
+ts_lua_inject_remap_api(lua_State *L)
+{
+    ts_lua_inject_remap_variables(L);
+}
+
+static void
+ts_lua_inject_remap_variables(lua_State *L)
+{
+    int     i;
+
+    for (i = 0; i < sizeof(ts_lua_remap_status_string)/sizeof(char*); i++) {
+        lua_pushinteger(L, ts_lua_remap_status_id[i]);
+        lua_setglobal(L, ts_lua_remap_status_string[i]);
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/7429793d/plugins/experimental/ts_lua/ts_lua_remap.h
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_remap.h b/plugins/experimental/ts_lua/ts_lua_remap.h
new file mode 100644
index 0000000..1dc84ed
--- /dev/null
+++ b/plugins/experimental/ts_lua/ts_lua_remap.h
@@ -0,0 +1,28 @@
+/*
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+ 
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+*/
+
+
+#ifndef _TS_LUA_REMAP_H
+#define _TS_LUA_REMAP_H
+
+#include "ts_lua_common.h"
+
+void ts_lua_inject_remap_api(lua_State *L);
+
+#endif
+

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/7429793d/plugins/experimental/ts_lua/ts_lua_util.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_util.c b/plugins/experimental/ts_lua/ts_lua_util.c
index b79b7da..ea20fa9 100644
--- a/plugins/experimental/ts_lua/ts_lua_util.c
+++ b/plugins/experimental/ts_lua/ts_lua_util.c
@@ -18,6 +18,7 @@
 
 
 #include "ts_lua_util.h"
+#include "ts_lua_remap.h"
 #include "ts_lua_client_request.h"
 #include "ts_lua_server_request.h"
 #include "ts_lua_server_response.h"
@@ -186,6 +187,8 @@ ts_lua_inject_ts_api(lua_State *L)
 {
     lua_newtable(L);
 
+    ts_lua_inject_remap_api(L);
+
     ts_lua_inject_client_request_api(L);
     ts_lua_inject_server_request_api(L);
     ts_lua_inject_server_response_api(L);


Re: git commit: TS-2335: add features for ts_lua

Posted by Yunkai Zhang <yu...@gmail.com>.
On Tue, Dec 17, 2013 at 12:47 AM, Igor Galić <i....@brainsware.org> wrote:

>
>
> ----- Original Message -----
> > Updated Branches:
> >   refs/heads/master 5b73f528d -> 7429793dc
> >
> >
> > TS-2335: add features for ts_lua
> >
> > 1) inject remap vars
> > 2) free memory which is allocated by TSUrlStringGet
> > 3) add ts.client_request.get_pristine_url()
> >
> > Signed-off-by: Quehan <qu...@taobao.com>
> > Signed-off-by: Yunkai Zhang <qi...@taobao.com>
> >
> >
> > Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
> > Commit:
> http://git-wip-us.apache.org/repos/asf/trafficserver/commit/7429793d
> > Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/7429793d
> > Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/7429793d
> >
> > Branch: refs/heads/master
> > Commit: 7429793dcc1e2715452723bd5d401cb6c114bec3
> > Parents: 5b73f52
> > Author: Quehan <qu...@taobao.com>
> > Authored: Sun Dec 15 00:48:21 2013 +0800
> > Committer: Yunkai Zhang <qi...@taobao.com>
> > Committed: Mon Dec 16 15:10:01 2013 +0800
> >
> > ----------------------------------------------------------------------
> >  plugins/experimental/ts_lua/Makefile.am         |  2 +-
> >  .../experimental/ts_lua/ts_lua_client_request.c | 45 ++++++++++++-
> >  plugins/experimental/ts_lua/ts_lua_remap.c      | 67
> ++++++++++++++++++++
> >  plugins/experimental/ts_lua/ts_lua_remap.h      | 28 ++++++++
> >  plugins/experimental/ts_lua/ts_lua_util.c       |  3 +
> >  5 files changed, 142 insertions(+), 3 deletions(-)
> > ----------------------------------------------------------------------
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/7429793d/plugins/experimental/ts_lua/Makefile.am
> > ----------------------------------------------------------------------
> > diff --git a/plugins/experimental/ts_lua/Makefile.am
> > b/plugins/experimental/ts_lua/Makefile.am
> > index f1c1b27..a519578 100644
> > --- a/plugins/experimental/ts_lua/Makefile.am
> > +++ b/plugins/experimental/ts_lua/Makefile.am
> > @@ -29,7 +29,7 @@ tslua_la_CPPFLAGS = \
> >  pkglib_LTLIBRARIES = tslua.la
> >
> >  tslua_la_LIBADD = $(LUA_LIBS)
> > -tslua_la_SOURCES = ts_lua.c ts_lua_cached_response.c
> ts_lua_client_request.c
> > ts_lua_client_response.c ts_lua_context.c ts_lua_hook.c ts_lua_http.c
> > ts_lua_http_intercept.c ts_lua_log.c ts_lua_misc.c
> ts_lua_server_request.c
> > ts_lua_server_response.c ts_lua_transform.c ts_lua_util.c
> > +tslua_la_SOURCES = ts_lua.c ts_lua_cached_response.c
> ts_lua_client_request.c
> > ts_lua_client_response.c ts_lua_context.c ts_lua_hook.c ts_lua_http.c
> > ts_lua_http_intercept.c ts_lua_log.c ts_lua_misc.c
> ts_lua_server_request.c
> > ts_lua_server_response.c ts_lua_transform.c ts_lua_util.c ts_lua_remap.c
> >  tslua_la_LDFLAGS = $(TS_PLUGIN_LDFLAGS)
> >
>
> For readability reasons we should break this down to one file per line,
> sorted alphabetically.
>


Agree, I'll ask @Quehan to refine it.

Thanks.


>
>
> --
> Igor Galić
>
> Tel: +43 (0) 664 886 22 883
> Mail: i.galic@brainsware.org
> URL: http://brainsware.org/
> GPG: 8716 7A9F 989B ABD5 100F  4008 F266 55D6 2998 1641
>
>


-- 
Yunkai Zhang
Work at Taobao

Re: git commit: TS-2335: add features for ts_lua

Posted by Igor Galić <i....@brainsware.org>.

----- Original Message -----
> Updated Branches:
>   refs/heads/master 5b73f528d -> 7429793dc
> 
> 
> TS-2335: add features for ts_lua
> 
> 1) inject remap vars
> 2) free memory which is allocated by TSUrlStringGet
> 3) add ts.client_request.get_pristine_url()
> 
> Signed-off-by: Quehan <qu...@taobao.com>
> Signed-off-by: Yunkai Zhang <qi...@taobao.com>
> 
> 
> Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
> Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/7429793d
> Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/7429793d
> Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/7429793d
> 
> Branch: refs/heads/master
> Commit: 7429793dcc1e2715452723bd5d401cb6c114bec3
> Parents: 5b73f52
> Author: Quehan <qu...@taobao.com>
> Authored: Sun Dec 15 00:48:21 2013 +0800
> Committer: Yunkai Zhang <qi...@taobao.com>
> Committed: Mon Dec 16 15:10:01 2013 +0800
> 
> ----------------------------------------------------------------------
>  plugins/experimental/ts_lua/Makefile.am         |  2 +-
>  .../experimental/ts_lua/ts_lua_client_request.c | 45 ++++++++++++-
>  plugins/experimental/ts_lua/ts_lua_remap.c      | 67 ++++++++++++++++++++
>  plugins/experimental/ts_lua/ts_lua_remap.h      | 28 ++++++++
>  plugins/experimental/ts_lua/ts_lua_util.c       |  3 +
>  5 files changed, 142 insertions(+), 3 deletions(-)
> ----------------------------------------------------------------------
> 
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/7429793d/plugins/experimental/ts_lua/Makefile.am
> ----------------------------------------------------------------------
> diff --git a/plugins/experimental/ts_lua/Makefile.am
> b/plugins/experimental/ts_lua/Makefile.am
> index f1c1b27..a519578 100644
> --- a/plugins/experimental/ts_lua/Makefile.am
> +++ b/plugins/experimental/ts_lua/Makefile.am
> @@ -29,7 +29,7 @@ tslua_la_CPPFLAGS = \
>  pkglib_LTLIBRARIES = tslua.la
>  
>  tslua_la_LIBADD = $(LUA_LIBS)
> -tslua_la_SOURCES = ts_lua.c ts_lua_cached_response.c ts_lua_client_request.c
> ts_lua_client_response.c ts_lua_context.c ts_lua_hook.c ts_lua_http.c
> ts_lua_http_intercept.c ts_lua_log.c ts_lua_misc.c ts_lua_server_request.c
> ts_lua_server_response.c ts_lua_transform.c ts_lua_util.c
> +tslua_la_SOURCES = ts_lua.c ts_lua_cached_response.c ts_lua_client_request.c
> ts_lua_client_response.c ts_lua_context.c ts_lua_hook.c ts_lua_http.c
> ts_lua_http_intercept.c ts_lua_log.c ts_lua_misc.c ts_lua_server_request.c
> ts_lua_server_response.c ts_lua_transform.c ts_lua_util.c ts_lua_remap.c
>  tslua_la_LDFLAGS = $(TS_PLUGIN_LDFLAGS)
>  

For readability reasons we should break this down to one file per line, sorted alphabetically.


-- 
Igor Galić

Tel: +43 (0) 664 886 22 883
Mail: i.galic@brainsware.org
URL: http://brainsware.org/
GPG: 8716 7A9F 989B ABD5 100F  4008 F266 55D6 2998 1641