This is an automated email from the ASF dual-hosted git repository.

spacewander pushed a commit to branch release/2.13
in repository https://gitbox.apache.org/repos/asf/apisix.git

commit 7268fe7aa689aa08a5113f73d627db42a63d1b0f
Author: 罗泽轩 <[email protected]>
AuthorDate: Wed Jul 13 13:49:54 2022 +0800

    fix(http-logger): avoid empty Authorization header by default (#7444)
    
    Signed-off-by: spacewander <[email protected]>
---
 apisix/plugins/http-logger.lua        |  2 +-
 docs/en/latest/plugins/http-logger.md | 23 +++++++-------
 docs/zh/latest/plugins/http-logger.md |  2 +-
 t/plugin/http-logger2.t               | 56 +++++++++++++++++++++++++++++++++++
 4 files changed, 69 insertions(+), 14 deletions(-)

diff --git a/apisix/plugins/http-logger.lua b/apisix/plugins/http-logger.lua
index 3d3ebdfb4..93cd8c9be 100644
--- a/apisix/plugins/http-logger.lua
+++ b/apisix/plugins/http-logger.lua
@@ -33,7 +33,7 @@ local schema = {
     type = "object",
     properties = {
         uri = core.schema.uri_def,
-        auth_header = {type = "string", default = ""},
+        auth_header = {type = "string"},
         timeout = {type = "integer", minimum = 1, default = 3},
         include_req_body = {type = "boolean", default = false},
         include_resp_body = {type = "boolean", default = false},
diff --git a/docs/en/latest/plugins/http-logger.md 
b/docs/en/latest/plugins/http-logger.md
index 0cfffefc5..673ba001b 100644
--- a/docs/en/latest/plugins/http-logger.md
+++ b/docs/en/latest/plugins/http-logger.md
@@ -29,18 +29,17 @@ This will provide the ability to send Log data requests as 
JSON objects to Monit
 
 ## Attributes
 
-| Name             | Type    | Requirement | Default       | Valid   | 
Description                                                                     
         |
-| ---------------- | ------- | ----------- | ------------- | ------- | 
----------------------------------------------------------------------------------------
 |
-| uri              | string  | required    |               |         | The URI 
of the `HTTP/HTTPS` server.                                                     
 |
-| auth_header      | string  | optional    | ""            |         | Any 
authorization headers.                                                          
     |
-| timeout          | integer | optional    | 3             | [1,...] | Time to 
keep the connection alive after sending a request.                              
 |
-| name             | string  | optional    | "http logger" |         | A 
unique identifier to identity the logger.                                       
       |
-|  include_req_body | boolean | optional    | false         | [false, true] | 
Whether to include the request body. false: indicates that the requested body 
is not included; true: indicates that the requested body is included. Note: if 
the request body is too big to be kept in the memory, it can't be logged due to 
Nginx's limitation. |
-| include_resp_body| boolean | optional    | false         | [false, true] | 
Whether to include the response body. The response body is included if and only 
if it is `true`. |
-| include_resp_body_expr  | array  | optional    |          |         | When 
`include_resp_body` is true, control the behavior based on the result of the 
[lua-resty-expr](https://github.com/api7/lua-resty-expr) expression. If 
present, only log the response body when the result is true. |
-| concat_method    | string  | optional    | "json"        | ["json", 
"new_line"] | Enum type: `json` and `new_line`. **json**: use `json.encode` for 
all pending logs. **new_line**: use `json.encode` for each pending log and 
concat them with "\n" line. |
-| ssl_verify       | boolean | optional    | false          | [false, true] | 
Whether to verify certificate. |
-
+| Name                   | Type    | Required | Default       | Valid values   
      | Description                                                             
                                                                                
                                                                 |
+| ---------------------- | ------- | -------- | ------------- | 
-------------------- | 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 |
+| uri                    | string  | True     |               |                
      | URI of the HTTP/HTTPS server.                                           
                                                                                
                                                                 |
+| auth_header            | string  | False    |               |                
      | Authorization headers if required.                                      
                                                                                
                                                                 |
+| timeout                | integer | False    | 3             | [1,...]        
      | Time to keep the connection alive for after sending a request.          
                                                                                
                                                                 |
+| name                   | string  | False    | "http logger" |                
      | Unique identifier to identify the logger.                               
                                                                                
                                                                 |
+| include_req_body       | boolean | False    | false         | [false, true]  
      | When set to `true` includes the request body in the log. If the request 
body is too big to be kept in the memory, it can't be logged due to Nginx's 
limitations.                                                         |
+| include_resp_body      | boolean | False    | false         | [false, true]  
      | When set to `true` includes the response body in the log.               
                                                                                
                                                                 |
+| include_resp_body_expr | array   | False    |               |                
      | When the `include_resp_body` attribute is set to `true`, use this to 
filter based on [lua-resty-expr](https://github.com/api7/lua-resty-expr). If 
present, only logs the response if the expression evaluates to `true`. |
+| concat_method          | string  | False    | "json"        | ["json", 
"new_line"] | Sets how to concatenate logs. When set to `json`, uses 
`json.encode` for all pending logs and when set to `new_line`, also uses 
`json.encode` but uses the newline (`\n`) to concatenate lines.                 
         |
+| ssl_verify             | boolean | False    | false         | [false, true]  
      | When set to `true` verifies the SSL certificate.                        
                                                                                
                                                                 |
 The plugin supports the use of batch processors to aggregate and process 
entries(logs/data) in a batch. This avoids frequent data submissions by the 
plugin, which by default the batch processor submits data every `5` seconds or 
when the data in the queue reaches `1000`. For information or custom batch 
processor parameter settings, see 
[Batch-Processor](../batch-processor.md#configuration) configuration section.
 
 ## How To Enable
diff --git a/docs/zh/latest/plugins/http-logger.md 
b/docs/zh/latest/plugins/http-logger.md
index ddb270b20..e0d384761 100644
--- a/docs/zh/latest/plugins/http-logger.md
+++ b/docs/zh/latest/plugins/http-logger.md
@@ -32,7 +32,7 @@ title: http-logger
 | 名称             | 类型    | 必选项 | 默认值        | 有效值  | 描述                        
                     |
 | ---------------- | ------- | ------ | ------------- | ------- | 
------------------------------------------------ |
 | uri              | string  | 必须   |               |         | `HTTP/HTTPS` 
服务器的 URI。                   |
-| auth_header      | string  | 可选   | ""            |         | 授权头部。          
                          |
+| auth_header      | string  | 可选   |               |         | 授权头部。          
                          |
 | timeout          | integer | 可选   | 3             | [1,...] | 
发送请求后保持连接活动的时间。                   |
 | name             | string  | 可选   | "http logger" |         | 标识 logger 
的唯一标识符。                     |
 | include_req_body | boolean | 可选   | false         | [false, true] | 是否包括请求 
body。false: 表示不包含请求的 body ; true: 表示包含请求的 body 。 |
diff --git a/t/plugin/http-logger2.t b/t/plugin/http-logger2.t
index 688bc8bc3..f99c11483 100644
--- a/t/plugin/http-logger2.t
+++ b/t/plugin/http-logger2.t
@@ -42,6 +42,13 @@ add_block_preprocessor(sub {
             }
         }
 
+        location /http-logger/Authorization {
+            content_by_lua_block {
+                ngx.log(ngx.WARN, "received Authorization header: [", 
ngx.var.http_authorization, "]")
+                ngx.say("OK")
+            }
+        }
+
         location /http-logger/center {
             content_by_lua_block {
                 local function str_split(str, reps)
@@ -253,3 +260,52 @@ test-http-logger-response
 request.body:test-http-logger-request
 response.body:test-http-logger-response
 --- wait: 1.5
+
+
+
+=== TEST 8: test default Authorization header sent to the log server
+--- config
+    location /t {
+        content_by_lua_block {
+            local t = require("lib.test_admin").test
+            local code, body = t('/apisix/admin/routes/1',
+                 ngx.HTTP_PUT,
+                 [[{
+                        "methods": ["POST"],
+                        "plugins": {
+                            "http-logger": {
+                                "uri": 
"http://127.0.0.1:12001/http-logger/Authorization";,
+                                "batch_max_size": 1,
+                                "max_retry_count": 1,
+                                "retry_delay": 2,
+                                "buffer_duration": 2,
+                                "inactive_timeout": 2
+                            }
+                        },
+                        "upstream": {
+                            "nodes": {
+                                "127.0.0.1:12001": 1
+                            },
+                            "type": "roundrobin"
+                        },
+                        "uri": "/http-logger/test"
+                }]])
+
+            if code >= 300 then
+                ngx.status = code
+            end
+            ngx.say(body)
+        }
+    }
+--- response_body
+passed
+
+
+
+=== TEST 9: hit
+--- request
+POST /http-logger/test
+test-http-logger-request
+--- error_log
+received Authorization header: [nil]
+--- wait: 1.5

Reply via email to