Repository: trafficserver Updated Branches: refs/heads/master e35029116 -> 01be17ecd
TS-2555 adding example and documentation Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/01be17ec Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/01be17ec Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/01be17ec Branch: refs/heads/master Commit: 01be17ecd6ec47b493366feb755db9998bb9146e Parents: e350291 Author: Kit Chan <kic...@apache.org> Authored: Wed Apr 16 00:38:25 2014 -0700 Committer: Kit Chan <kic...@apache.org> Committed: Wed Apr 16 00:38:25 2014 -0700 ---------------------------------------------------------------------- doc/reference/plugins/ts_lua.en.rst | 77 +++++++++++++------- plugins/experimental/ts_lua/example/hdr.lua | 37 ---------- .../ts_lua/example/test_global_hdr.lua | 37 ++++++++++ .../experimental/ts_lua/example/test_hdr.lua | 37 ++++++++++ 4 files changed, 125 insertions(+), 63 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/01be17ec/doc/reference/plugins/ts_lua.en.rst ---------------------------------------------------------------------- diff --git a/doc/reference/plugins/ts_lua.en.rst b/doc/reference/plugins/ts_lua.en.rst index fbf7674..ebcb88c 100644 --- a/doc/reference/plugins/ts_lua.en.rst +++ b/doc/reference/plugins/ts_lua.en.rst @@ -23,16 +23,6 @@ ts-lua Plugin Embed the Power of Lua into TrafficServer. -Status -====== - -This module is being tested under our production environment. - -Version -======= - -ts-lua has not been released yet. - Synopsis ======== @@ -242,18 +232,52 @@ Synopsis return 0 end +**test_global_hdr.lua** + +:: + + + function send_response() + ts.client_response.header['Rhost'] = ts.ctx['rhost'] + return 0 + end + + function do_global_read_request() + local req_host = ts.client_request.header.Host + + if req_host == nil then + return 0 + end + + ts.ctx['rhost'] = string.reverse(req_host) + + ts.hook(TS_LUA_HOOK_SEND_RESPONSE_HDR, send_response) + + return 0 + end + Description =========== -This module embeds Lua, via the standard Lua 5.1 interpreter, into Apache Traffic Server. This module acts as remap plugin of Traffic Server, so we should realize **'do_remap'** function in each lua script. We can write this in remap.config::: +This module embeds Lua, into Apache Traffic Server. This module acts as remap plugin of Traffic Server. In this case we +should provide **'do_remap'** function in each lua script. We can write this in remap.config::: + + map http://a.tbcdn.cn/ http://inner.tbcdn.cn/ @plugin=/usr/lib64/trafficserver/plugins/tslua.so +@pparam=/etc/trafficserver/script/test_hdr.lua - map http://a.tbcdn.cn/ http://inner.tbcdn.cn/ @plugin=/usr/lib64/trafficserver/plugins/tslua.so @pparam=/etc/trafficserver/script/test_hdr.lua +Sometimes we want to receive parameters and process them in the script, we should realize **'\__init__'** function in +the lua script(sethost.lua is a reference), and we can write this in remap.config::: -Sometimes we want to receive parameters and process them in the script, we should realize **'\__init__'** function in the lua script(sethost.lua is a reference), and we can write this in remap.config::: + map http://a.tbcdn.cn/ http://inner.tbcdn.cn/ @plugin=/usr/lib64/trafficserver/plugins/tslua.so +@pparam=/etc/trafficserver/script/sethost.lua @pparam=img03.tbcdn.cn - map http://a.tbcdn.cn/ http://inner.tbcdn.cn/ @plugin=/usr/lib64/trafficserver/plugins/tslua.so @pparam=/etc/trafficserver/script/sethost.lua @pparam=img03.tbcdn.cn +This module can also act as a global plugin of Traffic Server. In this case we should provide one of these functions +(**'do_global_read_request'**, **'do_global_send_request'**, **'do_global_read_response'**, +**'do_global_send_response'**, **'do_global_cache_lookup_complete'**) in each lua script. We can write this in +plugin.config::: + tslua.so /etc/trafficserver/script/test_global_hdr.lua TS API for Lua @@ -262,7 +286,8 @@ TS API for Lua Introduction ------------ -The API is exposed to Lua in the form of one standard packages ts. This package is in the default global scope and is always available within lua script. +The API is exposed to Lua in the form of one standard packages ts. This package is in the default global scope and is +always available within lua script. @@ -306,7 +331,7 @@ ts.hook ------- **syntax**: *ts.hook(HOOK_POINT, FUNCTION)* -**context**: do_remap or later +**context**: do_remap/do_global_*/later **description**: Hooks are points in http transaction processing where we can step in and do some work. FUNCTION will be called when the http transaction steps in to HOOK_POINT. @@ -323,7 +348,7 @@ Here is an example::: Hook point constants -------------------- -**context**: do_remap or later +**context**: do_remap/do_global_*/later TS_LUA_HOOK_CACHE_LOOKUP_COMPLETE TS_LUA_HOOK_SEND_REQUEST_HDR @@ -339,7 +364,7 @@ ts.ctx ------ **syntax**: *ts.ctx[KEY]* -**context**: do_remap or later +**context**: do_remap/do_global_*/later **description**: This table can be used to store per-request Lua context data and has a life time identical to the current request. @@ -418,7 +443,7 @@ ts.http.resp_cache_transformed ------------------------------ **syntax**: *ts.http.resp_cache_transformed(BOOL)* -**context**: do_remap or later +**context**: do_remap/do_global_*/later **description**: This function can be used to tell trafficserver whether to cache the transformed data. @@ -446,7 +471,7 @@ ts.http.resp_cache_untransformed -------------------------------- **syntax**: *ts.http.resp_cache_untransformed(BOOL)* -**context**: do_remap or later +**context**: do_remap/do_global_*/later **description**: This function can be used to tell trafficserver whether to cache the untransformed data. @@ -474,7 +499,7 @@ ts.client_request.client_addr.get_addr -------------------------------------- **syntax**: *ts.client_request.client_addr.get_addr()* -**context**: do_remap or later +**context**: do_remap/do_global_*/later **description**: This function can be used to get socket address of the client. @@ -492,7 +517,7 @@ ts.client_request.get_method ---------------------------- **syntax**: *ts.client_request.get_method()* -**context**: do_remap or later +**context**: do_remap/do_global_*/later **description**: This function can be used to retrieve the current request's request method name. String like "GET" or "POST" is returned. @@ -511,7 +536,7 @@ ts.client_request.get_url ------------------------- **syntax**: *ts.client_request.get_url()* -**context**: do_remap or later +**context**: do_remap/do_global_*/later **description**: This function can be used to retrieve the whole request's url. @@ -520,7 +545,7 @@ ts.client_request.get_uri ------------------------- **syntax**: *ts.client_request.get_uri()* -**context**: do_remap or later +**context**: do_remap/do_global_*/later **description**: This function can be used to retrieve the request's path. @@ -538,7 +563,7 @@ ts.client_request.get_uri_args ------------------------------ **syntax**: *ts.client_request.get_uri_args()* -**context**: do_remap or later +**context**: do_remap/do_global_*/later **description**: This function can be used to retrieve the request's query string. @@ -560,7 +585,7 @@ ts.client_request.header.HEADER **syntax**: *VALUE = ts.client_request.header.HEADER* -**context**: do_remap or later +**context**: do_remap/do_global_*/later **description**: Set, add to, clear or get the current request's HEADER. http://git-wip-us.apache.org/repos/asf/trafficserver/blob/01be17ec/plugins/experimental/ts_lua/example/hdr.lua ---------------------------------------------------------------------- diff --git a/plugins/experimental/ts_lua/example/hdr.lua b/plugins/experimental/ts_lua/example/hdr.lua deleted file mode 100644 index b79a63b..0000000 --- a/plugins/experimental/ts_lua/example/hdr.lua +++ /dev/null @@ -1,37 +0,0 @@ --- 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. - - -function send_response() - ts.client_response.header['Rhost'] = ts.ctx['rhost'] - return 0 -end - - -function do_remap() - local req_host = ts.client_request.header.Host - - if req_host == nil then - return 0 - end - - ts.ctx['rhost'] = string.reverse(req_host) - - ts.hook(TS_LUA_HOOK_SEND_RESPONSE_HDR, send_response) - - return 0 -end - http://git-wip-us.apache.org/repos/asf/trafficserver/blob/01be17ec/plugins/experimental/ts_lua/example/test_global_hdr.lua ---------------------------------------------------------------------- diff --git a/plugins/experimental/ts_lua/example/test_global_hdr.lua b/plugins/experimental/ts_lua/example/test_global_hdr.lua new file mode 100644 index 0000000..012dbcf --- /dev/null +++ b/plugins/experimental/ts_lua/example/test_global_hdr.lua @@ -0,0 +1,37 @@ +-- 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. + + +function send_response() + ts.client_response.header['Rhost'] = ts.ctx['rhost'] + return 0 +end + + +function do_global_read_request() + local req_host = ts.client_request.header.Host + + if req_host == nil then + return 0 + end + + ts.ctx['rhost'] = string.reverse(req_host) + + ts.hook(TS_LUA_HOOK_SEND_RESPONSE_HDR, send_response) + + return 0 +end + http://git-wip-us.apache.org/repos/asf/trafficserver/blob/01be17ec/plugins/experimental/ts_lua/example/test_hdr.lua ---------------------------------------------------------------------- diff --git a/plugins/experimental/ts_lua/example/test_hdr.lua b/plugins/experimental/ts_lua/example/test_hdr.lua new file mode 100644 index 0000000..b79a63b --- /dev/null +++ b/plugins/experimental/ts_lua/example/test_hdr.lua @@ -0,0 +1,37 @@ +-- 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. + + +function send_response() + ts.client_response.header['Rhost'] = ts.ctx['rhost'] + return 0 +end + + +function do_remap() + local req_host = ts.client_request.header.Host + + if req_host == nil then + return 0 + end + + ts.ctx['rhost'] = string.reverse(req_host) + + ts.hook(TS_LUA_HOOK_SEND_RESPONSE_HDR, send_response) + + return 0 +end +