PreRelease fixes

This commit is contained in:
RainLoop Team 2015-07-05 22:06:19 +04:00
parent 34a9b8cbc5
commit 42bac6aa2f
55 changed files with 578 additions and 238 deletions

View file

@ -1378,7 +1378,16 @@
if ($LAB && window.crypto && window.crypto.getRandomValues && Settings.capa(Enums.Capa.OpenPGP)) if ($LAB && window.crypto && window.crypto.getRandomValues && Settings.capa(Enums.Capa.OpenPGP))
{ {
var fOpenpgpCallback = function (openpgp) { var fOpenpgpCallback = function (openpgp) {
PgpStore.openpgp = openpgp; PgpStore.openpgp = openpgp;
if (window.Worker)
{
PgpStore.openpgp.initWorker(Links.openPgpWorkerJs());
}
// PgpStore.openpgp.config.useWebCrypto = false;
PgpStore.openpgpKeyring = new openpgp.Keyring(); PgpStore.openpgpKeyring = new openpgp.Keyring();
PgpStore.capaOpenPGP(true); PgpStore.capaOpenPGP(true);

View file

@ -390,7 +390,23 @@
*/ */
Links.prototype.openPgpJs = function () Links.prototype.openPgpJs = function ()
{ {
return this.sStaticPrefix + 'js/min/openpgp.js'; return this.sStaticPrefix + 'js/min/openpgp.min.js';
};
/**
* @return {string}
*/
Links.prototype.openPgpWorkerJs = function ()
{
return this.sStaticPrefix + 'js/min/openpgp.worker.min.js';
};
/**
* @return {string}
*/
Links.prototype.openPgpWorkerPath = function ()
{
return this.sStaticPrefix + 'js/min/';
}; };
/** /**

88
dev/External/ko.js vendored
View file

@ -821,7 +821,7 @@
'parseOnBlur': true, 'parseOnBlur': true,
'allowDragAndDrop': true, 'allowDragAndDrop': true,
'focusCallback': fFocusCallback, 'focusCallback': fFocusCallback,
'inputDelimiters': [',', ';', '\n'], 'inputDelimiters': [',', ';', "\n"],
'autoCompleteSource': fAutoCompleteSource, 'autoCompleteSource': fAutoCompleteSource,
// 'elementHook': function (oEl, oItem) { // 'elementHook': function (oEl, oItem) {
// if (oEl && oItem) // if (oEl && oItem)
@ -832,52 +832,70 @@
// }, // },
'parseHook': function (aInput) { 'parseHook': function (aInput) {
var aResult = []; return _.map(aInput, function (sInputValue) {
_.each(aInput, function (sInputValue) {
var var
aM = null,
aValues = [],
sValue = Utils.trim(sInputValue), sValue = Utils.trim(sInputValue),
oEmail = null oEmail = null
; ;
if ('' !== sValue) if ('' !== sValue)
{ {
aM = sValue.match(/[@]/g);
if (aM && 0 < aM.length)
{
sValue = sValue.replace(/[\r\n]+/g, '; ').replace(/[\s]+/g, ' ');
aValues = EmailModel.splitHelper(sValue, ';');
_.each(aValues, function (sV) {
oEmail = new EmailModel(); oEmail = new EmailModel();
oEmail.mailsoParse(sV); oEmail.mailsoParse(sValue);
return [oEmail.toLine(false), oEmail];
}
return [sValue, null];
if (oEmail.email)
{
aResult.push([oEmail.toLine(false), oEmail]);
}
else
{
aResult.push(['', null]);
}
});
}
else
{
aResult.push([sInputValue, null]);
}
}
else
{
aResult.push([sInputValue, null]);
}
}); });
return aResult; // var aResult = [];
//
// _.each(aInput, function (sInputValue) {
//
// var
// aM = null,
// aValues = [],
// sValue = Utils.trim(sInputValue),
// oEmail = null
// ;
//
// if ('' !== sValue)
// {
// aM = sValue.match(/[@]/g);
// if (aM && 0 < aM.length)
// {
// sValue = sValue.replace(/[\r\n]+/g, '; ').replace(/[\s]+/g, ' ');
// aValues = EmailModel.splitHelper(sValue, ';');
//
// _.each(aValues, function (sV) {
//
// oEmail = new EmailModel();
// oEmail.mailsoParse(sV);
//
// if (oEmail.email)
// {
// aResult.push([oEmail.toLine(false), oEmail]);
// }
// else
// {
// aResult.push(['', null]);
// }
// });
// }
// else
// {
// aResult.push([sInputValue, null]);
// }
// }
// else
// {
// aResult.push([sInputValue, null]);
// }
// });
//
// return aResult;
}, },
'change': _.bind(function (oEvent) { 'change': _.bind(function (oEvent) {
$oEl.data('EmailsTagsValue', oEvent.target.value); $oEl.data('EmailsTagsValue', oEvent.target.value);

View file

@ -33,10 +33,12 @@
this.identityForDeletion = ko.observable(null).deleteAccessHelper(); this.identityForDeletion = ko.observable(null).deleteAccessHelper();
} }
AccountsUserSettings.prototype.scrollableOptions = function () AccountsUserSettings.prototype.scrollableOptions = function (sWrapper)
{ {
return { return {
handle: '.drag-handle' handle: '.drag-handle',
containment: sWrapper || 'parent',
axis: 'y'
}; };
}; };

View file

@ -110,10 +110,12 @@
}, this); }, this);
} }
FiltersUserSettings.prototype.scrollableOptions = function () FiltersUserSettings.prototype.scrollableOptions = function (sWrapper)
{ {
return { return {
handle: '.drag-handle' handle: '.drag-handle',
containment: sWrapper || 'parent',
axis: 'y'
}; };
}; };

View file

@ -6,6 +6,7 @@
var var
_ = require('_'), _ = require('_'),
ko = require('ko'), ko = require('ko'),
window = require('window'),
Utils = require('Common/Utils'), Utils = require('Common/Utils'),
@ -24,6 +25,8 @@
this.openpgpkeysPrivate = PgpStore.openpgpkeysPrivate; this.openpgpkeysPrivate = PgpStore.openpgpkeysPrivate;
this.openPgpKeyForDeletion = ko.observable(null).deleteAccessHelper(); this.openPgpKeyForDeletion = ko.observable(null).deleteAccessHelper();
this.isHttps = window.document && window.document.location ? 'https:' === window.document.location.protocol : false;
} }
OpenPgpUserSettings.prototype.addOpenPgpKey = function () OpenPgpUserSettings.prototype.addOpenPgpKey = function ()

View file

@ -31,10 +31,12 @@
this.templateForDeletion = ko.observable(null).deleteAccessHelper(); this.templateForDeletion = ko.observable(null).deleteAccessHelper();
} }
TemplatesUserSettings.prototype.scrollableOptions = function () TemplatesUserSettings.prototype.scrollableOptions = function (sWrapper)
{ {
return { return {
handle: '.drag-handle' handle: '.drag-handle',
containment: sWrapper || 'parent',
axis: 'y'
}; };
}; };

View file

@ -50,6 +50,12 @@
} }
} }
.accounts-list-top-padding, .identities-list-top-padding {
display: inline-block;
height: 5px;
width: 5px;
}
.account-item { .account-item {
.e-action { .e-action {

View file

@ -46,6 +46,12 @@
} }
} }
.filters-list-top-padding {
display: inline-block;
height: 5px;
width: 5px;
}
.filter-item { .filter-item {
.e-action { .e-action {

View file

@ -37,6 +37,12 @@
} }
} }
.templates-list-top-padding {
display: inline-block;
height: 5px;
width: 5px;
}
.template-item { .template-item {
.e-action { .e-action {

View file

@ -42,7 +42,6 @@
var var
self = this, self = this,
sUserID = '', sUserID = '',
mKeyPair = null,
oOpenpgpKeyring = PgpStore.openpgpKeyring oOpenpgpKeyring = PgpStore.openpgpKeyring
; ;
@ -72,7 +71,7 @@
'passphrase': Utils.trim(self.password()) 'passphrase': Utils.trim(self.password())
}); });
mPromise.then(function () { mPromise.then(function (mKeyPair) {
self.submitRequest(false); self.submitRequest(false);
@ -80,6 +79,7 @@
{ {
oOpenpgpKeyring.privateKeys.importKey(mKeyPair.privateKeyArmored); oOpenpgpKeyring.privateKeys.importKey(mKeyPair.privateKeyArmored);
oOpenpgpKeyring.publicKeys.importKey(mKeyPair.publicKeyArmored); oOpenpgpKeyring.publicKeys.importKey(mKeyPair.publicKeyArmored);
oOpenpgpKeyring.store(); oOpenpgpKeyring.store();
require('App/User').reloadOpenPgpKeys(); require('App/User').reloadOpenPgpKeys();
@ -89,8 +89,11 @@
})['catch'](function() { })['catch'](function() {
self.submitRequest(false); self.submitRequest(false);
}); });
}
} catch (e) {} catch (e)
{
self.submitRequest(false);
}
}, 100); }, 100);

View file

@ -140,11 +140,17 @@ cfg.paths.js = {
] ]
}, },
openpgp: { openpgp: {
name: 'openpgp.js', name: 'openpgp.min.js',
src: [ src: [
'vendors/openpgp/openpgp-0.10.1.min.js' 'vendors/openpgp/openpgp-0.10.1.min.js'
] ]
}, },
openpgpworker: {
name: 'openpgp.worker.min.js',
src: [
'vendors/openpgp/openpgp-0.10.1.worker.min.js'
]
},
encrypt: { encrypt: {
name: 'bundle.js', name: 'bundle.js',
header: '(function (window) {', header: '(function (window) {',
@ -294,6 +300,13 @@ gulp.task('js:openpgp', function() {
.pipe(gulp.dest(cfg.paths.staticMinJS)); .pipe(gulp.dest(cfg.paths.staticMinJS));
}); });
gulp.task('js:openpgpworker', function() {
return gulp.src(cfg.paths.js.openpgpworker.src)
.pipe(rename(cfg.paths.js.openpgpworker.name))
.pipe(eol('\n', true))
.pipe(gulp.dest(cfg.paths.staticMinJS));
});
gulp.task('js:libs', function() { gulp.task('js:libs', function() {
return gulp.src(cfg.paths.js.libs.src) return gulp.src(cfg.paths.js.libs.src)
.pipe(concat(cfg.paths.js.libs.name, {separator: '\n\n'})) .pipe(concat(cfg.paths.js.libs.name, {separator: '\n\n'}))
@ -642,7 +655,7 @@ gulp.task('rainloop:owncloud:clean', ['rainloop:owncloud:copy', 'rainloop:ownclo
}); });
// MAIN // MAIN
gulp.task('default', ['js:libs', 'js:boot', 'js:openpgp', 'js:min', 'css:main:min', 'ckeditor', 'fontastic']); gulp.task('default', ['js:libs', 'js:boot', 'js:openpgp', 'js:openpgpworker', 'js:min', 'css:main:min', 'ckeditor', 'fontastic']);
gulp.task('fast-', ['js:app', 'js:admin', 'js:chunks', 'css:main']); gulp.task('fast-', ['js:app', 'js:admin', 'js:chunks', 'css:main']);
gulp.task('fast', ['package:community-on', 'fast-']); gulp.task('fast', ['package:community-on', 'fast-']);

View file

@ -1,8 +1,8 @@
{ {
"name": "RainLoop", "name": "RainLoop",
"title": "RainLoop Webmail", "title": "RainLoop Webmail",
"version": "1.9.1", "version": "1.9.2",
"release": "335", "release": "342",
"description": "Simple, modern & fast web-based email client", "description": "Simple, modern & fast web-based email client",
"homepage": "http://rainloop.net", "homepage": "http://rainloop.net",
"main": "gulpfile.js", "main": "gulpfile.js",
@ -40,7 +40,7 @@
"plugins" "plugins"
], ],
"readmeFilename": "README.md", "readmeFilename": "README.md",
"ownCloudPackageVersion": "4.3", "ownCloudPackageVersion": "4.4",
"engines": { "engines": {
"node": ">= 0.10.0" "node": ">= 0.10.0"
}, },

View file

@ -49,7 +49,13 @@ class DateTimeHelper
*/ */
public static function ParseRFC2822DateString($sDateTime) public static function ParseRFC2822DateString($sDateTime)
{ {
$sDateTime = \trim(\preg_replace('/ \([a-zA-Z0-9]+\)$/', '', \trim($sDateTime))); $sDateTime = \trim($sDateTime);
if (empty($sDateTime))
{
return 0;
}
$sDateTime = \trim(\preg_replace('/ \([a-zA-Z0-9]+\)$/', '', $sDateTime));
$oDateTime = \DateTime::createFromFormat('D, d M Y H:i:s O', $sDateTime, \MailSo\Base\DateTimeHelper::GetUtcTimeZoneObject()); $oDateTime = \DateTime::createFromFormat('D, d M Y H:i:s O', $sDateTime, \MailSo\Base\DateTimeHelper::GetUtcTimeZoneObject());
return $oDateTime ? $oDateTime->getTimestamp() : 0; return $oDateTime ? $oDateTime->getTimestamp() : 0;
} }
@ -65,7 +71,12 @@ class DateTimeHelper
public static function ParseInternalDateString($sDateTime) public static function ParseInternalDateString($sDateTime)
{ {
$sDateTime = \trim($sDateTime); $sDateTime = \trim($sDateTime);
if (\preg_match('/^[a-z]{2,4}, /i', $sDateTime)) // RFC2822 if (empty($sDateTime))
{
return 0;
}
if (\preg_match('/^[a-z]{2,4}, /i', $sDateTime)) // RFC2822 ~ "Thu, 10 Jun 2010 08:58:33 -0700 (PDT)"
{ {
return \MailSo\Base\DateTimeHelper::ParseRFC2822DateString($sDateTime); return \MailSo\Base\DateTimeHelper::ParseRFC2822DateString($sDateTime);
} }
@ -83,7 +94,13 @@ class DateTimeHelper
*/ */
public static function ParseDateStringType1($sDateTime) public static function ParseDateStringType1($sDateTime)
{ {
$oDateTime = \DateTime::createFromFormat('Y-m-d H:i:s O', \trim($sDateTime), \MailSo\Base\DateTimeHelper::GetUtcTimeZoneObject()); $sDateTime = \trim($sDateTime);
if (empty($sDateTime))
{
return 0;
}
$oDateTime = \DateTime::createFromFormat('Y-m-d H:i:s O', $sDateTime, \MailSo\Base\DateTimeHelper::GetUtcTimeZoneObject());
return $oDateTime ? $oDateTime->getTimestamp() : 0; return $oDateTime ? $oDateTime->getTimestamp() : 0;
} }

View file

@ -2368,7 +2368,8 @@ END;
{ {
$aMatch = array(); $aMatch = array();
return \preg_match('/.+(\.[a-zA-Z]+)$/', $sDomain, $aMatch) && !empty($aMatch[1]) && \in_array($aMatch[1], \explode(' ', return \preg_match('/.+(\.[a-zA-Z]+)$/', $sDomain, $aMatch) && !empty($aMatch[1]) && \in_array($aMatch[1], \explode(' ',
'.aero .asia .biz .cat .com .coop .edu .gov .info .int .jobs .mil .mobi .museum .name .net .org .pro .tel .travel .xxx .ac .ad .ae .af .ag .ai .al .am .an .ao .aq .ar .as .at .au .aw .ax .az .ba .bb .bd .be .bf .bg .bh .bi .bj .bm .bn .bo .br .bs .bt .bv .bw .by .bz .ca .cc .cd .cf .cg .ch .ci .ck .cl .cm .cn .co .cr .cs .cu .cv .cx .cy .cz .dd .de .dj .dk .dm .do .dz .ec .ee .eg .er .es .et .eu .fi .fj .fk .fm .fo .fr .ga .gb .gd .ge .gf .gg .gh .gi .gl .gm .gn .gp .gq .gr .gs .gt .gu .gw .gy .hk .hm .hn .hr .ht .hu .id .ie .il .im .in .io .iq .ir .is .it .je .jm .jo .jp .ke .kg .kh .ki .km .kn .kp .kr .kw .ky .kz .la .lb .lc .li .lk .lr .ls .lt .lu .lv .ly .ma .mc .md .me .mg .mh .mk .ml .mm .mn .mo .mp .mq .mr .ms .mt .mu .mv .mw .mx .my .mz .na .nc .ne .nf .ng .ni .nl .no .np .nr .nu .nz .om .pa .pe .pf .pg .ph .pk .pl .pm .pn .pr .ps .pt .pw .py .qa .re .ro .rs .ru . .rw .sa .sb .sc .sd .se .sg .sh .si .sj .sk .sl .sm .sn .so .sr .st .su .sv .sy .sz .tc .td .tf .tg .th .tj .tk .tl .tm .tn .to .tp .tr .tt .tv .tw .tz .ua .ug .uk .us .uy .uz .va .vc .ve .vg .vi .vn .vu .wf .ws .ye .yt .za .zm .zw' '.academy .actor .agency .audio .bar .beer .bike .blue .boutique .cab .camera .camp .capital .cards .careers .cash .catering .center .cheap .city .cleaning .clinic .clothing .club .coffee .community .company .computer .construction .consulting .contractors .cool .credit .dance .dating .democrat .dental .diamonds .digital .direct .directory .discount .domains .education .email .energy .equipment .estate .events .expert .exposed .fail .farm .fish .fitness .florist .fund .futbol .gallery .gift .glass .graphics .guru .help .holdings .holiday .host .hosting .house .institute .international .kitchen .land .life .lighting .limo .link .management .market .marketing .media .menu .moda .partners .parts .photo .photography .photos .pics .pink .press .productions .pub .red .rentals .repair .report .rest .sexy .shoes .social .solar .solutions .space .support .systems .tattoo .tax .technology .tips .today .tools .town .toys .trade .training .university .uno .vacations .vision .vodka .voyage .watch .webcam .wiki .work .works .wtf .zone .aero .asia .biz .cat .com .coop .edu .gov .info .int .jobs .mil .mobi .museum .name .net .org .pro .tel .travel .xxx '.
'.ac .ad .ae .af .ag .ai .al .am .an .ao .aq .ar .as .at .au .aw .ax .az .ba .bb .bd .be .bf .bg .bh .bi .bj .bm .bn .bo .br .bs .bt .bv .bw .by .bz .ca .cc .cd .cf .cg .ch .ci .ck .cl .cm .cn .co .cr .cs .cu .cv .cx .cy .cz .dd .de .dj .dk .dm .do .dz .ec .ee .eg .er .es .et .eu .fi .fj .fk .fm .fo .fr .ga .gb .gd .ge .gf .gg .gh .gi .gl .gm .gn .gp .gq .gr .gs .gt .gu .gw .gy .hk .hm .hn .hr .ht .hu .id .ie .il .im .in .io .iq .ir .is .it .je .jm .jo .jp .ke .kg .kh .ki .km .kn .kp .kr .kw .ky .kz .la .lb .lc .li .lk .lr .ls .lt .lu .lv .ly .ma .mc .md .me .mg .mh .mk .ml .mm .mn .mo .mp .mq .mr .ms .mt .mu .mv .mw .mx .my .mz .na .nc .ne .nf .ng .ni .nl .no .np .nr .nu .nz .om .pa .pe .pf .pg .ph .pk .pl .pm .pn .pr .ps .pt .pw .py .qa .re .ro .rs .ru . .rw .sa .sb .sc .sd .se .sg .sh .si .sj .sk .sl .sm .sn .so .sr .st .su .sv .sy .sz .tc .td .tf .tg .th .tj .tk .tl .tm .tn .to .tp .tr .tt .tv .tw .tz .ua .ug .uk .us .uy .uz .va .vc .ve .vg .vi .vn .vu .wf .ws .ye .yt .za .zm .zw'
)); ));
} }

View file

@ -1889,7 +1889,7 @@ class ImapClient extends \MailSo\Net\NetClient
* @throws \MailSo\Net\Exceptions\Exception * @throws \MailSo\Net\Exceptions\Exception
*/ */
private function partialParseResponseBranch(&$oImapResponse, $iStackIndex = -1, private function partialParseResponseBranch(&$oImapResponse, $iStackIndex = -1,
$bTreatAsAtom = false, $sParentToken = '') $bTreatAsAtom = false, $sParentToken = '', $sOpenBracket = '')
{ {
$mNull = null; $mNull = null;
@ -2020,7 +2020,7 @@ class ImapClient extends \MailSo\Net\NetClient
if ($bTreatAsAtom) if ($bTreatAsAtom)
{ {
$sAtomBlock = $this->partialParseResponseBranch($mNull, $iStackIndex, true, $sAtomBlock = $this->partialParseResponseBranch($mNull, $iStackIndex, true,
null === $sPreviousAtomUpperCase ? '' : \strtoupper($sPreviousAtomUpperCase)); null === $sPreviousAtomUpperCase ? '' : \strtoupper($sPreviousAtomUpperCase), $sOpenBracket);
$sAtomBuilder .= $sAtomBlock; $sAtomBuilder .= $sAtomBlock;
$iPos = $this->iResponseBufParsedPos; $iPos = $this->iResponseBufParsedPos;
@ -2035,7 +2035,7 @@ class ImapClient extends \MailSo\Net\NetClient
else if ($bIsGotoNotAtomBracket) else if ($bIsGotoNotAtomBracket)
{ {
$aSubItems = $this->partialParseResponseBranch($mNull, $iStackIndex, false, $aSubItems = $this->partialParseResponseBranch($mNull, $iStackIndex, false,
null === $sPreviousAtomUpperCase ? '' : \strtoupper($sPreviousAtomUpperCase)); null === $sPreviousAtomUpperCase ? '' : \strtoupper($sPreviousAtomUpperCase), $sOpenBracket);
$aList[] = $aSubItems; $aList[] = $aSubItems;
$iPos = $this->iResponseBufParsedPos; $iPos = $this->iResponseBufParsedPos;
@ -2065,27 +2065,36 @@ class ImapClient extends \MailSo\Net\NetClient
$sChar = $this->sResponseBuffer[$iPos]; $sChar = $this->sResponseBuffer[$iPos];
} }
switch ($sChar) switch (true)
{ {
case ']': case ']' === $sChar:
case ')':
$iPos++; $iPos++;
$sPreviousAtomUpperCase = null; $sPreviousAtomUpperCase = null;
$bIsEndOfList = true; $bIsEndOfList = true;
break; break;
case ' ': case ')' === $sChar:
$iPos++;
$sPreviousAtomUpperCase = null;
$bIsEndOfList = true;
break;
case ' ' === $sChar:
if ($bTreatAsAtom) if ($bTreatAsAtom)
{ {
$sAtomBuilder .= ' '; $sAtomBuilder .= ' ';
} }
$iPos++; $iPos++;
break; break;
case '[': case '[' === $sChar:
$bIsClosingBracketSquare = true; $bIsClosingBracketSquare = true;
case '(': case '(' === $sChar:
if ('(' === $sChar)
{
$bIsClosingBracketSquare = false;
}
if ($bTreatAsAtom) if ($bTreatAsAtom)
{ {
$sAtomBuilder .= ($bIsClosingBracketSquare) ? '[' : '('; $sAtomBuilder .= $bIsClosingBracketSquare ? '[' : '(';
} }
$iPos++; $iPos++;
@ -2093,13 +2102,15 @@ class ImapClient extends \MailSo\Net\NetClient
if ($bTreatAsAtom) if ($bTreatAsAtom)
{ {
$bIsGotoAtomBracket = true; $bIsGotoAtomBracket = true;
$sOpenBracket = $bIsClosingBracketSquare ? '[' : '(';
} }
else else
{ {
$bIsGotoNotAtomBracket = true; $bIsGotoNotAtomBracket = true;
$sOpenBracket = $bIsClosingBracketSquare ? '[' : '(';
} }
break; break;
case '{': case '{' === $sChar:
$bIsLiteralParsed = false; $bIsLiteralParsed = false;
$mLiteralEndPos = \strpos($this->sResponseBuffer, '}', $iPos); $mLiteralEndPos = \strpos($this->sResponseBuffer, '}', $iPos);
if (false !== $mLiteralEndPos && $mLiteralEndPos > $iPos) if (false !== $mLiteralEndPos && $mLiteralEndPos > $iPos)
@ -2120,7 +2131,7 @@ class ImapClient extends \MailSo\Net\NetClient
} }
$sPreviousAtomUpperCase = null; $sPreviousAtomUpperCase = null;
break; break;
case '"': case '"' === $sChar:
$bIsQuotedParsed = false; $bIsQuotedParsed = false;
while (true) while (true)
{ {
@ -2206,7 +2217,7 @@ class ImapClient extends \MailSo\Net\NetClient
$sPreviousAtomUpperCase = null; $sPreviousAtomUpperCase = null;
break; break;
case 'GOTO_DEFAULT': case 'GOTO_DEFAULT' === $sChar:
default: default:
$iCharBlockStartPos = $iPos; $iCharBlockStartPos = $iPos;
@ -2214,7 +2225,7 @@ class ImapClient extends \MailSo\Net\NetClient
{ {
$iPos = $iBufferEndIndex; $iPos = $iBufferEndIndex;
while ($iPos > $iCharBlockStartPos && $this->sResponseBuffer[$iCharBlockStartPos] == ' ') while ($iPos > $iCharBlockStartPos && $this->sResponseBuffer[$iCharBlockStartPos] === ' ')
{ {
$iCharBlockStartPos++; $iCharBlockStartPos++;
} }
@ -2224,9 +2235,9 @@ class ImapClient extends \MailSo\Net\NetClient
while (!$bIsAtomDone && ($iPos <= $iBufferEndIndex)) while (!$bIsAtomDone && ($iPos <= $iBufferEndIndex))
{ {
$sCharDef = $this->sResponseBuffer[$iPos]; $sCharDef = $this->sResponseBuffer[$iPos];
switch ($sCharDef) switch (true)
{ {
case '[': case '[' === $sCharDef:
if (null === $sAtomBuilder) if (null === $sAtomBuilder)
{ {
$sAtomBuilder = ''; $sAtomBuilder = '';
@ -2238,7 +2249,7 @@ class ImapClient extends \MailSo\Net\NetClient
$this->iResponseBufParsedPos = $iPos; $this->iResponseBufParsedPos = $iPos;
$sListBlock = $this->partialParseResponseBranch($mNull, $iStackIndex, true, $sListBlock = $this->partialParseResponseBranch($mNull, $iStackIndex, true,
null === $sPreviousAtomUpperCase ? '' : \strtoupper($sPreviousAtomUpperCase)); null === $sPreviousAtomUpperCase ? '' : \strtoupper($sPreviousAtomUpperCase), '[');
if (null !== $sListBlock) if (null !== $sListBlock)
{ {
@ -2248,9 +2259,9 @@ class ImapClient extends \MailSo\Net\NetClient
$iPos = $this->iResponseBufParsedPos; $iPos = $this->iResponseBufParsedPos;
$iCharBlockStartPos = $iPos; $iCharBlockStartPos = $iPos;
break; break;
case ' ': case ' ' === $sCharDef:
case ']': case ')' === $sCharDef && '(' === $sOpenBracket:
case ')': case ']' === $sCharDef && '[' === $sOpenBracket:
$bIsAtomDone = true; $bIsAtomDone = true;
break; break;
default: default:

View file

@ -9411,14 +9411,23 @@ class Actions
{ {
$oAccount = \call_user_func($fGetAccount); $oAccount = \call_user_func($fGetAccount);
$iDateTimeStampInUTC = $mResponse->InternalTimeStampInUTC();
if (0 === $iDateTimeStampInUTC || !!$this->Config()->Get('labs', 'date_from_headers', false))
{
$iDateTimeStampInUTC = $mResponse->HeaderTimeStampInUTC();
if (0 === $iDateTimeStampInUTC)
{
$iDateTimeStampInUTC = $mResponse->InternalTimeStampInUTC();
}
}
$mResult = \array_merge($this->objectData($mResponse, $sParent, $aParameters), array( $mResult = \array_merge($this->objectData($mResponse, $sParent, $aParameters), array(
'Folder' => $mResponse->Folder(), 'Folder' => $mResponse->Folder(),
'Uid' => (string) $mResponse->Uid(), 'Uid' => (string) $mResponse->Uid(),
'Subject' => \trim(\MailSo\Base\Utils::Utf8Clear($mResponse->Subject())), 'Subject' => \trim(\MailSo\Base\Utils::Utf8Clear($mResponse->Subject())),
'MessageId' => $mResponse->MessageId(), 'MessageId' => $mResponse->MessageId(),
'Size' => $mResponse->Size(), 'Size' => $mResponse->Size(),
'DateTimeStampInUTC' => !!$this->Config()->Get('labs', 'date_from_headers', false) 'DateTimeStampInUTC' => $iDateTimeStampInUTC,
? $mResponse->HeaderTimeStampInUTC() : $mResponse->InternalTimeStampInUTC(),
'ReplyTo' => $this->responseObject($mResponse->ReplyTo(), $sParent, $aParameters), 'ReplyTo' => $this->responseObject($mResponse->ReplyTo(), $sParent, $aParameters),
'From' => $this->responseObject($mResponse->From(), $sParent, $aParameters), 'From' => $this->responseObject($mResponse->From(), $sParent, $aParameters),
'To' => $this->responseObject($mResponse->To(), $sParent, $aParameters), 'To' => $this->responseObject($mResponse->To(), $sParent, $aParameters),

View file

@ -98,6 +98,14 @@ class Property
return PropertyType::WEB_PAGE === $this->Type; return PropertyType::WEB_PAGE === $this->Type;
} }
/**
* @return bool
*/
public function IsValueForLower()
{
return $this->IsEmail() || $this->IsName() || $this->IsWeb();
}
/** /**
* @return bool * @return bool
*/ */
@ -142,7 +150,7 @@ class Property
} }
// lower value for searching // lower value for searching
if (\MailSo\Base\Utils::FunctionExistsAndEnabled('mb_strtolower')) if ($this->IsValueForLower() && \MailSo\Base\Utils::FunctionExistsAndEnabled('mb_strtolower'))
{ {
$this->ValueLower = (string) @\mb_strtolower($this->Value, 'UTF-8'); $this->ValueLower = (string) @\mb_strtolower($this->Value, 'UTF-8');
} }
@ -153,6 +161,7 @@ class Property
$sPhone = \trim($this->Value); $sPhone = \trim($this->Value);
$sPhone = \preg_replace('/^[+]+/', '', $sPhone); $sPhone = \preg_replace('/^[+]+/', '', $sPhone);
$sPhone = \preg_replace('/[^\d]/', '', $sPhone); $sPhone = \preg_replace('/[^\d]/', '', $sPhone);
$this->ValueCustom = \trim($sPhone); $this->ValueCustom = \trim($sPhone);
} }
} }

View file

@ -1895,6 +1895,11 @@ SQLITEINITIAL;
1 => $this->getInitialTablesArray($this->sDsnType), 1 => $this->getInitialTablesArray($this->sDsnType),
2 => array( 2 => array(
'ALTER TABLE rainloop_ab_properties ADD prop_value_lower varchar(255) NOT NULL DEFAULT \'\' AFTER prop_value_custom;' 'ALTER TABLE rainloop_ab_properties ADD prop_value_lower varchar(255) NOT NULL DEFAULT \'\' AFTER prop_value_custom;'
),
3 => array(
'ALTER TABLE rainloop_ab_properties CHANGE prop_value prop_value TEXT NOT NULL;',
'ALTER TABLE rainloop_ab_properties CHANGE prop_value_custom prop_value_custom TEXT NOT NULL;',
'ALTER TABLE rainloop_ab_properties CHANGE prop_value_lower prop_value_lower TEXT NOT NULL;'
) )
)); ));
break; break;
@ -1903,7 +1908,8 @@ SQLITEINITIAL;
1 => $this->getInitialTablesArray($this->sDsnType), 1 => $this->getInitialTablesArray($this->sDsnType),
2 => array( 2 => array(
'ALTER TABLE rainloop_ab_properties ADD prop_value_lower text NOT NULL DEFAULT \'\';' 'ALTER TABLE rainloop_ab_properties ADD prop_value_lower text NOT NULL DEFAULT \'\';'
) ),
3 => array()
)); ));
break; break;
case 'sqlite': case 'sqlite':
@ -1911,7 +1917,8 @@ SQLITEINITIAL;
1 => $this->getInitialTablesArray($this->sDsnType), 1 => $this->getInitialTablesArray($this->sDsnType),
2 => array( 2 => array(
'ALTER TABLE rainloop_ab_properties ADD prop_value_lower text NOT NULL DEFAULT \'\';' 'ALTER TABLE rainloop_ab_properties ADD prop_value_lower text NOT NULL DEFAULT \'\';'
) ),
3 => array()
)); ));
break; break;
} }

View file

@ -149,6 +149,12 @@
<input type="text" size="70" autocomplete="off" data-bind="textInput: subject" /> <input type="text" size="70" autocomplete="off" data-bind="textInput: subject" />
</div> </div>
</div> </div>
<div class="e-row">
<div class="e-cell e-label">
</div>
<div class="e-cell e-value" data-bind="text: to">
</div>
</div>
<div class="e-row"> <div class="e-row">
<div class="e-cell e-label"></div> <div class="e-cell e-label"></div>
<div class="e-cell e-value"> <div class="e-cell e-value">
@ -174,15 +180,18 @@
<div class="btn-group pull-right"> <div class="btn-group pull-right">
<a class="btn first" data-tooltip-join="bottom" <a class="btn first" data-tooltip-join="bottom"
style="padding-left: 10px; padding-right: 10px;" style="padding-left: 10px; padding-right: 10px;"
data-bind="visible: addAttachmentEnabled(), initDom: composeUploaderButton, tooltip: 'COMPOSE/ATTACH_FILES'"> data-bind="visible: addAttachmentEnabled(), initDom: composeUploaderButton, tooltip: 'COMPOSE/ATTACH_FILES',
css: {'last': !(driveEnabled() && driveVisible()) && !(dropboxEnabled())}">
<sup style="font-weight: bold; font-size: 100%; top: -0.3em;">+</sup><i class="icon-attachment"></i> <sup style="font-weight: bold; font-size: 100%; top: -0.3em;">+</sup><i class="icon-attachment"></i>
</a> </a>
<a class="btn" data-tooltip-join="bottom" <a class="btn" data-tooltip-join="bottom"
data-bind="visible: dropboxEnabled, command: dropboxCommand, tooltip: 'COMPOSE/DROPBOX', css: {'first': !addAttachmentEnabled(), 'last': !driveEnabled()}"> data-bind="visible: dropboxEnabled, command: dropboxCommand, tooltip: 'COMPOSE/DROPBOX',
css: {'first': !addAttachmentEnabled(), 'last': !(driveEnabled() && driveVisible())}">
<i class="icon-dropbox"></i> <i class="icon-dropbox"></i>
</a> </a>
<a class="btn last" data-tooltip-join="bottom" <a class="btn last" data-tooltip-join="bottom"
data-bind="visible: driveEnabled() && driveVisible(), command: driveCommand, tooltip: 'COMPOSE/GOOGLE_DRIVE'"> data-bind="visible: driveEnabled() && driveVisible(), command: driveCommand, tooltip: 'COMPOSE/GOOGLE_DRIVE',
css: {'first': !addAttachmentEnabled() && !(driveEnabled() && driveVisible())}">
<i class="icon-google-drive"></i> <i class="icon-google-drive"></i>
</a> </a>
</div> </div>

View file

@ -36,7 +36,7 @@
<div class="control-group"> <div class="control-group">
<label class="i18n control-label" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_KEY_BIT_LENGTH"></label> <label class="i18n control-label" data-i18n="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_KEY_BIT_LENGTH"></label>
<div class="controls"> <div class="controls">
<select data-bind="value: keyBitLength, options: [1024, 2048]"></select> <select data-bind="value: keyBitLength, options: [2048, 4096]"></select>
</div> </div>
</div> </div>
</div> </div>

View file

@ -15,13 +15,15 @@
<br /> <br />
<br /> <br />
<br /> <br />
<div class="accounts-list-wrp">
<div class="accounts-list-top-padding"></div>
<table class="table table-hover list-table accounts-list" data-bind="i18nUpdate: accounts"> <table class="table table-hover list-table accounts-list" data-bind="i18nUpdate: accounts">
<colgroup> <colgroup>
<col /> <col />
<col style="width: 150px" /> <col style="width: 150px" />
<col style="width: 1%" /> <col style="width: 1%" />
</colgroup> </colgroup>
<tbody data-bind="sortable: {data: accounts, options: scrollableOptions(), afterMove: accountsAndIdentitiesAfterMove}"> <tbody data-bind="sortable: {data: accounts, options: scrollableOptions('.accounts-list-wrp'), afterMove: accountsAndIdentitiesAfterMove}">
<tr class="account-item"> <tr class="account-item">
<td class="e-action" data-bind="css: {'e-action': canBeEdit}"> <td class="e-action" data-bind="css: {'e-action': canBeEdit}">
<span class="account-img icon-user"></span> <span class="account-img icon-user"></span>
@ -44,6 +46,7 @@
</tbody> </tbody>
</table> </table>
</div> </div>
</div>
<div data-bind="visible: allowIdentities"> <div data-bind="visible: allowIdentities">
<br /> <br />
<div class="form-horizontal"> <div class="form-horizontal">
@ -59,13 +62,15 @@
<br /> <br />
<br /> <br />
<br /> <br />
<div class="identities-list-wrp">
<div class="identities-list-top-padding"></div>
<table class="table table-hover list-table identities-list" data-bind="i18nUpdate: identities"> <table class="table table-hover list-table identities-list" data-bind="i18nUpdate: identities">
<colgroup> <colgroup>
<col /> <col />
<col style="width: 150px" /> <col style="width: 150px" />
<col style="width: 1%" /> <col style="width: 1%" />
</colgroup> </colgroup>
<tbody data-bind="sortable: {data: identities, options: scrollableOptions(), afterMove: accountsAndIdentitiesAfterMove}"> <tbody data-bind="sortable: {data: identities, options: scrollableOptions('.identities-list-wrp'), afterMove: accountsAndIdentitiesAfterMove}">
<tr class="identity-item"> <tr class="identity-item">
<td class="e-action"> <td class="e-action">
<span class="identity-img icon-user"></span> <span class="identity-img icon-user"></span>
@ -92,4 +97,5 @@
</tbody> </tbody>
</table> </table>
</div> </div>
</div>
</div> </div>

View file

@ -60,7 +60,9 @@
data-bind="value: filterRaw, valueUpdate: 'afterkeydown'"></textarea> data-bind="value: filterRaw, valueUpdate: 'afterkeydown'"></textarea>
</div> </div>
</div> </div>
<table class="table table-hover list-table g-ui-user-select-none" <div class="filters-list-wrp">
<div class="filters-list-top-padding"></div>
<table class="table table-hover list-table filters-list g-ui-user-select-none"
data-bind="visible: inited() && (!filterRaw.active() || !filterRaw.active()), i18nUpdate: filters"> data-bind="visible: inited() && (!filterRaw.active() || !filterRaw.active()), i18nUpdate: filters">
<colgroup> <colgroup>
<col style="width: 30px" /> <col style="width: 30px" />
@ -69,7 +71,7 @@
<col style="width: 140px" /> <col style="width: 140px" />
<col style="width: 1%" /> <col style="width: 1%" />
</colgroup> </colgroup>
<tbody data-bind="sortable: {data: filters, options: scrollableOptions()}" style="width: 600px"> <tbody data-bind="sortable: {data: filters, options: scrollableOptions('.filters-list-wrp')}" style="width: 600px">
<tr class="filter-item"> <tr class="filter-item">
<td> <td>
<span class="disabled-filter" data-bind="click: function () { $root.haveChanges(true); enabled(!enabled()); }"> <span class="disabled-filter" data-bind="click: function () { $root.haveChanges(true); enabled(!enabled()); }">
@ -99,4 +101,6 @@
</table> </table>
</div> </div>
</div> </div>
</div>
</div>
</div> </div>

View file

@ -4,17 +4,19 @@
<span class="i18n" data-i18n="SETTINGS_OPEN_PGP/LEGEND_OPEN_PGP"></span> <span class="i18n" data-i18n="SETTINGS_OPEN_PGP/LEGEND_OPEN_PGP"></span>
</div> </div>
</div> </div>
<a class="btn" data-bind="click: addOpenPgpKey"> <button class="btn" data-bind="click: addOpenPgpKey">
<i class="icon-list-add"></i> <i class="icon-list-add"></i>
&nbsp;&nbsp; &nbsp;&nbsp;
<span class="i18n" data-i18n="SETTINGS_OPEN_PGP/BUTTON_ADD_OPEN_PGP_KEY"></span> <span class="i18n" data-i18n="SETTINGS_OPEN_PGP/BUTTON_ADD_OPEN_PGP_KEY"></span>
</a> </button>
<!-- &nbsp;&nbsp; &nbsp;&nbsp;
<a class="btn" data-bind="click: generateOpenPgpKey"> <div style="display: inline-block" data-tooltip-join="left" data-bind="tooltip: isHttps ? '' : 'SETTINGS_OPEN_PGP/GENERATE_ONLY_HTTPS'">
<button class="btn" data-bind="click: generateOpenPgpKey, disable: !isHttps">
<i class="icon-key"></i> <i class="icon-key"></i>
&nbsp;&nbsp; &nbsp;&nbsp;
<span class="i18n" data-i18n="SETTINGS_OPEN_PGP/BUTTON_GENERATE_OPEN_PGP_KEYS"></span> <span class="i18n" data-i18n="SETTINGS_OPEN_PGP/BUTTON_GENERATE_OPEN_PGP_KEYS"></span>
</a>--> </button>
</div>
<br /> <br />
<br /> <br />
<br /> <br />

View file

@ -14,13 +14,15 @@
<br /> <br />
<br /> <br />
<br /> <br />
<div class="templates-list-wrp">
<div class="templates-list-top-padding"></div>
<table class="table table-hover list-table templates-list" data-bind="i18nUpdate: templates"> <table class="table table-hover list-table templates-list" data-bind="i18nUpdate: templates">
<colgroup> <colgroup>
<col /> <col />
<col style="width: 150px" /> <col style="width: 150px" />
<col style="width: 1%" /> <col style="width: 1%" />
</colgroup> </colgroup>
<tbody data-bind="sortable: {data: templates, options: scrollableOptions()}"> <tbody data-bind="sortable: {data: templates, options: scrollableOptions('.templates-list-wrp')}">
<tr class="template-item"> <tr class="template-item">
<td class="e-action"> <td class="e-action">
<span class="template-img icon-user"></span> <span class="template-img icon-user"></span>
@ -41,4 +43,6 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div>
</div>
</div> </div>

View file

@ -70,7 +70,7 @@ Options -Indexes
define('APP_DATA_FOLDER_PATH_UNIX', str_replace('\\', '/', APP_DATA_FOLDER_PATH)); define('APP_DATA_FOLDER_PATH_UNIX', str_replace('\\', '/', APP_DATA_FOLDER_PATH));
$sSalt = @file_get_contents(APP_DATA_FOLDER_PATH.'SALT.php'); $sSalt = @file_get_contents(APP_DATA_FOLDER_PATH.'SALT.php');
$sData = @file_get_contents(APP_DATA_FOLDER_PATH.'DATA.php'); $sData = file_exists(APP_DATA_FOLDER_PATH.'DATA.php') ? @file_get_contents(APP_DATA_FOLDER_PATH.'DATA.php') : '';
$sInstalled = @file_get_contents(APP_DATA_FOLDER_PATH.'INSTALLED'); $sInstalled = @file_get_contents(APP_DATA_FOLDER_PATH.'INSTALLED');
// installation checking data folder // installation checking data folder
@ -129,8 +129,6 @@ Options -Indexes
unset($sCheckName, $sCheckFilePath, $sCheckFolder, $sTest); unset($sCheckName, $sCheckFilePath, $sCheckFolder, $sTest);
} }
if (false === $sSalt || false === $sData)
{
if (false === $sSalt) if (false === $sSalt)
{ {
// random salt // random salt
@ -142,16 +140,9 @@ Options -Indexes
@file_put_contents(APP_DATA_FOLDER_PATH.'SALT.php', $sSalt); @file_put_contents(APP_DATA_FOLDER_PATH.'SALT.php', $sSalt);
} }
if (false === $sData)
{
// random data folder name
$sData = '<'.'?php //'.md5(microtime(true).rand(1000, 9999));
@file_put_contents(APP_DATA_FOLDER_PATH.'DATA.php', $sData);
}
}
define('APP_SALT', md5($sSalt.APP_PRIVATE_DATA_NAME.$sSalt)); define('APP_SALT', md5($sSalt.APP_PRIVATE_DATA_NAME.$sSalt));
define('APP_PRIVATE_DATA', APP_DATA_FOLDER_PATH.'_data_'.md5($sData).'/'.APP_PRIVATE_DATA_NAME.'/'); define('APP_PRIVATE_DATA', APP_DATA_FOLDER_PATH.'_data_'.($sData ? md5($sData) : '').'/'.APP_PRIVATE_DATA_NAME.'/');
define('APP_PLUGINS_PATH', APP_PRIVATE_DATA.'plugins/'); define('APP_PLUGINS_PATH', APP_PRIVATE_DATA.'plugins/');
if (APP_VERSION !== $sInstalled || (APP_MULTIPLY && !@is_dir(APP_PRIVATE_DATA))) if (APP_VERSION !== $sInstalled || (APP_MULTIPLY && !@is_dir(APP_PRIVATE_DATA)))

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Sign"
BUTTON_ENCRYPT = "Encrypt" BUTTON_ENCRYPT = "Encrypt"
BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt" BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "Двустъпков тест за удостоверяване" TITLE_TEST_CODE = "Двустъпков тест за удостоверяване"
LABEL_CODE = "Код" LABEL_CODE = "Код"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Generate OpenPGP Keys"
TITLE_PRIVATE = "Private" TITLE_PRIVATE = "Private"
TITLE_PUBLIC = "Public" TITLE_PUBLIC = "Public"
DELETING_ASK = "Are you sure?" DELETING_ASK = "Are you sure?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help" LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help"

View file

@ -319,6 +319,12 @@ BUTTON_SIGN = "Podepsat"
BUTTON_ENCRYPT = "Šifrovat" BUTTON_ENCRYPT = "Šifrovat"
BUTTON_SIGN_AND_ENCRYPT = "Podepsat a šifrovat" BUTTON_SIGN_AND_ENCRYPT = "Podepsat a šifrovat"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "Dvoufázové ověření" TITLE_TEST_CODE = "Dvoufázové ověření"
LABEL_CODE = "Kód" LABEL_CODE = "Kód"
@ -600,6 +606,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Generovat OpenPGP Klíče"
TITLE_PRIVATE = "Soukromý" TITLE_PRIVATE = "Soukromý"
TITLE_PUBLIC = "Veřejný" TITLE_PUBLIC = "Veřejný"
DELETING_ASK = "Opravdu to chcete?" DELETING_ASK = "Opravdu to chcete?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Klávesové zkratky" LEGEND_SHORTCUTS_HELP = "Klávesové zkratky"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Unterschreiben"
BUTTON_ENCRYPT = "Verschlüsseln" BUTTON_ENCRYPT = "Verschlüsseln"
BUTTON_SIGN_AND_ENCRYPT = "Unterschreiben und verschlüsseln" BUTTON_SIGN_AND_ENCRYPT = "Unterschreiben und verschlüsseln"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "Zwei-Faktor-Authentifizierung" TITLE_TEST_CODE = "Zwei-Faktor-Authentifizierung"
LABEL_CODE = "Code" LABEL_CODE = "Code"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "OpenPGP-Schlüssel generieren"
TITLE_PRIVATE = "Privat" TITLE_PRIVATE = "Privat"
TITLE_PUBLIC = "Öffentlich" TITLE_PUBLIC = "Öffentlich"
DELETING_ASK = "Sind Sie sicher?" DELETING_ASK = "Sind Sie sicher?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Tastaturkürzel-Hilfe" LEGEND_SHORTCUTS_HELP = "Tastaturkürzel-Hilfe"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Sign"
BUTTON_ENCRYPT = "Encrypt" BUTTON_ENCRYPT = "Encrypt"
BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt" BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "2-Step verification test" TITLE_TEST_CODE = "2-Step verification test"
LABEL_CODE = "Code" LABEL_CODE = "Code"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Generate OpenPGP Keys"
TITLE_PRIVATE = "Private" TITLE_PRIVATE = "Private"
TITLE_PUBLIC = "Public" TITLE_PUBLIC = "Public"
DELETING_ASK = "Are you sure?" DELETING_ASK = "Are you sure?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help" LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help"

View file

@ -607,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Generate OpenPGP Keys"
TITLE_PRIVATE = "Private" TITLE_PRIVATE = "Private"
TITLE_PUBLIC = "Public" TITLE_PUBLIC = "Public"
DELETING_ASK = "Are you sure?" DELETING_ASK = "Are you sure?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help" LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Firmar"
BUTTON_ENCRYPT = "Encriptar" BUTTON_ENCRYPT = "Encriptar"
BUTTON_SIGN_AND_ENCRYPT = "Firmar and encriptar" BUTTON_SIGN_AND_ENCRYPT = "Firmar and encriptar"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "Prueba de verificación de 2 pasos" TITLE_TEST_CODE = "Prueba de verificación de 2 pasos"
LABEL_CODE = "Código" LABEL_CODE = "Código"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Generar llaves OpenPGP"
TITLE_PRIVATE = "Privado" TITLE_PRIVATE = "Privado"
TITLE_PUBLIC = "Público" TITLE_PUBLIC = "Público"
DELETING_ASK = "¿Está usted seguro?" DELETING_ASK = "¿Está usted seguro?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Ayuda de atajos de teclado" LEGEND_SHORTCUTS_HELP = "Ayuda de atajos de teclado"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Signer"
BUTTON_ENCRYPT = "Chiffrer" BUTTON_ENCRYPT = "Chiffrer"
BUTTON_SIGN_AND_ENCRYPT = "Signer et chiffrer" BUTTON_SIGN_AND_ENCRYPT = "Signer et chiffrer"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "Test d'authentification en deux étapes" TITLE_TEST_CODE = "Test d'authentification en deux étapes"
LABEL_CODE = "Code" LABEL_CODE = "Code"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Générer les clefs OpenPGP"
TITLE_PRIVATE = "Privé" TITLE_PRIVATE = "Privé"
TITLE_PUBLIC = "Public" TITLE_PUBLIC = "Public"
DELETING_ASK = "Êtes-vous sûr ?" DELETING_ASK = "Êtes-vous sûr ?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Aide pour les raccourcis clavier" LEGEND_SHORTCUTS_HELP = "Aide pour les raccourcis clavier"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Aláírás"
BUTTON_ENCRYPT = "Titkosítás" BUTTON_ENCRYPT = "Titkosítás"
BUTTON_SIGN_AND_ENCRYPT = "Aláírás és titkosítás" BUTTON_SIGN_AND_ENCRYPT = "Aláírás és titkosítás"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "2-lépés hitelesítés teszt" TITLE_TEST_CODE = "2-lépés hitelesítés teszt"
LABEL_CODE = "Kód" LABEL_CODE = "Kód"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "OpenPGP kulcs generálás"
TITLE_PRIVATE = "Private" TITLE_PRIVATE = "Private"
TITLE_PUBLIC = "Public" TITLE_PUBLIC = "Public"
DELETING_ASK = "Are you sure?" DELETING_ASK = "Are you sure?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help" LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Sign"
BUTTON_ENCRYPT = "Encrypt" BUTTON_ENCRYPT = "Encrypt"
BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt" BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "2-Step verification test" TITLE_TEST_CODE = "2-Step verification test"
LABEL_CODE = "Code" LABEL_CODE = "Code"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Generate OpenPGP Keys"
TITLE_PRIVATE = "Private" TITLE_PRIVATE = "Private"
TITLE_PUBLIC = "Public" TITLE_PUBLIC = "Public"
DELETING_ASK = "Are you sure?" DELETING_ASK = "Are you sure?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help" LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Firma"
BUTTON_ENCRYPT = "Cifra" BUTTON_ENCRYPT = "Cifra"
BUTTON_SIGN_AND_ENCRYPT = "Firma e cifra" BUTTON_SIGN_AND_ENCRYPT = "Firma e cifra"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "Verifica a 2 fattori" TITLE_TEST_CODE = "Verifica a 2 fattori"
LABEL_CODE = "Codice" LABEL_CODE = "Codice"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Genera chiave OpenPGP"
TITLE_PRIVATE = "Privata" TITLE_PRIVATE = "Privata"
TITLE_PUBLIC = "Pubblica" TITLE_PUBLIC = "Pubblica"
DELETING_ASK = "Sei sicuro?" DELETING_ASK = "Sei sicuro?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Aiuto sulle scorciatoie da tastiera" LEGEND_SHORTCUTS_HELP = "Aiuto sulle scorciatoie da tastiera"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Sign"
BUTTON_ENCRYPT = "Encrypt" BUTTON_ENCRYPT = "Encrypt"
BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt" BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "2-Step verification test" TITLE_TEST_CODE = "2-Step verification test"
LABEL_CODE = "Code" LABEL_CODE = "Code"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Generate OpenPGP Keys"
TITLE_PRIVATE = "Private" TITLE_PRIVATE = "Private"
TITLE_PUBLIC = "Public" TITLE_PUBLIC = "Public"
DELETING_ASK = "Are you sure?" DELETING_ASK = "Are you sure?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help" LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Sign"
BUTTON_ENCRYPT = "Encrypt" BUTTON_ENCRYPT = "Encrypt"
BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt" BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "2-Step verification test" TITLE_TEST_CODE = "2-Step verification test"
LABEL_CODE = "Code" LABEL_CODE = "Code"
@ -598,6 +604,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Generate OpenPGP Keys"
TITLE_PRIVATE = "Private" TITLE_PRIVATE = "Private"
TITLE_PUBLIC = "Public" TITLE_PUBLIC = "Public"
DELETING_ASK = "Are you sure?" DELETING_ASK = "Are you sure?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help" LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Pasirašyti"
BUTTON_ENCRYPT = "Šifruoti" BUTTON_ENCRYPT = "Šifruoti"
BUTTON_SIGN_AND_ENCRYPT = "Pasirašyti ir šifruoti" BUTTON_SIGN_AND_ENCRYPT = "Pasirašyti ir šifruoti"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "2-jų žingsnių patikrinimo bandymas" TITLE_TEST_CODE = "2-jų žingsnių patikrinimo bandymas"
LABEL_CODE = "Kodas" LABEL_CODE = "Kodas"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Sukurti OpenPGP raktus"
TITLE_PRIVATE = "Privatus" TITLE_PRIVATE = "Privatus"
TITLE_PUBLIC = "Viešas" TITLE_PUBLIC = "Viešas"
DELETING_ASK = "Jūs įsitikinę?" DELETING_ASK = "Jūs įsitikinę?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Sparčiųjų klavišų pagalba" LEGEND_SHORTCUTS_HELP = "Sparčiųjų klavišų pagalba"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Sign"
BUTTON_ENCRYPT = "Encrypt" BUTTON_ENCRYPT = "Encrypt"
BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt" BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "2-Step verification test" TITLE_TEST_CODE = "2-Step verification test"
LABEL_CODE = "Code" LABEL_CODE = "Code"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Generate OpenPGP Keys"
TITLE_PRIVATE = "Private" TITLE_PRIVATE = "Private"
TITLE_PUBLIC = "Public" TITLE_PUBLIC = "Public"
DELETING_ASK = "Are you sure?" DELETING_ASK = "Are you sure?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help" LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Ondertekenen"
BUTTON_ENCRYPT = "Versleutelen" BUTTON_ENCRYPT = "Versleutelen"
BUTTON_SIGN_AND_ENCRYPT = "Ondertekenen en versleutelen" BUTTON_SIGN_AND_ENCRYPT = "Ondertekenen en versleutelen"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "2-Stap verificatie test" TITLE_TEST_CODE = "2-Stap verificatie test"
LABEL_CODE = "Code" LABEL_CODE = "Code"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Genereer OpenPGP sleutels"
TITLE_PRIVATE = "Privé sleutel" TITLE_PRIVATE = "Privé sleutel"
TITLE_PUBLIC = "Publieke sleutel" TITLE_PUBLIC = "Publieke sleutel"
DELETING_ASK = "Weet u het zeker?" DELETING_ASK = "Weet u het zeker?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Hulp bij toetsenbord sneltoetsen" LEGEND_SHORTCUTS_HELP = "Hulp bij toetsenbord sneltoetsen"

View file

@ -319,6 +319,12 @@ BUTTON_SIGN = "Signer"
BUTTON_ENCRYPT = "Krypter" BUTTON_ENCRYPT = "Krypter"
BUTTON_SIGN_AND_ENCRYPT = "Signer og krypter" BUTTON_SIGN_AND_ENCRYPT = "Signer og krypter"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "2-stegs verifiseringstest" TITLE_TEST_CODE = "2-stegs verifiseringstest"
LABEL_CODE = "Kode" LABEL_CODE = "Kode"
@ -600,6 +606,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Generer OpenPGP-nøkler"
TITLE_PRIVATE = "Privat" TITLE_PRIVATE = "Privat"
TITLE_PUBLIC = "Offentlig" TITLE_PUBLIC = "Offentlig"
DELETING_ASK = "Er du sikker?" DELETING_ASK = "Er du sikker?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Tastatursnarveier" LEGEND_SHORTCUTS_HELP = "Tastatursnarveier"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Podpisz"
BUTTON_ENCRYPT = "Szyfruj" BUTTON_ENCRYPT = "Szyfruj"
BUTTON_SIGN_AND_ENCRYPT = "Podpisz i szyfruj" BUTTON_SIGN_AND_ENCRYPT = "Podpisz i szyfruj"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "Test autoryzacji dwuskładnikowej" TITLE_TEST_CODE = "Test autoryzacji dwuskładnikowej"
LABEL_CODE = "Kod" LABEL_CODE = "Kod"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Generuj klucz OpenPGP"
TITLE_PRIVATE = "Prywatny" TITLE_PRIVATE = "Prywatny"
TITLE_PUBLIC = "Publiczny" TITLE_PUBLIC = "Publiczny"
DELETING_ASK = "Czy na pewno chcesz usunąć?" DELETING_ASK = "Czy na pewno chcesz usunąć?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Skróty klawiaturowe" LEGEND_SHORTCUTS_HELP = "Skróty klawiaturowe"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Assinar"
BUTTON_ENCRYPT = "Criptografar" BUTTON_ENCRYPT = "Criptografar"
BUTTON_SIGN_AND_ENCRYPT = "Assinar e criptografar" BUTTON_SIGN_AND_ENCRYPT = "Assinar e criptografar"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "Testar verificação de duas etapas" TITLE_TEST_CODE = "Testar verificação de duas etapas"
LABEL_CODE = "Código" LABEL_CODE = "Código"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Gerar chave OpenPGP"
TITLE_PRIVATE = "Privado" TITLE_PRIVATE = "Privado"
TITLE_PUBLIC = "Público" TITLE_PUBLIC = "Público"
DELETING_ASK = "Você tem certeza?" DELETING_ASK = "Você tem certeza?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Ajuda com os atalhos de teclado" LEGEND_SHORTCUTS_HELP = "Ajuda com os atalhos de teclado"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Assinar"
BUTTON_ENCRYPT = "Encriptar" BUTTON_ENCRYPT = "Encriptar"
BUTTON_SIGN_AND_ENCRYPT = "Assinar e encriptar" BUTTON_SIGN_AND_ENCRYPT = "Assinar e encriptar"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "Teste de verificação em 2-Etapas" TITLE_TEST_CODE = "Teste de verificação em 2-Etapas"
LABEL_CODE = "Código" LABEL_CODE = "Código"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Gerar chaves OpenPGP"
TITLE_PRIVATE = "Privada" TITLE_PRIVATE = "Privada"
TITLE_PUBLIC = "Pública" TITLE_PUBLIC = "Pública"
DELETING_ASK = "Tem a certeza?" DELETING_ASK = "Tem a certeza?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Ajuda para atalhos de teclado" LEGEND_SHORTCUTS_HELP = "Ajuda para atalhos de teclado"

View file

@ -319,6 +319,12 @@ BUTTON_SIGN = "Sign"
BUTTON_ENCRYPT = "Encrypt" BUTTON_ENCRYPT = "Encrypt"
BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt" BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "2-Step verification test" TITLE_TEST_CODE = "2-Step verification test"
LABEL_CODE = "Code" LABEL_CODE = "Code"
@ -600,6 +606,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Generate OpenPGP Keys"
TITLE_PRIVATE = "Private" TITLE_PRIVATE = "Private"
TITLE_PUBLIC = "Public" TITLE_PUBLIC = "Public"
DELETING_ASK = "Are you sure?" DELETING_ASK = "Are you sure?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help" LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Подпись"
BUTTON_ENCRYPT = "Шифрование" BUTTON_ENCRYPT = "Шифрование"
BUTTON_SIGN_AND_ENCRYPT = "Подпись и шифрование" BUTTON_SIGN_AND_ENCRYPT = "Подпись и шифрование"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "Тест двухфакторной верификации" TITLE_TEST_CODE = "Тест двухфакторной верификации"
LABEL_CODE = "Код" LABEL_CODE = "Код"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Новый OpenPGP ключ"
TITLE_PRIVATE = "Приватный" TITLE_PRIVATE = "Приватный"
TITLE_PUBLIC = "Публичный" TITLE_PUBLIC = "Публичный"
DELETING_ASK = "Точно?" DELETING_ASK = "Точно?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Сочетания клавиш" LEGEND_SHORTCUTS_HELP = "Сочетания клавиш"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Sign"
BUTTON_ENCRYPT = "Encrypt" BUTTON_ENCRYPT = "Encrypt"
BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt" BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "2-Step verification test" TITLE_TEST_CODE = "2-Step verification test"
LABEL_CODE = "Code" LABEL_CODE = "Code"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Generate OpenPGP Keys"
TITLE_PRIVATE = "Private" TITLE_PRIVATE = "Private"
TITLE_PUBLIC = "Public" TITLE_PUBLIC = "Public"
DELETING_ASK = "Are you sure?" DELETING_ASK = "Are you sure?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help" LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Singera"
BUTTON_ENCRYPT = "Kryptera" BUTTON_ENCRYPT = "Kryptera"
BUTTON_SIGN_AND_ENCRYPT = "Signera och kryptera" BUTTON_SIGN_AND_ENCRYPT = "Signera och kryptera"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "2-Stegs verifikations test" TITLE_TEST_CODE = "2-Stegs verifikations test"
LABEL_CODE = "Kod" LABEL_CODE = "Kod"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Skapa OpenPGP nycklar"
TITLE_PRIVATE = "Privat" TITLE_PRIVATE = "Privat"
TITLE_PUBLIC = "Publik" TITLE_PUBLIC = "Publik"
DELETING_ASK = "Är du säker?" DELETING_ASK = "Är du säker?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Tangentbordsgenvägar hjälp" LEGEND_SHORTCUTS_HELP = "Tangentbordsgenvägar hjälp"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Giriş Yap"
BUTTON_ENCRYPT = "Şifrele" BUTTON_ENCRYPT = "Şifrele"
BUTTON_SIGN_AND_ENCRYPT = "Giriş Yap and şifrele" BUTTON_SIGN_AND_ENCRYPT = "Giriş Yap and şifrele"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "2-Basamaklı doğrulama testi" TITLE_TEST_CODE = "2-Basamaklı doğrulama testi"
LABEL_CODE = "Kod" LABEL_CODE = "Kod"
@ -599,6 +605,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "OpenPGP Key Oluştur"
TITLE_PRIVATE = "Private" TITLE_PRIVATE = "Private"
TITLE_PUBLIC = "Public" TITLE_PUBLIC = "Public"
DELETING_ASK = "Eminmisiniz?" DELETING_ASK = "Eminmisiniz?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Klavye kısayolları yardım" LEGEND_SHORTCUTS_HELP = "Klavye kısayolları yardım"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Підпис"
BUTTON_ENCRYPT = "Шифрування" BUTTON_ENCRYPT = "Шифрування"
BUTTON_SIGN_AND_ENCRYPT = "Підпис и шифрування" BUTTON_SIGN_AND_ENCRYPT = "Підпис и шифрування"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "Тест двофакторної верифікації" TITLE_TEST_CODE = "Тест двофакторної верифікації"
LABEL_CODE = "Код" LABEL_CODE = "Код"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "Новий OpenPGP ключ"
TITLE_PRIVATE = "Приватний" TITLE_PRIVATE = "Приватний"
TITLE_PUBLIC = "Публічний" TITLE_PUBLIC = "Публічний"
DELETING_ASK = "Впевнені?" DELETING_ASK = "Впевнені?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Сполучення клавіш" LEGEND_SHORTCUTS_HELP = "Сполучення клавіш"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Sign"
BUTTON_ENCRYPT = "Encrypt" BUTTON_ENCRYPT = "Encrypt"
BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt" BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "两步验证测试" TITLE_TEST_CODE = "两步验证测试"
LABEL_CODE = "代码" LABEL_CODE = "代码"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "生成 OpenPGP 密匙"
TITLE_PRIVATE = "私有" TITLE_PRIVATE = "私有"
TITLE_PUBLIC = "公开" TITLE_PUBLIC = "公开"
DELETING_ASK = "你确定吗?" DELETING_ASK = "你确定吗?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help" LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help"

View file

@ -320,6 +320,12 @@ BUTTON_SIGN = "Sign"
BUTTON_ENCRYPT = "Encrypt" BUTTON_ENCRYPT = "Encrypt"
BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt" BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt"
[POPUPS_MESSAGE_OPEN_PGP]
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
LABEL_KEY = "Private Key"
LABEL_PASSWORD = "Password"
BUTTON_DECRYPT = "Decrypt"
[POPUPS_TWO_FACTOR_TEST] [POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "兩步驗證測試" TITLE_TEST_CODE = "兩步驗證測試"
LABEL_CODE = "代碼" LABEL_CODE = "代碼"
@ -601,6 +607,7 @@ BUTTON_GENERATE_OPEN_PGP_KEYS = "生成 OpenPGP 密鑰"
TITLE_PRIVATE = "私有" TITLE_PRIVATE = "私有"
TITLE_PUBLIC = "公開" TITLE_PUBLIC = "公開"
DELETING_ASK = "你確定嗎?" DELETING_ASK = "你確定嗎?"
GENERATE_ONLY_HTTPS = "HTTPS only"
[SHORTCUTS_HELP] [SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help" LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help"

View file

@ -0,0 +1 @@
/*! OpenPGPjs.org this is LGPL licensed code, see LICENSE/our website for more information.- v0.10.1 - 2015-02-13 */!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(){function a(a){window.openpgp.crypto.random.randomBuffer.size<d&&postMessage({event:"request-seed"}),postMessage(a)}function b(a){var b=window.openpgp.packet.List.fromStructuredClone(a);return new window.openpgp.key.Key(b)}function c(a){var b=window.openpgp.packet.List.fromStructuredClone(a);return new window.openpgp.message.Message(b)}window={},Function.prototype.bind||(Function.prototype.bind=function(a){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d&&a?this:a,b.concat(Array.prototype.slice.call(arguments)))};return d.prototype=this.prototype,e.prototype=new d,e}),importScripts("openpgp.min.js");var d=4e4,e=6e4;window.openpgp.crypto.random.randomBuffer.init(e),self.onmessage=function(d){var e=null,f=null,g=d.data,h=!1;switch(g.event){case"configure":for(var i in g.config)window.openpgp.config[i]=g.config[i];break;case"seed-random":g.buf instanceof Uint8Array||(g.buf=new Uint8Array(g.buf)),window.openpgp.crypto.random.randomBuffer.set(g.buf);break;case"encrypt-message":g.keys.length||(g.keys=[g.keys]),g.keys=g.keys.map(b),window.openpgp.encryptMessage(g.keys,g.text).then(function(b){a({event:"method-return",data:b})})["catch"](function(b){a({event:"method-return",err:b.message})});break;case"sign-and-encrypt-message":g.publicKeys.length||(g.publicKeys=[g.publicKeys]),g.publicKeys=g.publicKeys.map(b),g.privateKey=b(g.privateKey),window.openpgp.signAndEncryptMessage(g.publicKeys,g.privateKey,g.text).then(function(b){a({event:"method-return",data:b})})["catch"](function(b){a({event:"method-return",err:b.message})});break;case"decrypt-message":g.privateKey=b(g.privateKey),g.message=c(g.message.packets),window.openpgp.decryptMessage(g.privateKey,g.message).then(function(b){a({event:"method-return",data:b})})["catch"](function(b){a({event:"method-return",err:b.message})});break;case"decrypt-and-verify-message":g.privateKey=b(g.privateKey),g.publicKeys.length||(g.publicKeys=[g.publicKeys]),g.publicKeys=g.publicKeys.map(b),g.message=c(g.message.packets),window.openpgp.decryptAndVerifyMessage(g.privateKey,g.publicKeys,g.message).then(function(b){a({event:"method-return",data:b})})["catch"](function(b){a({event:"method-return",err:b.message})});break;case"sign-clear-message":g.privateKeys=g.privateKeys.map(b),window.openpgp.signClearMessage(g.privateKeys,g.text).then(function(b){a({event:"method-return",data:b})})["catch"](function(b){a({event:"method-return",err:b.message})});break;case"verify-clear-signed-message":g.publicKeys.length||(g.publicKeys=[g.publicKeys]),g.publicKeys=g.publicKeys.map(b);var j=window.openpgp.packet.List.fromStructuredClone(g.message.packets);g.message=new window.openpgp.cleartext.CleartextMessage(g.message.text,j),window.openpgp.verifyClearSignedMessage(g.publicKeys,g.message).then(function(b){a({event:"method-return",data:b})})["catch"](function(b){a({event:"method-return",err:b.message})});break;case"generate-key-pair":window.openpgp.generateKeyPair(g.options).then(function(b){b.key=b.key.toPacketlist(),a({event:"method-return",data:b})})["catch"](function(b){a({event:"method-return",err:b.message})});break;case"decrypt-key":try{g.privateKey=b(g.privateKey),h=g.privateKey.decrypt(g.password),h?e=g.privateKey.toPacketlist():f="Wrong password"}catch(k){f=k.message}a({event:"method-return",data:e,err:f});break;case"decrypt-key-packet":try{g.privateKey=b(g.privateKey),g.keyIds=g.keyIds.map(window.openpgp.Keyid.fromClone),h=g.privateKey.decryptKeyPacket(g.keyIds,g.password),h?e=g.privateKey.toPacketlist():f="Wrong password"}catch(k){f=k.message}a({event:"method-return",data:e,err:f});break;default:throw new Error("Unknown Worker Event.")}}},{}]},{},[1]);