mirror of
https://github.com/PrivateBin/PrivateBin.git
synced 2025-09-21 05:04:37 -04:00
fixing nasty deletion bug from #15, included unit tests to trigger it
and reworked persistence classes to through exceptions rather to fail silently
This commit is contained in:
parent
d042bb41ba
commit
f775da3931
11 changed files with 334 additions and 134 deletions
|
@ -67,7 +67,7 @@ abstract class persistence
|
|||
protected static function _exists($filename)
|
||||
{
|
||||
self::_initialize();
|
||||
return is_file(self::$_path . '/' . $filename);
|
||||
return is_file(self::$_path . DIRECTORY_SEPARATOR . $filename);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -75,23 +75,29 @@ abstract class persistence
|
|||
*
|
||||
* @access protected
|
||||
* @static
|
||||
* @throws Exception
|
||||
* @return void
|
||||
*/
|
||||
protected static function _initialize()
|
||||
{
|
||||
// Create storage directory if it does not exist.
|
||||
if (!is_dir(self::$_path)) mkdir(self::$_path, 0705);
|
||||
if (!is_dir(self::$_path))
|
||||
if (!@mkdir(self::$_path))
|
||||
throw new Exception('unable to create directory ' . self::$_path, 10);
|
||||
|
||||
// Create .htaccess file if it does not exist.
|
||||
$file = self::$_path . '/.htaccess';
|
||||
$file = self::$_path . DIRECTORY_SEPARATOR . '.htaccess';
|
||||
if (!is_file($file))
|
||||
{
|
||||
file_put_contents(
|
||||
$writtenBytes = @file_put_contents(
|
||||
$file,
|
||||
'Allow from none' . PHP_EOL .
|
||||
'Deny from all'. PHP_EOL,
|
||||
LOCK_EX
|
||||
);
|
||||
if ($writtenBytes === false || $writtenBytes < 30) {
|
||||
throw new Exception('unable to write to file ' . $file, 11);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -102,14 +108,17 @@ abstract class persistence
|
|||
* @static
|
||||
* @param string $filename
|
||||
* @param string $data
|
||||
* @throws Exception
|
||||
* @return string
|
||||
*/
|
||||
protected static function _store($filename, $data)
|
||||
{
|
||||
self::_initialize();
|
||||
$file = self::$_path . '/' . $filename;
|
||||
file_put_contents($file, $data, LOCK_EX);
|
||||
chmod($file, 0705);
|
||||
$file = self::$_path . DIRECTORY_SEPARATOR . $filename;
|
||||
$writtenBytes = @file_put_contents($file, $data, LOCK_EX);
|
||||
if ($writtenBytes === false || $writtenBytes < strlen($data)) {
|
||||
throw new Exception('unable to write to file ' . $file, 13);
|
||||
}
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue