diff --git a/.docker/release/files/usr/local/include/application.ini b/.docker/release/files/usr/local/include/application.ini index ce7dd834b..5b6a204ed 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.2" saved = "Mon, 23 Aug 2021 07:55:13 +0000" diff --git a/README.md b/README.md index 91701c8a8..f1e065498 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.968 | |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.349 | |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.211 |140.430 | 68.665 |110.657 | 58.612 | |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.818 |425.477 |119.738 |353.301 |104.193 | +|TOTAL (no admin) |1.189.690 | 319.477 |351.061 |105.744 |292.627 | 91.711 | 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.315 | 46.959 | 16.904 | 14.555 | +|app.min.css | 274.791 | 66.384 | 39.618 | 14.984 | 13.193 | |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/dev/Common/Html.js b/dev/Common/Html.js index 379ab8e90..80dffc109 100644 --- a/dev/Common/Html.js +++ b/dev/Common/Html.js @@ -105,30 +105,34 @@ 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 .replace(/(
]*>)([\s\S]*?)(<\/pre>)/gi, aMatches => {
return (aMatches[1] + aMatches[2].trim() + aMatches[3].trim()).replace(/\r?\n/g, '
');
})
- // \MailSo\Base\HtmlUtils::ClearComments()
- .replace(//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(' ', '')
.replace('', '')
.replace(' ', '')
- // https://github.com/the-djmaze/snappymail/issues/187
-// .replace(/]*)?>((?![\s\S]*<\/a)[\s\S]*?]*)?>)/gi, '$1')
// \MailSo\Base\HtmlUtils::ClearFastTags
- .replace(/]*><\/p>/i, '')
.replace(/]*>/i, '')
.replace(/<\?xml [^>]*\?>/i, '')
.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,
@@ -137,7 +141,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,7 +153,21 @@ export const
oElement.remove();
return;
}
-
+// if (['CENTER','FORM'].includes(name)) {
+ if ('FORM' === name) {
+ replaceWithChildren(oElement);
+ return;
+ }
+/*
+ // Idea to allow CSS
+ if ('STYLE' === name) {
+ msgId = '#rl-msg-061eb4d647771be4185943ce91f0039d';
+ oElement.textContent = oElement.textContent
+ .replace(/[^{}]+{/g, m => msgId + ' ' + m.replace(',', ', '+msgId+' '))
+ .replace(/(background-)color:[^};]+/g, '');
+ return;
+ }
+*/
if ('BODY' === name) {
forEachObjectEntry(tasks, (name, cb) => {
if (hasAttribute(name)) {
@@ -160,18 +179,15 @@ export const
else if ('TABLE' === name && hasAttribute('width')) {
value = getAttribute('width');
- delAttribute('width');
- oStyle.maxWidth = value + (/^[0-9]+$/.test(value) ? 'px' : '');
- oStyle.removeProperty('width');
+ if (!value.includes('%')) {
+ delAttribute('width');
+ oStyle.maxWidth = value + 'px';
+ oStyle.width = '100%';
+ }
}
else if ('A' === name) {
value = oElement.href;
- // https://github.com/the-djmaze/snappymail/issues/187 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);
@@ -216,8 +232,8 @@ export const
if (detectHiddenImages
&& 'IMG' === name
- && (('' != getAttribute('height') && 2 > pInt(getAttribute('height')))
- || ('' != getAttribute('width') && 2 > pInt(getAttribute('width')))
+ && (('' != getAttribute('height') && 3 > pInt(getAttribute('height')))
+ || ('' != getAttribute('width') && 3 > pInt(getAttribute('width')))
|| [
'email.microsoftemail.com/open',
'github.com/notifications/beacon/',
@@ -320,7 +336,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');
}
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/Identity.js b/dev/Model/Identity.js
index 9e3e82649..bb3f4379f 100644
--- a/dev/Model/Identity.js
+++ b/dev/Model/Identity.js
@@ -34,6 +34,6 @@ export class IdentityModel extends AbstractModel {
const name = this.name(),
email = this.email();
- return name ? name + ' (' + email + ')' : email;
+ return name ? name + ' <' + email + '>' : email;
}
}
diff --git a/dev/Model/Message.js b/dev/Model/Message.js
index 29eb0c23e..8988c58b9 100644
--- a/dev/Model/Message.js
+++ b/dev/Model/Message.js
@@ -73,7 +73,6 @@ export class MessageModel extends AbstractModel {
isHtml: false,
hasImages: false,
hasExternals: false,
- hasAttachments: false,
pgpSigned: null,
pgpEncrypted: null,
@@ -95,6 +94,7 @@ export class MessageModel extends AbstractModel {
attachmentIconClass: () => FileInfo.getAttachmentsIconClass(this.attachments()),
threadsLen: () => this.threads().length,
isImportant: () => MessagePriority.High === this.priority(),
+ hasAttachments: () => this.attachments().hasVisible(),
isDeleted: () => this.flags().includes('\\deleted'),
isUnseen: () => !this.flags().includes('\\seen') /* || this.flags().includes('\\unseen')*/,
@@ -150,7 +150,6 @@ export class MessageModel extends AbstractModel {
this.isHtml(false);
this.hasImages(false);
this.hasExternals(false);
- this.hasAttachments(false);
this.attachments(new AttachmentCollectionModel);
this.pgpSigned(null);
@@ -402,7 +401,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;
@@ -491,21 +489,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('', ''+subject)
+ // eslint-disable-next-line max-len
+ .replace(' ', `${subject}
${encodeHtml(this.fromToLine(false))}${encodeHtml(i18n('GLOBAL/TO'))}: ${encodeHtml(this.toToLine(false))}${cc} <${mode}>${this.bodyAsHTML()}${mode}>`)
);
-
- doc.close();
+ sdoc.close();
if (print) {
setTimeout(() => win.print(), 100);
@@ -555,7 +550,6 @@ export class MessageModel extends AbstractModel {
this.priority(message.priority());
this.hasExternals(message.hasExternals());
- this.hasAttachments(message.hasAttachments());
this.emails = message.emails;
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/Compose.less b/dev/Styles/User/Compose.less
index 4f52e0270..c7294d7af 100644
--- a/dev/Styles/User/Compose.less
+++ b/dev/Styles/User/Compose.less
@@ -55,12 +55,12 @@
background-color: rgba(0,0,0,0.8);
.close, .minimize-custom {
- opacity: 1;
- color: #fff;
border-color: #eee;
-
+ float: none;
font-size: 24px;
- line-height: 24px;
+ opacity: 1;
+ line-height: 28px;
+ margin-left: .7em;
}
.btn.disabled {
@@ -76,6 +76,10 @@
.disabled.button-delete {
margin-left: 0;
}
+
+ .pull-right * {
+ vertical-align: top;
+ }
}
.b-header {
@@ -98,20 +102,13 @@
width: 4em;
}
- .e-identity {
+ #identity-toggle {
color: var(--main-color);
- font-weight: bold;
- line-height: @baseLineHeight;
- padding: 4px 0;
+ margin-left: 6px;
text-decoration: none;
-
- &.multiply {
- cursor: pointer;
- border-bottom: 1px dashed var(--main-color);
- }
- &.multiply::after {
- content: ' ▼';
- }
+ }
+ #identity-toggle::after {
+ content: '▼';
}
textarea, input[type="text"] {
@@ -170,12 +167,7 @@
border: 0 solid #333;
border-bottom-width: 3px;
display: inline-block;
- float: right;
height: 20px;
width: 16px;
- font-size: 20px;
- font-weight: bold;
- line-height: 20px;
- margin-right: 15px;
cursor: pointer;
}
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/MessageView.less b/dev/Styles/User/MessageView.less
index 71fb1cafd..6a356ba2f 100644
--- a/dev/Styles/User/MessageView.less
+++ b/dev/Styles/User/MessageView.less
@@ -332,7 +332,7 @@ html.rl-no-preview-pane {
}
img {
- max-width: 100%;
+ max-width: 90vw;
}
img[data-x-src]:not([src]) {
border: 1px solid #999;
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/dev/View/Popup/Compose.js b/dev/View/Popup/Compose.js
index 043909876..05832e299 100644
--- a/dev/View/Popup/Compose.js
+++ b/dev/View/Popup/Compose.js
@@ -50,6 +50,13 @@ import { ThemeStore } from 'Stores/Theme';
const
base64_encode = text => btoa(text).match(/.{1,76}/g).join('\r\n'),
+ email = new EmailModel(),
+ getEmail = value => {
+ email.clear();
+ email.parse(value.trim());
+ return email.email || false;
+ },
+
/**
* @param {string} prefix
* @param {string} subject
@@ -165,6 +172,7 @@ class ComposePopupView extends AbstractViewPopup {
this.addObservables({
identitiesDropdownTrigger: false,
+ from: '',
to: '',
cc: '',
bcc: '',
@@ -214,9 +222,11 @@ class ComposePopupView extends AbstractViewPopup {
editorArea: null, // initDom
- currentIdentity: IdentityUserStore()[0] || null
+ currentIdentity: IdentityUserStore()[0]
});
+ this.from(IdentityUserStore()[0].formattedName());
+
// this.to.subscribe((v) => console.log(v));
// Used by ko.bindingHandlers.emailsTags
@@ -289,11 +299,6 @@ class ComposePopupView extends AbstractViewPopup {
optText: item.formattedName()
})),
- currentIdentityView: () => {
- const item = this.currentIdentity();
- return item ? item.formattedName() : 'unknown';
- },
-
canBeSentOrSaved: () => !this.sending() && !this.saving()
});
@@ -304,11 +309,14 @@ class ComposePopupView extends AbstractViewPopup {
sendSuccessButSaveError: value => !value && this.savedErrorDesc(''),
- currentIdentity: value => {
+ currentIdentity: value => value && this.from(value.formattedName()),
+
+ from: value => {
this.canPgpSign(false);
- value && PgpUserStore.getKeyForSigning(value.email()).then(result => {
+ value = getEmail(value);
+ value && PgpUserStore.getKeyForSigning(value).then(result => {
console.log({
- email: value.email(),
+ email: value,
canPgpSign:result
});
this.canPgpSign(result)
@@ -373,6 +381,7 @@ class ComposePopupView extends AbstractViewPopup {
MessageFolder: this.draftsFolder(),
MessageUid: this.draftUid(),
SaveFolder: sSaveFolder,
+ From: this.from(),
To: this.to(),
Cc: this.cc(),
Bcc: this.bcc(),
@@ -730,9 +739,10 @@ class ComposePopupView extends AbstractViewPopup {
}
selectIdentity(identity) {
- if (identity && identity.item) {
- this.currentIdentity(identity.item);
- this.setSignatureFromIdentity(identity.item);
+ identity = identity && identity.item;
+ if (identity) {
+ this.currentIdentity(identity);
+ this.setSignatureFromIdentity(identity);
}
}
@@ -1594,18 +1604,14 @@ class ComposePopupView extends AbstractViewPopup {
}
allRecipients() {
- const email = new EmailModel();
return [
// From/sender is also recipient (Sent mailbox)
- this.currentIdentity().email(),
+// this.currentIdentity().email(),
+ this.from(),
this.to(),
this.cc(),
this.bcc()
- ].join(',').split(',').map(value => {
- email.clear();
- email.parse(value.trim());
- return email.email || false;
- }).validUnique();
+ ].join(',').split(',').map(value => getEmail(value.trim())).validUnique();
}
initPgpEncrypt() {
diff --git a/integrations/cloudron/DESCRIPTION.md b/integrations/cloudron/DESCRIPTION.md
index e756e91f4..b5c2381f6 100644
--- a/integrations/cloudron/DESCRIPTION.md
+++ b/integrations/cloudron/DESCRIPTION.md
@@ -1,4 +1,4 @@
-This app packages SnappyMail 2.12.0 .
+This app packages SnappyMail 2.12.2 .
SnappyMail is a simple, modern, lightweight & fast web-based email client.
diff --git a/integrations/cloudron/Dockerfile b/integrations/cloudron/Dockerfile
index 95f2b38fe..cc85eb33e 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.2
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..623eed0ea 100755
--- a/integrations/nextcloud/snappymail/VERSION
+++ b/integrations/nextcloud/snappymail/VERSION
@@ -1 +1 @@
-2.12.0
\ No newline at end of file
+2.12.2
\ No newline at end of file
diff --git a/integrations/nextcloud/snappymail/appinfo/info.xml b/integrations/nextcloud/snappymail/appinfo/info.xml
index dc02b3207..f0627b39e 100644
--- a/integrations/nextcloud/snappymail/appinfo/info.xml
+++ b/integrations/nextcloud/snappymail/appinfo/info.xml
@@ -4,7 +4,7 @@
SnappyMail
SnappyMail Webmail
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).
- 2.12.0
+ 2.12.2
agpl
SnappyMail Team, Nextgen-Networks, Tab Fitts, Nathan Kinkade, Pierre-Alain Bandinelli
SnappyMail
diff --git a/integrations/virtualmin/snappymail.pl b/integrations/virtualmin/snappymail.pl
index 25b9a806b..e33fb7632 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.2" );
}
sub script_snappymail_version_desc
diff --git a/package.json b/package.json
index 4111fd48b..3a97595fc 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.2",
"homepage": "https://snappymail.eu",
"author": {
"name": "DJ Maze",
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/change-password/style.less b/plugins/change-password/style.css
similarity index 100%
rename from plugins/change-password/style.less
rename to plugins/change-password/style.css
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/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 ''.
+ return ''.
''.$sResult.'';
}
@@ -446,12 +446,11 @@ abstract class HtmlUtils
$sText = \preg_replace('/[\n]{3,}/', "\n\n", $sText);
$sText = \strtr($sText, array(
- "\n" => "
",
"\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/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;
}
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/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('
', $aHtmlParts);
+ $oMessage->sHtml = \implode('
', $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/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']);
diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Messages.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Messages.php
index fe4b7f39d..cd133a55f 100644
--- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Messages.php
+++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Messages.php
@@ -1041,6 +1041,9 @@ trait Messages
$oMessage->DoesNotAddDefaultXMailer();
}
+ $sFrom = $this->GetActionParam('From', '');
+ $oMessage->SetFrom(\MailSo\Mime\Email::Parse($sFrom));
+/*
$oFromIdentity = $this->GetIdentityByID($oAccount, $this->GetActionParam('IdentityID', ''));
if ($oFromIdentity)
{
@@ -1054,7 +1057,7 @@ trait Messages
{
$oMessage->SetFrom(\MailSo\Mime\Email::Parse($oAccount->Email()));
}
-
+*/
$oFrom = $oMessage->GetFrom();
$oMessage->RegenerateMessageId($oFrom ? $oFrom->GetDomain() : '');
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/RainLoop/Actions/Themes.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Themes.php
index bd1ee1473..c64aaef6b 100644
--- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Themes.php
+++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Themes.php
@@ -99,25 +99,31 @@ trait Themes
$sTheme = \substr($sTheme, 0, -7);
}
- $aResult = array();
-
- $sThemeCSSFile = ($bCustomTheme ? APP_INDEX_ROOT_PATH : APP_VERSION_ROOT_PATH).'themes/'.$sTheme.'/styles.css';
- $sThemeLessFile = ($bCustomTheme ? APP_INDEX_ROOT_PATH : APP_VERSION_ROOT_PATH).'themes/'.$sTheme.'/styles.less';
+ $mResult = array();
$sBase = ($bCustomTheme ? \RainLoop\Utils::WebPath() : \RainLoop\Utils::WebVersionPath())
. "themes/{$sTheme}/";
+ $bLess = false;
+
+ $sThemeCSSFile = ($bCustomTheme ? APP_INDEX_ROOT_PATH : APP_VERSION_ROOT_PATH).'themes/'.$sTheme.'/styles.css';
if (\is_file($sThemeCSSFile)) {
- $aResult[] = \preg_replace('@(url\(["\']?)(\\./)?([a-z]+[^:a-z])@',
- "\$1{$sBase}\$3",
- \str_replace('@{base}', $sBase, \file_get_contents($sThemeCSSFile)));
- } else if (\is_file($sThemeLessFile)) {
- $aResult[] = "@base: \"{$sBase}\";";
- $aResult[] = \file_get_contents($sThemeLessFile);
+ $mResult[] = \file_get_contents($sThemeCSSFile);
+ } else {
+ $sThemeCSSFile = \str_replace('styles.css', 'styles.less', $sThemeCSSFile);
+ if (\is_file($sThemeCSSFile)) {
+ $bLess = true;
+ $mResult[] = "@base: \"{$sBase}\";";
+ $mResult[] = \file_get_contents($sThemeCSSFile);
+ }
}
- $aResult[] = $this->Plugins()->CompileCss($bAdmin);
+ $mResult[] = $this->Plugins()->CompileCss($bAdmin, $bLess);
- return (new \LessPHP\lessc())->compile(\implode("\n", $aResult));
+ $mResult = \preg_replace('@(url\(["\']?)(\\./)?([a-z]+[^:a-z])@',
+ "\$1{$sBase}\$3",
+ \str_replace('@{base}', $sBase, \implode("\n", $mResult)));
+
+ return $bLess ? (new \LessPHP\lessc())->compile($mResult) : $mResult;
}
}
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)
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/Plugins/Manager.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Plugins/Manager.php
index 353371da1..fb6d02189 100644
--- a/snappymail/v/0.0.0/app/libraries/RainLoop/Plugins/Manager.php
+++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Plugins/Manager.php
@@ -167,13 +167,14 @@ class Manager
return $this->bIsEnabled && \count($this->aJs[$bAdminScope ? 1 : 0]);
}
- public function CompileCss(bool $bAdminScope = false) : string
+ public function CompileCss(bool $bAdminScope, bool &$bLess) : string
{
$aResult = array();
if ($this->bIsEnabled) {
foreach ($this->aCss[$bAdminScope ? 1 : 0] as $sFile) {
if (\is_readable($sFile)) {
$aResult[] = \file_get_contents($sFile);
+ $bLess = $bLess || \str_ends_with($sFile, '.less');
}
}
}
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..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 ? '' : '',
- '{{BaseAppFaviconTouchLinkTag}}' => $sAppleTouchLink ? '' : '',
+ '{{BaseAppFaviconPngLinkTag}}' => $sFaviconPngLink ? '' : '',
+ '{{BaseAppFaviconTouchLinkTag}}' => $sAppleTouchLink ? '' : '',
'{{BaseAppMainCssLink}}' => $oActions->StaticPath('css/'.($bAdmin ? 'admin' : 'app').$sAppCssMin.'.css'),
'{{BaseAppThemeCssLink}}' => $oActions->ThemeLink($bAdmin),
'{{BaseAppManifestLink}}' => $oActions->StaticPath('manifest.json'),
@@ -240,23 +240,22 @@ 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 = 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:';
+ $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..403dcaef3 100644
--- a/snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php
+++ b/snappymail/v/0.0.0/app/libraries/RainLoop/ServiceActions.php
@@ -351,15 +351,17 @@ class ServiceActions
\header('X-Content-Location: '.$aData['Url']);
$tmp = \tmpfile();
$HTTP = \SnappyMail\HTTP\Request::factory();
+ $HTTP->max_redirects = 2;
$HTTP->streamBodyTo($tmp);
$oResponse = $HTTP->doRequest('GET', $aData['Url']);
if ($oResponse && 200 === $oResponse->status
&& \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');
+ \header('X-Content-Redirect-Location: '.$oResponse->final_uri);
\rewind($tmp);
\fpassthru($tmp);
exit;
@@ -371,6 +373,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/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;
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..1b9ad019a
--- /dev/null
+++ b/snappymail/v/0.0.0/app/libraries/snappymail/http/csp.php
@@ -0,0 +1,80 @@
+$name = $values;
+ }
+ }
+ }
+
+ function __toString() : string
+ {
+ $params = [
+ 'default-src ' . \implode(' ', $this->default)
+ ];
+ 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
+ if ($this->report) {
+ $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;
+ }
+}
diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/http/request.php b/snappymail/v/0.0.0/app/libraries/snappymail/http/request.php
index aa672b992..301d87c34 100644
--- a/snappymail/v/0.0.0/app/libraries/snappymail/http/request.php
+++ b/snappymail/v/0.0.0/app/libraries/snappymail/http/request.php
@@ -129,6 +129,7 @@ abstract class Request
throw new \RuntimeException("Fetching URL not allowed: {$url}");
}
+ $this->stream && \rewind($this->stream);
$result = $this->__doRequest($method, $url, $body, \array_merge($this->headers, $extra_headers));
// http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3
diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/http/request/socket.php b/snappymail/v/0.0.0/app/libraries/snappymail/http/request/socket.php
index 6d06283f4..f0b65d7a1 100644
--- a/snappymail/v/0.0.0/app/libraries/snappymail/http/request/socket.php
+++ b/snappymail/v/0.0.0/app/libraries/snappymail/http/request/socket.php
@@ -157,6 +157,7 @@ class Socket extends \SnappyMail\HTTP\Request
"\r\n" === \fread($sock, 2);
} else {
\fwrite($this->stream, \fread($sock, 1024));
+// \stream_copy_to_stream($sock, $this->stream);
}
}
} else {
diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/http/response.php b/snappymail/v/0.0.0/app/libraries/snappymail/http/response.php
index 2375996fa..aba9be140 100644
--- a/snappymail/v/0.0.0/app/libraries/snappymail/http/response.php
+++ b/snappymail/v/0.0.0/app/libraries/snappymail/http/response.php
@@ -67,6 +67,11 @@ class Response
return null;
}
+ public function getHeaders() : array
+ {
+ return $this->headers;
+ }
+
public function getRedirectLocation() : ?string
{
if ($location = $this->getHeader('location')) {
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..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,17 +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");
- }
-
- 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'])) {
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
\nZ bezpečnostních důvodů jej prosím\nzměňte<\/a><\/strong>.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Používáte výchozí administrátorské heslo.\n
\nZ bezpečnostních důvodů jej prosím\nzměň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
\nJe potřeba nainstalovat nebo povolit PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong>\nrozšíření na vašem serveru.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "Váš systém nepodporuje kontakty.\n
\nJe potřeba nainstalovat nebo povolit 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
\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
\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
\nAf sikkerhedsmæssige hensyn bør du venligst\nændre<\/a><\/strong>\nadgangskoden til noget andet snarest.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Du bruger standard admin adgangskoden.\n
\nAf sikkerhedsmæssige hensyn bør du venligst\næ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
\nDu skal installere og aktivere 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
\nDu skal installere og aktivere 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
\nKlik på navnet for at konfigurere domænet.\n"
+ "HTML_DOMAINS_HELPER": "Liste over domæner webmail er tilladt adgang til.\n
\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
\nBitte ändern<\/a><\/strong> Sie\naus Sicherheitsgründen das Passwort jetzt.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Sie verwenden das Standard-Admin-Passwort.\n
\nBitte ä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
\nSie müssen die 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
\nSie müssen die 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
\nKlicken Sie auf den Namen, um die Domain zu konfigurieren.\n"
+ "HTML_DOMAINS_HELPER": "Liste der Domains, die Webmail abrufen darf.\n
\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
mit %NAME%<\/i> Mailadressen zu arbeiten.",
+ "NEW_DOMAIN_DESC": "Diese Domain Konfiguration wird es dir möglich machen
mit %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
\nFor security reasons please\nchange<\/a><\/strong>\npassword to something else now.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "You are using the default admin password.\n
\nFor security reasons please\nchange<\/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
\nYou need to install or enable PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> extension on your server.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "Your system doesn't support contacts.\n
\nYou need to install or enable 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
\nClick on the name to configure the domain.\n"
+ "HTML_DOMAINS_HELPER": "List of domains webmail is allowed to access.\n
\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
with %NAME%<\/i> email addresses.",
+ "NEW_DOMAIN_DESC": "This domain configuration will allow you to work
with %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
\nDebido a razones de seguridad, debes\ncambiar<\/a><\/strong>\ntu contraseña inmediatamente.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Estas utilizando la contraseña por defecto.\n
\nDebido a razones de seguridad, debes\ncambiar<\/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
\nDebes instalar o habilitar el uso de PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> en tu servidor.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "Tu sistema no soporta el uso de Contactos.\n
\nDebes instalar o habilitar el uso de 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
\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
\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
con direcciones de correo tipo @%NAME%<\/i>.",
+ "NEW_DOMAIN_DESC": "Esta configuración de Dominio le permitirá trabajar
con direcciones de correo tipo @%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
\nبدلیل رعایت مسائل امنیتی\nگذرواژه<\/a><\/strong>\nرا به کلمه دیگری تغییر دهید.\n\n"
+ "HTML_ALERT_WEAK_PASSWORD": "شما در حال استفاده از گذرواژه پیشفرض کاربر مدیر هستید.\n
\nبدلیل رعایت مسائل امنیتی\nگذرواژه<\/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
\nشما باید افزونه PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> را نصب کنید یا اینکه فعال کنید.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "سیستم از تماسها پشتیبانی نمیکند\n
\nشما باید افزونه PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> را نصب کنید یا اینکه فعال کنید.\n"
},
"TAB_DOMAINS": {
"LEGEND_DOMAINS": "دامنهها",
"BUTTON_ADD_DOMAIN": "اضافهکردن دامنه",
"BUTTON_ADD_ALIAS": "اضافهکردن نام مستعار",
"DELETE_ARE_YOU_SURE": "آیا مطمئن هستید؟",
- "HTML_DOMAINS_HELPER": "لیستی از دامنههایی که وبمیل اجازه دسترسی به آنها را دارد.\n
\nروی دامنه دامنه جهت پیکربندی کلیک کنید.\n"
+ "HTML_DOMAINS_HELPER": "لیستی از دامنههایی که وبمیل اجازه دسترسی به آنها را دارد.\n
\nروی دامنه دامنه جهت پیکربندی کلیک کنید.\n"
},
"TAB_SECURITY": {
"LEGEND_SECURITY": "امنیت",
@@ -138,7 +138,7 @@
"BUTTON_CLOSE": "بستن",
"BUTTON_ADD": "اضافهکردن",
"BUTTON_UPDATE": "بروزرسانی",
- "NEW_DOMAIN_DESC": "این تنظیمات دامنه به شما اجازه کار کردن
با پست الکترونیک %NAME%<\/i> را میدهد.",
+ "NEW_DOMAIN_DESC": "این تنظیمات دامنه به شما اجازه کار کردن
با پست الکترونیک %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
\nTietoturvasyistä, ole ystävällinen ja\nvaihda<\/a><\/strong>\nsalasanasi nyt.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Sinulla on käytössäsi hallintatunnuksen oletussalasana.\n
\nTietoturvasyistä, ole ystävällinen ja\nvaihda<\/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
\nAsenna tai aktivoi PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> lisäosa palvelimellasi.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "Järjestelmäsi ei tue yhteystietoja.\n
\nAsenna tai aktivoi 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
\nKlikkaa nimeä konfiguroidaksesi domain.\n"
+ "HTML_DOMAINS_HELPER": "Lista domaineista joilla webmaililla on pääsy.\n
\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ää
%NAME% säkhöpostiosoitteita.",
+ "NEW_DOMAIN_DESC": "Tämän verkkotunnuksen asetukset sallivat käyttää
%NAME% 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
\nPour des raisons de sécurité, veuillez\nchanger 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
\nPour des raisons de sécurité, veuillez\nchanger 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
\nVous devez installer ou autoriser l'extension PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> sur votre serveur.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "Votre système ne supporte pas les contacts.\n
\nVous devez installer ou autoriser l'extension 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
\nCliquez sur le nom pour configurer le domaine.\n"
+ "HTML_DOMAINS_HELPER": "Liste des domaines autorisés.\n
\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
\nBiztonsági okokból kérlek\nváltoztasd meg<\/a><\/strong>\na jelszót valami másra!\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Az alapértelmezett admin jelszót használod\n
\nBiztonsági okokból kérlek\nvá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
\nTelepítened vagy engedélyezned kell egy 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
\nTelepítened vagy engedélyezned kell egy 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
\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
\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
a %NAME%<\/i> email címek használatát.",
+ "NEW_DOMAIN_DESC": "Ez a domain konfiguráció lehetővé teszi
a %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
\nAtas alasan keamanan, mohon\nmengganti<\/a><\/strong>\npassword dengan frasa yang lainnya segera.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Anda menggunakan password admin bawaan.\n
\nAtas alasan keamanan, mohon\nmengganti<\/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
\nAnda harus memasang atau mengaktifkan PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> extension pada server anda.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "Sistem anda tidak mendukung kontak\n
\nAnda harus memasang atau mengaktifkan 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
\nKlik pada nama domain untuk mengatur domain.\n"
+ "HTML_DOMAINS_HELPER": "Daftar domain webmail yang diizinkan mengakses.\n
\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
juga%NAME%<\/i> ",
+ "NEW_DOMAIN_DESC": "Domain ini mengizinkan anda bekerja dengan alamat email
juga%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
\nPer ragioni di sicurezza,\ncambiala<\/a><\/strong>\ncon una nuova password immediatamente.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Stai usando la password di amministrazione predefinita.\n
\nPer ragioni di sicurezza,\ncambiala<\/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
\nDevi abilitare l'estensione PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> sul tuo server.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "Il tuo server non supporta il salvataggio dei contatti.\n
\nDevi abilitare l'estensione 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
\nClicca su un nome per configurare quel dominio.\n"
+ "HTML_DOMAINS_HELPER": "Lista di domini a cui la webmail è abilitata ad accedere.\n
\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
con %NAME%<\/i> indirizzi email.",
+ "NEW_DOMAIN_DESC": "La configurazione di questo dominio ti permette di lavorare
con %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
\nセキュリティ上の理由から、いますぐパスワードを\n変更<\/a><\/strong>\nしてください。\n"
+ "HTML_ALERT_WEAK_PASSWORD": "デフォルトの管理者パスワードを使用しています。\n
\nセキュリティ上の理由から、いますぐパスワードを\n変更<\/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
\nサーバーへPDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong>\n拡張モジュールのインストールが必要です。\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "このシステムでは連絡先はサポートされていません。\n
\nサーバーへ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
\nドメインを設定するには、名前をクリックしてください。\n"
+ "HTML_DOMAINS_HELPER": "ドメインの一覧は、Web メールのアクセスを許可されています。\n
\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
\nDėl Jūsų saugumo prašome\npakeiskite<\/a><\/strong>\nslaptažodį kitu.\n\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Naudojate numatytąjį administratoriaus slaptažodį.\n
\nDėl Jūsų saugumo prašome\npakeiskite<\/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
\nSpauskite ant pavadinimo norėdami redaguoti.\n"
+ "HTML_DOMAINS_HELPER": "Leidžiamų Domenų sąrašas\n
\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
su %NAME%<\/i> domeno pašto adresais.",
+ "NEW_DOMAIN_DESC": "Šie nustatymai leis jums dirbti
su %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
\nAv sikkerhetshensyn bør du\nendre<\/a><\/strong>\npassordet umiddelbart.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Du bruker forvalgt admin-passord.\n
\nAv sikkerhetshensyn bør du\nendre<\/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
\nDu må installere eller slå på utvidelsen PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> på tjeneren.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "Dette systemet støtter ikke kontakter.\n
\nDu må installere eller slå på utvidelsen 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
\nTrykk på et navn for å sette opp domenet.\n"
+ "HTML_DOMAINS_HELPER": "Liste over domener som programmet kan få tilgang til.\n
\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
med e-postadresser ved %NAME%<\/i>.",
+ "NEW_DOMAIN_DESC": "Dette domeneoppsettet lar deg jobbe
med e-postadresser ved %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
\nWijzig<\/a><\/strong>\na.u.b. voor uw veiligheid direct het wachtwoord.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "U gebruikt het standaard beheer wachtwoord.\n
\nWijzig<\/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
\nU moet een PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> extentie op uw server installeren of activeren.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "Uw systeem ondersteund geen contactpersonen.\n
\nU moet een 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
\nKlik op de domeinnaam om deze te configureren.\n"
+ "HTML_DOMAINS_HELPER": "Lijst van toegestane domeinen.\n
\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
met %NAME%<\/i> e-mail adressen te werken.",
+ "NEW_DOMAIN_DESC": "Dit domein stelt u in staat om
met %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
\nZe względów bezpieczeństwa\nzmień hasło<\/a><\/strong>\nna inne.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Korzystasz z domyślnego hasła administratora.\n
\nZe względów bezpieczeństwa\nzmień 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
\nMusisz zainstalować lub uruchomić na serwerze jedno z rozszerzeń PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong>.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "Twój system nie zawiera wsparcia dla obsługi kontaktów.\n
\nMusisz zainstalować lub uruchomić na serwerze jedno z rozszerzeń 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
\nKliknij na nazwę, aby skonfigurować domenę.\n"
+ "HTML_DOMAINS_HELPER": "Lista domen, do których można uzyskać dostęp poprzez tego klienta.\n
\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ę
z adresami e-mail: %NAME%<\/i>",
+ "NEW_DOMAIN_DESC": "Konfiguracja tej domeny pozwala na pracę
z adresami e-mail: %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
\nPor motivo de segurança por favor\ntroque a senha<\/a><\/strong>\nagora.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Você está usando a senha administrativa padrão.\n
\nPor motivo de segurança por favor\ntroque 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
\nVocê precisa instalar ou habilitar a extensão 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
\nVocê precisa instalar ou habilitar a extensão 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
\nClique no domínio para configurá-lo.\n"
+ "HTML_DOMAINS_HELPER": "Lista dos domínios com acesso permitido ao webmail.\n
\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
com endereços de e-mail do %NAME%<\/i>.",
+ "NEW_DOMAIN_DESC": "Esta configuração de domínio lhe permitirá trabalhar
com endereços de e-mail do %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
\nПо соображениям безопасности, пожалуйста,\nизмените пароль<\/a><\/strong> прямо сейчас.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Вы используете пароль администратора по умолчанию.\n
\nПо соображениям безопасности, пожалуйста,\nизмените пароль<\/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
\nВам необходимо установить или включить PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> расширения на вашем сервере.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "Ваша система не поддерживает контакты.\n
\nВам необходимо установить или включить PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> расширения на вашем сервере.\n"
},
"TAB_DOMAINS": {
"LEGEND_DOMAINS": "Домены",
"BUTTON_ADD_DOMAIN": "Добавить домен",
"BUTTON_ADD_ALIAS": "Добавить Алиас",
"DELETE_ARE_YOU_SURE": "Вы уверены?",
- "HTML_DOMAINS_HELPER": "Список доменов к которым разрешен доступ.\n
\nНажмите на имя, чтобы настроить домен.\n"
+ "HTML_DOMAINS_HELPER": "Список доменов к которым разрешен доступ.\n
\nНажмите на имя, чтобы настроить домен.\n"
},
"TAB_SECURITY": {
"LEGEND_SECURITY": "Безопасность",
@@ -138,7 +138,7 @@
"BUTTON_CLOSE": "Закрыть",
"BUTTON_ADD": "Добавить",
"BUTTON_UPDATE": "Обновить",
- "NEW_DOMAIN_DESC": "Эта конфигурация позволит вам работать
с %NAME%<\/i> адресами.",
+ "NEW_DOMAIN_DESC": "Эта конфигурация позволит вам работать
с %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
\nKvôli bezpečnosti prosím\nzmeňte<\/a><\/strong>\nheslo na iné.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Používate predvolené administrátorské heslo.\n
\nKvôli bezpečnosti prosím\nzmeň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
\nYou need to install or enable PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> extension on your server.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "Your system doesn't support contacts.\n
\nYou need to install or enable 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
\nClick on the name to configure the domain.\n"
+ "HTML_DOMAINS_HELPER": "List of domains webmail is allowed to access.\n
\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
with %NAME%<\/i> email addresses.",
+ "NEW_DOMAIN_DESC": "This domain configuration will allow you to work
with %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
\nIz varnostnih razlogov\nspremenite<\/a><\/strong>\ngeslo v nekaj drugega.\n"
+ "HTML_ALERT_WEAK_PASSWORD": "V uporabi je privzeto geslo administratorja\n
\nIz varnostnih razlogov\nspremenite<\/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
\nNamestite ali omogočite PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> razširitev na strežniku.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "Sistem ne podpira stikov.\n
\nNamestite ali omogočite 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
\nKliknite ime za konfiguracijo domene.\n"
+ "HTML_DOMAINS_HELPER": "Seznam domen, do katerih je omogočen dostop.\n
\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
z %NAME%<\/i> e-naslovi.",
+ "NEW_DOMAIN_DESC": "Ta konfiguiracija domene bo omogočala delo
z %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
\nFör säkerhetsskäl\nändra<\/a><\/strong>\nlösenord till något annat\n"
+ "HTML_ALERT_WEAK_PASSWORD": "Du använder standardlösenord.\n
\nFör säkerhetsskäl\nä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
\nDu behöver installera eller aktivera SUB (SQLite\/MySQL\/PostgreSQL)<\/strong> förlängning på server.\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "Systemet stöder inte kontakter\n
\nDu behöver installera eller aktivera 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
\nKlicka på namnet för att konfigurera domain.\n"
+ "HTML_DOMAINS_HELPER": "Lista med domäner webmail tillåts access.\n
\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
med %NAME%<\/ i> e-postadresser.",
+ "NEW_DOMAIN_DESC": "Denna domän konfiguration gör att du kan arbeta
med %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
\n安全起见,请立即将密码\n更改<\/a><\/strong>\n为其他的字符串。\n"
+ "HTML_ALERT_WEAK_PASSWORD": "您正在使用默认的管理员密码\n
\n安全起见,请立即将密码\n更改<\/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
\n你需要在你的服务器上安装或启用PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> 组件。\n"
+ "HTML_ALERT_DOES_NOT_SUPPORTED": "你的系统不支持联系人\n
\n你需要在你的服务器上安装或启用PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> 组件。\n"
},
"TAB_DOMAINS": {
"LEGEND_DOMAINS": "域名",
"BUTTON_ADD_DOMAIN": "添加域名",
"BUTTON_ADD_ALIAS": "添加别名",
"DELETE_ARE_YOU_SURE": "你确定吗?",
- "HTML_DOMAINS_HELPER": "允许访问的域名。\n
\n点击域名进行设置。\n"
+ "HTML_DOMAINS_HELPER": "允许访问的域名。\n
\n点击域名进行设置。\n"
},
"TAB_SECURITY": {
"LEGEND_SECURITY": "安全",
@@ -138,7 +138,7 @@
"BUTTON_CLOSE": "关闭",
"BUTTON_ADD": "添加",
"BUTTON_UPDATE": "更新",
- "NEW_DOMAIN_DESC": "此域名配置将允许你
和%NAME%<\/i>电子邮件地址一起工作.",
+ "NEW_DOMAIN_DESC": "此域名配置将允许你
和%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 @@
-
-
+
+
{{ErrorTitle}}