diff --git a/.docker/release/files/usr/local/include/application.ini b/.docker/release/files/usr/local/include/application.ini
index 0cce53dc2..d1c88f368 100644
--- a/.docker/release/files/usr/local/include/application.ini
+++ b/.docker/release/files/usr/local/include/application.ini
@@ -290,5 +290,5 @@ dev_email = ""
dev_password = ""
[version]
-current = "2.19.4"
+current = "2.19.6"
saved = "Fri, 30 Sep 2022 12:34:56 +0000"
diff --git a/README.md b/README.md
index 345fef08e..ba38eef0b 100644
--- a/README.md
+++ b/README.md
@@ -140,26 +140,26 @@ RainLoop 1.17 vs SnappyMail
|js/* |RainLoop |Snappy |
|--------------- |--------: |--------: |
-|admin.js |2.170.153 | 81.500 |
-|app.js |4.207.787 | 405.783 |
+|admin.js |2.170.153 | 81.545 |
+|app.js |4.207.787 | 405.510 |
|boot.js | 868.735 | 2.050 |
|libs.js | 658.812 | 192.965 |
-|sieve.js | 0 | 86.172 |
+|sieve.js | 0 | 86.121 |
|polyfills.js | 334.608 | 0 |
|serviceworker.js | 0 | 285 |
-|TOTAL |8.240.095 | 768.755 |
+|TOTAL |8.240.095 | 768.476 |
|js/min/* |RainLoop |Snappy |RL gzip |SM gzip |RL brotli |SM brotli |
|--------------- |--------: |--------: |------: |------: |--------: |--------: |
-|admin.min.js | 256.831 | 40.402 | 73.606 | 13.446 | 60.877 | 12.062 |
-|app.min.js | 515.367 | 188.273 |139.456 | 62.450 |110.485 | 53.536 |
+|admin.min.js | 256.831 | 40.255 | 73.606 | 13.435 | 60.877 | 12.047 |
+|app.min.js | 515.367 | 187.781 |139.456 | 62.426 |110.485 | 53.504 |
|boot.min.js | 84.659 | 1.252 | 26.998 | 778 | 23.643 | 628 |
|libs.min.js | 584.772 | 92.055 |180.901 | 34.113 |155.182 | 30.641 |
-|sieve.min.js | 0 | 41.952 | 0 | 10.493 | 0 | 9.465 |
+|sieve.min.js | 0 | 41.926 | 0 | 10.484 | 0 | 9.451 |
|polyfills.min.js | 32.837 | 0 | 11.406 | 0 | 10.175 | 0 |
-|TOTAL user |1.217.635 | 281.580 |358.761 | 97.341 |299.485 | 84.805 |
-|TOTAL user+sieve |1.217.635 | 323.532 |358.761 |107.834 |299.485 | 94.270 |
-|TOTAL admin | 959.099 | 133.709 |292.911 | 48.337 |249.877 | 43.331 |
+|TOTAL user |1.217.635 | 281.088 |358.761 | 97.317 |299.485 | 84.773 |
+|TOTAL user+sieve |1.217.635 | 323.014 |358.761 |107.801 |299.485 | 94.224 |
+|TOTAL admin | 959.099 | 133.562 |292.911 | 48.326 |249.877 | 43.316 |
For a user its around 70% smaller and faster than traditional RainLoop.
diff --git a/dev/Common/Links.js b/dev/Common/Links.js
index 2b5417313..38ca6a434 100644
--- a/dev/Common/Links.js
+++ b/dev/Common/Links.js
@@ -33,7 +33,7 @@ export const
*/
serverRequestRaw = (type, hash) =>
SERVER_PREFIX + '/Raw/' + SUB_QUERY_PREFIX + '/'
- + '0/' // AuthAccountHash ?
+ + '0/' // Settings.get('AccountHash') ?
+ (type
? type + '/' + (hash ? SUB_QUERY_PREFIX + '/' + hash : '')
: ''),
diff --git a/integrations/cloudron/DESCRIPTION.md b/integrations/cloudron/DESCRIPTION.md
index 4311b31f2..ebb05c0b7 100644
--- a/integrations/cloudron/DESCRIPTION.md
+++ b/integrations/cloudron/DESCRIPTION.md
@@ -1,4 +1,4 @@
-This app packages SnappyMail 2.19.4.
+This app packages SnappyMail 2.19.6.
SnappyMail is a simple, modern, lightweight & fast web-based email client.
diff --git a/integrations/cloudron/Dockerfile b/integrations/cloudron/Dockerfile
index cfee21403..80ff1c20d 100644
--- a/integrations/cloudron/Dockerfile
+++ b/integrations/cloudron/Dockerfile
@@ -4,7 +4,7 @@ RUN mkdir -p /app/code
WORKDIR /app/code
# If you change the extraction below, be sure to test on scaleway
-VERSION=2.19.4
+VERSION=2.19.6
RUN wget https://github.com/the-djmaze/snappymail/releases/download/v${VERSION}/snappymail-${VERSION}.zip -O /tmp/snappymail.zip && \
unzip /tmp/snappymail.zip -d /app/code && \
rm /tmp/snappymail.zip && \
diff --git a/integrations/nextcloud/snappymail/appinfo/info.xml b/integrations/nextcloud/snappymail/appinfo/info.xml
index c586a12cf..b9f893369 100644
--- a/integrations/nextcloud/snappymail/appinfo/info.xml
+++ b/integrations/nextcloud/snappymail/appinfo/info.xml
@@ -3,7 +3,7 @@
snappymail
SnappyMail
SnappyMail Webmail
- 2.19.5
+ 2.19.6
agpl
SnappyMail, RainLoop Team, Nextgen-Networks, Tab Fitts, Nathan Kinkade, Pierre-Alain Bandinelli
getConfig();
if ($ocConfig->getAppValue('snappymail', 'snappymail-autologin', false)
|| $ocConfig->getAppValue('snappymail', 'snappymail-autologin-with-email', false)
diff --git a/integrations/virtualmin/snappymail.pl b/integrations/virtualmin/snappymail.pl
index 3de80773f..4ab717f34 100644
--- a/integrations/virtualmin/snappymail.pl
+++ b/integrations/virtualmin/snappymail.pl
@@ -20,7 +20,7 @@ return "SnappyMail Webmail is a browser-based multilingual IMAP client with an a
# script_snappymail_versions()
sub script_snappymail_versions
{
-return ( "2.19.4" );
+return ( "2.19.6" );
}
sub script_snappymail_version_desc
diff --git a/package.json b/package.json
index 802959ff6..1dee795c1 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"title": "SnappyMail",
"description": "Simple, modern & fast web-based email client",
"private": true,
- "version": "2.19.4",
+ "version": "2.19.6",
"homepage": "https://snappymail.eu",
"author": {
"name": "DJ Maze",
diff --git a/plugins/README.md b/plugins/README.md
index 843471851..64dd7944f 100644
--- a/plugins/README.md
+++ b/plugins/README.md
@@ -202,7 +202,7 @@ $Plugin->addHook('hook.name', 'functionName');
### filter.domain
params:
- \RainLoop\Model\Domain &$oDomain
+ \RainLoop\Model\Domain $oDomain
### filter.fabrica
params:
diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/AbstractConfig.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/AbstractConfig.php
index 6152945be..4d3f2190f 100644
--- a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/AbstractConfig.php
+++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/AbstractConfig.php
@@ -44,7 +44,7 @@ abstract class AbstractConfig implements \JsonSerializable
$this->sFileHeader = $sFileHeader;
$this->aData = $this->defaultValues();
- $this->bUseApcCache = APP_USE_APCU_CACHE &&
+ $this->bUseApcCache = defined('APP_USE_APCU_CACHE') && APP_USE_APCU_CACHE &&
\MailSo\Base\Utils::FunctionsCallable(array('apcu_fetch', 'apcu_store'));
}
diff --git a/snappymail/v/0.0.0/include.php b/snappymail/v/0.0.0/include.php
index 45e08c2a2..1a1f853e4 100644
--- a/snappymail/v/0.0.0/include.php
+++ b/snappymail/v/0.0.0/include.php
@@ -72,8 +72,6 @@ if (defined('MULTIDOMAIN')) {
define('APP_PRIVATE_DATA_NAME', $sPrivateDataFolderInternalName ?: '_default_');
unset($sPrivateDataFolderInternalName);
-defined('APP_USE_APCU_CACHE') || define('APP_USE_APCU_CACHE', true);
-
if (!defined('APP_DATA_FOLDER_PATH')) {
$sCustomDataPath = function_exists('__get_custom_data_full_path') ? rtrim(trim(__get_custom_data_full_path()), '\\/') : $sCustomDataPath;
define('APP_DATA_FOLDER_PATH', strlen($sCustomDataPath) ? $sCustomDataPath.'/' : APP_INDEX_ROOT_PATH.'data/');
@@ -90,18 +88,38 @@ $sData = is_file(APP_DATA_FOLDER_PATH.'DATA.php') ? file_get_contents(APP_DATA_F
define('APP_PRIVATE_DATA', APP_DATA_FOLDER_PATH.'_data_'.($sData ? md5($sData) : '').'/'.APP_PRIVATE_DATA_NAME.'/');
define('APP_PLUGINS_PATH', APP_PRIVATE_DATA.'plugins/');
-// installation checking data folder
-if (APP_VERSION !== (is_file(APP_DATA_FOLDER_PATH.'INSTALLED') ? file_get_contents(APP_DATA_FOLDER_PATH.'INSTALLED') : '')
- || !is_dir(APP_PRIVATE_DATA))
-{
- include APP_VERSION_ROOT_PATH.'setup.php';
-}
-
ini_set('default_charset', 'UTF-8');
ini_set('internal_encoding', 'UTF-8');
mb_internal_encoding('UTF-8');
mb_language('uni');
+if (!defined('SNAPPYMAIL_LIBRARIES_PATH')) {
+ define('SNAPPYMAIL_LIBRARIES_PATH', rtrim(realpath(__DIR__), '\\/').'/app/libraries/');
+
+ if (false === set_include_path(SNAPPYMAIL_LIBRARIES_PATH . PATH_SEPARATOR . get_include_path())) {
+ exit('set_include_path() failed. Probably due to Apache config using php_admin_value instead of php_value');
+ }
+
+ spl_autoload_extensions('.php');
+ /** lowercase autoloader */
+ spl_autoload_register();
+ /** case-sensitive autoloader */
+ spl_autoload_register(function($sClassName){
+ $file = SNAPPYMAIL_LIBRARIES_PATH . strtr($sClassName, '\\', DIRECTORY_SEPARATOR) . '.php';
+// if ($file = stream_resolve_include_path(strtr($sClassName, '\\', DIRECTORY_SEPARATOR) . '.php')) {
+ if (is_file($file)) {
+ include_once $file;
+ }
+ });
+}
+
+// installation checking data folder
+if (APP_VERSION !== (is_file(APP_DATA_FOLDER_PATH.'INSTALLED') ? file_get_contents(APP_DATA_FOLDER_PATH.'INSTALLED') : '')
+ || !is_dir(APP_PRIVATE_DATA))
+{
+ include __DIR__ . '/setup.php';
+}
+
$sSalt = is_file(APP_DATA_FOLDER_PATH.'SALT.php') ? trim(file_get_contents(APP_DATA_FOLDER_PATH.'SALT.php')) : '';
if (!$sSalt) {
// random salt
@@ -142,26 +160,6 @@ if (!ini_get('zlib.output_compression') && !ini_get('brotli.output_compression')
}
}
-if (!defined('RAINLOOP_APP_LIBRARIES_PATH')) {
- define('RAINLOOP_APP_LIBRARIES_PATH', rtrim(realpath(__DIR__), '\\/').'/app/libraries/');
-
- if (false === set_include_path(RAINLOOP_APP_LIBRARIES_PATH . PATH_SEPARATOR . get_include_path())) {
- exit('set_include_path() failed. Probably due to Apache config using php_admin_value instead of php_value');
- }
-
- spl_autoload_extensions('.php');
- /** lowercase autoloader */
- spl_autoload_register();
- /** case-sensitive autoloader */
- spl_autoload_register(function($sClassName){
- $file = RAINLOOP_APP_LIBRARIES_PATH . strtr($sClassName, '\\', DIRECTORY_SEPARATOR) . '.php';
-// if ($file = stream_resolve_include_path(strtr($sClassName, '\\', DIRECTORY_SEPARATOR) . '.php')) {
- if (is_file($file)) {
- include_once $file;
- }
- });
-}
-
if (class_exists('RainLoop\\Api')) {
RainLoop\Api::Handle();
// NextCloud/OwnCloud?
diff --git a/snappymail/v/0.0.0/setup.php b/snappymail/v/0.0.0/setup.php
index 0aa852987..6fe37158e 100644
--- a/snappymail/v/0.0.0/setup.php
+++ b/snappymail/v/0.0.0/setup.php
@@ -156,10 +156,7 @@ if (defined('APP_VERSION'))
}
}
-// require __DIR__ . '/app/libraries/snappymail/idn.php';
-// require __DIR__ . '/app/libraries/snappymail/intl/idn.php';
-// $sName = \SnappyMail\IDN::toAscii(mb_strtolower(gethostname()));
- $sName = mb_strtolower(gethostname());
+ $sName = \SnappyMail\IDN::toAscii(mb_strtolower(gethostname()));
$sFile = APP_PRIVATE_DATA.'domains/'.$sName.'.json';
if (!file_exists($sFile) && !file_exists(APP_PRIVATE_DATA.'domains/'.$sName.'.ini')) {
$config = json_decode(file_get_contents(__DIR__ . '/app/domains/default.json'), true);