Compare commits
1 Commits
feature-ch
...
drag-n-dro
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e4d8e8a152 |
@@ -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",
|
||||||
|
|||||||
13
src/index.js
13
src/index.js
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user