From 1acec442fe1ca03dafb7288f89cbe4ca011258b0 Mon Sep 17 00:00:00 2001 From: "choi.jh" Date: Wed, 12 Nov 2025 14:09:28 +0900 Subject: [PATCH] trafficmonitor init...2 --- app/Controllers/Admin/AdminController.php | 14 +- app/Controllers/CLI/Collector.php | 36 +++++ .../CLI/DBMigration/DBMigration.php | 55 ------- app/Controllers/CLI/DBMigration/SourceDB.php | 149 ------------------ app/Controllers/CLI/Payment.php | 70 -------- app/Controllers/CommonController.php | 3 - app/Services/CollectorService.php | 9 -- 7 files changed, 44 insertions(+), 292 deletions(-) create mode 100644 app/Controllers/CLI/Collector.php delete mode 100644 app/Controllers/CLI/DBMigration/DBMigration.php delete mode 100644 app/Controllers/CLI/DBMigration/SourceDB.php delete mode 100644 app/Controllers/CLI/Payment.php diff --git a/app/Controllers/Admin/AdminController.php b/app/Controllers/Admin/AdminController.php index ff7fbe4..8968cdd 100644 --- a/app/Controllers/Admin/AdminController.php +++ b/app/Controllers/Admin/AdminController.php @@ -2,22 +2,24 @@ namespace App\Controllers\Admin; -use Psr\Log\LoggerInterface; - -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\RedirectResponse; -use App\Entities\CommonEntity; use App\Controllers\CommonController; + use App\DTOs\CommonDTO; +use App\Entities\CommonEntity; +use App\Traits\LogTrait; +use CodeIgniter\HTTP\RedirectResponse; +use CodeIgniter\HTTP\RequestInterface; +use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\Validation\Exceptions\ValidationException; use CodeIgniter\HTTP\DownloadResponse; use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Reader\Html; use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf; +use Psr\Log\LoggerInterface; abstract class AdminController extends CommonController { + use LogTrait; public const PATH = 'admin'; private ?string $_title = null; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) diff --git a/app/Controllers/CLI/Collector.php b/app/Controllers/CLI/Collector.php new file mode 100644 index 0000000..e18e886 --- /dev/null +++ b/app/Controllers/CLI/Collector.php @@ -0,0 +1,36 @@ +service === null) { + $this->service = service('collectorservice'); + } + $this->addActionPaths($this::PATH); + } + protected function createDTO(array $formDatas): CollectorDTO + { + return new CollectorDTO($formDatas); + } + public function execute(): void + { + $trafficService = service('trafficservice'); + foreach ($trafficService->getEntities(['status' => STATUS['AVAILABLE']]) as $entity) { + $data = $this->service->getCalculatedData($entity); + // Collector DB에 결과 저장 + $this->service->create($this->createDTO($data)); + log_message('info', "트래픽 계산 및 저장 완료 (UID: {$entity->getPK()}), In: {$data['in_kbits_sec']} Kb/s"); + } + } +} diff --git a/app/Controllers/CLI/DBMigration/DBMigration.php b/app/Controllers/CLI/DBMigration/DBMigration.php deleted file mode 100644 index ef6137e..0000000 --- a/app/Controllers/CLI/DBMigration/DBMigration.php +++ /dev/null @@ -1,55 +0,0 @@ -_targetDB === null) { - $this->_targetDB = \Config\Database::connect('default'); - } - return $this->_targetDB; - } - - /** - * 공통 마이그레이션 처리 로직 - */ - final protected function migration(MigrationProcessInterface $processor, array $rows, string $functionName): void - { - $this->getTargetDB()->transStart(); - try { - $cnt = 1; - foreach ($rows as $row) { - $processor->process($row, $cnt); - $cnt++; - } - echo "{$functionName} 작업을 완료하였습니다."; - $this->getTargetDB()->transCommit(); - } catch (\Exception $e) { - $this->getTargetDB()->transRollback(); - echo "{$functionName} 작업을 실패하였습니다.\n--------------\n" . $e->getMessage() . "\n--------------\n"; - } - } -} diff --git a/app/Controllers/CLI/DBMigration/SourceDB.php b/app/Controllers/CLI/DBMigration/SourceDB.php deleted file mode 100644 index 160ace8..0000000 --- a/app/Controllers/CLI/DBMigration/SourceDB.php +++ /dev/null @@ -1,149 +0,0 @@ -_sourceDB === null) { - $config = [ - 'DSN' => '', - 'hostname' => env('database.source.hostname', 'localhost'), - 'username' => env('database.source.username', 'root'), - 'password' => env('database.source.password', ''), - 'database' => env('database.source.database', 'primeidc'), - 'DBDriver' => 'MySQLi', - 'DBPrefix' => '', - 'pConnect' => false, - 'DBDebug' => (ENVIRONMENT !== 'production'), - 'cacheOn' => false, - 'cacheDir' => '', - 'charset' => 'utf8mb4', - 'DBCollat' => 'utf8mb4_general_ci', - 'swapPre' => '', - 'encrypt' => false, - 'compress' => false, - 'strictOn' => false, - 'failover' => [], - 'port' => 3306, - ]; - $this->_sourceDB = \Config\Database::connect($config); - } - return $this->_sourceDB; - } - - /** - * 공통 쿼리 실행 메서드 - */ - private function executeQuery(string $sql, array $params = []): array - { - return $this->getSourceDB() - ->query($sql, $params) - ->getResultArray(); - } - private function executeFile(string $filename, string $deilmeter = ','): array - { - $datas = []; - $lines = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); - foreach ($lines as $line) { - $datas[] = explode($deilmeter, $line); - } - return $datas; - } - - protected function getClient(): array - { - return $this->executeQuery(self::SQL_GET_CLIENT); - } - - protected function getLine(): array - { - return $this->executeQuery(self::SQL_GET_LINE); - } - - protected function getServerCode(): array - { - return $this->executeQuery(self::SQL_GET_SERVER_CODE, ['%일회성%']); - } - - protected function getSWITCHCode(): array - { - return $this->executeQuery(self::SQL_GET_SWITCH_CODE, ['%일회성%']); - } - protected function getPartCode(): array - { - return $this->executeFile('/home/donfig/dbmsv2/app/Database/dbmsv2_part.txt'); - } - final public function client(): void - { - $this->migration( - new ClientProcess($this->getTargetDB()), - $this->getClient(), - __FUNCTION__ - ); - } - - final public function line(): void - { - $this->migration( - new LineProcess($this->getTargetDB()), - $this->getLine(), - __FUNCTION__ - ); - } - - final public function servercode(): void - { - $this->migration( - new ServerCodeProcess($this->getTargetDB()), - $this->getServerCode(), - __FUNCTION__ - ); - } - - final public function switchcode(): void - { - $this->migration( - new SWITCHCodeProcess($this->getTargetDB()), - $this->getSWITCHCode(), - __FUNCTION__ - ); - } - final public function partcode(): void - { - $this->migration( - new PartCodeProcess($this->getTargetDB()), - $this->getPartCode(), - __FUNCTION__ - ); - } -} diff --git a/app/Controllers/CLI/Payment.php b/app/Controllers/CLI/Payment.php deleted file mode 100644 index 065a63a..0000000 --- a/app/Controllers/CLI/Payment.php +++ /dev/null @@ -1,70 +0,0 @@ -_service) { - $this->_service = new ServiceService(); - } - return $this->_service; - } - public function getPaymentService(): PaymentService - { - if (!$this->_paymentService) { - $this->_paymentService = new PaymentService(); - } - return $this->_paymentService; - } - public function billing(): void - { - //Transaction Start - $db = \Config\Database::connect(); - $db->transStart(); - try { - log_message("notice", "Billing 작업을 시작."); - //결제일이 오늘보다 크고, 상태가 사용중인 서비스정보를 이용해서 결제정보에 신규 추가하기 - foreach ($this->getService()->getEntities(['billing_at' => date("Y-m-d"), 'status' => STATUS['AVAILABLE']]) as $entity) { - // echo $serviceEntity->getPK() . ":" . $serviceEntity->getBillingAt() . "\n"; - $entity = $this->getPaymentService()->setService('create', $entity, []); - $entity = $this->getService()->modify( - $entity, - [ - 'billing_at' => $this->getService()->getNextMonthDate($entity), - 'paymentifo_uid' => $entity->getPaymentUID(), - 'serverinfo_uid' => $entity->getServerInfoUID() - ] - ); - log_message("notice", sprintf("%s/%s원 결제추가\n", $entity->getCustomTitle(), $entity->getAmount())); - } - // echo $this->getService()->getModel()->getLastQuery() . "\n"; - log_message("notice", "Billing 작업을 완료."); - $db->transCommit(); - } catch (\Exception $e) { - //Transaction Rollback - $db->transRollback(); - log_message( - "error", - "Billing 작업을 실패하였습니다.\n--------------\n" . - $e->getMessage() . - "\n--------------\n" - ); - } - } -} diff --git a/app/Controllers/CommonController.php b/app/Controllers/CommonController.php index add5716..9bae467 100644 --- a/app/Controllers/CommonController.php +++ b/app/Controllers/CommonController.php @@ -4,16 +4,13 @@ namespace App\Controllers; use App\Controllers\BaseController; use App\Libraries\AuthContext; -use App\Traits\LogTrait; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; -use PhpParser\Node\Scalar\MagicConst\Dir; use Psr\Log\LoggerInterface; abstract class CommonController extends BaseController { - use LogTrait; private array $_action_paths = []; private array $_viewDatas = []; protected $service = null; diff --git a/app/Services/CollectorService.php b/app/Services/CollectorService.php index 80a027a..e78d481 100644 --- a/app/Services/CollectorService.php +++ b/app/Services/CollectorService.php @@ -103,7 +103,6 @@ class CollectorService extends CommonService { $currentInOctets = $this->getSNMPOctets($trafficEntity, self::OID_IF_IN_OCTETS); $currentOutOctets = $this->getSNMPOctets($trafficEntity, self::OID_IF_OUT_OCTETS); - $currentTime = Time::now()->toDateTimeString(); if ($currentInOctets === null || $currentOutOctets === null) { $message = "트래픽 수집 실패: {$trafficEntity->getIP()} - IF{$trafficEntity->getInterface()} (UID: {$trafficEntity->getPK()})"; log_message('warning', $message); @@ -137,14 +136,6 @@ class CollectorService extends CommonService 'out_kbits_sec' => round($outKbitsSec, 2), 'raw_in_octets' => $currentInOctets, 'raw_out_octets' => $currentOutOctets, - 'created_at' => $currentTime, ]; } - public function collectAndSave(TrafficEntity $trafficEntity): void - { - $data = $this->getCalculatedData($trafficEntity); - // Collector DB에 결과 저장 - $this->model->insert($data); - log_message('info', "트래픽 계산 및 저장 완료 (UID: {$trafficEntity->getPK()}), In: {$data['in_kbits_sec']} Kb/s"); - } }