From 676acf074042a502e8a4b4e545d93032031495da Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Tue, 23 Jun 2015 14:37:23 +0200 Subject: [PATCH] Util: new helper class --- application/controllers/ConfigController.php | 3 ++- application/controllers/ShowController.php | 3 ++- library/Director/Data/Db/DbObject.php | 4 +++- .../Director/IcingaConfig/IcingaConfig.php | 5 ++-- .../IcingaConfig/IcingaConfigFile.php | 3 ++- .../Director/Objects/DirectorActivityLog.php | 7 +++--- library/Director/Util.php | 23 +++++++++++++++++++ 7 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 library/Director/Util.php diff --git a/application/controllers/ConfigController.php b/application/controllers/ConfigController.php index 5eb63e7e..e5e5ce30 100644 --- a/application/controllers/ConfigController.php +++ b/application/controllers/ConfigController.php @@ -3,12 +3,13 @@ use Icinga\Module\Director\ActionController; use Icinga\Module\Director\IcingaConfig\IcingaConfig; +use Icinga\Module\Director\Util; class Director_ConfigController extends ActionController { public function showAction() { - $this->view->config = IcingaConfig::fromDb(pack('H*', $this->params->get('checksum')), $this->db()); + $this->view->config = IcingaConfig::fromDb(Util::hex2binary($this->params->get('checksum')), $this->db()); } public function storeAction() diff --git a/application/controllers/ShowController.php b/application/controllers/ShowController.php index 3cb667ed..42b1f8c6 100644 --- a/application/controllers/ShowController.php +++ b/application/controllers/ShowController.php @@ -3,6 +3,7 @@ use Icinga\Module\Director\ActionController; use Icinga\Module\Director\IcingaConfig\IcingaConfig; +use Icinga\Module\Director\Util; class Director_ShowController extends ActionController { @@ -11,7 +12,7 @@ class Director_ShowController extends ActionController if ($id = $this->params->get('id')) { $this->view->entry = $this->db()->fetchActivityLogEntryById($id); } elseif ($checksum = $this->params->get('checksum')) { - $this->view->entry = $this->db()->fetchActivityLogEntry(pack('H*', $checksum)); + $this->view->entry = $this->db()->fetchActivityLogEntry(Util::hex2binary($checksum)); } $this->view->title = $this->translate('Activity'); diff --git a/library/Director/Data/Db/DbObject.php b/library/Director/Data/Db/DbObject.php index 5160f2b2..11e0754f 100644 --- a/library/Director/Data/Db/DbObject.php +++ b/library/Director/Data/Db/DbObject.php @@ -9,6 +9,8 @@ namespace Icinga\Module\Director\Data\Db; use Icinga\Data\Db\DbConnection; +use Icinga\Module\Director\Util; + use Exception; /** @@ -557,7 +559,7 @@ abstract class DbObject if ($this->connection->getDbType() === 'pgsql') { foreach ($properties as $key => $value) { if (preg_match('/checksum$/', $key)) { - $properties[$key] = new \Zend_Db_Expr("'" . pg_escape_bytea($value) . "'"); + $properties[$key] = Util::pgBinEscape($value); } } } diff --git a/library/Director/IcingaConfig/IcingaConfig.php b/library/Director/IcingaConfig/IcingaConfig.php index 74ee7fa3..3f04a799 100644 --- a/library/Director/IcingaConfig/IcingaConfig.php +++ b/library/Director/IcingaConfig/IcingaConfig.php @@ -3,6 +3,7 @@ namespace Icinga\Module\Director\IcingaConfig; use Icinga\Data\Db\DbConnection; +use Icinga\Module\Director\Util; use Icinga\Module\Director\Objects\IcingaCommand; use Icinga\Module\Director\Objects\IcingaHost; @@ -38,7 +39,7 @@ class IcingaConfig public function getHexChecksum() { - return current(unpack('H*', $this->checksum)); + return Util::binary2hex($this->checksum); } public function getFiles() @@ -243,7 +244,7 @@ class IcingaConfig public function getLastActivityHexChecksum() { - return current(unpack('H*', $this->getLastActivityChecksum())); + return Util::binary2hex($this->getLastActivityChecksum()); } /** diff --git a/library/Director/IcingaConfig/IcingaConfigFile.php b/library/Director/IcingaConfig/IcingaConfigFile.php index 82549cd0..e8e020b7 100644 --- a/library/Director/IcingaConfig/IcingaConfigFile.php +++ b/library/Director/IcingaConfig/IcingaConfigFile.php @@ -3,6 +3,7 @@ namespace Icinga\Module\Director\IcingaConfig; use Icinga\Module\Director\Objects\IcingaObject; +use Icinga\Module\Director\Util; class IcingaConfigFile { @@ -35,7 +36,7 @@ class IcingaConfigFile public function getHexChecksum() { - return current(unpack('H*', $this->getChecksum())); + return Util::binary2hex($this->getChecksum()); } public function getChecksum() diff --git a/library/Director/Objects/DirectorActivityLog.php b/library/Director/Objects/DirectorActivityLog.php index 612c19b6..1ff183cc 100644 --- a/library/Director/Objects/DirectorActivityLog.php +++ b/library/Director/Objects/DirectorActivityLog.php @@ -4,6 +4,7 @@ namespace Icinga\Module\Director\Objects; use Icinga\Module\Director\Data\Db\DbObject; use Icinga\Module\Director\Db; +use Icinga\Module\Director\Util; use Icinga\Authentication\Manager as Auth; class DirectorActivityLog extends DbObject @@ -51,7 +52,7 @@ class DirectorActivityLog extends DbObject ); $data['checksum'] = sha1(json_encode($data), true); - $data['parent_checksum'] = pack('H*', $data['parent_checksum']); + $data['parent_checksum'] = Util::hex2binary($data['parent_checksum']); return self::create($data)->store($db); } @@ -69,7 +70,7 @@ class DirectorActivityLog extends DbObject ); $data['checksum'] = sha1(json_encode($data), true); - $data['parent_checksum'] = pack('H*', $data['parent_checksum']); + $data['parent_checksum'] = Util::hex2binary($data['parent_checksum']); return self::create($data)->store($db); } @@ -86,7 +87,7 @@ class DirectorActivityLog extends DbObject ); $data['checksum'] = sha1(json_encode($data), true); - $data['parent_checksum'] = pack('H*', $data['parent_checksum']); + $data['parent_checksum'] = Util::hex2binary($data['parent_checksum']); return self::create($data)->store($db); } diff --git a/library/Director/Util.php b/library/Director/Util.php new file mode 100644 index 00000000..8b3d5c62 --- /dev/null +++ b/library/Director/Util.php @@ -0,0 +1,23 @@ +