From 803113568f7131ff1d9df7773fbb59ddd80c19cc Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Sun, 13 Feb 2022 12:58:01 +0100 Subject: [PATCH 01/29] Resolve #228 --- dev/Model/Message.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/Model/Message.js b/dev/Model/Message.js index 29eb0c23e..8b2e65b0a 100644 --- a/dev/Model/Message.js +++ b/dev/Model/Message.js @@ -402,7 +402,6 @@ export class MessageModel extends AbstractModel { oAttachment.isInline(found); oAttachment.isLinked(found || result.foundContentLocationUrls.includes(oAttachment.contentLocation)); }); - this.hasAttachments(oAttachments.hasVisible()); body.innerHTML = result.html; @@ -472,6 +471,7 @@ export class MessageModel extends AbstractModel { } initView() { + this.hasAttachments(this.attachments().hasVisible()); // init BlockquoteSwitcher this.body.querySelectorAll('blockquote:not(.rl-bq-switcher)').forEach(node => { if (node.textContent.trim() && !node.parentNode.closest('blockquote')) { From 9d8325d5a805c1d8ef032778f15909edcc65b4bf Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Sun, 13 Feb 2022 20:01:21 +0100 Subject: [PATCH 02/29] Improved "View in separate window" with theme colors --- dev/Html/PreviewMessage.html | 38 +++++++++++------------------------- dev/Model/Message.js | 25 +++++++++++------------- 2 files changed, 22 insertions(+), 41 deletions(-) diff --git a/dev/Html/PreviewMessage.html b/dev/Html/PreviewMessage.html index 7632cf6fe..a9bbb736c 100644 --- a/dev/Html/PreviewMessage.html +++ b/dev/Html/PreviewMessage.html @@ -1,31 +1,24 @@ - - {{subject}} + - -
-

{{subject}}

