Created
November 3, 2019 15:39
-
-
Save pganti/c1327df238ddf933d4a1da477262a360 to your computer and use it in GitHub Desktop.
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
| when CLIENT_ACCEPTED { | |
| set req 0 | |
| TCP::collect 7 | |
| } | |
| when CLIENT_DATA { | |
| if { [string range [TCP::payload] 0 6] equals "CONNECT" } { | |
| set lines [split [TCP::payload] "\n"] | |
| log local0.info "lines = $lines" | |
| set m 0 | |
| for {set i 1} {$i < [llength $lines]} {incr i} { | |
| if { [lindex $lines $i] equals "\r" and $m == 0 } { | |
| set m $i | |
| incr m | |
| } else { | |
| set items [split [lindex $lines $i] ": "] | |
| if { [lindex $items 0] equals "X-Nst-Real-IP" } { | |
| set cip [lindex $items 2] | |
| } | |
| } | |
| } | |
| TCP::release | |
| } else { | |
| TCP::release | |
| } | |
| } | |
| when HTTP_REQUEST { | |
| set heads [HTTP::header names] | |
| foreach head $heads { | |
| HTTP::header remove $head | |
| } | |
| HTTP::header insert X-Nst-Real-IP $cip | |
| set n $m | |
| incr n | |
| set j [llength $lines] | |
| incr j -1 | |
| for {set i $n} {$i < $j} {incr i} { | |
| if { [lindex $lines $i] ne "\r" } { | |
| set items [split [lindex $lines $i] ": "] | |
| HTTP::header insert [lindex $items 0] [lindex $items 2] | |
| } | |
| } | |
| set request [HTTP::request] | |
| log local0.info "[HTTP::request]" | |
| } | |
| when HTTP_RESPONSE { | |
| log local0.info "req = $req" | |
| if { [HTTP::status] != 200 and $req == 0 } { | |
| incr req | |
| log local0.info "req = $req" | |
| set request [string replace $request 0 17 [lindex $lines $m]] | |
| log local0.info "$request" | |
| HTTP::retry $request | |
| } | |
| } |
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
| when HTTP_REQUEST { | |
| set headers [HTTP::header names] | |
| foreach header_name $headers { | |
| if { [string length [HTTP::header $header_name]] > 32768 }{ | |
| log local0. "HTTP header [HTTP::header $header_name] ([string length [HTTP::header $header_name]]) is culprit" | |
| } | |
| } | |
| } | |
| when HTTP_RESPONSE { | |
| set headers [HTTP::header names] | |
| foreach header_name $headers { | |
| if { [string length [HTTP::header $header_name]] > 32768 }{ | |
| log local0. "HTTP header [HTTP::header $header_name] ([string length [HTTP::header $header_name]]) is culprit" | |
| } | |
| } | |
| } |
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
| when CLIENT_ACCEPTED { | |
| set tcp_start_time [clock clicks -milliseconds] | |
| } | |
| when HTTP_REQUEST { | |
| set http_request_time [clock clicks -milliseconds] | |
| } | |
| when HTTP_RESPONSE { | |
| set http_response_time [ clock clicks -milliseconds ] | |
| } | |
| when CLIENT_CLOSED { | |
| set tcp_end_time [ clock clicks -milliseconds ] | |
| log local0. "HTTP request/response difference: $http_response_time - $http_request_time = [expr $http_response_time - $http_request_time]" | |
| log local0. "Total connection time: $tcp_end_time - $tcp_start_time = [expr ($tcp_end_time - $tcp_start_time)]" | |
| } |
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
| when HTTP_REQUEST { | |
| if { [HTTP::header exists "X-Want-Timing"] } | |
| { | |
| set print 1 | |
| set clicks_client_request [clock clicks -milliseconds] | |
| } | |
| } | |
| when HTTP_RESPONSE { | |
| if { $print == 1 } | |
| { | |
| set clicks_server_response [clock clicks -milliseconds] | |
| set time_taken [expr $clicks_server_response - $clicks_client_request ] | |
| if {$time_taken < 10} { | |
| set final_time_taken [string range "0.00$time_taken" 0 4] | |
| } elseif { $time_taken < 100 } { | |
| set final_time_taken [string range "0.0$time_taken" 0 4] | |
| } elseif { $time_taken < 1000} { | |
| set final_time_taken [string range "0.$time_taken" 0 4] | |
| } else { | |
| set final_time_taken "[string index $time_taken 0].[string range $time_taken 1 w3 ]" | |
| } | |
| HTTP::header insert "Elapsed:" $final_time_taken | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment