nsmcp::AccessRecordStoreSQLite method tuple (public)
<instance of nsmcp::AccessRecordStoreSQLite> tuple fid off stop \ kind row redactor file
Defined in /usr/local/ns/tcl/nsmcp/log-traffic-record-store.tcl
- Parameters:
- fid (required)
- off (required)
- stop (required)
- kind (required)
- row (required)
- redactor (required)
- file (required)
- Testcases:
- No testcase defined.
Source code: set values [list $fid $off $stop $kind] if {$kind!=0} { for {set i 0} {$i<22} {incr i} {lappend values {}} } else { set peer [dict get $row peerAddress]; set agent [expr {[dict exists $row userAgent] ? [dict get $row userAgent] : {}}] set peer [expr {$peer in {{} - {[REDACTED]}} ? {} : [ns_crypto::md string -digest sha256 -- $peer]}] set key [expr {$agent in {{} -} ? {} : [ns_crypto::md string -digest sha256 -- $agent]}] set label [$redactor message $agent]; set clipped [expr {[string length [encoding convertto utf-8 $label]]>1024 || [string length [encoding convertto utf-8 $agent]]>1024}] set redacted [expr {$label ne $agent}] if {$clipped} { set label [encoding convertfrom utf-8 [string range [encoding convertto utf-8 $label] 0 1023]] while {[string length [encoding convertto utf-8 $label]]>1024} {set label [string range $label 0 end-1]} } foreach k {startTime status path method pool recordSource driver authenticationState responseBytes phaseTimingAvailable} {lappend values [dict get $row $k]} lappend values [expr {[dict get $row timingSource] eq "completion"}] foreach k {acceptTime queueTime filterTime runTime} {lappend values [expr {[dict exists $row $k] ? [dict get $row $k] : 0.0}]} lappend values $peer $key $label $clipped $redacted [dict get $row requestIdentifier] [ns_crypto::md string -digest sha256 -- [list [dict get $file identity] $off]] } set completed 0 if {$kind==0} { set stamp [dict get $row timestamp] if {$stamp ne ${:lastStamp}} { set :lastStamp $stamp if {[string is entier -strict $stamp]} {set :lastCompleted $stamp} elseif {[catch {clock scan $stamp -format {%d/%b/%Y:%H:%M:%S %z} -locale C} value]} {set :lastCompleted 0} else {set :lastCompleted $value} } set completed ${:lastCompleted} if {[dict exists ${:settings} unified] && [dict get ${:settings} unified]} { set address [dict get $row peerAddress]; set time [dict get $row startTime] if {[ns_ip valid $address] && $time>=[clock seconds]-[dict get ${:settings} peerRetention] && $time<=[clock seconds]+60} { dict set :peers [lindex $values 19] [list $address $time] } } } lappend values $completed 1 set quoted {}; foreach value $values {lappend quoted [${:db} quote $value]} if {$kind==0} { foreach index {19 20 25} { set value [lindex $values $index] if {$value ne {}} {lset quoted $index "X'$value'"} } } if {$kind!=0} { set at [expr {[dict exists ${:settings} unified] && [dict get ${:settings} unified] ? [clock seconds] : 0}] set quoted [concat [lrange $quoted 0 3] [lrepeat 22 NULL] $at 1] } return "([join $quoted ,])"XQL Not present: Generic, PostgreSQL, Oracle
![[i]](/resources/acs-subsite/ZoomIn16.gif)