| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- <?php
- namespace MGModule\DNSManager2\mgLibs\custom\helpers\ZoneLogger;
- use MGModule\DNSManager2\mgLibs\custom\helpers\ZoneLogger\Actions\EditRecord;
- use MGModule\DNSManager2\mgLibs\lang;
- use MGModule\DNSManager2\models\custom\globalsetting;
- use MGModule\DNSManager2\mgLibs\custom\helpers\ZoneLogger\Enum as ZoneLoggerEnum;
- use MGModule\DNSManager2\models\custom\zone\Zone;
- use \MGModule\DNSManager2\models\custom\log;
- use MGModule\DNSManager2\mgLibs\custom\dns\record\interfaces\ArrayPrinter;
- /**
- * Class Manager
- *
- * @author Artur Pilch <artur.pi@modulesgarden.com>
- */
- class Manager
- {
- /**
- * List of available log action defined by admin
- *
- * @var array
- */
- private $availableLogActions = [];
- /**
- * @var null
- */
- private $clientId;
- /**
- * Set Essential Data
- *
- * Manager constructor.
- * @param null $clientId
- */
- public function __construct($clientId = null)
- {
- $settings = globalsetting\Repository::factory()->byKey(globalsetting\GlobalSettingEnum::LOG_ZONE_ACTIONS)->one();
- $this->availableLogActions = unserialize($settings);
- $this->clientId = $clientId;
- }
- /**
- * Log created zone
- *
- * @param Zone $zone
- * @param string $messagePrefix
- */
- public function logCreateZoneAction(Zone $zone, $messagePrefix = '')
- {
- $this->log(ZoneLoggerEnum::CREATE_ZONE, $zone->name, "Zone {$zone->name} has been created successfully", $messagePrefix);
- }
- /**
- * Log Terminated zone
- *
- * @param Zone $zone
- * @param string $messagePrefix
- */
- public function logTerminateZoneAction(Zone $zone, $messagePrefix = '')
- {
- $this->log(ZoneLoggerEnum::TERMINATE_ZONE, $zone->name, "Zone {$zone->name} has been terminated successfully", $messagePrefix);
- }
- /**
- * Log added record to zone
- *
- * @param Zone $zone
- * @param ArrayPrinter $record
- * @param string $messagePrefix
- */
- public function logAddRecordToZone(Zone $zone, ArrayPrinter $record, $messagePrefix = '')
- {
- $this->log(ZoneLoggerEnum::ADD_RECORD, $zone->name, $this->printRecordArray($record->toArray(false)), $messagePrefix);
- }
- /**
- * Log removed record from zone
- *
- * @param Zone $zone
- * @param ArrayPrinter $record
- * @param string $messagePrefix
- */
- public function logRemoveRecordFromZone(Zone $zone, ArrayPrinter $record, $messagePrefix = '')
- {
- $this->log(ZoneLoggerEnum::REMOVE_RECORD, $zone->name, $this->printRecordArray($record->toArray(false)), $messagePrefix);
- }
- /**
- * Edit RDNS Record
- *
- * @param Zone $zone
- * @param ArrayPrinter $recordOld
- * @param ArrayPrinter $recordNew
- * @param string $messagePrefix
- */
- public function logEditRdns(ArrayPrinter $recordOld, ArrayPrinter $recordNew, $messagePrefix = '')
- {
- $out = '';
- $out .= $this->printRecordArray($recordOld->toArray(false));
- $out .= '<br>';
- $out .= $this->printRecordArray($recordNew->toArray(false));
- $this->log(ZoneLoggerEnum::EDIT_RECORD, '', $out, $messagePrefix);
- }
- /**
- * Log edited record in zone
- *
- * @param Zone $zone
- * @param EditRecord $editRecord
- * @param string $messagePrefix
- */
- public function logEditRecordsInZone(Zone $zone, EditRecord $editRecord, $messagePrefix = '')
- {
- $from = lang::absoluteT('zoneLogger', 'edit', 'from');
- $to = lang::absoluteT('zoneLogger', 'edit', 'to');
- $out = '';
- $out .= "<b>{$from}:</b> " . $this->printRecordArray($editRecord->getOldRecord()->toArray(false));
- $out .= "<br>";
- $out .= "<b>{$to}:</b> " . $this->printRecordArray($editRecord->getNewRecord()->toArray(false));
- $this->log(ZoneLoggerEnum::EDIT_RECORD, $zone->name, $out, $messagePrefix);
- }
- public function logAddRdns(ArrayPrinter $record)
- {
- $this->log(ZoneLoggerEnum::ADD_RECORD, '', $this->printRecordArray($record->toArray(false)));
- }
- /**
- * Add New Log
- *
- * @param $messagePrefix
- * @param $logAction
- * @param $zoneName
- * @param $value
- */
- private function log($logAction, $zoneName, $value, $messagePrefix = '', $status = 'success')
- {
- if (!$this->canLog($logAction))
- {
- return;
- }
- $log = new log\Log();
- $log->action = $messagePrefix . ZoneLoggerEnum::friendlyNameMap($logAction);
- $log->value = $value;
- $log->name = $zoneName;
- $log->clientid = $this->clientId !== null ? $this->clientId : 0;
- $log->status = $status;
- $log->date = date('Y-m-d H:i:s');
- $log->save();
- }
- /**
- * Check if can log called action
- *
- * @param $action
- * @return bool
- */
- private function canLog($action)
- {
- return in_array($action, $this->availableLogActions);
- }
- private function printRecordArray(array $array = [], $out = '')
- {
- if (isset($array['ip']))
- {
- $out .= "{$array['ip']} PTR ";
- }
- $out .= "{$array['name']} {$array['type']} {$array['ttl']}";
- if (!isset($array['rdata']))
- {
- return $out;
- }
- foreach ($array['rdata'] as $value)
- {
- $out .= " {$value}";
- }
- return $out;
- }
- }
|