Hi,
I wrote this irule to count and close previous session before this feature is included in APM.
when ACCESS_POLICY_AGENT_EVENT {
switch [ACCESS::policy agent_id] {
"close" {
set apm_csid [ ACCESS::session data get session.custom.concurrentid ]
if {$apm_csid != 0} {
log local0. "fin de la session $apm_csid"
ACCESS::session remove -sid $apm_csid
}
}
"user_count" {
set apm_uuid "[PROFILE::access name].[ACCESS::session data get session.logon.last.username]"
set apm_cookie_list [ ACCESS::uuid getsid $apm_uuid ]
if {[llength $apm_cookie_list] != 0} {
set apm_concurentid [ lindex $apm_cookie_list 0 ]
set apm_concurentip [ACCESS::session data get session.user.clientip]
}
else {
set apm_concurentid 0
set apm_concurentip 0
}
ACCESS::session data set session.custom.concurrentnum [llength $apm_cookie_list]
ACCESS::session data set session.custom.concurrentid $apm_concurentid
ACCESS::session data set session.custom.concurrentip $apm_concurentip
log local0. "session concurrente $apm_concurentid"
}
}
}
in this irule policy_id is the event ID of irule event in VPE. the user authenticated on a policy is identified by its uuid :
set apm_uuid "[PROFILE::access name].[ACCESS::session data get session.logon.last.username]"