Merge branch 'master' into js-unit-testing

This commit is contained in:
El RIDO 2017-05-22 22:38:49 +02:00
commit a30b31b315
No known key found for this signature in database
GPG Key ID: 0F5C940A6BD81F92
6 changed files with 43 additions and 2 deletions

View File

@ -3,7 +3,7 @@
## Active contributors ## Active contributors
Simon Rupf - current developer and maintainer Simon Rupf - current developer and maintainer
rugk - security review, doc improvment & various other stuff rugk - security review, doc improvment, JS refactoring & various other stuff
## Past contributions ## Past contributions

View File

@ -21,6 +21,10 @@ fileupload = false
; preselect the burn-after-reading feature, defaults to false ; preselect the burn-after-reading feature, defaults to false
burnafterreadingselected = false burnafterreadingselected = false
; delete a burn after reading paste immediatly after it is first accessed from
; the server and do not wait for a successful decryption
instantburnafterreading = false
; which display mode to preselect by default, defaults to "plaintext" ; which display mode to preselect by default, defaults to "plaintext"
; make sure the value exists in [formatter_options] ; make sure the value exists in [formatter_options]
defaultformatter = "plaintext" defaultformatter = "plaintext"

View File

@ -42,6 +42,7 @@ class Configuration
'password' => true, 'password' => true,
'fileupload' => false, 'fileupload' => false,
'burnafterreadingselected' => false, 'burnafterreadingselected' => false,
'instantburnafterreading' => false,
'defaultformatter' => 'plaintext', 'defaultformatter' => 'plaintext',
'syntaxhighlightingtheme' => null, 'syntaxhighlightingtheme' => null,
'sizelimit' => 2097152, 'sizelimit' => 2097152,

View File

@ -48,6 +48,11 @@ class Paste extends AbstractModel
$data->meta->remaining_time = $data->meta->expire_date - time(); $data->meta->remaining_time = $data->meta->expire_date - time();
} }
// check if non-expired burn after reading paste needs to be deleted
if (property_exists($data->meta, 'burnafterreading') && $data->meta->burnafterreading && $this->_conf->getKey('instantburnafterreading')) {
$this->delete();
}
// set formatter for for the view. // set formatter for for the view.
if (!property_exists($data->meta, 'formatter')) { if (!property_exists($data->meta, 'formatter')) {
// support < 0.21 syntax highlighting // support < 0.21 syntax highlighting

View File

@ -822,6 +822,37 @@ class PrivateBinTest extends PHPUnit_Framework_TestCase
$content, $content,
'outputs data correctly' 'outputs data correctly'
); );
// by default it will be deleted after encryption by the JS
$this->assertTrue($this->_model->exists(Helper::getPasteId()), 'paste exists after reading');
}
/**
* @runInSeparateProcess
*/
public function testReadInstantBurn()
{
$this->reset();
$options = parse_ini_file(CONF, true);
$options['main']['instantburnafterreading'] = 1;
Helper::confBackup();
Helper::createIniFile(CONF, $options);
$burnPaste = Helper::getPaste(array('burnafterreading' => true));
$this->_model->create(Helper::getPasteId(), $burnPaste);
$_SERVER['QUERY_STRING'] = Helper::getPasteId();
ob_start();
new PrivateBin;
$content = ob_get_contents();
ob_end_clean();
unset($burnPaste['meta']['salt']);
$this->assertRegExp(
'#<div id="cipherdata"[^>]*>' .
preg_quote(htmlspecialchars(Helper::getPasteAsJson($burnPaste['meta']), ENT_NOQUOTES)) .
'</div>#',
$content,
'outputs data correctly'
);
// in this case the changed configuration deletes it instantly
$this->assertFalse($this->_model->exists(Helper::getPasteId()), 'paste exists after reading');
} }
/** /**

View File

@ -10,7 +10,7 @@ and their dependencies:
Example for Debian and Ubuntu: Example for Debian and Ubuntu:
```console ```console
$ sudo apt install phpunit php-gd php-sqlite php-xdebug $ sudo apt install phpunit php-gd php-sqlite3 php-xdebug
``` ```
To run the tests, change into the `tst` directory and run phpunit: To run the tests, change into the `tst` directory and run phpunit: