Ver código fonte

Merge branch 'master' into drop-legacy-zerobin-support

El RIDO 1 ano atrás
pai
commit
410cc909ce

+ 1 - 0
CHANGELOG.md

@@ -1,6 +1,7 @@
 # PrivateBin version history
 # PrivateBin version history
 
 
 ## 2.0.0 (not yet released)
 ## 2.0.0 (not yet released)
+* ADDED: Error logging in database and filesystem backend (#1554)
 * ADDED: Statistics on v1 pastes in administration script and option to delete them
 * ADDED: Statistics on v1 pastes in administration script and option to delete them
 * CHANGED: Removed page template (#265)
 * CHANGED: Removed page template (#265)
 * CHANGED: Removed support for ZeroBin & v1 pastes - since release 1.3 the v2 format is used (#551)
 * CHANGED: Removed support for ZeroBin & v1 pastes - since release 1.3 the v2 format is used (#551)

+ 3 - 0
lib/Data/Database.php

@@ -160,6 +160,7 @@ class Database extends AbstractData
                 )
                 )
             );
             );
         } catch (Exception $e) {
         } catch (Exception $e) {
+            error_log('Error while attempting to insert a paste into the database: ' . $e->getMessage());
             return false;
             return false;
         }
         }
     }
     }
@@ -253,6 +254,7 @@ class Database extends AbstractData
         try {
         try {
             $data = Json::encode($comment);
             $data = Json::encode($comment);
         } catch (Exception $e) {
         } catch (Exception $e) {
+            error_log('Error while attempting to insert a comment into the database: ' . $e->getMessage());
             return false;
             return false;
         }
         }
         $meta = $comment['meta'];
         $meta = $comment['meta'];
@@ -273,6 +275,7 @@ class Database extends AbstractData
                 )
                 )
             );
             );
         } catch (Exception $e) {
         } catch (Exception $e) {
+            error_log('Error while attempting to insert a comment into the database: ' . $e->getMessage());
             return false;
             return false;
         }
         }
     }
     }

+ 1 - 0
lib/Data/Filesystem.php

@@ -456,6 +456,7 @@ class Filesystem extends AbstractData
                 self::PROTECTION_LINE . PHP_EOL . Json::encode($data)
                 self::PROTECTION_LINE . PHP_EOL . Json::encode($data)
             );
             );
         } catch (Exception $e) {
         } catch (Exception $e) {
+            error_log('Error while trying to store data to the filesystem at path "' . $filename . '": ' . $e->getMessage());
             return false;
             return false;
         }
         }
     }
     }

+ 12 - 0
tst/Data/DatabaseTest.php

@@ -49,6 +49,7 @@ class DatabaseTest extends TestCase
 
 
     public function testDatabaseBasedDataStoreWorks()
     public function testDatabaseBasedDataStoreWorks()
     {
     {
+        $error_log_setting = ini_get('error_log');
         $this->_model->delete(Helper::getPasteId());
         $this->_model->delete(Helper::getPasteId());
 
 
         // storing pastes
         // storing pastes
@@ -56,7 +57,9 @@ class DatabaseTest extends TestCase
         $this->assertFalse($this->_model->exists(Helper::getPasteId()), 'paste does not yet exist');
         $this->assertFalse($this->_model->exists(Helper::getPasteId()), 'paste does not yet exist');
         $this->assertTrue($this->_model->create(Helper::getPasteId(), $paste), 'store new paste');
         $this->assertTrue($this->_model->create(Helper::getPasteId(), $paste), 'store new paste');
         $this->assertTrue($this->_model->exists(Helper::getPasteId()), 'paste exists after storing it');
         $this->assertTrue($this->_model->exists(Helper::getPasteId()), 'paste exists after storing it');
+        ini_set('error_log', '/dev/null');
         $this->assertFalse($this->_model->create(Helper::getPasteId(), $paste), 'unable to store the same paste twice');
         $this->assertFalse($this->_model->create(Helper::getPasteId(), $paste), 'unable to store the same paste twice');
+        ini_set('error_log', $error_log_setting);
         $this->assertEquals($paste, $this->_model->read(Helper::getPasteId()));
         $this->assertEquals($paste, $this->_model->read(Helper::getPasteId()));
 
 
         // storing comments
         // storing comments
@@ -93,13 +96,16 @@ class DatabaseTest extends TestCase
 
 
     public function testDatabaseBasedAttachmentStoreWorks()
     public function testDatabaseBasedAttachmentStoreWorks()
     {
     {
+        $error_log_setting = ini_get('error_log');
         $this->_model->delete(Helper::getPasteId());
         $this->_model->delete(Helper::getPasteId());
         $original                          = $paste                                = Helper::getPaste(array('expire_date' => 1344803344));
         $original                          = $paste                                = Helper::getPaste(array('expire_date' => 1344803344));
         $paste['meta']['burnafterreading'] = $original['meta']['burnafterreading'] = true;
         $paste['meta']['burnafterreading'] = $original['meta']['burnafterreading'] = true;
         $this->assertFalse($this->_model->exists(Helper::getPasteId()), 'paste does not yet exist');
         $this->assertFalse($this->_model->exists(Helper::getPasteId()), 'paste does not yet exist');
         $this->assertTrue($this->_model->create(Helper::getPasteId(), $paste), 'store new paste');
         $this->assertTrue($this->_model->create(Helper::getPasteId(), $paste), 'store new paste');
         $this->assertTrue($this->_model->exists(Helper::getPasteId()), 'paste exists after storing it');
         $this->assertTrue($this->_model->exists(Helper::getPasteId()), 'paste exists after storing it');
+        ini_set('error_log', '/dev/null');
         $this->assertFalse($this->_model->create(Helper::getPasteId(), $paste), 'unable to store the same paste twice');
         $this->assertFalse($this->_model->create(Helper::getPasteId(), $paste), 'unable to store the same paste twice');
+        ini_set('error_log', $error_log_setting);
         $this->assertEquals($original, $this->_model->read(Helper::getPasteId()));
         $this->assertEquals($original, $this->_model->read(Helper::getPasteId()));
     }
     }
 
 
@@ -140,15 +146,19 @@ class DatabaseTest extends TestCase
 
 
     public function testErrorDetection()
     public function testErrorDetection()
     {
     {
+        $error_log_setting = ini_get('error_log');
         $this->_model->delete(Helper::getPasteId());
         $this->_model->delete(Helper::getPasteId());
         $paste = Helper::getPaste(array('expire' => "Invalid UTF-8 sequence: \xB1\x31"));
         $paste = Helper::getPaste(array('expire' => "Invalid UTF-8 sequence: \xB1\x31"));
         $this->assertFalse($this->_model->exists(Helper::getPasteId()), 'paste does not yet exist');
         $this->assertFalse($this->_model->exists(Helper::getPasteId()), 'paste does not yet exist');
+        ini_set('error_log', '/dev/null');
         $this->assertFalse($this->_model->create(Helper::getPasteId(), $paste), 'unable to store broken paste');
         $this->assertFalse($this->_model->create(Helper::getPasteId(), $paste), 'unable to store broken paste');
+        ini_set('error_log', $error_log_setting);
         $this->assertFalse($this->_model->exists(Helper::getPasteId()), 'paste does still not exist');
         $this->assertFalse($this->_model->exists(Helper::getPasteId()), 'paste does still not exist');
     }
     }
 
 
     public function testCommentErrorDetection()
     public function testCommentErrorDetection()
     {
     {
+        $error_log_setting = ini_get('error_log');
         $this->_model->delete(Helper::getPasteId());
         $this->_model->delete(Helper::getPasteId());
         $data    = Helper::getPaste();
         $data    = Helper::getPaste();
         $comment = Helper::getComment(array('icon' => "Invalid UTF-8 sequence: \xB1\x31"));
         $comment = Helper::getComment(array('icon' => "Invalid UTF-8 sequence: \xB1\x31"));
@@ -156,7 +166,9 @@ class DatabaseTest extends TestCase
         $this->assertTrue($this->_model->create(Helper::getPasteId(), $data), 'store new paste');
         $this->assertTrue($this->_model->create(Helper::getPasteId(), $data), 'store new paste');
         $this->assertTrue($this->_model->exists(Helper::getPasteId()), 'paste exists after storing it');
         $this->assertTrue($this->_model->exists(Helper::getPasteId()), 'paste exists after storing it');
         $this->assertFalse($this->_model->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'comment does not yet exist');
         $this->assertFalse($this->_model->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'comment does not yet exist');
+        ini_set('error_log', '/dev/null');
         $this->assertFalse($this->_model->createComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId(), $comment), 'unable to store broken comment');
         $this->assertFalse($this->_model->createComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId(), $comment), 'unable to store broken comment');
+        ini_set('error_log', $error_log_setting);
         $this->assertFalse($this->_model->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'comment does still not exist');
         $this->assertFalse($this->_model->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'comment does still not exist');
     }
     }
 
 

+ 6 - 0
tst/Data/FilesystemTest.php

@@ -111,16 +111,20 @@ class FilesystemTest extends TestCase
 
 
     public function testErrorDetection()
     public function testErrorDetection()
     {
     {
+        $error_log_setting = ini_get('error_log');
         $this->_model->delete(Helper::getPasteId());
         $this->_model->delete(Helper::getPasteId());
         $paste = Helper::getPaste(array('expire' => "Invalid UTF-8 sequence: \xB1\x31"));
         $paste = Helper::getPaste(array('expire' => "Invalid UTF-8 sequence: \xB1\x31"));
         $this->assertFalse($this->_model->exists(Helper::getPasteId()), 'paste does not yet exist');
         $this->assertFalse($this->_model->exists(Helper::getPasteId()), 'paste does not yet exist');
+        ini_set('error_log', '/dev/null');
         $this->assertFalse($this->_model->create(Helper::getPasteId(), $paste), 'unable to store broken paste');
         $this->assertFalse($this->_model->create(Helper::getPasteId(), $paste), 'unable to store broken paste');
+        ini_set('error_log', $error_log_setting);
         $this->assertFalse($this->_model->exists(Helper::getPasteId()), 'paste does still not exist');
         $this->assertFalse($this->_model->exists(Helper::getPasteId()), 'paste does still not exist');
         $this->assertFalse($this->_model->setValue('foo', 'non existing namespace'), 'rejects setting value in non existing namespace');
         $this->assertFalse($this->_model->setValue('foo', 'non existing namespace'), 'rejects setting value in non existing namespace');
     }
     }
 
 
     public function testCommentErrorDetection()
     public function testCommentErrorDetection()
     {
     {
+        $error_log_setting = ini_get('error_log');
         $this->_model->delete(Helper::getPasteId());
         $this->_model->delete(Helper::getPasteId());
         $data    = Helper::getPaste();
         $data    = Helper::getPaste();
         $comment = Helper::getComment(array('icon' => "Invalid UTF-8 sequence: \xB1\x31"));
         $comment = Helper::getComment(array('icon' => "Invalid UTF-8 sequence: \xB1\x31"));
@@ -128,7 +132,9 @@ class FilesystemTest extends TestCase
         $this->assertTrue($this->_model->create(Helper::getPasteId(), $data), 'store new paste');
         $this->assertTrue($this->_model->create(Helper::getPasteId(), $data), 'store new paste');
         $this->assertTrue($this->_model->exists(Helper::getPasteId()), 'paste exists after storing it');
         $this->assertTrue($this->_model->exists(Helper::getPasteId()), 'paste exists after storing it');
         $this->assertFalse($this->_model->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'comment does not yet exist');
         $this->assertFalse($this->_model->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'comment does not yet exist');
+        ini_set('error_log', '/dev/null');
         $this->assertFalse($this->_model->createComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId(), $comment), 'unable to store broken comment');
         $this->assertFalse($this->_model->createComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId(), $comment), 'unable to store broken comment');
+        ini_set('error_log', $error_log_setting);
         $this->assertFalse($this->_model->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'comment does still not exist');
         $this->assertFalse($this->_model->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'comment does still not exist');
     }
     }