refactor for OXID 6.2 and up

This commit is contained in:
Daniel Seifert 2023-06-02 11:15:05 +02:00
parent 93975f532b
commit d4f0fff666
Signed by: DanielS
GPG Key ID: 8A7C4C6ED1915C6F
9 changed files with 146 additions and 86 deletions

20
IntelliSenseHelper.php Normal file
View File

@ -0,0 +1,20 @@
<?php
/**
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
namespace D3\SidCookieFix\modules\core {
use OxidEsales\Eshop\Core\Session;
class Session_sidcookiefix_parent extends Session {}
}

0
README
View File

View File

@ -1,16 +1,28 @@
# SID Cookie Fix
Dieses Bugfix verhindert das mehrfache Setzen des Session-ID-Cookies und der damit
verbundenden Vergrößerung der Headerzeilen jeder geladenen Ressource.
Dies führt bei manchen LoadBalancer-Konfigurationen zu Verbindungsabbrüchen.
## Wichtig!
Bitte beachten Sie: Eingriffe in das Session- und Cookie-Handling können tiefgreifende
Auswirkungen auf den Shopbetrieb haben. Wir stellen diese Erweiterung ohne Gewährleistung
zur Verfügung. Testen Sie dies vor einem produktiven Einsatz unbedingt umfangreich. Der
Einsatz dieses Moduls erfolgt auf eigenes Risiko.
Dieses Modul ist einsetzbar im OXID eShop ab Version 4.3.2 bis 4.10.3 / 5.3.3. Davon
## Anforderungen
Dieses Modul ist einsetzbar im OXID eShop ab Version 6.2. Davon
abweichende Shopversionen wurden damit nicht kontrolliert.
Kopieren Sie den Inhalt des "copy_this"-Ordners in den Root-Ordner Ihres Shops.
## Installation
```
composer config repositories.d3sidcookiefix vcs https://git.d3data.de/D3Public/SidCookieFix.git
composer require d3/sidcookiefix
```
Aktivieren Sie das Modul "D3 Session ID Cookie fix" im Adminbereich unter "Erweiterungen ->
Module".

46
composer.json Normal file
View File

@ -0,0 +1,46 @@
{
"name": "d3/sidcookiefix",
"description": "verhindert das mehrfache Setzen des Session-ID-Cookies und der damit verbundenden Vergrößerung der Headerzeilen jeder geladenen Ressource",
"type": "oxideshop-module",
"keywords": [
"oxid",
"modules",
"eShop",
"d3"
],
"authors": [
{
"name": "D3 Data Development (Inh. Thomas Dartsch)",
"email": "info@shopmodule.com",
"homepage": "https://www.d3data.de",
"role": "Owner"
}
],
"support": {
"email": "support@shopmodule.com"
},
"homepage": "https://www.oxidmodule.com/",
"license": [
"GPL-3.0-or-later"
],
"require": {
"oxid-esales/oxideshop-ce": "^6.5"
},
"extra": {
"oxideshop": {
"blacklist-filter": [
"*.md",
"composer.json",
".php-cs-fixer.php",
"*.xml",
"*.neon"
],
"target-directory": "d3/sidcookiefix"
}
},
"autoload": {
"psr-4": {
"D3\\SidCookieFix\\": "../../../source/modules/d3/sidcookiefix"
}
}
}

View File

@ -1,34 +0,0 @@
<?php
/**
* Metadata version
*/
$sMetadataVersion = '1.1';
$sD3Logo = (class_exists(d3\modcfg\Application\Model\d3utils::class) ? d3\modcfg\Application\Model\d3utils::getInstance()->getD3Logo() : 'D&sup3;');
/**
* Module information
*/
$aModule = array(
'id' => 'd3sidcookiefix',
'title' => $sD3Logo . ' Session ID Cookie fix',
'description' => array(
'de' => '<ul><li>fix multiple session cookie header lines </li>'
.'<li>causes "Connection reset by peer" errors </li>'
.'<li>error occur in some load balancer configurations because of to long headers</li></ul>',
'en' => ''
),
'thumbnail' => 'picture.png',
'version' => '2.0.0.0',
'author' => 'D&sup3; Data Development (Inh.: Thomas Dartsch)',
'email' => 'support@shopmodule.com',
'url' => 'http://www.oxidmodule.com/',
'extend' => array(
OxidEsales\Eshop\Core\Session::class => 'd3/sidcookiefix/modules/core/d3_sidcookiefix_oxsession',
),
'files' => array(),
'templates' => array(),
'events' => array(),
'blocks' => array(),
'settings' => array(),
);

View File

@ -1,50 +0,0 @@
<?php
/**
* This Software is the property of Data Development and is protected
* by copyright law - it is NOT Freeware.
*
* Any unauthorized use of this software without a valid license
* is a violation of the license agreement and will be prosecuted by
* civil and criminal law.
*
* http://www.shopmodule.com
*
* @copyright © Data Development, Thomas Dartsch
* @author Data Development - Daniel Seifert <support@shopmodule.com>
* @link http://www.oxidmodule.com
*/
class d3_sidcookiefix_oxsession extends d3_sidcookiefix_oxsession_parent
{
protected function _setSessionId($sSessId)
{
//marking this session as new one, as it might be not writen to db yet
if ($sSessId && session_id() != $sSessId) {
$this->_blNewSession = true;
}
session_id($sSessId);
$this->setId($sSessId);
$blUseCookies = $this->_getSessionUseCookies();
if (!$this->_allowSessionStart()) {
if ($blUseCookies) {
oxRegistry::get("oxUtilsServer")->setOxCookie($this->getName(), null);
}
return;
}
if ($blUseCookies) {
// D3: check for set SessionCookie
$sCookieSessid = oxRegistry::get("oxUtilsServer")->getOxCookie($this->getName());
if (!$sCookieSessid || $sSessId != $sCookieSessid) {
//setting session cookie
oxRegistry::get("oxUtilsServer")->setOxCookie($this->getName(), $sSessId);
}
}
}
}

31
metadata.php Normal file
View File

@ -0,0 +1,31 @@
<?php
use D3\SidCookieFix\modules\core\Session_sidcookiefix;
use OxidEsales\Eshop\Core\Session;
$sMetadataVersion = '2.1';
$logo = '<img src="https://logos.oxidmodule.com/d3logo_individual.svg" alt="(D3)" style="height:1em;width:1em">';
$aModule = [
'id' => 'd3sidcookiefix',
'title' => $logo . ' Session ID Cookie fix',
'description' => [
'de' => '<ul><li>fix multiple session cookie header lines </li>'
.'<li>causes "Connection reset by peer" errors </li>'
.'<li>error occur in some load balancer configurations because of to long headers</li></ul>',
'en' => ''
],
'thumbnail' => 'picture.png',
'version' => '3.0.0.0',
'author' => 'D&sup3; Data Development (Inh.: Thomas Dartsch)',
'email' => 'support@shopmodule.com',
'url' => 'https://www.oxidmodule.com/',
'extend' => [
Session::class => Session_sidcookiefix::class,
],
'templates' => [],
'events' => [],
'blocks' => [],
'settings' => [],
];

View File

@ -0,0 +1,35 @@
<?php
/**
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\SidCookieFix\modules\core;
use OxidEsales\Eshop\Core\Registry;
class Session_sidcookiefix extends Session_sidcookiefix_parent
{
protected function setSessionCookie($sessionId): void
{
if ($this->_getSessionUseCookies()) {
if (!$this->_allowSessionStart()) {
Registry::getUtilsServer()->setOxCookie($this->getName(), null);
} else {
$sCookieSessid = Registry::getUtilsServer()->getOxCookie($this->getName());
if (!$sCookieSessid || $sessionId != $sCookieSessid) {
Registry::getUtilsServer()->setOxCookie( $this->getName(), $sessionId );
}
}
}
}
}

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB