4 Commits

Author SHA1 Message Date
Simon Vareille
f6290a0921 Add french translation of email messages and add support for numbered translations 2020-06-17 18:04:24 +02:00
Simon Vareille
5c1ddb4e21 Do not display unverified uids as part of a key for hkp index and vindex output
This is not for security or privacy reasons, but to provide an accurate answer to a search request.
2020-06-14 18:03:24 +02:00
Simon Vareille
eaefa45ddb Using same jquery library 2020-06-14 16:57:46 +02:00
Simon Vareille
2747ddb8e8 Copy key to clipboard on lookup page 2020-06-14 16:42:54 +02:00
8 changed files with 76 additions and 5 deletions

View File

@@ -8,5 +8,5 @@
"verify_removal_text": "Hello {0},\n\nplease verify removal of your email address {1} from our key server ({2}) by clicking on the following link:\n\n{3}\n\nGreetings from the Mailvelope Team",
"removal_success": "Email address {0} removed from the key directory",
"check_signatures_subject": "Confirm new signatures",
"check_signatures_text": "Hello {0},\n\n{1} new signature(s) have been uploaded to your keys on our keyserver ({3}) ! Please select the ones you want to add by clicking on the following link:\n\n{2}\n\nGreetings from the Mailvelope Team"
"check_signatures_text": {"one":"Hello {0},\n\n{1} new signature has been uploaded to your keys on our keyserver ({3}) ! Please select it if you want to add it by clicking on the following link:\n\n{2}\n\nGreetings from the Mailvelope Team", "other": "Hello {0},\n\n{1} new signatures have been uploaded to your keys on our keyserver ({3}) ! Please select the ones you want to add by clicking on the following link:\n\n{2}\n\nGreetings from the Mailvelope Team"}
}

12
locales/fr.json Executable file
View File

@@ -0,0 +1,12 @@
{
"key_not_found": "Clef non trouvée",
"verify_key_subject": "Vérifiez votre adresse mail",
"verify_key_text": "Bonjour {0},\n\nVeuillez vérifier votre adresse mail {1} en cliquant sur le lien suivant :\n\n{2}\n\nAprès vérification de votre adresse mail, Votre clef publique sera disponible dans notre annuaire de clefs.\n\nVous trouverez plus d'infos sur {3}.\n\nBisous sur les tentacules !",
"verify_success_header": "Adresse mail {0} vérifiée avec succès",
"verify_success_link": "Votre clef publique OpenPGP est maintenant disponible à l'adresse suivante :",
"verify_removal_subject": "Demande de suppression de clef",
"verify_removal_text": "Bonjour {0},\n\nVeuillez confirmer la suppression de votre adresse mail ({1}) de notre serveur de clef ({2}) en cliquant sur le lien suivant :\n\n{3}\n\nBisous sur les tentacules !",
"removal_success": "L'adresse mail {0} a été supprimée du serveur",
"check_signatures_subject": "Confirmez de nouvelles signatures",
"check_signatures_text": {"one":"Bonjour {0},\n\nUne nouvelle signature a été ajoutée à votre clef sur notre serveur ({3}) ! Veuillez la sélectionner en cliquant sur le lien suivant si vous voulez la conserver :\n\n{2}\n\nBisous sur les tentacules !", "other": "Bonjour {0},\n\n{1} nouvelles signatures ont été ajoutées à votre clef sur notre serveur ({3}) ! Veuillez sélectionner celles que vous voulez conserver en cliquant sur le lien suivant :\n\n{2}\n\nBisous sur les tentacules !"}
}

View File

@@ -41,7 +41,8 @@ render(app, {
locales(app, {
defaultLocale: 'en',
dirs: [path.join(__dirname, '../../locales')],
localeAlias: {'de-DE': 'de', 'de-de': 'de', 'de-AT': 'de', 'de-at': 'de', 'de-CH': 'de', 'de-ch': 'de', 'de-LI': 'de', 'de-li': 'de'},
localeAlias: {'de-DE': 'de', 'de-de': 'de', 'de-AT': 'de', 'de-at': 'de', 'de-CH': 'de', 'de-ch': 'de', 'de-LI': 'de', 'de-li': 'de',
'fr-fr': 'fr', 'fr-FR': 'fr'},
writeCookie: false
});
@@ -51,6 +52,7 @@ let rest;
app.use(async (ctx, next) => {
ctx.state = ctx.state || {};
ctx.state.__ = ctx.__.bind(ctx);
ctx.state.__n = ctx.__n.bind(ctx);
await next();
});

View File

@@ -22,7 +22,7 @@ function checkNewSigs(ctx, {name, sigsNb, nonce, origin, keyId}) {
const link = `${util.url(origin)}/api/v1/key?op=checkSignatures&keyId=${keyId}&nonce=${nonce}`;
return {
subject: ctx.__('check_signatures_subject'),
text: ctx.__('check_signatures_text', [name, sigsNb, link, origin.host])
text: ctx.__n('check_signatures_text', sigsNb, [name, sigsNb, link, origin.host])
};
}

View File

@@ -136,7 +136,9 @@ class HKP {
ctx.body = `info:${VERSION}:${COUNT}\npub:${fp}:${algo}:${key.keySize}:${created}::\n`;
for (const uid of key.userIds) {
ctx.body += `uid:${encodeURIComponent(`${uid.name} <${uid.email}>`)}:::\n`;
if(uid.verified) {
ctx.body += `uid:${encodeURIComponent(`${uid.name} <${uid.email}>`)}:::\n`;
}
}
}
}

6
src/static/js/bootstrap-3.4.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

35
src/static/js/key-armored.js Executable file
View File

@@ -0,0 +1,35 @@
/* eslint-disable */
;(function($) {
'use strict';
$('#copy-button').tooltip({
trigger: 'manual',
placement: 'right',
});
function setTooltip(message) {
$('#copy-button').attr('data-original-title', message)
.tooltip('show');
}
function hideTooltip() {
setTimeout(function() {
$('#copy-button').tooltip('hide');
}, 1000);
}
$('#copy-button').click(function(e) {
const copyText = $('#publickey-block').text();
const textArea = document.createElement('textarea');
textArea.textContent = copyText;
document.body.append(textArea);
textArea.select();
document.execCommand("copy");
textArea.remove();
setTooltip('Key copied to clipboard!');
hideTooltip();
});
}(jQuery));

View File

@@ -1,3 +1,13 @@
<style type="text/css">
textarea {
position: absolute;
left: -100%;
}
}
</style>
<div class="container">
<div class="header clearfix">
@@ -14,10 +24,14 @@
<div class="row marketing">
<div class="col-lg-12">
<h4><%= query.email ? `Email: ${query.email}` : query.fingerprint ? `Fingerprint: ${query.fingerprint}` : `Key ID: ${query.keyId}` %></h4>
<pre><%= key.publicKeyArmored %></pre>
<button id="copy-button" class="btn btn-primary">Copy key to clipboard</button>
<pre id="publickey-block"><%= key.publicKeyArmored %></pre>
</div> <!-- /col-lg-12 -->
</div>
<%- include('footer') %>
</div> <!-- /container -->
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap-3.4.1.min.js"></script>
<script src="/js/key-armored.js"></script>