1 Commits

Author SHA1 Message Date
Simon Vareille
e4d8e8a152 Drag'n Drop or choose ASCII-armored key file 2020-06-13 16:47:37 +02:00
4 changed files with 54 additions and 15 deletions

View File

@@ -21,7 +21,6 @@
"release:archive": "zip -rq release.zip package.json package-lock.json node_modules/ *.js src/ config/ locales/" "release:archive": "zip -rq release.zip package.json package-lock.json node_modules/ *.js src/ config/ locales/"
}, },
"dependencies": { "dependencies": {
"chroot": "1.0.10",
"co-body": "6.0.0", "co-body": "6.0.0",
"config": "3.2.2", "config": "3.2.2",
"koa": "2.7.0", "koa": "2.7.0",

View File

@@ -20,23 +20,12 @@
const log = require('winston'); const log = require('winston');
const config = require('config'); const config = require('config');
const init = require('./app'); const init = require('./app');
const chroot = require('chroot');
(async () => { (async () => {
try { try {
const app = await init(); const app = await init();
app.listen(config.server.port, "localhost"); app.listen(config.server.port, "localhost");
log.info('app', `Listening on http://localhost:${config.server.port}`, function(err) { log.info('app', `Listening on http://localhost:${config.server.port}`);
if (err) { throw err; }
try {
chroot('/var/empty', 'test');
console.log('changed root to "/var/empty" and user to "test"');
} catch(err) {
console.error('changing root or user failed', err);
process.exit(1);
}
});
} catch (err) { } catch (err) {
log.error('app', 'Initialization failed!', err); log.error('app', 'Initialization failed!', err);
} }

View File

@@ -49,5 +49,54 @@
$('#' + region + ' .alert-' + outcome + ' span').text(text); $('#' + region + ' .alert-' + outcome + ' span').text(text);
$('#' + region + ' .alert-' + outcome).removeClass('hidden'); $('#' + region + ' .alert-' + outcome).removeClass('hidden');
} }
$('#drop_zone').on('drop',
function(ev) {
// Prevent default behavior (Prevent file from being opened)
ev.stopPropagation();
ev.preventDefault();
$('#addKey .alert').addClass('hidden');
if(ev.originalEvent.dataTransfer.files[0].type != "text/plain") {
alert('addKey', 'danger', 'You must import an ascii-armored key file!');
return;
}
handleFiles(ev.originalEvent.dataTransfer.files);
});
$('#drop_zone').on('dragover',
function(ev) {
// Prevent default behavior (Prevent file from being opened)
ev.stopPropagation();
ev.preventDefault();
ev.originalEvent.dataTransfer.dropEffect = 'copy';
});
$('#drop_zone').on('dragenter',
function(ev) {
// Prevent default behavior (Prevent file from being opened)
ev.stopPropagation();
ev.preventDefault();
ev.originalEvent.dataTransfer.dropEffect = 'copy';
});
}(jQuery)); $('#fileSelect').click(function() {
$('#file-selector').click();
});
$('#file-selector').change(function() {
$('#addKey .alert').addClass('hidden');
handleFiles(this.files);
});
function handleFiles(files) {
if(files.length > 1) {
alert('addKey', 'danger', 'You must import a single file!');
return;
}
const file = files[0];
const reader = new FileReader();
reader.onload = function(){
$('#addKey textarea').val(reader.result);
}
reader.readAsText(file);
}
}(jQuery));

View File

@@ -24,7 +24,9 @@
<div class="progress-bar progress-bar-striped active" role="progressbar"></div> <div class="progress-bar progress-bar-striped active" role="progressbar"></div>
</div> </div>
<form action="/pks/add" method="post"> <form action="/pks/add" method="post">
<p><textarea class="form-control" name="keytext" rows="5" spellcheck="false" placeholder="Paste PGP PUBLIC KEY BLOCK here ..." required></textarea></p> <p><textarea id="drop_zone" class="form-control ui-droppable" name="keytext" rows="5" spellcheck="false" placeholder="Drag a single ascii-armored key file here or paste PGP PUBLIC KEY BLOCK here ..." required></textarea></p>
<input type="file" id="file-selector" accept="text/plain" style="display:none">
<p>Or <button type="button" id="fileSelect">select a file</button> </p>
<input class="btn btn-primary btn-lg" type="submit" value="Upload"> <input class="btn btn-primary btn-lg" type="submit" value="Upload">
</form> </form>
<hr> <hr>