mirror of
https://github.com/PrivateBin/PrivateBin.git
synced 2024-03-22 13:10:41 +08:00
added instantburnafterreading option to address #174
This commit is contained in:
parent
ab2e789aee
commit
f54036976a
|
@ -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"
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user