Browse Source

Added session_keepalive setting

When session_keepalive is true (default) the heartbeat will be send as
often as the half of the session timeout value.
tags/v7.0.0alpha2
Vincent Petry 10 years ago
parent
commit
912da8d277
3 changed files with 51 additions and 15 deletions
  1. 7
    0
      config/config.sample.php
  2. 6
    0
      core/js/config.php
  3. 38
    15
      core/js/js.js

+ 7
- 0
config/config.sample.php View File

/* Life time of a session after inactivity */ /* Life time of a session after inactivity */
"session_lifetime" => 60 * 60 * 24, "session_lifetime" => 60 * 60 * 24,


/*
* Enable/disable session keep alive when a user is logged in in the Web UI.
* This is achieved by sending a "heartbeat" to the server to prevent
* the session timing out.
*/
"session_keepalive" => true,

/* Custom CSP policy, changing this will overwrite the standard policy */ /* Custom CSP policy, changing this will overwrite the standard policy */
"custom_csp_policy" => "default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src *; font-src 'self' data:; media-src *", "custom_csp_policy" => "default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src *; font-src 'self' data:; media-src *",



+ 6
- 0
core/js/config.php View File

) )
), ),
"firstDay" => json_encode($l->l('firstday', 'firstday')) , "firstDay" => json_encode($l->l('firstday', 'firstday')) ,
"oc_config" => json_encode(
array(
'session_lifetime' => \OCP\Config::getSystemValue('session_lifetime', 60 * 60 * 24),
'session_keepalive' => \OCP\Config::getSystemValue('session_keepalive', true)
)
)
); );


// Echo it // Echo it

+ 38
- 15
core/js/js.js View File

var oc_current_user = document.getElementsByTagName('head')[0].getAttribute('data-user'); var oc_current_user = document.getElementsByTagName('head')[0].getAttribute('data-user');
var oc_requesttoken = document.getElementsByTagName('head')[0].getAttribute('data-requesttoken'); var oc_requesttoken = document.getElementsByTagName('head')[0].getAttribute('data-requesttoken');


window.oc_config = window.oc_config || {};

if (typeof oc_webroot === "undefined") { if (typeof oc_webroot === "undefined") {
oc_webroot = location.pathname; oc_webroot = location.pathname;
var pos = oc_webroot.indexOf('/index.php/'); var pos = oc_webroot.indexOf('/index.php/');
console.warn("This function is deprecated! Use CSS instead"); console.warn("This function is deprecated! Use CSS instead");
} }


$(document).ready(function(){
sessionHeartBeat();
/**
* Initializes core
*/
function initCore() {

/**
* Calls the server periodically to ensure that session doesnt
* time out
*/
function initSessionHeartBeat(){
// interval in seconds
var interval = 900;
if (oc_config.session_lifetime) {
interval = Math.floor(oc_config.session_lifetime / 2);
}
// minimum one minute
if (interval < 60) {
interval = 60;
}
OC.Router.registerLoadedCallback(function(){
var url = OC.Router.generate('heartbeat');
setInterval(function(){
$.post(url);
}, interval * 1000);
});
}

// session heartbeat (defalts to enabled)
if (typeof(oc_config.session_keepalive) === 'undefined' ||
!!oc_config.session_keepalive) {

initSessionHeartBeat();
}


if(!SVGSupport()){ //replace all svg images with png images for browser that dont support svg if(!SVGSupport()){ //replace all svg images with png images for browser that dont support svg
replaceSVG(); replaceSVG();
$('input[type=text]').focus(function(){ $('input[type=text]').focus(function(){
this.select(); this.select();
}); });
});
}

$(document).ready(initCore);


/** /**
* Filter Jquery selector by attribute value * Filter Jquery selector by attribute value
return this.length > 0; return this.length > 0;
}; };


/**
* Calls the server periodically every 15 mins to ensure that session doesnt
* time out
*/
function sessionHeartBeat(){
OC.Router.registerLoadedCallback(function(){
var url = OC.Router.generate('heartbeat');
setInterval(function(){
$.post(url);
}, 900000);
});
}

Loading…
Cancel
Save