From b9b1bcc2f44eb32704eefbfcec2ea4d7fc0fc022 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=ED=9D=A0?= Date: Fri, 9 Aug 2024 13:40:43 +0900 Subject: [PATCH] change RecordController.php --- .../Admin/Cloudflare/API/RecordController.php | 13 ++++++---- app/Controllers/Common/CommonController.php | 4 +-- app/Entities/Cloudflare/FixedRecordEntity.php | 25 +++++++++++++++++++ app/Libraries/Cloudflare/API/Record.php | 11 +++++--- .../Cloudflare/{API => }/FixedRecordModel.php | 2 +- 5 files changed, 43 insertions(+), 12 deletions(-) create mode 100644 app/Entities/Cloudflare/FixedRecordEntity.php rename app/Models/Cloudflare/{API => }/FixedRecordModel.php (97%) diff --git a/app/Controllers/Admin/Cloudflare/API/RecordController.php b/app/Controllers/Admin/Cloudflare/API/RecordController.php index 9b5563c..06c44c8 100644 --- a/app/Controllers/Admin/Cloudflare/API/RecordController.php +++ b/app/Controllers/Admin/Cloudflare/API/RecordController.php @@ -2,12 +2,13 @@ namespace App\Controllers\Admin\Cloudflare\API; +use App\Libraries\Cloudflare\API\Record; use App\Libraries\Log\Log; use App\Models\Cloudflare\API\RecordModel; +use App\Models\Cloudflare\FixedRecordModel; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; -use App\Libraries\Cloudflare\API\Record; class RecordController extends APIController { @@ -235,9 +236,9 @@ class RecordController extends APIController //CDN고정관련 final public function cdnToggle(string $uid) { + $entity = $this->_model->getEntity($uid); try { - $entity = $this->_model->getEntity($uid); - $fixedRecordModel = new \App\Models\Cloudflare\API\FixedRecordModel(); + $fixedRecordModel = new FixedRecordModel(); if ($entity->fixed == 'on') { $entity->fixed = "off"; $this->_model->save($entity); @@ -246,8 +247,10 @@ class RecordController extends APIController } else { $entity->fixed = "on"; $this->_model->save($entity); - //throw new \Exception($entity); - $fixedRecordModel->insert(['host' => $entity->host]); + //cloudflarefixedrecord에 추가 + $fixedRecord = new \App\Entities\Cloudflare\FiexedRecordEntity(); + $fixedRecord->host = $entity->host; + $fixedRecordModel->insert($fixedRecord); Log::add("info", "{$entity->getTitle()}의 fixed : off=>on"); } $message = "{$entity->getTitle()} " . __FUNCTION__ . " 완료하였습니다."; diff --git a/app/Controllers/Common/CommonController.php b/app/Controllers/Common/CommonController.php index dc8b2ff..d43e6f4 100644 --- a/app/Controllers/Common/CommonController.php +++ b/app/Controllers/Common/CommonController.php @@ -85,9 +85,7 @@ class CommonController extends BaseController $this->_viewDatas['forms'] = ['attributes' => ['method' => "post",], 'hiddens' => []]; helper(['form']); } - protected function insert_form_process() - { - } + protected function insert_form_process() {} final public function insert_form() { try { diff --git a/app/Entities/Cloudflare/FixedRecordEntity.php b/app/Entities/Cloudflare/FixedRecordEntity.php new file mode 100644 index 0000000..c0bd284 --- /dev/null +++ b/app/Entities/Cloudflare/FixedRecordEntity.php @@ -0,0 +1,25 @@ +attributes['uid']; + } + public function getTitle() + { + return $this->attributes['host']; + } + public function __toString() + { + return "uid:{$this->attributes['uid']}|host:{$this->attributes['host']}"; + } +} diff --git a/app/Libraries/Cloudflare/API/Record.php b/app/Libraries/Cloudflare/API/Record.php index 96e02df..1dcd353 100644 --- a/app/Libraries/Cloudflare/API/Record.php +++ b/app/Libraries/Cloudflare/API/Record.php @@ -75,15 +75,20 @@ class Record extends API public function update(\App\Entities\Cloudflare\API\RecordEntity $entity, array $fieldDatas): \App\Entities\Cloudflare\API\RecordEntity { //TTL값은 CDN(proxied)가 사용함일때는 무조건 1, 않함일때는 120이 적용 + $options = [ 'type' => isset($fieldDatas['type']) ? $fieldDatas['type'] : $entity->type, 'name' => isset($fieldDatas['host']) ? $fieldDatas['host'] : $entity->host, 'content' => isset($fieldDatas['content']) ? $fieldDatas['content'] : $entity->content, - 'proxied' => isset($fieldDatas['proxied']) && $fieldDatas['proxied'] === 'on' ? true : false + 'proxied' => $entity->proxied == 'on' ? true : false, + 'ttl' => $entity->ttl ]; - if (isset($entity->ttl) && $entity->ttl > 0) { - $options['ttl'] = $options['proxied'] ? 1 : 120; + $options['proxied'] = $entity->proxied == 'on' ? true : false; + if (isset($fieldDatas['proxied']) && $fieldDatas['proxied'] === 'on') { + $options['proxied'] = true; + $options['ttl'] = 1; } + //dd($options); // throw new \Exception(var_export($fieldDatas, true) . "
" . var_export($options, true)); $cfResult = $this->getAdapter()->put('zones/' . $this->getParent()->getPrimaryKey() . '/dns_records/' . $entity->getPrimaryKey(), $options); $cfResult = json_decode($cfResult->getBody()); diff --git a/app/Models/Cloudflare/API/FixedRecordModel.php b/app/Models/Cloudflare/FixedRecordModel.php similarity index 97% rename from app/Models/Cloudflare/API/FixedRecordModel.php rename to app/Models/Cloudflare/FixedRecordModel.php index 37b70fe..cb7e528 100644 --- a/app/Models/Cloudflare/API/FixedRecordModel.php +++ b/app/Models/Cloudflare/FixedRecordModel.php @@ -1,6 +1,6 @@