aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs/Web/Session.php
diff options
context:
space:
mode:
authorMax Kostikov <max@kostikov.co>2021-03-19 20:06:59 +0000
committerMario <mario@mariovavti.com>2021-03-19 20:06:59 +0000
commit7476d8dccc184c8916962724def2c6aaf2a8a481 (patch)
tree422cbf1aa6d9af8a623e9207a50f7eeb4560d011 /Zotlabs/Web/Session.php
parenteb3a40b07ade552960637e831e7288da722f4c7f (diff)
downloadvolse-hubzilla-7476d8dccc184c8916962724def2c6aaf2a8a481.tar.gz
volse-hubzilla-7476d8dccc184c8916962724def2c6aaf2a8a481.tar.bz2
volse-hubzilla-7476d8dccc184c8916962724def2c6aaf2a8a481.zip
Implement custom Redis session backend
Diffstat (limited to 'Zotlabs/Web/Session.php')
-rw-r--r--Zotlabs/Web/Session.php36
1 files changed, 23 insertions, 13 deletions
diff --git a/Zotlabs/Web/Session.php b/Zotlabs/Web/Session.php
index fe0a3fbf9..6f92a0319 100644
--- a/Zotlabs/Web/Session.php
+++ b/Zotlabs/Web/Session.php
@@ -29,34 +29,44 @@ class Session {
/*
* Set our session storage functions.
*/
-
+
if($this->custom_handler) {
/* Custom handler (files, memached, redis..) */
$session_save_handler = strval(get_config('system', 'session_save_handler', Null));
$session_save_path = strval(get_config('system', 'session_save_path', Null));
- $session_gc_probability = intval(get_config('system', 'session_gc_probability', 1));
- $session_gc_divisor = intval(get_config('system', 'session_gc_divisor', 100));
- if(!$session_save_handler || !$session_save_path) {
- logger('Session save handler or path not set.',LOGGER_NORMAL,LOG_ERR);
+
+ if(is_null($session_save_handler) || is_null($session_save_path)) {
+ logger('Session save handler or path not set', LOGGER_NORMAL, LOG_ERR);
}
else {
- ini_set('session.save_handler', $session_save_handler);
- ini_set('session.save_path', $session_save_path);
- ini_set('session.gc_probability', $session_gc_probability);
- ini_set('session.gc_divisor', $session_gc_divisor);
+ // Check if custom sessions backend exists
+ $clsname = '\Zotlabs\Web\Session' . ucfirst(strtolower($session_save_handler));
+ if (class_exists($clsname)) {
+ $handler = new $clsname($session_save_path);
+ }
+ else {
+ ini_set('session.save_handler', $session_save_handler);
+ ini_set('session.save_path', $session_save_path);
+ ini_set('session.gc_probability', intval(get_config('system', 'session_gc_probability', 1)));
+ ini_set('session.gc_divisor', intval(get_config('system', 'session_gc_divisor', 100)));
+ }
}
}
else {
- $handler = new \Zotlabs\Web\SessionHandler();
+ $handler = new SessionHandler();
+ }
+
+ if (isset($handler)) {
$this->handler = $handler;
- $x = session_set_save_handler($handler,false);
- if(! $x)
- logger('Session save handler initialisation failed.',LOGGER_NORMAL,LOG_ERR);
+ $x = session_set_save_handler($handler, false);
+ if(! $x)
+ logger('Session save handler initialisation failed.',LOGGER_NORMAL,LOG_ERR);
}
+
// Force cookies to be secure (https only) if this site is SSL enabled.
// Must be done before session_start().