mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Rebranding to SnappyMail because this fork of RainLoop has way too many changes to be compatible.
This commit is contained in:
parent
98ba7e61aa
commit
0181d9645a
14 changed files with 52 additions and 55 deletions
32
README.md
32
README.md
|
|
@ -1,38 +1,44 @@
|
||||||
<div align="center">
|
<div align="center">
|
||||||
<a href="https://github.com/RainLoop/rainloop-webmail">
|
<a href="https://github.com/the-djmaze/snappymail">
|
||||||
<img width="200" heigth="200" src="https://www.rainloop.net/static/img/logo-256x256-tiny.png">
|
<img width="200" heigth="200" src="https://snappymail.eu/static/img/logo-256x256-tiny.png">
|
||||||
</a>
|
</a>
|
||||||
<br>
|
<br>
|
||||||
<h1>RainLoop Webmail</h1>
|
<h1>SnappyMail</h1>
|
||||||
<br>
|
<br>
|
||||||
<p>
|
<p>
|
||||||
Simple, modern & fast web-based email client.
|
Simple, modern & fast web-based email client.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Modest system requirements, decent performance, simple installation and upgrade, no database required
|
The drastically upgraded & secured fork of <a href="https://github.com/RainLoop/rainloop-webmail">RainLoop Webmail Community edition</a>.
|
||||||
- all these make RainLoop Webmail a perfect choice for your email solution.
|
</p>
|
||||||
|
<p>
|
||||||
|
We thank RainLoop team for making a great PHP 5 product that was good in the past.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Up to date system requirements, snappy performance, simple installation and upgrade, no database required
|
||||||
|
- all these make SnappyMail a good choice.
|
||||||
</p>
|
</p>
|
||||||
<h2></h2>
|
<h2></h2>
|
||||||
<br>
|
<br>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
For more information about the product, check [rainloop.net](https://www.rainloop.net/).
|
For more information about the product, check [snappymail.eu](https://snappymail.eu/).
|
||||||
|
|
||||||
Information about installing the product, check the [wiki page](https://github.com/the-djmaze/rainloop-webmail/wiki/Installation-instructions).
|
Information about installing the product, check the [wiki page](https://github.com/the-djmaze/snappymail/wiki/Installation-instructions).
|
||||||
|
|
||||||
And don't forget to read the [official documentation](https://www.rainloop.net/docs/).
|
And don't forget to read the [RainLoop documentation](https://www.rainloop.net/docs/).
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
**RainLoop Webmail (Community edition)** is released under
|
**SnappyMail** is released under
|
||||||
**GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (AGPL)**.
|
**GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (AGPL)**.
|
||||||
http://www.gnu.org/licenses/agpl-3.0.html
|
http://www.gnu.org/licenses/agpl-3.0.html
|
||||||
|
|
||||||
Copyright (c) 2019 Rainloop Team
|
Copyright (c) 2020 SnappyMail
|
||||||
|
|
||||||
## Modifications
|
## Modifications
|
||||||
|
|
||||||
This fork has the following changes:
|
This fork of RainLoop has the following changes:
|
||||||
|
|
||||||
* Privacy/GDPR friendly (no: Social, Gravatar, Facebook, Google, Twitter, DropBox, OwnCloud, X-Mailer)
|
* Privacy/GDPR friendly (no: Social, Gravatar, Facebook, Google, Twitter, DropBox, OwnCloud, X-Mailer)
|
||||||
* Admin uses password_hash/password_verify
|
* Admin uses password_hash/password_verify
|
||||||
|
|
@ -164,5 +170,5 @@ in the [labs] section add/edit: `use_ck_html_editor = On`
|
||||||
|
|
||||||
### PHP73 branch
|
### PHP73 branch
|
||||||
|
|
||||||
There's a branch with only the PHP 7.3 changes at
|
There's a RainLoop 1.14.0 branch with only the PHP 7.3 changes at
|
||||||
https://github.com/the-djmaze/rainloop-webmail/tree/php73
|
https://github.com/the-djmaze/snappymail/tree/php73
|
||||||
|
|
|
||||||
|
|
@ -1038,7 +1038,7 @@ class AppUser extends AbstractApp {
|
||||||
navigator.registerProtocolHandler(
|
navigator.registerProtocolHandler(
|
||||||
'mailto',
|
'mailto',
|
||||||
location.protocol + '//' + location.host + location.pathname + '?mailto&to=%s',
|
location.protocol + '//' + location.host + location.pathname + '?mailto&to=%s',
|
||||||
'' + (Settings.get('Title') || 'RainLoop')
|
'' + (Settings.get('Title') || 'SnappyMail')
|
||||||
);
|
);
|
||||||
} catch (e) {} // eslint-disable-line no-empty
|
} catch (e) {} // eslint-disable-line no-empty
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ import ko from 'ko';
|
||||||
class AboutAdminSettings {
|
class AboutAdminSettings {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.version = ko.observable(rl.settings.app('version'));
|
this.version = ko.observable(rl.settings.app('version'));
|
||||||
this.coreType = ko.observable('djmaze');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
20
package.json
20
package.json
|
|
@ -1,18 +1,18 @@
|
||||||
{
|
{
|
||||||
"name": "rainloop",
|
"name": "snappymail",
|
||||||
"title": "RainLoop Webmail",
|
"title": "SnappyMail",
|
||||||
"description": "Simple, modern & fast web-based email client",
|
"description": "Simple, modern & fast web-based email client",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "1.14.0-djmaze8",
|
"version": "1.14.0-djmaze8",
|
||||||
"homepage": "https://www.rainloop.net",
|
"homepage": "https://snappymail.eu",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "RainLoop Team",
|
"name": "DJ Maze",
|
||||||
"email": "support@rainloop.net",
|
"email": "support@snappymail.eu",
|
||||||
"web": "https://www.rainloop.net"
|
"web": "https://snappymail.eu"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/RainLoop/rainloop-webmail.git"
|
"url": "git://github.com/the-djmaze/snappymail.git"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"watch-css": "gulp watchCss",
|
"watch-css": "gulp watchCss",
|
||||||
|
|
@ -23,14 +23,10 @@
|
||||||
{
|
{
|
||||||
"type": "AGPL 3.0",
|
"type": "AGPL 3.0",
|
||||||
"ulr": "http://www.gnu.org/licenses/agpl-3.0.html"
|
"ulr": "http://www.gnu.org/licenses/agpl-3.0.html"
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "RainLoop Software License",
|
|
||||||
"ulr": "https://www.rainloop.net/licensing/"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/RainLoop/rainloop-webmail/issues"
|
"url": "https://github.com/the-djmaze/snappymail/issues"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"webmail",
|
"webmail",
|
||||||
|
|
|
||||||
|
|
@ -1174,8 +1174,8 @@ NewThemeLink IncludeCss TemplatesLink LangLink IncludeBackground PluginsLink Aut
|
||||||
'Email' => '',
|
'Email' => '',
|
||||||
'DevEmail' => '',
|
'DevEmail' => '',
|
||||||
'DevPassword' => '',
|
'DevPassword' => '',
|
||||||
'Title' => $oConfig->Get('webmail', 'title', 'RainLoop Webmail'),
|
'Title' => $oConfig->Get('webmail', 'title', 'SnappyMail Webmail'),
|
||||||
'LoadingDescription' => $oConfig->Get('webmail', 'loading_description', 'RainLoop'),
|
'LoadingDescription' => $oConfig->Get('webmail', 'loading_description', 'SnappyMail'),
|
||||||
'FaviconUrl' => $oConfig->Get('webmail', 'favicon_url', ''),
|
'FaviconUrl' => $oConfig->Get('webmail', 'favicon_url', ''),
|
||||||
'LoginDescription' => '',
|
'LoginDescription' => '',
|
||||||
'LoginLogo' => '',
|
'LoginLogo' => '',
|
||||||
|
|
@ -2403,7 +2403,7 @@ NewThemeLink IncludeCss TemplatesLink LangLink IncludeBackground PluginsLink Aut
|
||||||
{
|
{
|
||||||
$oZip = new \ZipArchive();
|
$oZip = new \ZipArchive();
|
||||||
$oZip->open($sZipFileName, \ZIPARCHIVE::CREATE | \ZIPARCHIVE::OVERWRITE);
|
$oZip->open($sZipFileName, \ZIPARCHIVE::CREATE | \ZIPARCHIVE::OVERWRITE);
|
||||||
$oZip->setArchiveComment('RainLoop/'.APP_VERSION);
|
$oZip->setArchiveComment('SnappyMail/'.APP_VERSION);
|
||||||
|
|
||||||
foreach ($aData as $aItem)
|
foreach ($aData as $aItem)
|
||||||
{
|
{
|
||||||
|
|
@ -3693,9 +3693,9 @@ NewThemeLink IncludeCss TemplatesLink LangLink IncludeBackground PluginsLink Aut
|
||||||
|
|
||||||
$oMessage = new \MailSo\Mime\Message();
|
$oMessage = new \MailSo\Mime\Message();
|
||||||
|
|
||||||
if (!$this->Config()->Get('security', 'hide_x_mailer_header', false))
|
if (!$this->Config()->Get('security', 'hide_x_mailer_header', true))
|
||||||
{
|
{
|
||||||
$oMessage->SetXMailer('RainLoop/'.APP_VERSION);
|
$oMessage->SetXMailer('SnappyMail/'.APP_VERSION);
|
||||||
} else {
|
} else {
|
||||||
$oMessage->DoesNotAddDefaultXMailer();
|
$oMessage->DoesNotAddDefaultXMailer();
|
||||||
}
|
}
|
||||||
|
|
@ -3876,9 +3876,9 @@ NewThemeLink IncludeCss TemplatesLink LangLink IncludeBackground PluginsLink Aut
|
||||||
|
|
||||||
$oMessage = new \MailSo\Mime\Message();
|
$oMessage = new \MailSo\Mime\Message();
|
||||||
|
|
||||||
if (!$this->Config()->Get('security', 'hide_x_mailer_header', false))
|
if (!$this->Config()->Get('security', 'hide_x_mailer_header', true))
|
||||||
{
|
{
|
||||||
$oMessage->SetXMailer('RainLoop/'.APP_VERSION);
|
$oMessage->SetXMailer('SnappyMail/'.APP_VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
$oMessage->SetFrom(new \MailSo\Mime\Email($oIdentity->Email(), $oIdentity->Name()));
|
$oMessage->SetFrom(new \MailSo\Mime\Email($oIdentity->Email(), $oIdentity->Name()));
|
||||||
|
|
|
||||||
|
|
@ -547,7 +547,7 @@ trait Admin
|
||||||
$sContentType = '';
|
$sContentType = '';
|
||||||
|
|
||||||
$sRepPath = $sRepo.$sRepoFile;
|
$sRepPath = $sRepo.$sRepoFile;
|
||||||
$sRep = '' !== $sRepo ? $oHttp->GetUrlAsString($sRepPath, 'RainLoop', $sContentType, $iCode, $this->Logger(), 10,
|
$sRep = '' !== $sRepo ? $oHttp->GetUrlAsString($sRepPath, 'SnappyMail', $sContentType, $iCode, $this->Logger(), 10,
|
||||||
$this->Config()->Get('labs', 'curl_proxy', ''), $this->Config()->Get('labs', 'curl_proxy_auth', '')) : false;
|
$this->Config()->Get('labs', 'curl_proxy', ''), $this->Config()->Get('labs', 'curl_proxy_auth', '')) : false;
|
||||||
|
|
||||||
if (false !== $sRep)
|
if (false !== $sRep)
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ class Application extends \RainLoop\Config\AbstractConfig
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct('application.ini',
|
parent::__construct('application.ini',
|
||||||
'; RainLoop Webmail configuration file
|
'; SnappyMail configuration file
|
||||||
; Please don\'t add custom parameters here, those will be overwritten',
|
; Please don\'t add custom parameters here, those will be overwritten',
|
||||||
defined('APP_ADDITIONAL_CONFIGURATION_NAME') ? APP_ADDITIONAL_CONFIGURATION_NAME : '');
|
defined('APP_ADDITIONAL_CONFIGURATION_NAME') ? APP_ADDITIONAL_CONFIGURATION_NAME : '');
|
||||||
}
|
}
|
||||||
|
|
@ -110,8 +110,8 @@ class Application extends \RainLoop\Config\AbstractConfig
|
||||||
|
|
||||||
'webmail' => array(
|
'webmail' => array(
|
||||||
|
|
||||||
'title' => array('RainLoop Webmail', 'Text displayed as page title'),
|
'title' => array('SnappyMail Webmail', 'Text displayed as page title'),
|
||||||
'loading_description' => array('RainLoop', 'Text displayed on startup'),
|
'loading_description' => array('SnappyMail', 'Text displayed on startup'),
|
||||||
'favicon_url' => array('', ''),
|
'favicon_url' => array('', ''),
|
||||||
|
|
||||||
'theme' => array('Default', 'Theme used by default'),
|
'theme' => array('Default', 'Theme used by default'),
|
||||||
|
|
@ -165,7 +165,7 @@ class Application extends \RainLoop\Config\AbstractConfig
|
||||||
'csrf_protection' => array(true,
|
'csrf_protection' => array(true,
|
||||||
'Enable CSRF protection (http://en.wikipedia.org/wiki/Cross-site_request_forgery)'),
|
'Enable CSRF protection (http://en.wikipedia.org/wiki/Cross-site_request_forgery)'),
|
||||||
|
|
||||||
'custom_server_signature' => array('RainLoop'),
|
'custom_server_signature' => array('SnappyMail'),
|
||||||
'x_frame_options_header' => array('DENY'),
|
'x_frame_options_header' => array('DENY'),
|
||||||
'x_xss_protection_header' => array('1; mode=block'),
|
'x_xss_protection_header' => array('1; mode=block'),
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ class Plugin extends \RainLoop\Config\AbstractConfig
|
||||||
{
|
{
|
||||||
$this->aMap = is_array($aMap) ? $this->convertConfigMap($aMap) : array();
|
$this->aMap = is_array($aMap) ? $this->convertConfigMap($aMap) : array();
|
||||||
|
|
||||||
parent::__construct('plugin-'.$sPluginName.'.ini', '; RainLoop Webmail plugin ('.$sPluginName.')');
|
parent::__construct('plugin-'.$sPluginName.'.ini', '; SnappyMail plugin ('.$sPluginName.')');
|
||||||
}
|
}
|
||||||
|
|
||||||
private function convertConfigMap(array $aMap) : array
|
private function convertConfigMap(array $aMap) : array
|
||||||
|
|
|
||||||
|
|
@ -461,7 +461,7 @@ class SieveStorage implements \RainLoop\Providers\Filters\FiltersInterface
|
||||||
$aCapa = array();
|
$aCapa = array();
|
||||||
$aParts = array();
|
$aParts = array();
|
||||||
|
|
||||||
$aParts[] = '# This is RainLoop Webmail sieve script.';
|
$aParts[] = '# This is SnappyMail sieve script.';
|
||||||
$aParts[] = '# Please don\'t change anything here.';
|
$aParts[] = '# Please don\'t change anything here.';
|
||||||
$aParts[] = '# RAINLOOP:SIEVE';
|
$aParts[] = '# RAINLOOP:SIEVE';
|
||||||
$aParts[] = '';
|
$aParts[] = '';
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,7 @@ class Service
|
||||||
{
|
{
|
||||||
$this->oHttp->StatusHeader(403);
|
$this->oHttp->StatusHeader(403);
|
||||||
echo $this->oServiceActions->ErrorTemplates('Access Denied.',
|
echo $this->oServiceActions->ErrorTemplates('Access Denied.',
|
||||||
'Access to the RainLoop Webmail Admin Panel is not allowed!', true);
|
'Access to the SnappyMail Admin Panel is not allowed!', true);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
@ -165,7 +165,7 @@ class Service
|
||||||
{
|
{
|
||||||
echo $this->oServiceActions->ErrorTemplates(
|
echo $this->oServiceActions->ErrorTemplates(
|
||||||
'Permission denied!',
|
'Permission denied!',
|
||||||
'RainLoop Webmail cannot access to the data folder "'.APP_DATA_FOLDER_PATH.'"'
|
'SnappyMail cannot access to the data folder "'.APP_DATA_FOLDER_PATH.'"'
|
||||||
);
|
);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
|
|
@ -245,7 +245,7 @@ class Service
|
||||||
$sFaviconPngLink = $sFaviconUrl ? $sFaviconUrl : $this->staticPath('apple-touch-icon.png');
|
$sFaviconPngLink = $sFaviconUrl ? $sFaviconUrl : $this->staticPath('apple-touch-icon.png');
|
||||||
$sAppleTouchLink = $sFaviconUrl ? '' : $this->staticPath('apple-touch-icon.png');
|
$sAppleTouchLink = $sFaviconUrl ? '' : $this->staticPath('apple-touch-icon.png');
|
||||||
|
|
||||||
$LoadingDescription = $oConfig->Get('webmail', 'loading_description', 'RainLoop');
|
$LoadingDescription = $oConfig->Get('webmail', 'loading_description', 'SnappyMail');
|
||||||
|
|
||||||
$aTemplateParameters = array(
|
$aTemplateParameters = array(
|
||||||
'{{BaseAppHeadScriptLink}}' => '',
|
'{{BaseAppHeadScriptLink}}' => '',
|
||||||
|
|
|
||||||
|
|
@ -367,7 +367,7 @@ class ServiceActions
|
||||||
{
|
{
|
||||||
$iCode = 404;
|
$iCode = 404;
|
||||||
$sContentType = '';
|
$sContentType = '';
|
||||||
$mResult = $this->oHttp->GetUrlAsString($aData['Url'], 'RainLoop External Proxy', $sContentType, $iCode);
|
$mResult = $this->oHttp->GetUrlAsString($aData['Url'], 'SnappyMail External Proxy', $sContentType, $iCode);
|
||||||
|
|
||||||
if (false !== $mResult && 200 === $iCode &&
|
if (false !== $mResult && 200 === $iCode &&
|
||||||
\in_array($sContentType, array('image/png', 'image/jpeg', 'image/jpg', 'image/bmp', 'image/gif')))
|
\in_array($sContentType, array('image/png', 'image/jpeg', 'image/jpg', 'image/bmp', 'image/gif')))
|
||||||
|
|
|
||||||
|
|
@ -315,7 +315,7 @@ class Client {
|
||||||
// Return headers as part of the response
|
// Return headers as part of the response
|
||||||
CURLOPT_HEADER => true,
|
CURLOPT_HEADER => true,
|
||||||
CURLOPT_POSTFIELDS => $body,
|
CURLOPT_POSTFIELDS => $body,
|
||||||
CURLOPT_USERAGENT => 'RainLoop DAV Client', // TODO rainloop
|
CURLOPT_USERAGENT => 'SnappyMail DAV Client', // TODO rainloop
|
||||||
// Automatically follow redirects
|
// Automatically follow redirects
|
||||||
CURLOPT_FOLLOWLOCATION => true,
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
CURLOPT_MAXREDIRS => 5,
|
CURLOPT_MAXREDIRS => 5,
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<h4 class="pull-left">
|
<h4 class="pull-left">
|
||||||
<i class="icon-spinner animated" style="margin-top: 2px" data-bind="style: {'visibility': adminManLoadingVisibility }"></i>
|
<i class="icon-spinner animated" style="margin-top: 2px" data-bind="style: {'visibility': adminManLoadingVisibility }"></i>
|
||||||
|
|
||||||
RainLoop
|
SnappyMail
|
||||||
—
|
—
|
||||||
<span data-i18n="TOP_PANEL/LABEL_ADMIN_PANEL"></span>
|
<span data-i18n="TOP_PANEL/LABEL_ADMIN_PANEL"></span>
|
||||||
</h4>
|
</h4>
|
||||||
|
|
|
||||||
|
|
@ -7,17 +7,13 @@
|
||||||
<div style="margin-left: 30px;">
|
<div style="margin-left: 30px;">
|
||||||
2020 © <span data-i18n="TAB_ABOUT/LABEL_ALL_RIGHTS_RESERVED"></span>
|
2020 © <span data-i18n="TAB_ABOUT/LABEL_ALL_RIGHTS_RESERVED"></span>
|
||||||
<br />
|
<br />
|
||||||
<a class="g-ui-link" href="https://www.rainloop.net/" target="_blank" style="padding-left: 0">https://rainloop.net/</a>
|
<a class="g-ui-link" href="https://snappymail.eu/" target="_blank" style="padding-left: 0">https://snappymail.eu/</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="rl-desc" style="float: left">
|
<div class="rl-desc" style="float: left">
|
||||||
<h1 style="margin-bottom: 0;">RainLoop</h1>
|
<h1 style="margin-bottom: 0;">SnappyMail</h1>
|
||||||
<h4 style="margin-top: 0;">
|
<h4 style="margin-top: 0;" data-bind="text: version"></h4>
|
||||||
<span data-bind="text: version"></span>
|
<h4 style="color: #aaa; font-weight: normal;">An advanced fork of <a href="https://www.rainloop.net/" target="_blank">RainLoop</a></h4>
|
||||||
<span data-bind="visible: 'stable' !== coreType()" style="padding-left: 3px; color: red; font-weight: normal">
|
|
||||||
(<span data-bind="text: coreType"></span> channel)
|
|
||||||
</span>
|
|
||||||
</h4>
|
|
||||||
<h4 style="color: #aaa; font-weight: normal;" data-i18n="TAB_ABOUT/LABEL_TAG_HINT"></h4>
|
<h4 style="color: #aaa; font-weight: normal;" data-i18n="TAB_ABOUT/LABEL_TAG_HINT"></h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue