security-init.tcl

Does not contain a contract.

Location:
/packages/acs-tcl/tcl/security-init.tcl

Related Files

[ hide source ] | [ make this the default ]

File Contents

ad_library {

    Provides methods for authorizing and identifying ACS
    (both logged in and not) and tracking their sessions.

    @creation-date 16 Feb 2000
    @author Jon Salz (jsalz@arsdigita.com)
    @author Richard Li (richardl@arsdigita.com)
    @cvs-id $Id: security-init.tcl,v 1.8 2024/09/11 06:15:48 gustafn Exp $

}

#
# Check, if parameterSecret is set (needed for signed parameters)
#
if {[ns_config "ns/server/[ns_info server]/acs" parameterSecret ""] eq ""} {
    ns_log warning "missing values for 'parameterSecret' in section " \
        "'ns/server/[ns_info server]/acs' in configuration file"
}


# Schedule a procedure to sweep for sessions.
ad_schedule_proc -thread f [parameter::get -parameter SessionSweepInterval -default 7200] sec_sweep_sessions

# Verify that the secret_tokens table is populated
set secret_tokens_exists [db_string secret_tokens_exists {select decode(count(*),0,0,1) from secret_tokens}]
if { $secret_tokens_exists == 0 } {
    sec_populate_secret_tokens_db
}

ns_log Notice "security-init.tcl: Populating secret_tokens cache in nsvs..."
sec_populate_secret_tokens_cache

# These procedures are dynamically defined so that parameter::get
# does not need to be called directly in the RP.
proc sec_session_timeout {} "
    return \"[parameter::get -package_id [ad_acs_kernel_id] -parameter SessionTimeout -default 1200]\"
"

proc sec_session_renew {} "
    return \"[expr {[sec_session_timeout] - [parameter::get -package_id [ad_acs_kernel_id] -parameter SessionRenew -default 300]}]\"
"

proc sec_login_timeout {} "
    return \"[parameter::get -package_id [ad_acs_kernel_id] -parameter LoginTimeout -default 28800]\"
"

#
# Get content security policy rules for static resources from the
# OpenACS configuration file. The definition can be there like e.g.
#
#  ns_section ns/server/$server/acs {
#      ...
#      ns_param StaticCSP {
#          image/svg+xml "script-src 'none'"
#      }
#      ...
#   }
#
set ::security::csp::static_csp [ns_config "ns/server/[ns_info server]/acs" StaticCSP]

#
# If there is a re-init, make sure the global handler-variables are reset
#
sec_handler_reset

# Local variables:
#    mode: tcl
#    tcl-indent-level: 4
#    indent-tabs-mode: nil
# End: