Merge branch 'master' into burnafterreading-fix

pull/216/head
rugk 6 years ago
commit 626b4450e3
No known key found for this signature in database
GPG Key ID: 05D40A636AFAB34D

4
.gitignore vendored

@ -1,7 +1,9 @@
# Ignore server files for safety # Ignore server files for safety
.htaccess .htaccess
.htpasswd .htpasswd
cfg/conf.php cfg/*
!cfg/conf.sample.php
!cfg/.htaccess
# Ignore data/ # Ignore data/
data/ data/

@ -2072,10 +2072,34 @@ jQuery.PrivateBin = (function($, sjcl, Base64, RawDeflate) {
$attachmentLink.off('click'); $attachmentLink.off('click');
$attachmentPreview.html(''); $attachmentPreview.html('');
AttachmentViewer.removeAttachmentData();
};
/**
* removes the attachment data
*
* This removes the data, which would be uploaded otherwise.
*
* @name AttachmentViewer.removeAttachmentData
* @function
*/
me.removeAttachmentData = function()
{
file = undefined; file = undefined;
attachmentData = undefined; attachmentData = undefined;
}; };
/**
* Cleares the drag & drop data.
*
* @name AttachmentViewer.clearDragAndDrop
* @function
*/
me.clearDragAndDrop = function()
{
$dragAndDropFileName.text('');
};
/** /**
* hides the attachment * hides the attachment
* *
@ -2105,7 +2129,7 @@ jQuery.PrivateBin = (function($, sjcl, Base64, RawDeflate) {
}; };
/** /**
* checks if there is an attachment * checks if there is an attachment displayed
* *
* @name AttachmentViewer.hasAttachment * @name AttachmentViewer.hasAttachment
* @function * @function
@ -2120,7 +2144,9 @@ jQuery.PrivateBin = (function($, sjcl, Base64, RawDeflate) {
}; };
/** /**
* checks if there is attachment data available * checks if there is attachment data (for preview!) available
*
* It returns true, when there is data that needs to be encrypted.
* *
* @name AttachmentViewer.hasAttachmentData * @name AttachmentViewer.hasAttachmentData
* @function * @function
@ -2171,11 +2197,12 @@ jQuery.PrivateBin = (function($, sjcl, Base64, RawDeflate) {
* read file data as dataURL using the FileReader API * read file data as dataURL using the FileReader API
* *
* @name AttachmentViewer.readFileData * @name AttachmentViewer.readFileData
* @private
* @function * @function
* @param {object} loadedFile The loaded file. * @param {object} loadedFile The loaded file.
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/FileReader#readAsDataURL()} * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/FileReader#readAsDataURL()}
*/ */
me.readFileData = function (loadedFile) { function readFileData(loadedFile) {
if (typeof FileReader === 'undefined') { if (typeof FileReader === 'undefined') {
// revert loading status… // revert loading status…
me.hideAttachment(); me.hideAttachment();
@ -2189,6 +2216,7 @@ jQuery.PrivateBin = (function($, sjcl, Base64, RawDeflate) {
loadedFile = $fileInput[0].files[0]; loadedFile = $fileInput[0].files[0];
$dragAndDropFileName.text(''); $dragAndDropFileName.text('');
} else { } else {
// TODO: cannot set original $fileWrap here for security reasons…
$dragAndDropFileName.text(loadedFile.name); $dragAndDropFileName.text(loadedFile.name);
} }
@ -2204,7 +2232,7 @@ jQuery.PrivateBin = (function($, sjcl, Base64, RawDeflate) {
} }
}; };
fileReader.readAsDataURL(loadedFile); fileReader.readAsDataURL(loadedFile);
}; }
/** /**
* handle the preview of files that can either be an image, video, audio or pdf element * handle the preview of files that can either be an image, video, audio or pdf element
@ -2258,7 +2286,7 @@ jQuery.PrivateBin = (function($, sjcl, Base64, RawDeflate) {
// Firefox crashes with files that are about 1.5MB // Firefox crashes with files that are about 1.5MB
// The performance with 1MB files is bearable // The performance with 1MB files is bearable
if (data.length > 1398488) { if (data.length > 1398488) {
Alert.showError('File too large, to display a preview. Please download the attachment.'); Alert.showError('File too large, to display a preview. Please download the attachment.'); //TODO: is this error really neccessary?
return; return;
} }
@ -2282,9 +2310,10 @@ jQuery.PrivateBin = (function($, sjcl, Base64, RawDeflate) {
* attaches the file attachment drag & drop handler to the page * attaches the file attachment drag & drop handler to the page
* *
* @name AttachmentViewer.addDragDropHandler * @name AttachmentViewer.addDragDropHandler
* @private
* @function * @function
*/ */
me.addDragDropHandler = function () { function addDragDropHandler() {
if (typeof $fileInput === 'undefined' || $fileInput.length === 0) { if (typeof $fileInput === 'undefined' || $fileInput.length === 0) {
return; return;
} }
@ -2307,38 +2336,38 @@ jQuery.PrivateBin = (function($, sjcl, Base64, RawDeflate) {
//Only works in Chrome: //Only works in Chrome:
//fileInput[0].files = e.dataTransfer.files; //fileInput[0].files = e.dataTransfer.files;
me.readFileData(file); readFileData(file);
} }
}; };
$(document).on('drop', drop); $(document).on('drop', drop);
$(document).on('dragenter', ignoreDragDrop); $(document).on('dragenter', ignoreDragDrop);
$(document).on('dragover', ignoreDragDrop); $(document).on('dragover', ignoreDragDrop);
$fileInput.on("change", function () { $fileInput.on('change', function () {
me.readFileData(); readFileData();
}); });
}; }
/** /**
* attaches the clipboard attachment handler to the page * attaches the clipboard attachment handler to the page
* *
* @name AttachmentViewer.addClipboardEventHandler * @name AttachmentViewer.addClipboardEventHandler
* @private
* @function * @function
*/ */
me.addClipboardEventHandler = function () { function addClipboardEventHandler() {
$(document).on('paste', $(document).on('paste', function (event) {
function (event) { var items = (event.clipboardData || event.originalEvent.clipboardData).items;
var items = (event.clipboardData || event.originalEvent.clipboardData).items; for (var i in items) {
for (var i in items) { if (items.hasOwnProperty(i)) {
if (items.hasOwnProperty(i)) { var item = items[i];
var item = items[i]; if (item.kind === 'file') {
if (item.kind === 'file') { readFileData(item.getAsFile());
me.readFileData(item.getAsFile());
}
}
} }
}); }
}; }
});
}
/** /**
@ -2402,8 +2431,8 @@ jQuery.PrivateBin = (function($, sjcl, Base64, RawDeflate) {
$dragAndDropFileName = $('#dragAndDropFileName'); $dragAndDropFileName = $('#dragAndDropFileName');
$fileInput = $('#file'); $fileInput = $('#file');
me.addDragDropHandler(); addDragDropHandler();
me.addClipboardEventHandler(); addClipboardEventHandler();
} }
} }
@ -2906,8 +2935,13 @@ jQuery.PrivateBin = (function($, sjcl, Base64, RawDeflate) {
$fileWrap.removeClass('hidden'); $fileWrap.removeClass('hidden');
} }
// in any case, remove saved attachment data
AttachmentViewer.removeAttachmentData();
// hide UI for selected files
// our up-to-date jQuery can handle it :) // our up-to-date jQuery can handle it :)
$fileWrap.find('input').val(''); $fileWrap.find('input').val('');
AttachmentViewer.clearDragAndDrop();
// pevent '#' from appearing in the URL // pevent '#' from appearing in the URL
event.preventDefault(); event.preventDefault();
@ -3814,10 +3848,11 @@ jQuery.PrivateBin = (function($, sjcl, Base64, RawDeflate) {
// get data // get data
var plainText = Editor.getText(), var plainText = Editor.getText(),
format = PasteViewer.getFormat(), format = PasteViewer.getFormat(),
// the methods may return different values if no files are attached (null, undefined or false)
files = TopNav.getFileList() || AttachmentViewer.getFile() || AttachmentViewer.hasAttachment(); files = TopNav.getFileList() || AttachmentViewer.getFile() || AttachmentViewer.hasAttachment();
// do not send if there is no data // do not send if there is no data
if (plainText.length === 0 && files === null) { if (plainText.length === 0 && !files) {
// revert loading status… // revert loading status…
Alert.hideLoading(); Alert.hideLoading();
TopNav.showCreateButtons(); TopNav.showCreateButtons();

@ -75,7 +75,7 @@ if ($MARKDOWN):
<?php <?php
endif; endif;
?> ?>
<script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-d0gyNw98fc/n9wRYLmGo2aO6HHWxApHHmWazdu/JJBppBrev9jcKRXJBRs65LtTADUHY/Whe247xvIBDHe7EpQ==" crossorigin="anonymous"></script> <script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-lBUTJhcAMgpb2i75GGQfmlJ7V8uOj/um1SQDRXcsvL0zFV7lsuw5IItfbUJ2/XHX0CIr2b3LY4A8nAiFLwTtKA==" crossorigin="anonymous"></script>
<!--[if lt IE 10]> <!--[if lt IE 10]>
<style type="text/css">body {padding-left:60px;padding-right:60px;} #ienotice {display:block;} #oldienotice {display:block;}</style> <style type="text/css">body {padding-left:60px;padding-right:60px;} #ienotice {display:block;} #oldienotice {display:block;}</style>
<![endif]--> <![endif]-->

@ -54,7 +54,7 @@ if ($QRCODE):
<?php <?php
endif; endif;
?> ?>
<script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-d0gyNw98fc/n9wRYLmGo2aO6HHWxApHHmWazdu/JJBppBrev9jcKRXJBRs65LtTADUHY/Whe247xvIBDHe7EpQ==" crossorigin="anonymous"></script> <script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-lBUTJhcAMgpb2i75GGQfmlJ7V8uOj/um1SQDRXcsvL0zFV7lsuw5IItfbUJ2/XHX0CIr2b3LY4A8nAiFLwTtKA==" crossorigin="anonymous"></script>
<!--[if lt IE 10]> <!--[if lt IE 10]>
<style type="text/css">body {padding-left:60px;padding-right:60px;} #ienotice {display:block;} #oldienotice {display:block;}</style> <style type="text/css">body {padding-left:60px;padding-right:60px;} #ienotice {display:block;} #oldienotice {display:block;}</style>
<![endif]--> <![endif]-->

Loading…
Cancel
Save