- -
{{fromCreds}}
-
{{toLabel}}: {{toCreds}}
-
{{ccLabel}}: {{ccCreds}}
-
-
{{html}}
- + diff --git a/dev/Model/Message.js b/dev/Model/Message.js index 8b2e65b0a..21fe4efe0 100644 --- a/dev/Model/Message.js +++ b/dev/Model/Message.js @@ -491,21 +491,18 @@ export class MessageModel extends AbstractModel { ccLine = this.ccToLine(false), m = 0 < timeStampInUTC ? new Date(timeStampInUTC * 1000) : null, win = open(''), - doc = win.document; - doc.write(PreviewHTML - .replace(/{{subject}}/g, encodeHtml(this.subject())) - .replace('{{date}}', encodeHtml(m ? m.format('LLL') : '')) - .replace('{{fromCreds}}', encodeHtml(this.fromToLine(false))) - .replace('{{toCreds}}', encodeHtml(this.toToLine(false))) - .replace('{{toLabel}}', encodeHtml(i18n('GLOBAL/TO'))) - .replace('{{ccHide}}', ccLine ? '' : 'hidden=""') - .replace('{{ccCreds}}', encodeHtml(ccLine)) - .replace('{{ccLabel}}', encodeHtml(i18n('GLOBAL/CC'))) - .replace('{{bodyClass}}', this.isHtml() ? 'html' : 'plain') - .replace('{{html}}', this.bodyAsHTML()) + sdoc = win.document; + let subject = encodeHtml(this.subject()), + mode = this.isHtml() ? 'div' : 'pre', + cc = ccLine ? `
${encodeHtml(i18n('GLOBAL/CC'))}: ${encodeHtml(ccLine)}
` : '', + style = getComputedStyle(doc.querySelector('.messageView')), + prop = property => style.getPropertyValue(property); + sdoc.write(PreviewHTML + .replace('', '<title>'+subject) + // eslint-disable-next-line max-len + .replace('<body>', `<body style="background-color:${prop('background-color')};color:${prop('color')}"><header><h1>${subject}</h1><time>${encodeHtml(m ? m.format('LLL') : '')}</time><div>${encodeHtml(this.fromToLine(false))}</div><div>${encodeHtml(i18n('GLOBAL/TO'))}: ${encodeHtml(this.toToLine(false))}</div>${cc}</header><${mode}>${this.bodyAsHTML()}</${mode}>`) ); - - doc.close(); + sdoc.close(); if (print) { setTimeout(() => win.print(), 100); From b257fac19bd3ac14b704f28fa06becb1d91b6126 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 14 Feb 2022 07:51:06 +0100 Subject: [PATCH 03/29] Resolve #232 --- snappymail/v/0.0.0/app/libraries/RainLoop/Utils.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Utils.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Utils.php index 2d0c91e38..7d8ed7dec 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Utils.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Utils.php @@ -227,7 +227,7 @@ class Utils return true; } } - \SnappyMail\Log::warning("open_basedir restriction in effect. {$name} is not within the allowed path(s): " . \ini_get('open_basedir')); + \SnappyMail\Log::warning('OpenBasedir', "open_basedir restriction in effect. {$name} is not within the allowed path(s): " . \ini_get('open_basedir')); return false; } return true; From 911f833ede61b7745f7ac2b578b05b2fbc1ea64f Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 14 Feb 2022 11:08:53 +0100 Subject: [PATCH 04/29] Improved Content-Security-Policy management for Captcha issue #222 --- plugins/README.md | 4 + plugins/recaptcha/index.php | 18 ++++- .../0.0.0/app/libraries/RainLoop/Service.php | 27 +++---- .../app/libraries/RainLoop/ServiceActions.php | 5 ++ .../app/libraries/snappymail/http/csp.php | 78 +++++++++++++++++++ 5 files changed, 113 insertions(+), 19 deletions(-) create mode 100644 snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php diff --git a/plugins/README.md b/plugins/README.md index 79f781d66..cf9090541 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -301,6 +301,10 @@ $Plugin->addHook('hook.name', 'functionName'); \RainLoop\Model\Account $oAccount int $iLimit +### main.content-security-policy + params: + \SnappyMail\HTTP\CSP $oCSP + ### main.default-response params: string $sActionName diff --git a/plugins/recaptcha/index.php b/plugins/recaptcha/index.php index 0535c2c93..a0fd55ffe 100644 --- a/plugins/recaptcha/index.php +++ b/plugins/recaptcha/index.php @@ -6,9 +6,9 @@ class RecaptchaPlugin extends \RainLoop\Plugins\AbstractPlugin NAME = 'reCaptcha', AUTHOR = 'SnappyMail', URL = 'https://snappymail.eu/', - VERSION = '2.12', - RELEASE = '2022-02-11', - REQUIRED = '2.12.0', + VERSION = '2.12.1', + RELEASE = '2022-02-14', + REQUIRED = '2.12.1', CATEGORY = 'General', LICENSE = 'MIT', DESCRIPTION = 'A CAPTCHA (v2) is a program that can generate and grade tests that humans can pass but current computer programs cannot. For example, humans can read distorted text as the one shown below, but current computer programs can\'t. More info at https://developers.google.com/recaptcha'; @@ -24,6 +24,7 @@ class RecaptchaPlugin extends \RainLoop\Plugins\AbstractPlugin $this->addHook('json.action-pre-call', 'AjaxActionPreCall'); $this->addHook('filter.json-response', 'FilterAjaxResponse'); + $this->addHook('main.content-security-policy', 'ContentSecurityPolicy'); } protected function configMapping() : array @@ -77,7 +78,7 @@ class RecaptchaPlugin extends \RainLoop\Plugins\AbstractPlugin public function FilterAppDataPluginSection(bool $bAdmin, bool $bAuth, array &$aConfig) : void { if (!$bAdmin && !$bAuth) { - $aConfig['show_captcha_on_login'] = 1; + $aConfig['show_captcha_on_login'] = 1 > $this->getLimit();; } } @@ -140,4 +141,13 @@ class RecaptchaPlugin extends \RainLoop\Plugins\AbstractPlugin } } } + + public function ContentSecurityPolicy(\SnappyMail\HTTP\CSP $CSP) + { + $CSP->script[] = 'https://www.google.com/recaptcha/'; + $CSP->script[] = 'https://www.gstatic.com/recaptcha/'; + $CSP->frame[] = 'https://www.google.com/recaptcha/'; + $CSP->frame[] = 'https://recaptcha.google.com/recaptcha/'; + } + } diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Service.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Service.php index dd808ca71..fcd24d520 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Service.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Service.php @@ -240,23 +240,20 @@ abstract class Service private static function setCSP(string $sScriptNonce = null) : void { - // "img-src https:" is allowed due to remote images in e-mails - $sContentSecurityPolicy = \trim(Api::Config()->Get('security', 'content_security_policy', '')) - ?: "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data: https: http:; style-src 'self' 'unsafe-inline'"; - if (Api::Config()->Get('security', 'use_local_proxy_for_external_images', '')) { - $sContentSecurityPolicy = \preg_replace('/(img-src[^;]+)\\shttps:(\\s|;|$)/D', '$1$2', $sContentSecurityPolicy); - $sContentSecurityPolicy = \preg_replace('/(img-src[^;]+)\\shttp:(\\s|;|$)/D', '$1$2', $sContentSecurityPolicy); + $CSP = new \SnappyMail\HTTP\CSP(\trim(Api::Config()->Get('security', 'content_security_policy', ''))); + $CSP->report_only = Api::Config()->Get('debug', 'enable', false); // '0.0.0' === APP_VERSION + // Allow https: due to remote images in e-mails or use proxy + if (!Api::Config()->Get('security', 'use_local_proxy_for_external_images', '')) { + $CSP->img[] = 'https:'; + $CSP->img[] = 'http:'; } // Internet Explorer does not support 'nonce' - if (!$_SERVER['HTTP_USER_AGENT'] || (!\strpos($_SERVER['HTTP_USER_AGENT'], 'Trident/') && !\strpos($_SERVER['HTTP_USER_AGENT'], 'Edge/1'))) { - if ($sScriptNonce) { - $sContentSecurityPolicy = \str_replace('script-src', "script-src 'nonce-{$sScriptNonce}'", $sContentSecurityPolicy); - } - // Knockout.js requires unsafe-inline? - $sContentSecurityPolicy = \preg_replace("/(script-src[^;]+)'unsafe-inline'/", '$1', $sContentSecurityPolicy); - // Knockout.js requires eval() for observable binding purposes - //$sContentSecurityPolicy = \preg_replace("/(script-src[^;]+)'unsafe-eval'/", '$1', $sContentSecurityPolicy); + if ($sScriptNonce && !$_SERVER['HTTP_USER_AGENT'] || (!\strpos($_SERVER['HTTP_USER_AGENT'], 'Trident/') && !\strpos($_SERVER['HTTP_USER_AGENT'], 'Edge/1'))) { + $CSP->script[] = "'nonce-{$sScriptNonce}'"; } - \header('Content-Security-Policy: '.$sContentSecurityPolicy); + + Api::Actions()->Plugins()->RunHook('main.content-security-policy', array($CSP)); + + $CSP->setHeaders(); } } diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php b/snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php index a2e4021b7..e006a7279 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php @@ -371,6 +371,11 @@ class ServiceActions return ''; } + public function ServiceCspReport() : void + { + \SnappyMail\HTTP\CSP::logReport(); + } + public function ServiceRaw() : string { $sResult = ''; diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php b/snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php new file mode 100644 index 000000000..221a51a40 --- /dev/null +++ b/snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php @@ -0,0 +1,78 @@ +<?php +/** + * Controls the content_security_policy + */ + +namespace SnappyMail\HTTP; + +class CSP +{ + public + $default = ["'self'"], + // Knockout.js requires unsafe-inline? + // Knockout.js requires eval() for observable binding purposes + $script = ["'self'", "'unsafe-eval'"/*, "'unsafe-inline'"*/], + $img = ["'self'", 'data:'], + $style = ["'self'", "'unsafe-inline'"], + $frame = [], + $report_to = [], + $report_only = false; + + function __construct(string $default = '') + { + if ($default) { + foreach (\explode(';', $default) as $directive) { + $values = \explode(' ', $directive); + $name = \preg_replace('/-.+/', '', \trim(\array_shift($values))); + $this->$name = $values; + } + } + } + + function __toString() : string + { + $params = [ + 'default-src ' . \implode(' ', $this->default), + 'script-src ' . \implode(' ', $this->script), + 'img-src ' . \implode(' ', $this->img), + 'style-src ' . \implode(' ', $this->style), + ]; + if ($this->script) { + $params[] = 'script-src ' . \implode(' ', $this->script); + } + if ($this->img) { + $params[] = 'img-src ' . \implode(' ', $this->img); + } + if ($this->style) { + $params[] = 'style-src ' . \implode(' ', $this->style); + } + if ($this->frame) { + $params[] = 'frame-src ' . \implode(' ', $this->frame); + } + // Deprecated + $params[] = 'report-uri ./?/CspReport'; + + return \implode('; ', $params); + } + + public function setHeaders() : void + { + if ($this->report_only) { + \header('Content-Security-Policy-Report-Only: ' . $this); + } else { + \header('Content-Security-Policy: ' . $this); + } + } + + public static function logReport() : void + { + \http_response_code(204); + $json = \file_get_contents('php://input'); + $report = \json_decode($json, true); + // Useless to log 'moz-extension' as there's no clue which extension violates + if ($json && $report && 'moz-extension' !== $report['csp-report']['source-file']) { + \SnappyMail\Log::error('CSP', $json); + } + exit; + } +} From 185b4416a0de5b403063968f6c5afc99034aeef2 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 14 Feb 2022 11:10:52 +0100 Subject: [PATCH 05/29] Solution for #231 ? --- snappymail/v/0.0.0/app/libraries/snappymail/pgp/gpg.php | 1 + 1 file changed, 1 insertion(+) diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/pgp/gpg.php b/snappymail/v/0.0.0/app/libraries/snappymail/pgp/gpg.php index ae628950c..31903845d 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/pgp/gpg.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/pgp/gpg.php @@ -87,6 +87,7 @@ class GPG throw new \Exception("socket name for '{$homedir}/S.gpg-agent.extra' is too long"); } + \clearstatcache(); if ($homedir && !\is_dir($homedir) && !\mkdir($homedir, 0700, true)) { throw new \Exception("mkdir({$homedir}) failed"); } From eb22ddc4c375d913bc09794112459f83ac8803a9 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 14 Feb 2022 11:47:56 +0100 Subject: [PATCH 06/29] Improved cleanHtml() --- dev/Common/Html.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/dev/Common/Html.js b/dev/Common/Html.js index 379ab8e90..44b707cdb 100644 --- a/dev/Common/Html.js +++ b/dev/Common/Html.js @@ -105,6 +105,11 @@ export const 'id', 'class', 'contenteditable', 'designmode', 'formaction', 'manifest', 'action', 'data-bind', 'data-reactid', 'xmlns', 'srcset', 'fscommand', 'seeksegmenttime' + ], + disallowedTags = [ + 'HEAD','STYLE','SVG','SCRIPT','TITLE','LINK','BASE','META', + 'INPUT','OUTPUT','SELECT','BUTTON','TEXTAREA', + 'BGSOUND','KEYGEN','SOURCE','OBJECT','EMBED','APPLET','IFRAME','FRAME','FRAMESET','VIDEO','AUDIO','AREA','MAP' ]; tpl.innerHTML = html @@ -113,17 +118,11 @@ export const }) // \MailSo\Base\HtmlUtils::ClearComments() .replace(/<!--[\s\S]*?-->/g, '') - // \MailSo\Base\HtmlUtils::ClearTags() - // eslint-disable-next-line max-len - .replace(/<\/?(link|form|input|output|select|button|textarea|center|base|meta|bgsound|keygen|source|object|embed|applet|mocha|i?frame|frameset|video|audio|area|map)(\s[\s\S]*?)?>/gi, '') // GetDomFromText .replace('<o:p></o:p>', '') .replace('<o:p>', '<span>') .replace('</o:p>', '</span>') - // https://github.com/the-djmaze/snappymail/issues/187 -// .replace(/<a(?:\s[^>]*)?>((?![\s\S]*<\/a)[\s\S]*?<a(\s[^>]*)?>)/gi, '$1') // \MailSo\Base\HtmlUtils::ClearFastTags - .replace(/<p[^>]*><\/p>/i, '') .replace(/<!doctype[^>]*>/i, '') .replace(/<\?xml [^>]*\?>/i, '') .trim(); @@ -137,7 +136,8 @@ export const setAttribute = (name, value) => oElement.setAttribute(name, value), delAttribute = name => oElement.removeAttribute(name); - if (['HEAD','STYLE','SVG','SCRIPT','TITLE','INPUT','BUTTON','TEXTAREA','SELECT'].includes(name) + // \MailSo\Base\HtmlUtils::ClearTags() + if (disallowedTags.includes(name) || 'none' == oStyle.display || 'hidden' == oStyle.visibility // || (oStyle.lineHeight && 1 > parseFloat(oStyle.lineHeight) @@ -148,6 +148,11 @@ export const oElement.remove(); return; } +// if (['CENTER','FORM'].includes(name)) { + if ('FORM' === name) { + replaceWithChildren(oElement); + return; + } if ('BODY' === name) { forEachObjectEntry(tasks, (name, cb) => { From 973cb83ba023de1dcbe662194972e496e43dc603 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 14 Feb 2022 11:48:23 +0100 Subject: [PATCH 07/29] Resolve #230 --- dev/Common/Html.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/Common/Html.js b/dev/Common/Html.js index 44b707cdb..a7d27c073 100644 --- a/dev/Common/Html.js +++ b/dev/Common/Html.js @@ -325,7 +325,7 @@ export const setAttribute('data-x-style-broken-urls', JSON.stringify(urls.broken)); } - if (11 < pInt(oStyle.fontSize)) { + if (11 > pInt(oStyle.fontSize)) { oStyle.removeProperty('font-size'); } From af959e363186913acff2db9c845236cbafa59093 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 14 Feb 2022 12:27:43 +0100 Subject: [PATCH 08/29] Resolve #187 (found the real problem, comments in comments) --- dev/Common/Html.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/dev/Common/Html.js b/dev/Common/Html.js index a7d27c073..6d2372353 100644 --- a/dev/Common/Html.js +++ b/dev/Common/Html.js @@ -116,8 +116,6 @@ export const .replace(/(<pre[^>]*>)([\s\S]*?)(<\/pre>)/gi, aMatches => { return (aMatches[1] + aMatches[2].trim() + aMatches[3].trim()).replace(/\r?\n/g, '<br>'); }) - // \MailSo\Base\HtmlUtils::ClearComments() - .replace(/<!--[\s\S]*?-->/g, '') // GetDomFromText .replace('<o:p></o:p>', '') .replace('<o:p>', '<span>') @@ -128,6 +126,13 @@ export const .trim(); html = ''; + // \MailSo\Base\HtmlUtils::ClearComments() + // https://github.com/the-djmaze/snappymail/issues/187 + const nodeIterator = document.createNodeIterator(tpl.content, NodeFilter.SHOW_COMMENT); + while (nodeIterator.nextNode()) { + nodeIterator.referenceNode.remove(); + } + tpl.content.querySelectorAll('*').forEach(oElement => { const name = oElement.tagName, oStyle = oElement.style, @@ -172,11 +177,6 @@ export const else if ('A' === name) { value = oElement.href; - // https://github.com/the-djmaze/snappymail/issues/187 <a> can't have block element inside - if (!value || oElement.querySelector('td,div,p,li')) { - replaceWithChildren(oElement); - return; - } value = stripTracking(value); if (!/^([a-z]+):/i.test(value) && '//' !== value.slice(0, 2)) { setAttribute('data-x-broken-href', value); From b405b45158610b6efc17cd11032a3c398726147a Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 14 Feb 2022 12:56:57 +0100 Subject: [PATCH 09/29] Resolve #205 only when 'Language' setting is empty --- snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php index 332e3f3ab..0cd30f777 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php @@ -848,11 +848,13 @@ class Actions $aResult['ReplySameFolder'] = (bool)$oSettingsLocal->GetConf('ReplySameFolder', $aResult['ReplySameFolder']); } + if ($oConfig->Get('login', 'determine_user_language', true)) { + $sLanguage = $this->ValidateLanguage($UserLanguageRaw, $sLanguage, false); + } + if ($oSettings instanceof Settings) { if ($oConfig->Get('webmail', 'allow_languages_on_settings', true)) { - $sLanguage = (string)$oSettings->GetConf('Language', - $oConfig->Get('login', 'determine_user_language', true) ? $UserLanguageRaw : $sLanguage - ); + $sLanguage = (string) $oSettings->GetConf('Language', $sLanguage); } $aResult['EditorDefaultType'] = (string)$oSettings->GetConf('EditorDefaultType', $aResult['EditorDefaultType']); From 6c71f25f5050321e52c196635df11b3aa402d5f8 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 14 Feb 2022 13:06:00 +0100 Subject: [PATCH 10/29] Resolve #124 --- .../0.0.0/app/libraries/MailSo/Imap/Commands/Folders.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Folders.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Folders.php index d791ba5f2..4a538d744 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Folders.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Folders.php @@ -51,6 +51,14 @@ trait Folders array($this->EscapeFolderName($sFolderName))); // $this->FolderCheck(); // $this->FolderUnselect(); + + // Will this workaround solve Dovecot issue #124 ? + try { + $this->FolderRename($sFolderName, "{$sFolderName}-dummy"); + $this->FolderRename("{$sFolderName}-dummy", $sFolderName); + } catch (\Throwable $e) { + } + return $this; } From 5e9c83c1a84d3df63e41d976b2132136b180bced Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 14 Feb 2022 14:58:35 +0100 Subject: [PATCH 11/29] Added option to application.ini for CSP reporting --- .../v/0.0.0/app/libraries/RainLoop/Config/Application.php | 1 + snappymail/v/0.0.0/app/libraries/RainLoop/Service.php | 2 ++ snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php | 7 ++++++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php index 4a8509608..285500be8 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php @@ -181,6 +181,7 @@ class Application extends \RainLoop\Config\AbstractConfig 'admin_panel_host' => array(''), 'admin_panel_key' => array('admin'), 'content_security_policy' => array(''), + 'csp_report' => array(false), 'encrypt_cipher' => array($sCipher) ), diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Service.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Service.php index fcd24d520..f7c1b51be 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Service.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Service.php @@ -241,7 +241,9 @@ abstract class Service private static function setCSP(string $sScriptNonce = null) : void { $CSP = new \SnappyMail\HTTP\CSP(\trim(Api::Config()->Get('security', 'content_security_policy', ''))); + $CSP->report = Api::Config()->Get('security', 'csp_report', false); $CSP->report_only = Api::Config()->Get('debug', 'enable', false); // '0.0.0' === APP_VERSION + // Allow https: due to remote images in e-mails or use proxy if (!Api::Config()->Get('security', 'use_local_proxy_for_external_images', '')) { $CSP->img[] = 'https:'; diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php b/snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php index 221a51a40..6deebe9af 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php @@ -15,6 +15,8 @@ class CSP $img = ["'self'", 'data:'], $style = ["'self'", "'unsafe-inline'"], $frame = [], + + $report = false, $report_to = [], $report_only = false; @@ -49,8 +51,11 @@ class CSP if ($this->frame) { $params[] = 'frame-src ' . \implode(' ', $this->frame); } + // Deprecated - $params[] = 'report-uri ./?/CspReport'; + if ($this->report) { + $params[] = 'report-uri ./?/CspReport'; + } return \implode('; ', $params); } From 27cfd1ee8300e6b08af76099ee100c488dd3a3bb Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 14 Feb 2022 15:01:42 +0100 Subject: [PATCH 12/29] Cleanup CSP header --- snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php b/snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php index 6deebe9af..1b9ad019a 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php @@ -34,10 +34,7 @@ class CSP function __toString() : string { $params = [ - 'default-src ' . \implode(' ', $this->default), - 'script-src ' . \implode(' ', $this->script), - 'img-src ' . \implode(' ', $this->img), - 'style-src ' . \implode(' ', $this->style), + 'default-src ' . \implode(' ', $this->default) ]; if ($this->script) { $params[] = 'script-src ' . \implode(' ', $this->script); From 5c229336287c5ad212d22bdbcc0598ea7cfc03c1 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 14 Feb 2022 15:39:47 +0100 Subject: [PATCH 13/29] Small restructure --- .../v/0.0.0/app/libraries/MailSo/Imap/Commands/Quota.php | 2 +- snappymail/v/0.0.0/app/libraries/RainLoop/Actions/User.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Quota.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Quota.php index 8fe235e71..de5305a07 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Quota.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Quota.php @@ -46,13 +46,13 @@ trait Quota : null; } + // * QUOTA "User quota" (STORAGE 1284645 2097152)\r\n private function getQuotaResult(\MailSo\Imap\ResponseCollection $oResponseCollection) : array { $aReturn = array(0, 0); foreach ($oResponseCollection as $oResponse) { if (Enumerations\ResponseType::UNTAGGED === $oResponse->ResponseType && 'QUOTA' === $oResponse->StatusOrIndex - && \is_array($oResponse->ResponseList) && isset($oResponse->ResponseList[3]) && \is_array($oResponse->ResponseList[3]) && 2 < \count($oResponse->ResponseList[3]) diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/User.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/User.php index 6704d72ea..f68f5bb6d 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/User.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/User.php @@ -51,7 +51,6 @@ trait User { $sEmail = \MailSo\Base\Utils::Trim($this->GetActionParam('Email', '')); $sPassword = $this->GetActionParam('Password', ''); - $sLanguage = $this->GetActionParam('Language', ''); $bSignMe = !empty($this->GetActionParam('SignMe', 0)); $oAccount = null; @@ -63,7 +62,8 @@ trait User $this->SetAuthToken($oAccount); - if ($oAccount && \strlen($sLanguage)) + $sLanguage = $this->GetActionParam('Language', ''); + if ($oAccount && $sLanguage) { $oSettings = $this->SettingsProvider()->Load($oAccount); if ($oSettings) From 88c16f5c40c6ecced248632b1e07d6bf952c523b Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 14 Feb 2022 17:37:58 +0100 Subject: [PATCH 14/29] Cleanup some CSS --- dev/Styles/Main.less | 2 +- dev/Styles/User/Contacts.less | 1 - dev/Styles/User/FolderList.less | 1 - dev/Styles/User/MessageList.less | 1 - dev/Styles/User/SquireUI.less | 1 - dev/Styles/_BootstrapFix.less | 5 ----- dev/Styles/_FontasticToBoot.less | 1 - .../templates/Views/Admin/AdminSettingsContacts.html | 8 +------- .../templates/Views/Admin/AdminSettingsDomains.html | 6 ++---- .../app/templates/Views/User/PopupsSieveScript.html | 2 +- .../app/templates/Views/User/SettingsAccounts.html | 4 ++-- .../app/templates/Views/User/SettingsFilters.html | 2 +- .../app/templates/Views/User/SettingsFolderItem.html | 2 +- .../app/templates/Views/User/SettingsOpenPGP.html | 8 ++++---- vendors/bootstrap/less/button-groups.less | 12 ------------ vendors/bootstrap/less/buttons.less | 7 +++---- vendors/bootstrap/less/close.less | 2 +- vendors/bootstrap/less/code.less | 6 ------ vendors/bootstrap/less/forms.less | 1 - vendors/bootstrap/less/type.less | 3 --- vendors/fontastic/styles.css | 2 -- 21 files changed, 17 insertions(+), 60 deletions(-) diff --git a/dev/Styles/Main.less b/dev/Styles/Main.less index 5c44d72e7..a1568c47a 100644 --- a/dev/Styles/Main.less +++ b/dev/Styles/Main.less @@ -12,7 +12,7 @@ html, body { body { -webkit-touch-callout: none; - + font-size: @baseFontSize; position: fixed; top: 0; left: 0; diff --git a/dev/Styles/User/Contacts.less b/dev/Styles/User/Contacts.less index a14f54deb..620cf5b2f 100644 --- a/dev/Styles/User/Contacts.less +++ b/dev/Styles/User/Contacts.less @@ -64,7 +64,6 @@ .listClear { text-align: center; padding: 10px; - font-size: 14px; line-height: 13px; box-shadow: inset 0 -1px 0 #ccc; } diff --git a/dev/Styles/User/FolderList.less b/dev/Styles/User/FolderList.less index 92b322453..97d8372bf 100644 --- a/dev/Styles/User/FolderList.less +++ b/dev/Styles/User/FolderList.less @@ -74,7 +74,6 @@ background-color: transparent; vertical-align: middle; color: var(--folders-disabled-color, #666); - font-size: 14px; border-left: 3px solid transparent; padding: 0 2em 0 @folderItemPadding; diff --git a/dev/Styles/User/MessageList.less b/dev/Styles/User/MessageList.less index ca9742e31..d1e7312f2 100644 --- a/dev/Styles/User/MessageList.less +++ b/dev/Styles/User/MessageList.less @@ -115,7 +115,6 @@ html.rl-no-preview-pane { .listClear { text-align: center; padding: 10px; - font-size: 14px; line-height: 13px; } diff --git a/dev/Styles/User/SquireUI.less b/dev/Styles/User/SquireUI.less index 9425a7659..ee4976d5f 100644 --- a/dev/Styles/User/SquireUI.less +++ b/dev/Styles/User/SquireUI.less @@ -100,7 +100,6 @@ blockquote p { margin: 0 0 10px; - font-size: 14px; line-height: 20px; } diff --git a/dev/Styles/_BootstrapFix.less b/dev/Styles/_BootstrapFix.less index 0827a9847..e2c0b51d1 100644 --- a/dev/Styles/_BootstrapFix.less +++ b/dev/Styles/_BootstrapFix.less @@ -15,11 +15,6 @@ summary.legend { cursor: pointer; } -.btn-small.btn-small-small { - font-size: 11px; - line-height: 11px; -} - .btn.btn-thin { padding: 4px 9px; } diff --git a/dev/Styles/_FontasticToBoot.less b/dev/Styles/_FontasticToBoot.less index dc4518231..92a7645b3 100644 --- a/dev/Styles/_FontasticToBoot.less +++ b/dev/Styles/_FontasticToBoot.less @@ -9,7 +9,6 @@ [class*=" icon-"] { display: inline-block; width: 1em; - height: 1em; vertical-align: text-top; .disabled &, diff --git a/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsContacts.html b/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsContacts.html index 0063622a0..87ee6052b 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsContacts.html +++ b/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsContacts.html @@ -39,13 +39,7 @@ <label data-i18n="TAB_CONTACTS/LABEL_STORAGE_DSN"></label> <div> <input type="text" class="span6" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" - data-bind="value: pdoDsn, saveTrigger: pdoDsnTrigger" /> - <blockquote style="margin: 0"> - <p class="muted"> -host=127.0.0.1;port=3306;dbname=snappymail<br /> -host=127.0.0.1;port=5432;dbname=snappymail - </p> - </blockquote> + data-bind="value: pdoDsn, saveTrigger: pdoDsnTrigger" placeholder="mysql:host=127.0.0.1;port=3306;dbname=snappymail"/> </div> </div> <div class="control-group"> diff --git a/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsDomains.html b/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsDomains.html index 8fd3f7626..764474de2 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsDomains.html +++ b/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsDomains.html @@ -7,9 +7,7 @@ <a class="btn" data-bind="click: createDomainAlias" data-icon="✚" data-i18n="TAB_DOMAINS/BUTTON_ADD_ALIAS"></a> <br /> <br /> -<blockquote> - <p class="muted" data-i18n="[html]TAB_DOMAINS/HTML_DOMAINS_HELPER"></p> -</blockquote> +<p data-i18n="[html]TAB_DOMAINS/HTML_DOMAINS_HELPER"></p> <table class="table table-hover b-admin-domains-list-table" data-bind="i18nUpdate: domains"> <colgroup> <col /> @@ -24,7 +22,7 @@ <span class="domain-alias" data-bind="if: alias">(alias)</span> </td> <td> - <a class="btn btn-small btn-small-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: function(oDomain) { $root.deleteDomain(oDomain); }" + <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: function(oDomain) { $root.deleteDomain(oDomain); }" data-i18n="TAB_DOMAINS/DELETE_ARE_YOU_SURE"></a> </td> <td> diff --git a/snappymail/v/0.0.0/app/templates/Views/User/PopupsSieveScript.html b/snappymail/v/0.0.0/app/templates/Views/User/PopupsSieveScript.html index ded4c22ea..1c6ab6ab0 100644 --- a/snappymail/v/0.0.0/app/templates/Views/User/PopupsSieveScript.html +++ b/snappymail/v/0.0.0/app/templates/Views/User/PopupsSieveScript.html @@ -49,7 +49,7 @@ <span class="filter-sub-name" data-bind="text: nameSub()"></span> </td> <td> - <a class="btn btn-small btn-small-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: function(oFilter) { $root.deleteFilter(oFilter); }" + <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: function(oFilter) { $root.deleteFilter(oFilter); }" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> diff --git a/snappymail/v/0.0.0/app/templates/Views/User/SettingsAccounts.html b/snappymail/v/0.0.0/app/templates/Views/User/SettingsAccounts.html index 511e64d64..c32d7a485 100644 --- a/snappymail/v/0.0.0/app/templates/Views/User/SettingsAccounts.html +++ b/snappymail/v/0.0.0/app/templates/Views/User/SettingsAccounts.html @@ -23,7 +23,7 @@ <span class="account-name" data-bind="text: email"></span> </td> <td> - <a class="btn btn-small btn-small-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete}, click: function(oAccount) { $root.deleteAccount(oAccount); }" + <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete}, click: function(oAccount) { $root.deleteAccount(oAccount); }" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> @@ -52,7 +52,7 @@ <span class="identity-default" data-bind="visible: 0 === $index()" data-i18n="SETTINGS_ACCOUNTS/DEFAULT_IDENTITY_LABEL"></span> </td> <td> - <a class="btn btn-small btn-small-small btn-danger button-confirm-delete" data-bind="visible: canBeDeleted, css: {'delete-access': askDelete}, click: function(oIdentity) { $root.deleteIdentity(oIdentity); }" + <a class="btn btn-small btn-danger button-confirm-delete" data-bind="visible: canBeDeleted, css: {'delete-access': askDelete}, click: function(oIdentity) { $root.deleteIdentity(oIdentity); }" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> diff --git a/snappymail/v/0.0.0/app/templates/Views/User/SettingsFilters.html b/snappymail/v/0.0.0/app/templates/Views/User/SettingsFilters.html index 4d297a3ae..dbaf9abb1 100644 --- a/snappymail/v/0.0.0/app/templates/Views/User/SettingsFilters.html +++ b/snappymail/v/0.0.0/app/templates/Views/User/SettingsFilters.html @@ -21,7 +21,7 @@ </td> <td class="e-action" class="script-name" data-bind="text: name()"></td> <td> - <a class="btn btn-small btn-small-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: function(oScript) { $root.deleteScript(oScript); }" + <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: function(oScript) { $root.deleteScript(oScript); }" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> diff --git a/snappymail/v/0.0.0/app/templates/Views/User/SettingsFolderItem.html b/snappymail/v/0.0.0/app/templates/Views/User/SettingsFolderItem.html index 7e72b7ed5..9710f5904 100644 --- a/snappymail/v/0.0.0/app/templates/Views/User/SettingsFolderItem.html +++ b/snappymail/v/0.0.0/app/templates/Views/User/SettingsFolderItem.html @@ -10,7 +10,7 @@ <span class="folder-system-name" data-bind="text: manageFolderSystemName, visible: isSystemFolder"></span> </td> <td data-i18n="[title]SETTINGS_FOLDERS/HELP_DELETE_FOLDER"> - <a class="btn btn-small btn-small-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: $root.deleteFolder" + <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: $root.deleteFolder" data-i18n="GLOBAL/ARE_YOU_SURE"></a> <span class="e-action fontastic" data-bind="visible: canBeDeleted() && !askDelete(), click: $root.folderForDeletion">🗑</span> </td> diff --git a/snappymail/v/0.0.0/app/templates/Views/User/SettingsOpenPGP.html b/snappymail/v/0.0.0/app/templates/Views/User/SettingsOpenPGP.html index 16a7f7f44..fe1236113 100644 --- a/snappymail/v/0.0.0/app/templates/Views/User/SettingsOpenPGP.html +++ b/snappymail/v/0.0.0/app/templates/Views/User/SettingsOpenPGP.html @@ -34,7 +34,7 @@ <!-- /ko --> </td> <td> - <a class="btn btn-small btn-small-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: remove" + <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: remove" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> @@ -54,7 +54,7 @@ <!-- /ko --> </td> <td> - <a class="btn btn-small btn-small-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: remove" + <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: remove" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> @@ -81,7 +81,7 @@ <!-- /ko --> </td> <td> - <a class="btn btn-small btn-small-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: remove" + <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: remove" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> @@ -100,7 +100,7 @@ <!-- /ko --> </td> <td> - <a class="btn btn-small btn-small-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: remove" + <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: remove" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> diff --git a/vendors/bootstrap/less/button-groups.less b/vendors/bootstrap/less/button-groups.less index 124031758..662717884 100644 --- a/vendors/bootstrap/less/button-groups.less +++ b/vendors/bootstrap/less/button-groups.less @@ -6,7 +6,6 @@ // Make the div behave like a button .btn-group { position: relative; - font-size: 0; // remove as part 1 of font-size inline-block hack white-space: nowrap; // prevent buttons from wrapping when in tight spaces (e.g., the table on the tests page) } @@ -16,9 +15,6 @@ // Optional: Group multiple button groups together for a toolbar .btn-toolbar { - font-size: 0; // Hack to remove whitespace that results from using inline-block - margin-top: 0; - margin-bottom: 0; .btn-group { display: inline-block; } @@ -37,14 +33,6 @@ .btn-group > .btn + .btn { margin-left: -1px; } -.btn-group > .dropdown-menu { - font-size: @baseFontSize; // redeclare as part 2 of font-size inline-block hack -} - -// Reset fonts for other sizes -.btn-group > .btn-small { - font-size: 12px; -} // Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match .btn-group > .btn:first-child { diff --git a/vendors/bootstrap/less/buttons.less b/vendors/bootstrap/less/buttons.less index b3084e6c4..3ca61afae 100644 --- a/vendors/bootstrap/less/buttons.less +++ b/vendors/bootstrap/less/buttons.less @@ -12,7 +12,6 @@ display: inline-block; padding: 4px 13px; - font-size: @baseFontSize; line-height: @baseLineHeight; text-align: center; vertical-align: middle; @@ -60,7 +59,7 @@ // Large .btn-large { padding: 9px 14px; - font-size: @baseFontSize + 3px; + font-size: 121%; line-height: normal; border-radius: 5px; } @@ -68,8 +67,8 @@ // Small .btn-small { padding: 3px 9px; - font-size: (@baseFontSize * 0.85); - line-height: (@baseLineHeight * 0.85); + font-size: 80%; + line-height: 1; } // Block button diff --git a/vendors/bootstrap/less/close.less b/vendors/bootstrap/less/close.less index ba07e895f..d782c271b 100644 --- a/vendors/bootstrap/less/close.less +++ b/vendors/bootstrap/less/close.less @@ -5,7 +5,7 @@ .close { float: right; - font-size: 20px; + font-size: 143%; font-weight: bold; line-height: @baseLineHeight; color: inherit; diff --git a/vendors/bootstrap/less/code.less b/vendors/bootstrap/less/code.less index 57c418e0b..2b805dca3 100644 --- a/vendors/bootstrap/less/code.less +++ b/vendors/bootstrap/less/code.less @@ -10,10 +10,6 @@ samp, pre { padding: 0 3px 2px; font-family: var(--fontMono); - font-size: @baseFontSize; - font-weight: normal; - line-height: @baseLineHeight; - font-size: @baseFontSize - 2; border-radius: 3px; } @@ -28,8 +24,6 @@ pre { display: block; padding: (@baseLineHeight / 2); margin: 0 0 (@baseLineHeight / 2); - font-size: @baseFontSize - 1; // 14px to 13px - line-height: @baseLineHeight; white-space: pre-wrap; border: 1px solid rgba(0,0,0,.15); border-radius: 4px; diff --git a/vendors/bootstrap/less/forms.less b/vendors/bootstrap/less/forms.less index 2ddc89227..0924c61ce 100644 --- a/vendors/bootstrap/less/forms.less +++ b/vendors/bootstrap/less/forms.less @@ -14,7 +14,6 @@ form { // Identify controls by their labels label { display: block; - font-size: @baseFontSize; font-weight: normal; line-height: @baseLineHeight; margin-bottom: 5px; diff --git a/vendors/bootstrap/less/type.less b/vendors/bootstrap/less/type.less index 38c47f4e2..aa77999a7 100644 --- a/vendors/bootstrap/less/type.less +++ b/vendors/bootstrap/less/type.less @@ -26,9 +26,6 @@ em { cite { font-style: normal; } -.muted { - color: @grayLight; -} // Headings diff --git a/vendors/fontastic/styles.css b/vendors/fontastic/styles.css index a0e224821..3096bd5ef 100644 --- a/vendors/fontastic/styles.css +++ b/vendors/fontastic/styles.css @@ -20,13 +20,11 @@ text-transform: none !important; speak: never; -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } [data-icon]::before { content: attr(data-icon); display: inline-block; - height: 1em; margin-right: 0.5em; min-width: 1em; } From 938fd36a9bdc407830562bbb5300f3a0de0a1eae Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 14 Feb 2022 17:48:40 +0100 Subject: [PATCH 15/29] v2.12.1 --- .../files/usr/local/include/application.ini | 2 +- README.md | 18 +++++++++--------- integrations/cloudron/DESCRIPTION.md | 2 +- integrations/cloudron/Dockerfile | 2 +- integrations/nextcloud/snappymail/VERSION | 2 +- .../nextcloud/snappymail/appinfo/info.xml | 2 +- integrations/virtualmin/snappymail.pl | 2 +- package.json | 2 +- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.docker/release/files/usr/local/include/application.ini b/.docker/release/files/usr/local/include/application.ini index ce7dd834b..2b57fd76b 100644 --- a/.docker/release/files/usr/local/include/application.ini +++ b/.docker/release/files/usr/local/include/application.ini @@ -289,5 +289,5 @@ dev_email = "" dev_password = "" [version] -current = "2.12.0" +current = "2.12.1" saved = "Mon, 23 Aug 2021 07:55:13 +0000" diff --git a/README.md b/README.md index 91701c8a8..e4bfd7fb1 100644 --- a/README.md +++ b/README.md @@ -140,22 +140,22 @@ RainLoop 1.15 vs SnappyMail |js/* |RainLoop |Snappy | |--------------- |--------: |--------: | |admin.js |2.158.025 | 86.330 | -|app.js |4.215.733 | 443.039 | +|app.js |4.215.733 | 442.708 | |boot.js | 672.433 | 2.049 | |libs.js | 647.679 | 206.717 | |polyfills.js | 325.908 | 0 | |serviceworker.js | 0 | 285 | -|TOTAL |8.019.778 | 738.420 | +|TOTAL |8.019.778 | 738.089 | |js/min/* |RainLoop |Snappy |RL gzip |SM gzip |RL brotli |SM brotli | |--------------- |--------: |--------: |------: |------: |--------: |--------: | |admin.min.js | 255.514 | 43.341 | 73.899 | 13.994 | 60.674 | 12.482 | -|app.min.js | 516.000 | 219.474 |140.430 | 68.650 |110.657 | 58.572 | +|app.min.js | 516.000 | 219.141 |140.430 | 68.581 |110.657 | 58.570 | |boot.min.js | 66.456 | 1.278 | 22.553 | 789 | 20.043 | 632 | |libs.min.js | 574.626 | 98.988 |177.280 | 36.290 |151.855 | 32.467 | |polyfills.min.js | 32.608 | 0 | 11.315 | 0 | 10.072 | 0 | -|TOTAL |1.445.204 | 363.081 |425.477 |119.723 |353.301 |104.153 | -|TOTAL (no admin) |1.189.690 | 319.740 |351.061 |105.729 |292.627 | 91.671 | +|TOTAL |1.445.204 | 362.748 |425.477 |119.654 |353.301 |104.151 | +|TOTAL (no admin) |1.189.690 | 319.407 |351.061 |105.660 |292.627 | 91.669 | For a user its around 69% smaller and faster than traditional RainLoop. @@ -183,12 +183,12 @@ For a user its around 69% smaller and faster than traditional RainLoop. |css/* |RainLoop |Snappy |RL gzip |SM gzip |SM brotli | |------------ |-------: |------: |------: |------: |--------: | -|app.css | 340.334 | 83.066 | 46.959 | 17.023 | 14.627 | -|app.min.css | 274.791 | 66.988 | 39.618 | 15.081 | 13.276 | +|app.css | 340.334 | 82.487 | 46.959 | 16.926 | 14.572 | +|app.min.css | 274.791 | 66.527 | 39.618 | 15.003 | 13.206 | |boot.css | | 1.326 | | 664 | 545 | |boot.min.css | | 1.071 | | 590 | 474 | -|admin.css | | 30.589 | | 6.914 | 6.003 | -|admin.min.css | | 24.590 | | 6.258 | 5.508 | +|admin.css | | 30.212 | | 6.840 | 5.929 | +|admin.min.css | | 24.288 | | 6.195 | 5.451 | ### PGP RainLoop uses the old OpenPGP.js v2 diff --git a/integrations/cloudron/DESCRIPTION.md b/integrations/cloudron/DESCRIPTION.md index e756e91f4..2fd94da74 100644 --- a/integrations/cloudron/DESCRIPTION.md +++ b/integrations/cloudron/DESCRIPTION.md @@ -1,4 +1,4 @@ -This app packages SnappyMail <upstream>2.12.0</upstream>. +This app packages SnappyMail <upstream>2.12.1</upstream>. SnappyMail is a simple, modern, lightweight & fast web-based email client. diff --git a/integrations/cloudron/Dockerfile b/integrations/cloudron/Dockerfile index 95f2b38fe..09b89ff87 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.12.0 +VERSION=2.12.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/VERSION b/integrations/nextcloud/snappymail/VERSION index 3ca2c9b2c..44b38b243 100755 --- a/integrations/nextcloud/snappymail/VERSION +++ b/integrations/nextcloud/snappymail/VERSION @@ -1 +1 @@ -2.12.0 \ No newline at end of file +2.12.1 \ No newline at end of file diff --git a/integrations/nextcloud/snappymail/appinfo/info.xml b/integrations/nextcloud/snappymail/appinfo/info.xml index dc02b3207..e083dc468 100644 --- a/integrations/nextcloud/snappymail/appinfo/info.xml +++ b/integrations/nextcloud/snappymail/appinfo/info.xml @@ -4,7 +4,7 @@ <name>SnappyMail</name> <summary>SnappyMail Webmail</summary> <description>Simple, modern and fast web-based email client. After enabling in Nextcloud, go to Nextcloud admin panel, "Additionnal settings" and you will see a "SnappyMail webmail" section. There, click on the link to go to the SnappyMail admin panel. The default user/password is admin/12345. This version is based on SnappyMail 2.6.0 (2021-07).</description> - <version>2.12.0</version> + <version>2.12.1</version> <licence>agpl</licence> <author>SnappyMail Team, Nextgen-Networks, Tab Fitts, Nathan Kinkade, Pierre-Alain Bandinelli</author> <namespace>SnappyMail</namespace> diff --git a/integrations/virtualmin/snappymail.pl b/integrations/virtualmin/snappymail.pl index 25b9a806b..a539f75f5 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.12.0" ); +return ( "2.12.1" ); } sub script_snappymail_version_desc diff --git a/package.json b/package.json index 4111fd48b..72c0d834b 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.12.0", + "version": "2.12.1", "homepage": "https://snappymail.eu", "author": { "name": "DJ Maze", From 3fd4cd5d3364b7ab95ce4284c61c204513485610 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 14 Feb 2022 22:20:57 +0100 Subject: [PATCH 16/29] Hopefully resolve #231 --- .../v/0.0.0/app/libraries/RainLoop/Actions/Pgp.php | 7 ++++++- .../v/0.0.0/app/libraries/snappymail/pgp/gpg.php | 13 +------------ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Pgp.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Pgp.php index d4c39d00f..bc0abecfd 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Pgp.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Pgp.php @@ -28,6 +28,7 @@ trait Pgp * BSD 4.4 max length = 104 */ if (80 < \strlen($homedir)) { + \clearstatcache(); // First try a symbolic link $tmpdir = \sys_get_temp_dir() . '/snappymail'; // if (\RainLoop\Utils::inOpenBasedir($tmpdir) && @@ -39,7 +40,7 @@ trait Pgp } // Else try ~/.gnupg/ + hash(email address) if (80 < \strlen($homedir)) { - $tmpdir = ($_SERVER['HOME'] ?: \exec('echo ~') ?: \dirname(getcwd())) . '/.gnupg/'; + $tmpdir = ($_SERVER['HOME'] ?: \exec('echo ~') ?: \dirname(\getcwd())) . '/.gnupg/'; if ($oAccount instanceof \RainLoop\Model\AdditionalAccount) { $tmpdir .= \sha1($oAccount->ParentEmail()); } else { @@ -50,6 +51,10 @@ trait Pgp $homedir = $link; } } + + if (104 <= \strlen($homedir . '/S.gpg-agent.extra')) { + throw new \Exception("socket name for '{$homedir}/S.gpg-agent.extra' is too long"); + } } return \SnappyMail\PGP\GnuPG::getInstance($homedir); diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/pgp/gpg.php b/snappymail/v/0.0.0/app/libraries/snappymail/pgp/gpg.php index 31903845d..f4864392d 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/pgp/gpg.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/pgp/gpg.php @@ -81,18 +81,7 @@ class GPG function __construct(string $homedir) { - $homedir = \rtrim($homedir, '/\\'); - // BSD 4.4 max length - if (104 <= \strlen($homedir . '/S.gpg-agent.extra')) { - throw new \Exception("socket name for '{$homedir}/S.gpg-agent.extra' is too long"); - } - - \clearstatcache(); - if ($homedir && !\is_dir($homedir) && !\mkdir($homedir, 0700, true)) { - throw new \Exception("mkdir({$homedir}) failed"); - } - - $this->options['homedir'] = $homedir; + $this->options['homedir'] = \rtrim($homedir, '/\\'); // the random seed file makes subsequent actions faster so only disable it if we have to. if ($this->options['homedir'] && !\is_writeable($this->options['homedir'])) { From c8104739c1bf885056b84fb1a9dee42f960ed5c0 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Tue, 15 Feb 2022 08:04:39 +0100 Subject: [PATCH 17/29] Resolve #234 --- snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php b/snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php index e006a7279..01351bae4 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php @@ -357,7 +357,7 @@ class ServiceActions && \str_starts_with($oResponse->getHeader('content-type'), 'image/') ) { $this->oActions->cacheByKey($sData); - \header('Content-Type: '.$sContentType); + \header('Content-Type: ' . $oResponse->getHeader('content-type')); \header('Cache-Control: public'); \header('Expires: '.\gmdate('D, j M Y H:i:s', 2592000 + \time()).' UTC'); \rewind($tmp); From 93190f407148a8a5129365df685c8c661bd5bec5 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Tue, 15 Feb 2022 09:00:51 +0100 Subject: [PATCH 18/29] XHTML to HTML --- .../app/libraries/MailSo/Base/HtmlUtils.php | 5 +- .../app/libraries/MailSo/Mail/Message.php | 2 +- .../0.0.0/app/libraries/RainLoop/Service.php | 4 +- .../v/0.0.0/app/localization/cs-CZ/admin.json | 6 +-- .../v/0.0.0/app/localization/da-DK/admin.json | 6 +-- .../v/0.0.0/app/localization/de-DE/admin.json | 8 +-- .../v/0.0.0/app/localization/en/admin.json | 8 +-- .../v/0.0.0/app/localization/es-ES/admin.json | 8 +-- .../v/0.0.0/app/localization/fa-IR/admin.json | 8 +-- .../v/0.0.0/app/localization/fi-FI/admin.json | 8 +-- .../v/0.0.0/app/localization/fr-FR/admin.json | 6 +-- .../v/0.0.0/app/localization/hu-HU/admin.json | 8 +-- .../v/0.0.0/app/localization/id-ID/admin.json | 8 +-- .../v/0.0.0/app/localization/it-IT/admin.json | 8 +-- .../v/0.0.0/app/localization/ja-JP/admin.json | 6 +-- .../v/0.0.0/app/localization/lt-LT/admin.json | 6 +-- .../v/0.0.0/app/localization/nb-NO/admin.json | 8 +-- .../v/0.0.0/app/localization/nl-NL/admin.json | 8 +-- .../v/0.0.0/app/localization/pl-PL/admin.json | 8 +-- .../v/0.0.0/app/localization/pt-BR/admin.json | 8 +-- .../v/0.0.0/app/localization/ru-RU/admin.json | 8 +-- .../v/0.0.0/app/localization/sk-SK/admin.json | 8 +-- .../v/0.0.0/app/localization/sl-SI/admin.json | 8 +-- .../v/0.0.0/app/localization/sv-SE/admin.json | 8 +-- .../v/0.0.0/app/localization/zh-CN/admin.json | 8 +-- .../v/0.0.0/app/templates/BadBrowser.html | 6 +-- snappymail/v/0.0.0/app/templates/Error.html | 18 +++---- .../app/templates/Views/Admin/AdminLogin.html | 6 +-- .../Views/Admin/AdminSettingsAbout.html | 2 +- .../Views/Admin/AdminSettingsConfig.html | 4 +- .../Views/Admin/AdminSettingsContacts.html | 6 +-- .../Views/Admin/AdminSettingsDomains.html | 12 ++--- .../Views/Admin/AdminSettingsGeneral.html | 10 ++-- .../Views/Admin/AdminSettingsLogin.html | 4 +- .../Views/Admin/AdminSettingsPackages.html | 2 +- .../Admin/AdminSettingsPackagesTable.html | 6 +-- .../Admin/AdminSettingsPluginProperty.html | 8 +-- .../Views/Admin/AdminSettingsSecurity.html | 12 ++--- .../templates/Views/Admin/PopupsDomain.html | 50 +++++++++---------- .../app/templates/Views/Components/Input.html | 2 +- .../0.0.0/app/templates/Views/User/Login.html | 4 +- .../templates/Views/User/MailFolderList.html | 2 +- .../templates/Views/User/MailMessageList.html | 2 +- .../templates/Views/User/PopupsAccount.html | 6 +-- .../Views/User/PopupsAdvancedSearch.html | 8 +-- .../templates/Views/User/PopupsCompose.html | 10 ++-- .../templates/Views/User/PopupsContacts.html | 12 ++--- .../templates/Views/User/PopupsFilter.html | 3 +- .../Views/User/PopupsFolderClear.html | 6 +-- .../Views/User/PopupsFolderCreate.html | 2 +- .../templates/Views/User/PopupsIdentity.html | 10 ++-- .../User/PopupsKeyboardShortcutsHelp.html | 8 +-- .../Views/User/PopupsOpenPgpGenerate.html | 14 +++--- .../Views/User/PopupsOpenPgpImport.html | 2 +- .../Views/User/PopupsSieveScript.html | 13 +++-- .../Views/User/SettingsContacts.html | 6 +-- .../templates/Views/User/SettingsFilters.html | 8 +-- .../User/SettingsFiltersActionForward.html | 2 +- .../User/SettingsFiltersActionVacation.html | 4 +- .../User/SettingsFiltersConditionBody.html | 2 +- .../User/SettingsFiltersConditionDefault.html | 2 +- .../User/SettingsFiltersConditionMore.html | 4 +- .../User/SettingsFiltersConditionSize.html | 2 +- .../Views/User/SettingsFolderItem.html | 2 +- .../templates/Views/User/SettingsFolders.html | 2 +- .../templates/Views/User/SettingsGeneral.html | 4 +- .../templates/Views/User/SettingsOpenPGP.html | 6 +-- .../templates/Views/User/SettingsThemes.html | 6 +-- 68 files changed, 237 insertions(+), 240 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Base/HtmlUtils.php b/snappymail/v/0.0.0/app/libraries/MailSo/Base/HtmlUtils.php index cd00413ae..b3ab1c431 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Base/HtmlUtils.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Base/HtmlUtils.php @@ -368,7 +368,7 @@ abstract class HtmlUtils $sResult = static::GetTextFromDom($oDom, false); unset($oDom); - return '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>'. + return '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>'. '<body>'.$sResult.'</body></html>'; } @@ -446,12 +446,11 @@ abstract class HtmlUtils $sText = \preg_replace('/[\n]{3,}/', "\n\n", $sText); $sText = \strtr($sText, array( - "\n" => "<br />", "\t" => "\xC2\xA0\xC2\xA0\xC2\xA0\xC2\xA0", ' ' => "\xC2\xA0\xC2\xA0" )); - return $sText; + return \nl2br($sText); } public static function ConvertHtmlToPlain(string $sText) : string diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php index f339cef81..e40a36a03 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php @@ -602,7 +602,7 @@ class Message implements \JsonSerializable } } - $oMessage->sHtml = \implode('<br />', $aHtmlParts); + $oMessage->sHtml = \implode('<br>', $aHtmlParts); $oMessage->sPlain = \trim(\implode("\n", $aPlainParts)); $oMessage->bPgpEncrypted = !$oMessage->bPgpEncrypted && false !== \stripos($oMessage->sPlain, '-----BEGIN PGP MESSAGE-----'); diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Service.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Service.php index f7c1b51be..a2f761bc8 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Service.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Service.php @@ -166,8 +166,8 @@ abstract class Service $sAppleTouchLink = $sFaviconUrl ? '' : $oActions->StaticPath('apple-touch-icon.png'); $aTemplateParameters = array( - '{{BaseAppFaviconPngLinkTag}}' => $sFaviconPngLink ? '<link type="image/png" rel="shortcut icon" href="'.$sFaviconPngLink.'" />' : '', - '{{BaseAppFaviconTouchLinkTag}}' => $sAppleTouchLink ? '<link type="image/png" rel="apple-touch-icon" href="'.$sAppleTouchLink.'" />' : '', + '{{BaseAppFaviconPngLinkTag}}' => $sFaviconPngLink ? '<link type="image/png" rel="shortcut icon" href="'.$sFaviconPngLink.'">' : '', + '{{BaseAppFaviconTouchLinkTag}}' => $sAppleTouchLink ? '<link type="image/png" rel="apple-touch-icon" href="'.$sAppleTouchLink.'">' : '', '{{BaseAppMainCssLink}}' => $oActions->StaticPath('css/'.($bAdmin ? 'admin' : 'app').$sAppCssMin.'.css'), '{{BaseAppThemeCssLink}}' => $oActions->ThemeLink($bAdmin), '{{BaseAppManifestLink}}' => $oActions->StaticPath('manifest.json'), diff --git a/snappymail/v/0.0.0/app/localization/cs-CZ/admin.json b/snappymail/v/0.0.0/app/localization/cs-CZ/admin.json index eaea389a3..fb1d90a52 100644 --- a/snappymail/v/0.0.0/app/localization/cs-CZ/admin.json +++ b/snappymail/v/0.0.0/app/localization/cs-CZ/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Povolit další identity", "ALERT_DATA_ACCESS": "Adresář s RainLoop daty je veřejně přístupný. Nakonfigurujte prosím webový server tak, aby skryl adresář data z externího přístupu. Více zde:", "ALERT_WARNING": "Upozornění!", - "HTML_ALERT_WEAK_PASSWORD": "Používáte výchozí administrátorské heslo.\n<br \/>\nZ bezpečnostních důvodů jej prosím\n<strong><a href=\"#\/security\">změňte<\/a><\/strong>.\n" + "HTML_ALERT_WEAK_PASSWORD": "Používáte výchozí administrátorské heslo.\n<br>\nZ bezpečnostních důvodů jej prosím\n<strong><a href=\"#\/security\">změňte<\/a><\/strong>.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Přihlašovací obrazovka", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Test", "ALERT_NOTICE": "Upozornění!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Nepoužívejte tento typ databáze při velkém počtu aktivních uživatelů.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Váš systém nepodporuje kontakty.\n<br \/>\nJe potřeba nainstalovat nebo povolit <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong>\nrozšíření na vašem serveru.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Váš systém nepodporuje kontakty.\n<br>\nJe potřeba nainstalovat nebo povolit <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong>\nrozšíření na vašem serveru.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domény", "BUTTON_ADD_DOMAIN": "Přidat Doménu", "BUTTON_ADD_ALIAS": "Přidat alias", "DELETE_ARE_YOU_SURE": "Jste si jistí?", - "HTML_DOMAINS_HELPER": "Seznam domén, ke kterým je možné přistupovat přes webmail.\n<br \/>\nKlikněte na jméno domény pro její konfiguraci.\n" + "HTML_DOMAINS_HELPER": "Seznam domén, ke kterým je možné přistupovat přes webmail.\n<br>\nKlikněte na jméno domény pro její konfiguraci.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Zabezpečení", diff --git a/snappymail/v/0.0.0/app/localization/da-DK/admin.json b/snappymail/v/0.0.0/app/localization/da-DK/admin.json index a71d00642..ca8aca1b0 100644 --- a/snappymail/v/0.0.0/app/localization/da-DK/admin.json +++ b/snappymail/v/0.0.0/app/localization/da-DK/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Tillad flere identiteter", "ALERT_DATA_ACCESS": "Data folder is accessible. Please configure your web server to hide the data folder from external access. Read more here:", "ALERT_WARNING": "Advarsler!", - "HTML_ALERT_WEAK_PASSWORD": "Du bruger standard admin adgangskoden.\n<br \/>\nAf sikkerhedsmæssige hensyn bør du venligst\n<strong><a href=\"#\/security\">ændre<\/a><\/strong>\nadgangskoden til noget andet snarest.\n" + "HTML_ALERT_WEAK_PASSWORD": "Du bruger standard admin adgangskoden.\n<br>\nAf sikkerhedsmæssige hensyn bør du venligst\n<strong><a href=\"#\/security\">ændre<\/a><\/strong>\nadgangskoden til noget andet snarest.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Log ind skærm", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Test", "ALERT_NOTICE": "Underretning!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Brug ikke denne database type med større antal af aktive brugere.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Dit system ser ikke ud til at understøtte kontakter.\n<br \/>\nDu skal installere og aktivere <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> udvidelsen på din server.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Dit system ser ikke ud til at understøtte kontakter.\n<br>\nDu skal installere og aktivere <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> udvidelsen på din server.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domæner", "BUTTON_ADD_DOMAIN": "Tilføj domæne", "BUTTON_ADD_ALIAS": "Tilføj alias", "DELETE_ARE_YOU_SURE": "Er du sikker?", - "HTML_DOMAINS_HELPER": "Liste over domæner webmail er tilladt adgang til.\n<br \/>\nKlik på navnet for at konfigurere domænet.\n" + "HTML_DOMAINS_HELPER": "Liste over domæner webmail er tilladt adgang til.\n<br>\nKlik på navnet for at konfigurere domænet.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Sikkerhed", diff --git a/snappymail/v/0.0.0/app/localization/de-DE/admin.json b/snappymail/v/0.0.0/app/localization/de-DE/admin.json index fe7501b4f..dde4ebe0f 100644 --- a/snappymail/v/0.0.0/app/localization/de-DE/admin.json +++ b/snappymail/v/0.0.0/app/localization/de-DE/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Mehrere Identitäten erlauben", "ALERT_DATA_ACCESS": "Data folder is accessible. Please configure your web server to hide the data folder from external access. Read more here:", "ALERT_WARNING": "Warnung!", - "HTML_ALERT_WEAK_PASSWORD": "Sie verwenden das Standard-Admin-Passwort.\n<br \/>\nBitte <strong><a href=\"#\/security\">ändern<\/a><\/strong> Sie\naus Sicherheitsgründen das Passwort jetzt.\n" + "HTML_ALERT_WEAK_PASSWORD": "Sie verwenden das Standard-Admin-Passwort.\n<br>\nBitte <strong><a href=\"#\/security\">ändern<\/a><\/strong> Sie\naus Sicherheitsgründen das Passwort jetzt.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Anmeldebildschirm", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Testen", "ALERT_NOTICE": "Hinweis!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Verwenden Sie diesen Datenbanktyp nicht bei einer hohen Anzahl aktiver Benutzer.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Ihr System unterstützt keine Kontakte.\n<br \/>\nSie müssen die <strong>PDO-Erweiterung (SQLite \/ MySQL \/ PostgreSQL)<\/strong> auf Ihrem Server installieren oder aktivieren.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Ihr System unterstützt keine Kontakte.\n<br>\nSie müssen die <strong>PDO-Erweiterung (SQLite \/ MySQL \/ PostgreSQL)<\/strong> auf Ihrem Server installieren oder aktivieren.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domains", "BUTTON_ADD_DOMAIN": "Domain hinzufügen", "BUTTON_ADD_ALIAS": "Alias hinzufügen", "DELETE_ARE_YOU_SURE": "Sind Sie sicher?", - "HTML_DOMAINS_HELPER": "Liste der Domains, die Webmail abrufen darf.\n<br \/>\nKlicken Sie auf den Namen, um die Domain zu konfigurieren.\n" + "HTML_DOMAINS_HELPER": "Liste der Domains, die Webmail abrufen darf.\n<br>\nKlicken Sie auf den Namen, um die Domain zu konfigurieren.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Sicherheit", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Schließen", "BUTTON_ADD": "Hinzufügen", "BUTTON_UPDATE": "Aktualisieren", - "NEW_DOMAIN_DESC": "Diese Domain Konfiguration wird es dir möglich machen <br \/>mit <i>%NAME%<\/i> Mailadressen zu arbeiten.", + "NEW_DOMAIN_DESC": "Diese Domain Konfiguration wird es dir möglich machen <br>mit <i>%NAME%<\/i> Mailadressen zu arbeiten.", "WHITE_LIST_ALERT": "Liste der User, die Webmail abrufen darf.\nVerwenden Sie Leerzeichen als Trenner.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/en/admin.json b/snappymail/v/0.0.0/app/localization/en/admin.json index dd8bff17b..0b106cba9 100644 --- a/snappymail/v/0.0.0/app/localization/en/admin.json +++ b/snappymail/v/0.0.0/app/localization/en/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Allow multiple identities", "ALERT_DATA_ACCESS": "Data folder is accessible. Please configure your web server to hide the data folder from external access. Read more here:", "ALERT_WARNING": "Warning!", - "HTML_ALERT_WEAK_PASSWORD": "You are using the default admin password.\n<br \/>\nFor security reasons please\n<strong><a href=\"#\/security\">change<\/a><\/strong>\npassword to something else now.\n" + "HTML_ALERT_WEAK_PASSWORD": "You are using the default admin password.\n<br>\nFor security reasons please\n<strong><a href=\"#\/security\">change<\/a><\/strong>\npassword to something else now.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Login Screen", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Test", "ALERT_NOTICE": "Notice!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Don't use this database type with a large number of active users.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Your system doesn't support contacts.\n<br \/>\nYou need to install or enable <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> extension on your server.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Your system doesn't support contacts.\n<br>\nYou need to install or enable <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> extension on your server.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domains", "BUTTON_ADD_DOMAIN": "Add Domain", "BUTTON_ADD_ALIAS": "Add Alias", "DELETE_ARE_YOU_SURE": "Are you sure?", - "HTML_DOMAINS_HELPER": "List of domains webmail is allowed to access.\n<br \/>\nClick on the name to configure the domain.\n" + "HTML_DOMAINS_HELPER": "List of domains webmail is allowed to access.\n<br>\nClick on the name to configure the domain.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Security", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Close", "BUTTON_ADD": "Add", "BUTTON_UPDATE": "Update", - "NEW_DOMAIN_DESC": "This domain configuration will allow you to work <br \/>with <i>%NAME%<\/i> email addresses.", + "NEW_DOMAIN_DESC": "This domain configuration will allow you to work <br>with <i>%NAME%<\/i> email addresses.", "WHITE_LIST_ALERT": "List of domain users webmail is allowed to access.\nUse a space as delimiter.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/es-ES/admin.json b/snappymail/v/0.0.0/app/localization/es-ES/admin.json index 6e9bdc18f..2d2b53f0f 100644 --- a/snappymail/v/0.0.0/app/localization/es-ES/admin.json +++ b/snappymail/v/0.0.0/app/localization/es-ES/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Permitir múltiples identidades", "ALERT_DATA_ACCESS": "Data folder is accessible. Please configure your web server to hide the data folder from external access. Read more here:", "ALERT_WARNING": "¡Atención!", - "HTML_ALERT_WEAK_PASSWORD": "Estas utilizando la contraseña por defecto.\n<br \/>\nDebido a razones de seguridad, debes\n<strong><a href=\"#\/security\">cambiar<\/a><\/strong>\ntu contraseña inmediatamente.\n" + "HTML_ALERT_WEAK_PASSWORD": "Estas utilizando la contraseña por defecto.\n<br>\nDebido a razones de seguridad, debes\n<strong><a href=\"#\/security\">cambiar<\/a><\/strong>\ntu contraseña inmediatamente.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Pantalla de Ingreso", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Probar", "ALERT_NOTICE": "¡Advertencia!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "No utilices este tipo de Base de Datos para un número grande de usuarios.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Tu sistema no soporta el uso de Contactos.\n<br \/>\nDebes instalar o habilitar el uso de <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> en tu servidor.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Tu sistema no soporta el uso de Contactos.\n<br>\nDebes instalar o habilitar el uso de <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> en tu servidor.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Dominios", "BUTTON_ADD_DOMAIN": "Agregar dominio", "BUTTON_ADD_ALIAS": "Agregar alias", "DELETE_ARE_YOU_SURE": "¿Estás seguro?", - "HTML_DOMAINS_HELPER": "Lista de los dominios de correo al que se permite ingresar.\n<br \/>\nHaz click en el nombre de un dominio para modificarlo.\n" + "HTML_DOMAINS_HELPER": "Lista de los dominios de correo al que se permite ingresar.\n<br>\nHaz click en el nombre de un dominio para modificarlo.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Seguridad", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Cerrar", "BUTTON_ADD": "Agregar", "BUTTON_UPDATE": "Actualizar", - "NEW_DOMAIN_DESC": "Esta configuración de Dominio le permitirá trabajar <br \/>con direcciones de correo tipo @<i>%NAME%<\/i>.", + "NEW_DOMAIN_DESC": "Esta configuración de Dominio le permitirá trabajar <br>con direcciones de correo tipo @<i>%NAME%<\/i>.", "WHITE_LIST_ALERT": "Lista de dominios con que los usuarios pueden ingresar.\nUse un espacio como delimitador.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/fa-IR/admin.json b/snappymail/v/0.0.0/app/localization/fa-IR/admin.json index 83e047e91..86a9d6493 100644 --- a/snappymail/v/0.0.0/app/localization/fa-IR/admin.json +++ b/snappymail/v/0.0.0/app/localization/fa-IR/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "اجازه استفاده از چندین شناسه", "ALERT_DATA_ACCESS": "شاخه data قابل دسترس هست. تنظیمات وب‌سرور را طوری انجام دهید این شاخه از بیرون قابل دسترس نباشد. اطلاعات بیشتر اینجا هست:", "ALERT_WARNING": "اخطار!", - "HTML_ALERT_WEAK_PASSWORD": "شما در حال استفاده از گذرواژه پیش‌فرض کاربر مدیر هستید.\n<br \/>\nبدلیل رعایت مسائل امنیتی\n<strong><a href=\"#\/security\">گذرواژه<\/a><\/strong>\nرا به کلمه دیگری تغییر دهید.\n\n" + "HTML_ALERT_WEAK_PASSWORD": "شما در حال استفاده از گذرواژه پیش‌فرض کاربر مدیر هستید.\n<br>\nبدلیل رعایت مسائل امنیتی\n<strong><a href=\"#\/security\">گذرواژه<\/a><\/strong>\nرا به کلمه دیگری تغییر دهید.\n\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "صفحه ورود", @@ -66,14 +66,14 @@ "BUTTON_TEST": "تست", "ALERT_NOTICE": "توجه!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "از این پایگاه داده برای کاربران زیاد استفاده نکنید.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "سیستم از تماس‌ها پشتیبانی نمی‌کند\n<br \/>\nشما باید افزونه <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> را نصب کنید یا اینکه فعال کنید.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "سیستم از تماس‌ها پشتیبانی نمی‌کند\n<br>\nشما باید افزونه <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> را نصب کنید یا اینکه فعال کنید.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "دامنه‌ها", "BUTTON_ADD_DOMAIN": "اضافه‌کردن دامنه", "BUTTON_ADD_ALIAS": "اضافه‌کردن نام مستعار", "DELETE_ARE_YOU_SURE": "آیا مطمئن هستید؟", - "HTML_DOMAINS_HELPER": "لیستی از دامنه‌هایی که وب‌میل اجازه دسترسی به آنها را دارد.\n<br \/>\nروی دامنه دامنه جهت پیکربندی کلیک کنید.\n" + "HTML_DOMAINS_HELPER": "لیستی از دامنه‌هایی که وب‌میل اجازه دسترسی به آنها را دارد.\n<br>\nروی دامنه دامنه جهت پیکربندی کلیک کنید.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "امنیت", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "بستن", "BUTTON_ADD": "اضافه‌کردن", "BUTTON_UPDATE": "بروزرسانی", - "NEW_DOMAIN_DESC": "این تنظیمات دامنه به شما اجازه کار کردن <br \/>با پست الکترونیک <i>%NAME%<\/i> را می‌دهد.", + "NEW_DOMAIN_DESC": "این تنظیمات دامنه به شما اجازه کار کردن <br>با پست الکترونیک <i>%NAME%<\/i> را می‌دهد.", "WHITE_LIST_ALERT": "لیستی از دامنه‌ها که کاربران وب‌میل می‌توانند به آنها دسترسی داشته باشند.\nاز فاصله جهت جدا کردن استفاده کنید.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/fi-FI/admin.json b/snappymail/v/0.0.0/app/localization/fi-FI/admin.json index 568e3791d..a651d443b 100644 --- a/snappymail/v/0.0.0/app/localization/fi-FI/admin.json +++ b/snappymail/v/0.0.0/app/localization/fi-FI/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Salli useat identiteetit", "ALERT_DATA_ACCESS": "Data folder is accessible. Please configure your web server to hide the data folder from external access. Read more here:", "ALERT_WARNING": "Varoitus!", - "HTML_ALERT_WEAK_PASSWORD": "Sinulla on käytössäsi hallintatunnuksen oletussalasana.\n<br \/>\nTietoturvasyistä, ole ystävällinen ja\n<strong><a href=\"#\/security\">vaihda<\/a><\/strong>\nsalasanasi nyt.\n" + "HTML_ALERT_WEAK_PASSWORD": "Sinulla on käytössäsi hallintatunnuksen oletussalasana.\n<br>\nTietoturvasyistä, ole ystävällinen ja\n<strong><a href=\"#\/security\">vaihda<\/a><\/strong>\nsalasanasi nyt.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Kirjautumissivu", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Testi", "ALERT_NOTICE": "Huomio!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Älä käytä tätä tietokantatyyppiä suurella määrällä aktiivisia käyttäjiä.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Järjestelmäsi ei tue yhteystietoja.\n<br\/>\nAsenna tai aktivoi <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> lisäosa palvelimellasi.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Järjestelmäsi ei tue yhteystietoja.\n<br>\nAsenna tai aktivoi <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> lisäosa palvelimellasi.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domainit", "BUTTON_ADD_DOMAIN": "Lisää domain", "BUTTON_ADD_ALIAS": "Lisää alias", "DELETE_ARE_YOU_SURE": "Oletko varma?", - "HTML_DOMAINS_HELPER": "Lista domaineista joilla webmaililla on pääsy.\n<br\/>\nKlikkaa nimeä konfiguroidaksesi domain.\n" + "HTML_DOMAINS_HELPER": "Lista domaineista joilla webmaililla on pääsy.\n<br>\nKlikkaa nimeä konfiguroidaksesi domain.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Tietoturva", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Sulje", "BUTTON_ADD": "Lisää", "BUTTON_UPDATE": "Päivitä", - "NEW_DOMAIN_DESC": "Tämän verkkotunnuksen asetukset sallivat käyttää <br\/> <i>%NAME%<i\/> säkhöpostiosoitteita.", + "NEW_DOMAIN_DESC": "Tämän verkkotunnuksen asetukset sallivat käyttää <br> <i>%NAME%<i> säkhöpostiosoitteita.", "WHITE_LIST_ALERT": "Lista domain käyttäjistä joihin webmaililla on oikeus.\nErottele välilyönnillä.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/fr-FR/admin.json b/snappymail/v/0.0.0/app/localization/fr-FR/admin.json index 23dc1d1d7..ef27ec820 100644 --- a/snappymail/v/0.0.0/app/localization/fr-FR/admin.json +++ b/snappymail/v/0.0.0/app/localization/fr-FR/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Autoriser les identités multiples", "ALERT_DATA_ACCESS": "Data folder is accessible. Please configure your web server to hide the data folder from external access. Read more here:", "ALERT_WARNING": "ATTENTION !", - "HTML_ALERT_WEAK_PASSWORD": "Vous utilisez le mot de passe administrateur par défaut.\n<br \/>\nPour des raisons de sécurité, veuillez\n<strong><a href=\"#\/security\">changer le mot de passe <\/a><\/strong>\ndès maintenant.\n" + "HTML_ALERT_WEAK_PASSWORD": "Vous utilisez le mot de passe administrateur par défaut.\n<br>\nPour des raisons de sécurité, veuillez\n<strong><a href=\"#\/security\">changer le mot de passe <\/a><\/strong>\ndès maintenant.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Ecran de connexion", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Test", "ALERT_NOTICE": "Avis !", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "N'utilisez pas ce type de base de données avec un grand nombre d'utilisateurs actifs.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Votre système ne supporte pas les contacts.\n<br \/>\nVous devez installer ou autoriser l'extension <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> sur votre serveur.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Votre système ne supporte pas les contacts.\n<br>\nVous devez installer ou autoriser l'extension <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> sur votre serveur.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domaines", "BUTTON_ADD_DOMAIN": "Ajouter un domaine", "BUTTON_ADD_ALIAS": "Ajouter un alias", "DELETE_ARE_YOU_SURE": "Êtes-vous sûr ?", - "HTML_DOMAINS_HELPER": "Liste des domaines autorisés.\n<br \/>\nCliquez sur le nom pour configurer le domaine.\n" + "HTML_DOMAINS_HELPER": "Liste des domaines autorisés.\n<br>\nCliquez sur le nom pour configurer le domaine.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Sécurité", diff --git a/snappymail/v/0.0.0/app/localization/hu-HU/admin.json b/snappymail/v/0.0.0/app/localization/hu-HU/admin.json index 98857e289..cb02c0ae9 100644 --- a/snappymail/v/0.0.0/app/localization/hu-HU/admin.json +++ b/snappymail/v/0.0.0/app/localization/hu-HU/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Több identitás engedélyezése", "ALERT_DATA_ACCESS": "A RainLoop adatmappája hozzáférhető. Kérlek állítsd be úgy a webszervert, hogy az adatmappát rejtse el a külső hozzáférés elől. További tudnivalók itt:", "ALERT_WARNING": "Figyelmeztetés!", - "HTML_ALERT_WEAK_PASSWORD": "Az alapértelmezett admin jelszót használod\n<br \/>\nBiztonsági okokból kérlek\n<strong><a href=\"#\/security\">változtasd meg<\/a><\/strong>\na jelszót valami másra!\n" + "HTML_ALERT_WEAK_PASSWORD": "Az alapértelmezett admin jelszót használod\n<br>\nBiztonsági okokból kérlek\n<strong><a href=\"#\/security\">változtasd meg<\/a><\/strong>\na jelszót valami másra!\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Bejelentkező képernyő", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Teszt", "ALERT_NOTICE": "Megjegyzés!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Ne használd ezt az adatbázis típust nagy számú aktív felhasználóval.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "A rendszer nem támogatja a címtárat.\n<br \/>\nTelepítened vagy engedélyezned kell egy <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> kiterjesztést a szervereden.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "A rendszer nem támogatja a címtárat.\n<br>\nTelepítened vagy engedélyezned kell egy <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> kiterjesztést a szervereden.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domainek", "BUTTON_ADD_DOMAIN": "Domain hozzáadás", "BUTTON_ADD_ALIAS": "Álnév hozzáadás", "DELETE_ARE_YOU_SURE": "Biztos vagy benne?", - "HTML_DOMAINS_HELPER": "Hozzáféréshez engedélyezett domainek listája:\n<br \/>\nA domain beállításához kattints a névre.\n" + "HTML_DOMAINS_HELPER": "Hozzáféréshez engedélyezett domainek listája:\n<br>\nA domain beállításához kattints a névre.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Biztonság", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Bezár", "BUTTON_ADD": "Hozzáad", "BUTTON_UPDATE": "Frissítés", - "NEW_DOMAIN_DESC": "Ez a domain konfiguráció lehetővé teszi <br \/>a <i>%NAME%<\/i> email címek használatát.", + "NEW_DOMAIN_DESC": "Ez a domain konfiguráció lehetővé teszi <br>a <i>%NAME%<\/i> email címek használatát.", "WHITE_LIST_ALERT": "Hozzáféréshez engedélyezett domainek listája.\nElválasztáshoz használd a szóközt.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/id-ID/admin.json b/snappymail/v/0.0.0/app/localization/id-ID/admin.json index f861cd222..ff1f513c1 100644 --- a/snappymail/v/0.0.0/app/localization/id-ID/admin.json +++ b/snappymail/v/0.0.0/app/localization/id-ID/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Izinkan identitas jamak", "ALERT_DATA_ACCESS": "Data foldel RainLoop bisa diakses. Silahkan atur web server anda untuk menyembunyikan folder data dari akses eksternal. Baca selengkapnya di sini:", "ALERT_WARNING": "Peringatan!", - "HTML_ALERT_WEAK_PASSWORD": "Anda menggunakan password admin bawaan.\n<br \/>\nAtas alasan keamanan, mohon\n<strong><a href=\"#\/security\">mengganti<\/a><\/strong>\npassword dengan frasa yang lainnya segera.\n" + "HTML_ALERT_WEAK_PASSWORD": "Anda menggunakan password admin bawaan.\n<br>\nAtas alasan keamanan, mohon\n<strong><a href=\"#\/security\">mengganti<\/a><\/strong>\npassword dengan frasa yang lainnya segera.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Laman login", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Ujicoba", "ALERT_NOTICE": "Perhatian!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Jangan gunakan tipe database ini untuk jumlah user aktif yang besar.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Sistem anda tidak mendukung kontak\n<br \/>\nAnda harus memasang atau mengaktifkan <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> extension pada server anda.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Sistem anda tidak mendukung kontak\n<br>\nAnda harus memasang atau mengaktifkan <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> extension pada server anda.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domain", "BUTTON_ADD_DOMAIN": "Tambah domain", "BUTTON_ADD_ALIAS": "Tambah alias", "DELETE_ARE_YOU_SURE": "Anda yakin?", - "HTML_DOMAINS_HELPER": "Daftar domain webmail yang diizinkan mengakses.\n<br \/>\nKlik pada nama domain untuk mengatur domain.\n" + "HTML_DOMAINS_HELPER": "Daftar domain webmail yang diizinkan mengakses.\n<br>\nKlik pada nama domain untuk mengatur domain.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Keamanan", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Tutup", "BUTTON_ADD": "Tambah", "BUTTON_UPDATE": "Perbarui", - "NEW_DOMAIN_DESC": "Domain ini mengizinkan anda bekerja dengan alamat email <br \/>juga<i>%NAME%<\/i> ", + "NEW_DOMAIN_DESC": "Domain ini mengizinkan anda bekerja dengan alamat email <br>juga<i>%NAME%<\/i> ", "WHITE_LIST_ALERT": "Daftar domain webmail user yang diizinkan diakses.\nGunakan spasi untuk pemisahnya\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/it-IT/admin.json b/snappymail/v/0.0.0/app/localization/it-IT/admin.json index daeb100cd..c3dbaf4b8 100644 --- a/snappymail/v/0.0.0/app/localization/it-IT/admin.json +++ b/snappymail/v/0.0.0/app/localization/it-IT/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Permetti di registrare identità multiple", "ALERT_DATA_ACCESS": "Data folder is accessible. Please configure your web server to hide the data folder from external access. Read more here:", "ALERT_WARNING": "Attenzione!", - "HTML_ALERT_WEAK_PASSWORD": "Stai usando la password di amministrazione predefinita.\n<br \/>\nPer ragioni di sicurezza,\n<strong><a href=\"#\/security\">cambiala<\/a><\/strong>\ncon una nuova password immediatamente.\n" + "HTML_ALERT_WEAK_PASSWORD": "Stai usando la password di amministrazione predefinita.\n<br>\nPer ragioni di sicurezza,\n<strong><a href=\"#\/security\">cambiala<\/a><\/strong>\ncon una nuova password immediatamente.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Schermata di accesso", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Verifica dati", "ALERT_NOTICE": "Attenzione!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Non usare questo tipo di database con un alto numero di utenti attivi.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Il tuo server non supporta il salvataggio dei contatti.\n<br \/>\nDevi abilitare l'estensione <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> sul tuo server.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Il tuo server non supporta il salvataggio dei contatti.\n<br>\nDevi abilitare l'estensione <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> sul tuo server.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domini", "BUTTON_ADD_DOMAIN": "Aggiungi dominio", "BUTTON_ADD_ALIAS": "Aggiungi alias", "DELETE_ARE_YOU_SURE": "Ne sei sicuro?", - "HTML_DOMAINS_HELPER": "Lista di domini a cui la webmail è abilitata ad accedere.\n<br \/>\nClicca su un nome per configurare quel dominio.\n" + "HTML_DOMAINS_HELPER": "Lista di domini a cui la webmail è abilitata ad accedere.\n<br>\nClicca su un nome per configurare quel dominio.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Security", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Chiudi", "BUTTON_ADD": "Aggiungi", "BUTTON_UPDATE": "Aggiorna", - "NEW_DOMAIN_DESC": "La configurazione di questo dominio ti permette di lavorare <br \/>con <i>%NAME%<\/i> indirizzi email.", + "NEW_DOMAIN_DESC": "La configurazione di questo dominio ti permette di lavorare <br>con <i>%NAME%<\/i> indirizzi email.", "WHITE_LIST_ALERT": "Lista di domini a cui gli utenti sono autorizzati ad accedere.\nUtilizzare uno spazio come separatore.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/ja-JP/admin.json b/snappymail/v/0.0.0/app/localization/ja-JP/admin.json index 943226dec..5eb6247c4 100644 --- a/snappymail/v/0.0.0/app/localization/ja-JP/admin.json +++ b/snappymail/v/0.0.0/app/localization/ja-JP/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "複数の表示名を使用する", "ALERT_DATA_ACCESS": "RainLoop のデータフォルダがアクセス可能になっています。外部から RainLoop のデータフォルダにアクセスできないよう、Web サーバーを設定してください。詳しくは以下をご覧ください:", "ALERT_WARNING": "警告!", - "HTML_ALERT_WEAK_PASSWORD": "デフォルトの管理者パスワードを使用しています。\n<br \/>\nセキュリティ上の理由から、いますぐパスワードを\n<strong><a href=\"#\/security\">変更<\/a><\/strong>\nしてください。\n" + "HTML_ALERT_WEAK_PASSWORD": "デフォルトの管理者パスワードを使用しています。\n<br>\nセキュリティ上の理由から、いますぐパスワードを\n<strong><a href=\"#\/security\">変更<\/a><\/strong>\nしてください。\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "ログイン画面", @@ -66,14 +66,14 @@ "BUTTON_TEST": "テスト", "ALERT_NOTICE": "注意!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "アクティブユーザーの数が多いとき、このデータベース・タイプを使用しないでください。", - "HTML_ALERT_DOES_NOT_SUPPORTED": "このシステムでは連絡先はサポートされていません。\n<br \/>\nサーバーへ<strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong>\n拡張モジュールのインストールが必要です。\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "このシステムでは連絡先はサポートされていません。\n<br>\nサーバーへ<strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong>\n拡張モジュールのインストールが必要です。\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "ドメイン", "BUTTON_ADD_DOMAIN": "ドメインを追加", "BUTTON_ADD_ALIAS": "エイリアスを追加", "DELETE_ARE_YOU_SURE": "よろしいですか?", - "HTML_DOMAINS_HELPER": "ドメインの一覧は、Web メールのアクセスを許可されています。\n<br \/>\nドメインを設定するには、名前をクリックしてください。\n" + "HTML_DOMAINS_HELPER": "ドメインの一覧は、Web メールのアクセスを許可されています。\n<br>\nドメインを設定するには、名前をクリックしてください。\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "セキュリティ", diff --git a/snappymail/v/0.0.0/app/localization/lt-LT/admin.json b/snappymail/v/0.0.0/app/localization/lt-LT/admin.json index ca3f5d078..13342d07c 100644 --- a/snappymail/v/0.0.0/app/localization/lt-LT/admin.json +++ b/snappymail/v/0.0.0/app/localization/lt-LT/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Leisti daugiau tapatybių", "ALERT_DATA_ACCESS": "Data folder is accessible. Please configure your web server to hide the data folder from external access. Read more here:", "ALERT_WARNING": "Dėmesio!", - "HTML_ALERT_WEAK_PASSWORD": "Naudojate numatytąjį administratoriaus slaptažodį.\n<br \/>\nDėl Jūsų saugumo prašome\n<strong><a href=\"#\/security\">pakeiskite<\/a><\/strong>\nslaptažodį kitu.\n\n" + "HTML_ALERT_WEAK_PASSWORD": "Naudojate numatytąjį administratoriaus slaptažodį.\n<br>\nDėl Jūsų saugumo prašome\n<strong><a href=\"#\/security\">pakeiskite<\/a><\/strong>\nslaptažodį kitu.\n\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Prisijungimo langas", @@ -73,7 +73,7 @@ "BUTTON_ADD_DOMAIN": "Pridėti Domeną", "BUTTON_ADD_ALIAS": "Pridėti Alias", "DELETE_ARE_YOU_SURE": "Ar jūs įsitikinę?", - "HTML_DOMAINS_HELPER": "Leidžiamų Domenų sąrašas\n<br\/>\nSpauskite ant pavadinimo norėdami redaguoti.\n" + "HTML_DOMAINS_HELPER": "Leidžiamų Domenų sąrašas\n<br>\nSpauskite ant pavadinimo norėdami redaguoti.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Sauga", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Uždaryti", "BUTTON_ADD": "Pridėti", "BUTTON_UPDATE": "Atnaujinti", - "NEW_DOMAIN_DESC": "Šie nustatymai leis jums dirbti <br\/> su <i>%NAME%<\/i> domeno pašto adresais.", + "NEW_DOMAIN_DESC": "Šie nustatymai leis jums dirbti <br> su <i>%NAME%<\/i> domeno pašto adresais.", "WHITE_LIST_ALERT": "Domeno vartotojų sąrašas, kuriems leista naudotis web paštu.\nNaudokite tarpo simbolį kaip skyriklį.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/nb-NO/admin.json b/snappymail/v/0.0.0/app/localization/nb-NO/admin.json index 83fa10705..86be94770 100644 --- a/snappymail/v/0.0.0/app/localization/nb-NO/admin.json +++ b/snappymail/v/0.0.0/app/localization/nb-NO/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Tillat bruk av flere identiteter", "ALERT_DATA_ACCESS": "RainLoop-datamappa di er offentlig tiljgengelig. Sett opp webtjeneren slik at den ikke viser datamappa. Les mer her:", "ALERT_WARNING": "Advarsel!", - "HTML_ALERT_WEAK_PASSWORD": "Du bruker forvalgt admin-passord.\n<br \/>\nAv sikkerhetshensyn bør du\n<strong><a href=\"#\/security\">endre<\/a><\/strong>\npassordet umiddelbart.\n" + "HTML_ALERT_WEAK_PASSWORD": "Du bruker forvalgt admin-passord.\n<br>\nAv sikkerhetshensyn bør du\n<strong><a href=\"#\/security\">endre<\/a><\/strong>\npassordet umiddelbart.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Innloggingsskjerm", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Test", "ALERT_NOTICE": "Varsel!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Ikke bruk denne databasetypen hvis dette systemet har mange brukere.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Dette systemet støtter ikke kontakter.\n<br \/>\nDu må installere eller slå på utvidelsen <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> på tjeneren.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Dette systemet støtter ikke kontakter.\n<br>\nDu må installere eller slå på utvidelsen <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> på tjeneren.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domener", "BUTTON_ADD_DOMAIN": "Legg til domene", "BUTTON_ADD_ALIAS": "Legg til alias", "DELETE_ARE_YOU_SURE": "Er du sikker?", - "HTML_DOMAINS_HELPER": "Liste over domener som programmet kan få tilgang til.\n<br \/>\nTrykk på et navn for å sette opp domenet.\n" + "HTML_DOMAINS_HELPER": "Liste over domener som programmet kan få tilgang til.\n<br>\nTrykk på et navn for å sette opp domenet.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Sikkerhet", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Lukk", "BUTTON_ADD": "Legg til", "BUTTON_UPDATE": "Oppdater", - "NEW_DOMAIN_DESC": "Dette domeneoppsettet lar deg jobbe <br \/> med e-postadresser ved <i>%NAME%<\/i>.", + "NEW_DOMAIN_DESC": "Dette domeneoppsettet lar deg jobbe <br> med e-postadresser ved <i>%NAME%<\/i>.", "WHITE_LIST_ALERT": "Liste over domenebrukere som programmet skal ha tilgang til.\nHold verdier adskilt med mellomrom.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/nl-NL/admin.json b/snappymail/v/0.0.0/app/localization/nl-NL/admin.json index a6e195dcc..c6afbe9aa 100644 --- a/snappymail/v/0.0.0/app/localization/nl-NL/admin.json +++ b/snappymail/v/0.0.0/app/localization/nl-NL/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Meerdere identiteiten toestaan", "ALERT_DATA_ACCESS": "Data folder is accessible. Please configure your web server to hide the data folder from external access. Read more here:", "ALERT_WARNING": "Waarschuwing!", - "HTML_ALERT_WEAK_PASSWORD": "U gebruikt het standaard beheer wachtwoord.\n<br \/>\n<strong><a href=\"#\/security\">Wijzig<\/a><\/strong>\na.u.b. voor uw veiligheid direct het wachtwoord.\n" + "HTML_ALERT_WEAK_PASSWORD": "U gebruikt het standaard beheer wachtwoord.\n<br>\n<strong><a href=\"#\/security\">Wijzig<\/a><\/strong>\na.u.b. voor uw veiligheid direct het wachtwoord.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Inlogscherm", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Test", "ALERT_NOTICE": "Aandacht!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Gegruik deze database soort niet met een groot aantal actieve gebrukers.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Uw systeem ondersteund geen contactpersonen.\n<br \/>\nU moet een <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> extentie op uw server installeren of activeren.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Uw systeem ondersteund geen contactpersonen.\n<br>\nU moet een <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> extentie op uw server installeren of activeren.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domeinen", "BUTTON_ADD_DOMAIN": "Domein toevoegen", "BUTTON_ADD_ALIAS": "Voeg alias toe", "DELETE_ARE_YOU_SURE": "Weet u het zeker?", - "HTML_DOMAINS_HELPER": "Lijst van toegestane domeinen.\n<br \/>\nKlik op de domeinnaam om deze te configureren.\n" + "HTML_DOMAINS_HELPER": "Lijst van toegestane domeinen.\n<br>\nKlik op de domeinnaam om deze te configureren.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Beveiliging", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Annuleer", "BUTTON_ADD": "Toevoegen", "BUTTON_UPDATE": "Update", - "NEW_DOMAIN_DESC": "Dit domein stelt u in staat om <br \/>met <i>%NAME%<\/i> e-mail adressen te werken.", + "NEW_DOMAIN_DESC": "Dit domein stelt u in staat om <br>met <i>%NAME%<\/i> e-mail adressen te werken.", "WHITE_LIST_ALERT": "Lijst van gebruikers die dit domein mogen gebruiken.\nGebruik een spatie als scheidingsteken.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/pl-PL/admin.json b/snappymail/v/0.0.0/app/localization/pl-PL/admin.json index ead6eb1d3..c356fbb99 100644 --- a/snappymail/v/0.0.0/app/localization/pl-PL/admin.json +++ b/snappymail/v/0.0.0/app/localization/pl-PL/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Zezwól na posiadanie wielu tożsamości", "ALERT_DATA_ACCESS": "Katalog „data” jest osiągalny z poziomu przeglądarki WWW. Zmień konfigurację serwera www, aby ukryć ten folder z zewnątrz. Więcej informacji tutaj: ", "ALERT_WARNING": "Ostrzeżenie!", - "HTML_ALERT_WEAK_PASSWORD": "Korzystasz z domyślnego hasła administratora.\n<br \/>\nZe względów bezpieczeństwa\n<strong><a href=\"#\/security\">zmień hasło<\/a><\/strong>\nna inne.\n" + "HTML_ALERT_WEAK_PASSWORD": "Korzystasz z domyślnego hasła administratora.\n<br>\nZe względów bezpieczeństwa\n<strong><a href=\"#\/security\">zmień hasło<\/a><\/strong>\nna inne.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Ekran logowania", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Testuj", "ALERT_NOTICE": "Ostrzeżenie!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Nie używaj tej bazy danych z dużą ilością aktywnych użytkowników.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Twój system nie zawiera wsparcia dla obsługi kontaktów.\n<br \/>\nMusisz zainstalować lub uruchomić na serwerze jedno z rozszerzeń <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong>.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Twój system nie zawiera wsparcia dla obsługi kontaktów.\n<br>\nMusisz zainstalować lub uruchomić na serwerze jedno z rozszerzeń <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong>.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domeny", "BUTTON_ADD_DOMAIN": "Dodaj domenę", "BUTTON_ADD_ALIAS": "Dodaj Alias", "DELETE_ARE_YOU_SURE": "Czy na pewno?", - "HTML_DOMAINS_HELPER": "Lista domen, do których można uzyskać dostęp poprzez tego klienta.\n<br \/>\nKliknij na nazwę, aby skonfigurować domenę.\n" + "HTML_DOMAINS_HELPER": "Lista domen, do których można uzyskać dostęp poprzez tego klienta.\n<br>\nKliknij na nazwę, aby skonfigurować domenę.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Bezpieczeństwo", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Zamknij", "BUTTON_ADD": "Dodaj", "BUTTON_UPDATE": "Zaktualizuj", - "NEW_DOMAIN_DESC": "Konfiguracja tej domeny pozwala na pracę<br \/>z adresami e-mail: <i>%NAME%<\/i>", + "NEW_DOMAIN_DESC": "Konfiguracja tej domeny pozwala na pracę<br>z adresami e-mail: <i>%NAME%<\/i>", "WHITE_LIST_ALERT": "Lista użytkowników domeny, którzy mogą uzyskać dostęp z tego webmaila.\nUżyj spacji do rozdzielenia.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/pt-BR/admin.json b/snappymail/v/0.0.0/app/localization/pt-BR/admin.json index 2141831ef..271ac3d31 100644 --- a/snappymail/v/0.0.0/app/localization/pt-BR/admin.json +++ b/snappymail/v/0.0.0/app/localization/pt-BR/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Permitir identidades multiplas", "ALERT_DATA_ACCESS": "A pasta de dados RainLoop está acessível. Por favor configure o seu servidor web para esconder a pasta de dados do acesso externo. Leia mais aqui:", "ALERT_WARNING": "Aviso!", - "HTML_ALERT_WEAK_PASSWORD": "Você está usando a senha administrativa padrão.\n<br \/>\nPor motivo de segurança por favor\n<strong><a href=\"#\/security\">troque a senha<\/a><\/strong>\nagora.\n" + "HTML_ALERT_WEAK_PASSWORD": "Você está usando a senha administrativa padrão.\n<br>\nPor motivo de segurança por favor\n<strong><a href=\"#\/security\">troque a senha<\/a><\/strong>\nagora.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Tela de entrada", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Testar", "ALERT_NOTICE": "Aviso!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Não use este tipo de banco de dados com um grande número de usuários ativos.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "O seu sistema não suporta o uso dos contatos.\n<br \/>\nVocê precisa instalar ou habilitar a extensão <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> em seu servidor.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "O seu sistema não suporta o uso dos contatos.\n<br>\nVocê precisa instalar ou habilitar a extensão <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> em seu servidor.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domínios", "BUTTON_ADD_DOMAIN": "Adicionar Domínio", "BUTTON_ADD_ALIAS": "Adicionar apelido (Alias)", "DELETE_ARE_YOU_SURE": "Você tem certeza?", - "HTML_DOMAINS_HELPER": "Lista dos domínios com acesso permitido ao webmail.\n<br \/>\nClique no domínio para configurá-lo.\n" + "HTML_DOMAINS_HELPER": "Lista dos domínios com acesso permitido ao webmail.\n<br>\nClique no domínio para configurá-lo.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Segurança", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Fechar", "BUTTON_ADD": "Adicionar", "BUTTON_UPDATE": "Atualizar", - "NEW_DOMAIN_DESC": "Esta configuração de domínio lhe permitirá trabalhar <br \/> com endereços de e-mail do <i>%NAME%<\/i>.", + "NEW_DOMAIN_DESC": "Esta configuração de domínio lhe permitirá trabalhar <br> com endereços de e-mail do <i>%NAME%<\/i>.", "WHITE_LIST_ALERT": "Filtrar com lista dos únicos usuários do domínio que terão acesso ao webmail.\nUse um espaço como delimitador.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/ru-RU/admin.json b/snappymail/v/0.0.0/app/localization/ru-RU/admin.json index 3aaf37b88..627710430 100644 --- a/snappymail/v/0.0.0/app/localization/ru-RU/admin.json +++ b/snappymail/v/0.0.0/app/localization/ru-RU/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Разрешить множественные профили", "ALERT_DATA_ACCESS": "Папка данных RainLoop доступна. Пожалуйста, настройте свой веб-сервер так, чтобы скрыть папку данных с внешнего доступа. Подробнее здесь:", "ALERT_WARNING": "Внимание!", - "HTML_ALERT_WEAK_PASSWORD": "Вы используете пароль администратора по умолчанию.\n<br \/>\nПо соображениям безопасности, пожалуйста,\n<strong><a href=\"#\/security\">измените пароль<\/a><\/strong> прямо сейчас.\n" + "HTML_ALERT_WEAK_PASSWORD": "Вы используете пароль администратора по умолчанию.\n<br>\nПо соображениям безопасности, пожалуйста,\n<strong><a href=\"#\/security\">измените пароль<\/a><\/strong> прямо сейчас.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Cтраница Входа", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Тест", "ALERT_NOTICE": "Внимание!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Не используйте этот тип базы данных с большим числом активных пользователей.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Ваша система не поддерживает контакты.\n<br \/>\nВам необходимо установить или включить <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> расширения на вашем сервере.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Ваша система не поддерживает контакты.\n<br>\nВам необходимо установить или включить <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> расширения на вашем сервере.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Домены", "BUTTON_ADD_DOMAIN": "Добавить домен", "BUTTON_ADD_ALIAS": "Добавить Алиас", "DELETE_ARE_YOU_SURE": "Вы уверены?", - "HTML_DOMAINS_HELPER": "Список доменов к которым разрешен доступ.\n<br \/>\nНажмите на имя, чтобы настроить домен.\n" + "HTML_DOMAINS_HELPER": "Список доменов к которым разрешен доступ.\n<br>\nНажмите на имя, чтобы настроить домен.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Безопасность", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Закрыть", "BUTTON_ADD": "Добавить", "BUTTON_UPDATE": "Обновить", - "NEW_DOMAIN_DESC": "Эта конфигурация позволит вам работать <br \/>с <i>%NAME%<\/i> адресами.", + "NEW_DOMAIN_DESC": "Эта конфигурация позволит вам работать <br>с <i>%NAME%<\/i> адресами.", "WHITE_LIST_ALERT": "Список пользователей домена к которым разрешен доступ.\nИспользуйте пробел в качестве разделителя.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/sk-SK/admin.json b/snappymail/v/0.0.0/app/localization/sk-SK/admin.json index 1c8bb2de5..10062a98e 100644 --- a/snappymail/v/0.0.0/app/localization/sk-SK/admin.json +++ b/snappymail/v/0.0.0/app/localization/sk-SK/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Povoliť viaceré identity", "ALERT_DATA_ACCESS": "Adresár data je dostupný. Prosím skonfigurujte svoj webserver tak, aby bol adresár data nedostupný. Viac informácií:", "ALERT_WARNING": "Upozornenie!", - "HTML_ALERT_WEAK_PASSWORD": "Používate predvolené administrátorské heslo.\n<br \/>\nKvôli bezpečnosti prosím\n<strong><a href=\"#\/security\">zmeňte<\/a><\/strong>\nheslo na iné.\n" + "HTML_ALERT_WEAK_PASSWORD": "Používate predvolené administrátorské heslo.\n<br>\nKvôli bezpečnosti prosím\n<strong><a href=\"#\/security\">zmeňte<\/a><\/strong>\nheslo na iné.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Prihlasovacia obrazovka", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Test", "ALERT_NOTICE": "Notice!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Nepoužívajte tento typ databázy, ak máte veľký počet aktívnych používateľov.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Your system doesn't support contacts.\n<br \/>\nYou need to install or enable <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> extension on your server.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Your system doesn't support contacts.\n<br>\nYou need to install or enable <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> extension on your server.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domény", "BUTTON_ADD_DOMAIN": "Pridať doménu", "BUTTON_ADD_ALIAS": "Pridať alias", "DELETE_ARE_YOU_SURE": "Ste si istí?", - "HTML_DOMAINS_HELPER": "List of domains webmail is allowed to access.\n<br \/>\nClick on the name to configure the domain.\n" + "HTML_DOMAINS_HELPER": "List of domains webmail is allowed to access.\n<br>\nClick on the name to configure the domain.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Bezpečnosť", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Zatvoriť", "BUTTON_ADD": "Pridať", "BUTTON_UPDATE": "Aktualizovať", - "NEW_DOMAIN_DESC": "This domain configuration will allow you to work <br \/>with <i>%NAME%<\/i> email addresses.", + "NEW_DOMAIN_DESC": "This domain configuration will allow you to work <br>with <i>%NAME%<\/i> email addresses.", "WHITE_LIST_ALERT": "List of domain users webmail is allowed to access.\nUse a space as delimiter.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/sl-SI/admin.json b/snappymail/v/0.0.0/app/localization/sl-SI/admin.json index 5ac53fca2..f9fcb7248 100644 --- a/snappymail/v/0.0.0/app/localization/sl-SI/admin.json +++ b/snappymail/v/0.0.0/app/localization/sl-SI/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Dovoli več identitet", "ALERT_DATA_ACCESS": "Mapa z RainLoop podatki je prosto ogledljiva. Prosimo, nastavite strežnik, da skrije mapo pred zunanjimi dostopi. Preberite več tukaj:", "ALERT_WARNING": "Pozor!", - "HTML_ALERT_WEAK_PASSWORD": "V uporabi je privzeto geslo administratorja\n<br \/>\nIz varnostnih razlogov\n<strong><a href=\"#\/security\">spremenite<\/a><\/strong>\ngeslo v nekaj drugega.\n" + "HTML_ALERT_WEAK_PASSWORD": "V uporabi je privzeto geslo administratorja\n<br>\nIz varnostnih razlogov\n<strong><a href=\"#\/security\">spremenite<\/a><\/strong>\ngeslo v nekaj drugega.\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Prijavni zaslon", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Preizkus", "ALERT_NOTICE": "Obvestilo!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Ta tip podatkovne baze ni priporočljiv za večje število uporabnikov.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Sistem ne podpira stikov.\n<br \/>\nNamestite ali omogočite <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> razširitev na strežniku.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Sistem ne podpira stikov.\n<br>\nNamestite ali omogočite <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> razširitev na strežniku.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domene", "BUTTON_ADD_DOMAIN": "Dodaj domeno", "BUTTON_ADD_ALIAS": "Dodaj vzdevek", "DELETE_ARE_YOU_SURE": "Ste prepričani?", - "HTML_DOMAINS_HELPER": "Seznam domen, do katerih je omogočen dostop.\n<br \/>\nKliknite ime za konfiguracijo domene.\n" + "HTML_DOMAINS_HELPER": "Seznam domen, do katerih je omogočen dostop.\n<br>\nKliknite ime za konfiguracijo domene.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Varnost", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Zapri", "BUTTON_ADD": "Dodaj", "BUTTON_UPDATE": "Posodobi", - "NEW_DOMAIN_DESC": "Ta konfiguiracija domene bo omogočala delo <br \/>z <i>%NAME%<\/i> e-naslovi.", + "NEW_DOMAIN_DESC": "Ta konfiguiracija domene bo omogočala delo <br>z <i>%NAME%<\/i> e-naslovi.", "WHITE_LIST_ALERT": "Seznam uporabnikov domene, do katerih je omogočen dostop.\nUporabnike ločite s presledkom.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/sv-SE/admin.json b/snappymail/v/0.0.0/app/localization/sv-SE/admin.json index 98c688558..51f4144f7 100644 --- a/snappymail/v/0.0.0/app/localization/sv-SE/admin.json +++ b/snappymail/v/0.0.0/app/localization/sv-SE/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "Tillåt multiidentiteter", "ALERT_DATA_ACCESS": "RainLoops datamapp är åtkomstbar. Var vänlig konfigurera din webb-server för att förhindra extern åtkomst och synlighet. Läs mer här: ", "ALERT_WARNING": "Varning!", - "HTML_ALERT_WEAK_PASSWORD": "Du använder standardlösenord.\n<br \/>\nFör säkerhetsskäl\n<strong><a href=\"#\/security\">ändra<\/a><\/strong>\nlösenord till något annat\n" + "HTML_ALERT_WEAK_PASSWORD": "Du använder standardlösenord.\n<br>\nFör säkerhetsskäl\n<strong><a href=\"#\/security\">ändra<\/a><\/strong>\nlösenord till något annat\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "Inloggningsskärm", @@ -66,14 +66,14 @@ "BUTTON_TEST": "Test", "ALERT_NOTICE": "Notis", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Använd inte denna typ av databas med ett stort antal aktiva användare.", - "HTML_ALERT_DOES_NOT_SUPPORTED": "Systemet stöder inte kontakter\n<br \/>\nDu behöver installera eller aktivera <strong>SUB (SQLite\/MySQL\/PostgreSQL)<\/strong> förlängning på server.\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "Systemet stöder inte kontakter\n<br>\nDu behöver installera eller aktivera <strong>SUB (SQLite\/MySQL\/PostgreSQL)<\/strong> förlängning på server.\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "Domäner", "BUTTON_ADD_DOMAIN": "Lägg till domän", "BUTTON_ADD_ALIAS": "Lägg till Alias", "DELETE_ARE_YOU_SURE": "Är du säker?", - "HTML_DOMAINS_HELPER": "Lista med domäner webmail tillåts access.\n<br \/>\nKlicka på namnet för att konfigurera domain.\n" + "HTML_DOMAINS_HELPER": "Lista med domäner webmail tillåts access.\n<br>\nKlicka på namnet för att konfigurera domain.\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "Säkerhet", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "Stäng", "BUTTON_ADD": "Lägg till", "BUTTON_UPDATE": "Uppdatera", - "NEW_DOMAIN_DESC": "Denna domän konfiguration gör att du kan arbeta <br \/>med <i>%NAME%<\/ i> e-postadresser.", + "NEW_DOMAIN_DESC": "Denna domän konfiguration gör att du kan arbeta <br>med <i>%NAME%<\/ i> e-postadresser.", "WHITE_LIST_ALERT": "Lista över domänanvändare som tillåts.\nAnvända ett utrymme som avgränsare.\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/localization/zh-CN/admin.json b/snappymail/v/0.0.0/app/localization/zh-CN/admin.json index 296789a40..84851a45e 100644 --- a/snappymail/v/0.0.0/app/localization/zh-CN/admin.json +++ b/snappymail/v/0.0.0/app/localization/zh-CN/admin.json @@ -38,7 +38,7 @@ "LABEL_ALLOW_IDENTITIES": "允许多重身份", "ALERT_DATA_ACCESS": "数据文件夹可被访问。请配置您的 Web 服务器以阻止从外部访问数据文件夹。获取更多帮助:", "ALERT_WARNING": "警告!", - "HTML_ALERT_WEAK_PASSWORD": "您正在使用默认的管理员密码\n<br \/>\n安全起见,请立即将密码\n<strong><a href=\"#\/security\">更改<\/a><\/strong>\n为其他的字符串。\n" + "HTML_ALERT_WEAK_PASSWORD": "您正在使用默认的管理员密码\n<br>\n安全起见,请立即将密码\n<strong><a href=\"#\/security\">更改<\/a><\/strong>\n为其他的字符串。\n" }, "TAB_LOGIN": { "LEGEND_LOGIN_SCREEN": "登录界面", @@ -66,14 +66,14 @@ "BUTTON_TEST": "测试", "ALERT_NOTICE": "提示!", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "如果有大量的活跃用户,请不要选择此数据库类型。", - "HTML_ALERT_DOES_NOT_SUPPORTED": "你的系统不支持联系人\n<br \/>\n你需要在你的服务器上安装或启用<strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> 组件。\n" + "HTML_ALERT_DOES_NOT_SUPPORTED": "你的系统不支持联系人\n<br>\n你需要在你的服务器上安装或启用<strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> 组件。\n" }, "TAB_DOMAINS": { "LEGEND_DOMAINS": "域名", "BUTTON_ADD_DOMAIN": "添加域名", "BUTTON_ADD_ALIAS": "添加别名", "DELETE_ARE_YOU_SURE": "你确定吗?", - "HTML_DOMAINS_HELPER": "允许访问的域名。\n<br \/>\n点击域名进行设置。\n" + "HTML_DOMAINS_HELPER": "允许访问的域名。\n<br>\n点击域名进行设置。\n" }, "TAB_SECURITY": { "LEGEND_SECURITY": "安全", @@ -138,7 +138,7 @@ "BUTTON_CLOSE": "关闭", "BUTTON_ADD": "添加", "BUTTON_UPDATE": "更新", - "NEW_DOMAIN_DESC": "此域名配置将允许你<br \/>和<i>%NAME%<\/i>电子邮件地址一起工作.", + "NEW_DOMAIN_DESC": "此域名配置将允许你<br>和<i>%NAME%<\/i>电子邮件地址一起工作.", "WHITE_LIST_ALERT": "允许访问的域用户;使用空格分隔。\n" }, "POPUPS_PLUGIN": { diff --git a/snappymail/v/0.0.0/app/templates/BadBrowser.html b/snappymail/v/0.0.0/app/templates/BadBrowser.html index ac2c64326..50dce0464 100644 --- a/snappymail/v/0.0.0/app/templates/BadBrowser.html +++ b/snappymail/v/0.0.0/app/templates/BadBrowser.html @@ -1,8 +1,8 @@ <!DOCTYPE html> <html lang="en" dir="ltr"> <head> - <meta charset="utf-8" /> - <meta name="robots" content="noindex, nofollow, noodp" /> + <meta charset="utf-8"> + <meta name="robots" content="noindex, nofollow, noodp"> <title>{{ErrorTitle}}