From 4b63adb0d56080fd51c1006faa23fa0efc8d91c7 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Wed, 24 Apr 2024 02:13:35 +0200 Subject: [PATCH] v2.36.1 --- CHANGELOG.md | 44 +++++++++++++++++++ README.md | 30 ++++++------- integrations/cloudron/DESCRIPTION.md | 2 +- integrations/cloudron/Dockerfile | 2 +- .../nextcloud/snappymail/appinfo/info.xml | 2 +- integrations/virtualmin/snappymail.pl | 2 +- package.json | 2 +- plugins/login-gmail/index.php | 3 +- .../libraries/RainLoop/Plugins/Manager.php | 4 +- 9 files changed, 68 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aecd4e6ed5..498826398e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,53 @@ +## 2.36.1 – 2024-04-23 + +### Added +- Autoconfig detect through DNS SRV (RFC 6186 & 8314) and disable MX +- Have I Been Pwned class to check breached passwords and email addresses +- Handle RFC 5987 in Content-Disposition header +- Ignore text/x-amp-html +- Show SMTP error to user + [#1521](https://github.com/the-djmaze/snappymail/issues/1521) +- OAuth2 for login using gmail (and others) + +### Changed +- logMask all AUTHENTICATE requests +- ErrorTip use white-space: pre +- Simplify LoginProcess handling +- ES2020 everywhere (require Safari 13.1) +- Modified Squire to be more in line with v2.2.8 +- CSS set min-width for .attachmentParent and .flagParent to line them up +- cPanel use extension login-cpanel instead of login-remote +- Improved login credentials handling +- Speedup Knockout a bit +- Update Belarusian by @spoooyders +- Update Chinese by @mayswind +- Update French by @hguilbert +- Update Polish by @tinola +- Update Portuguese by @ner00 + +### Fixed +- Content encoding and type detection in JavaScript could fail due to case-sensitivity. +- Extensions set logger failed +- GnuPG check open_basedir and if shell_exec is disabled +- Hide pagination when search result has no messages +- Prevent mbstring error before setup.php +- Prevent MessagesPerPage Infinity + [#1540](https://github.com/the-djmaze/snappymail/issues/1540) +- Reseal CryptKey failed + [#1543](https://github.com/the-djmaze/snappymail/issues/1543) + +### Nextcloud +- Add an occ command to set up the login settings + [#1552](https://github.com/the-djmaze/snappymail/issues/1552) + + ## 2.36.0 – 2024-03-18 ### Added - Allow setting the supported THREAD algorithm - Icon to system folders - Remove remembered password after 15 minutes of inactivity + [#1142](https://github.com/the-djmaze/snappymail/issues/1142) - Swap background and text color for unreadable text on dark background [#1486](https://github.com/the-djmaze/snappymail/issues/1486) - Generate TOTP code at ?Admin -> Security diff --git a/README.md b/README.md index e1937aa150..69d77dc501 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ This fork of RainLoop has the following changes: * Admin uses password_hash/password_verify * Auth failed attempts written to syslog * Added Fail2ban instructions -* ES2018 +* ES2020 * PHP 7.4+ required * PHP mbstring extension required * PHP replaced pclZip with PharData and ZipArchive @@ -140,26 +140,26 @@ RainLoop 1.17 vs SnappyMail |js/* |RainLoop |Snappy | |--------------- |--------: |--------: | -|admin.js |2.170.153 | 83.606 | -|app.js |4.207.787 | 435.863 | +|admin.js |2.170.153 | 83.494 | +|app.js |4.207.787 | 436.310 | |boot.js | 868.735 | 4.147 | -|libs.js | 658.812 | 201.911 | +|libs.js | 658.812 | 193.716 | |sieve.js | 0 | 84.598 | |polyfills.js | 334.608 | 0 | |serviceworker.js | 0 | 285 | -|TOTAL |8.240.095 | 810.410 | +|TOTAL |8.240.095 | 802.550 | |js/min/* |RainLoop |Snappy |RL gzip |SM gzip |RL brotli |SM brotli | |--------------- |--------: |--------: |------: |------: |--------: |--------: | -|admin.min.js | 256.831 | 40.917 | 73.606 | 13.802 | 60.877 | 12.380 | -|app.min.js | 515.367 | 197.447 |139.456 | 67.066 |110.485 | 57.238 | +|admin.min.js | 256.831 | 40.856 | 73.606 | 13.776 | 60.877 | 12.345 | +|app.min.js | 515.367 | 197.511 |139.456 | 67.058 |110.485 | 57.209 | |boot.min.js | 84.659 | 2.087 | 26.998 | 1.204 | 23.643 | 1.002 | -|libs.min.js | 584.772 | 92.482 |180.901 | 34.729 |155.182 | 31.017 | +|libs.min.js | 584.772 | 92.365 |180.901 | 34.487 |155.182 | 30.830 | |sieve.min.js | 0 | 41.093 | 0 | 10.325 | 0 | 9.327 | |polyfills.min.js | 32.837 | 0 | 11.406 | 0 | 10.175 | 0 | -|TOTAL user |1.217.635 | 292.016 |358.761 |102.999 |299.485 | 89.257 | -|TOTAL user+sieve |1.217.635 | 333.109 |358.761 |113.324 |299.485 | 98.584 | -|TOTAL admin | 959.099 | 135.486 |292.911 | 49.735 |249.877 | 44.399 | +|TOTAL user |1.217.635 | 291.963 |358.761 |102.749 |299.485 | 89.041 | +|TOTAL user+sieve |1.217.635 | 333.056 |358.761 |113.074 |299.485 | 98.368 | +|TOTAL admin | 959.099 | 135.308 |292.911 | 49.467 |249.877 | 44.177 | For a user it is around 68% smaller and faster than traditional RainLoop. @@ -188,12 +188,12 @@ For a user it is around 68% smaller and faster than traditional RainLoop. |css/* |RainLoop |Snappy |RL gzip |SM gzip |SM brotli | |------------ |-------: |------: |------: |------: |--------: | -|app.css | 340.331 | 84.614 | 46.946 | 17.649 | 15.119 | -|app.min.css | 274.947 | 67.984 | 39.647 | 15.560 | 13.574 | +|app.css | 340.331 | 84.629 | 46.946 | 17.652 | 15.127 | +|app.min.css | 274.947 | 67.995 | 39.647 | 15.562 | 13.568 | |boot.css | | 1.326 | | 664 | 545 | |boot.min.css | | 1.071 | | 590 | 474 | -|admin.css | | 30.531 | | 7.001 | 6.089 | -|admin.min.css | | 24.655 | | 6.325 | 5.575 | +|admin.css | | 30.528 | | 7.001 | 6.088 | +|admin.min.css | | 24.652 | | 6.325 | 5.574 | ### PGP RainLoop uses the old OpenPGP.js v2 diff --git a/integrations/cloudron/DESCRIPTION.md b/integrations/cloudron/DESCRIPTION.md index 0834e4cb35..03e7bd3f6f 100644 --- a/integrations/cloudron/DESCRIPTION.md +++ b/integrations/cloudron/DESCRIPTION.md @@ -1,4 +1,4 @@ -This app packages SnappyMail 2.36.0. +This app packages SnappyMail 2.36.1. SnappyMail is a simple, modern, lightweight & fast web-based email client. diff --git a/integrations/cloudron/Dockerfile b/integrations/cloudron/Dockerfile index 693ae3eeb2..134bda36f8 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.36.0 +VERSION=2.36.1 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 c539d78c35..045e2f3ad6 100644 --- a/integrations/nextcloud/snappymail/appinfo/info.xml +++ b/integrations/nextcloud/snappymail/appinfo/info.xml @@ -3,7 +3,7 @@ snappymail SnappyMail SnappyMail Webmail - 2.36.0 + 2.36.1 agpl SnappyMail, RainLoop Team, Nextgen-Networks, Tab Fitts, Nathan Kinkade, Pierre-Alain Bandinelli SetLabel('Client ID') ->SetType(\RainLoop\Enumerations\PluginPropertyType::STRING) - ->SetAllowedInJs(), + ->SetAllowedInJs() + ->SetDescription('https://github.com/the-djmaze/snappymail/wiki/FAQ#gmail'), \RainLoop\Plugins\Property::NewInstance('client_secret') ->SetLabel('Client Secret') ->SetType(\RainLoop\Enumerations\PluginPropertyType::STRING) diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Plugins/Manager.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Plugins/Manager.php index 4e09f72121..c16379b1a3 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Plugins/Manager.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Plugins/Manager.php @@ -380,7 +380,7 @@ public function JsonResponseHelper(string $sFunctionName, $mData) : array public function GetUserPluginSettings(string $sPluginName) : array { - $oAccount = $this->oActions->GetAccount(); + $oAccount = $this->oActions->getAccountFromToken(); if ($oAccount) { $oSettings = $this->oActions->SettingsProvider()->Load($oAccount); if ($oSettings) { @@ -396,7 +396,7 @@ public function GetUserPluginSettings(string $sPluginName) : array public function SaveUserPluginSettings(string $sPluginName, array $aSettings) : bool { - $oAccount = $this->oActions->GetAccount(); + $oAccount = $this->oActions->getAccountFromToken(); if ($oAccount) { $oSettings = $this->oActions->SettingsProvider()->Load($oAccount); if ($oSettings) {