nsmcp::AccessRecordStoreSQLite method tuple (public)

 <instance of nsmcp::AccessRecordStoreSQLite[i]> 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
[ hide source ] | [ make this the default ]
Show another procedure: