change RecordController.php

This commit is contained in:
최준흠 2024-08-09 13:40:43 +09:00
parent 48827e45cc
commit b9b1bcc2f4
5 changed files with 43 additions and 12 deletions

View File

@ -2,12 +2,13 @@
namespace App\Controllers\Admin\Cloudflare\API; namespace App\Controllers\Admin\Cloudflare\API;
use App\Libraries\Cloudflare\API\Record;
use App\Libraries\Log\Log; use App\Libraries\Log\Log;
use App\Models\Cloudflare\API\RecordModel; use App\Models\Cloudflare\API\RecordModel;
use App\Models\Cloudflare\FixedRecordModel;
use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use App\Libraries\Cloudflare\API\Record;
class RecordController extends APIController class RecordController extends APIController
{ {
@ -235,9 +236,9 @@ class RecordController extends APIController
//CDN고정관련 //CDN고정관련
final public function cdnToggle(string $uid) final public function cdnToggle(string $uid)
{ {
$entity = $this->_model->getEntity($uid);
try { try {
$entity = $this->_model->getEntity($uid); $fixedRecordModel = new FixedRecordModel();
$fixedRecordModel = new \App\Models\Cloudflare\API\FixedRecordModel();
if ($entity->fixed == 'on') { if ($entity->fixed == 'on') {
$entity->fixed = "off"; $entity->fixed = "off";
$this->_model->save($entity); $this->_model->save($entity);
@ -246,8 +247,10 @@ class RecordController extends APIController
} else { } else {
$entity->fixed = "on"; $entity->fixed = "on";
$this->_model->save($entity); $this->_model->save($entity);
//throw new \Exception($entity); //cloudflarefixedrecord에 추가
$fixedRecordModel->insert(['host' => $entity->host]); $fixedRecord = new \App\Entities\Cloudflare\FiexedRecordEntity();
$fixedRecord->host = $entity->host;
$fixedRecordModel->insert($fixedRecord);
Log::add("info", "{$entity->getTitle()}의 fixed : off=>on"); Log::add("info", "{$entity->getTitle()}의 fixed : off=>on");
} }
$message = "{$entity->getTitle()} " . __FUNCTION__ . " 완료하였습니다."; $message = "{$entity->getTitle()} " . __FUNCTION__ . " 완료하였습니다.";

View File

@ -85,9 +85,7 @@ class CommonController extends BaseController
$this->_viewDatas['forms'] = ['attributes' => ['method' => "post",], 'hiddens' => []]; $this->_viewDatas['forms'] = ['attributes' => ['method' => "post",], 'hiddens' => []];
helper(['form']); helper(['form']);
} }
protected function insert_form_process() protected function insert_form_process() {}
{
}
final public function insert_form() final public function insert_form()
{ {
try { try {

View File

@ -0,0 +1,25 @@
<?php
namespace App\Entities\Cloudflare;
use App\Entities\CommonEntity;
class FiexedRecordEntity extends CommonEntity
{
protected $datamap = [];
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
protected $casts = [];
public function getPrimaryKey()
{
return $this->attributes['uid'];
}
public function getTitle()
{
return $this->attributes['host'];
}
public function __toString()
{
return "uid:{$this->attributes['uid']}|host:{$this->attributes['host']}";
}
}

View File

@ -75,15 +75,20 @@ class Record extends API
public function update(\App\Entities\Cloudflare\API\RecordEntity $entity, array $fieldDatas): \App\Entities\Cloudflare\API\RecordEntity public function update(\App\Entities\Cloudflare\API\RecordEntity $entity, array $fieldDatas): \App\Entities\Cloudflare\API\RecordEntity
{ {
//TTL값은 CDN(proxied)가 사용함일때는 무조건 1, 않함일때는 120이 적용 //TTL값은 CDN(proxied)가 사용함일때는 무조건 1, 않함일때는 120이 적용
$options = [ $options = [
'type' => isset($fieldDatas['type']) ? $fieldDatas['type'] : $entity->type, 'type' => isset($fieldDatas['type']) ? $fieldDatas['type'] : $entity->type,
'name' => isset($fieldDatas['host']) ? $fieldDatas['host'] : $entity->host, 'name' => isset($fieldDatas['host']) ? $fieldDatas['host'] : $entity->host,
'content' => isset($fieldDatas['content']) ? $fieldDatas['content'] : $entity->content, '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['proxied'] = $entity->proxied == 'on' ? true : false;
$options['ttl'] = $options['proxied'] ? 1 : 120; if (isset($fieldDatas['proxied']) && $fieldDatas['proxied'] === 'on') {
$options['proxied'] = true;
$options['ttl'] = 1;
} }
//dd($options);
// throw new \Exception(var_export($fieldDatas, true) . "<HR>" . var_export($options, true)); // throw new \Exception(var_export($fieldDatas, true) . "<HR>" . var_export($options, true));
$cfResult = $this->getAdapter()->put('zones/' . $this->getParent()->getPrimaryKey() . '/dns_records/' . $entity->getPrimaryKey(), $options); $cfResult = $this->getAdapter()->put('zones/' . $this->getParent()->getPrimaryKey() . '/dns_records/' . $entity->getPrimaryKey(), $options);
$cfResult = json_decode($cfResult->getBody()); $cfResult = json_decode($cfResult->getBody());

View File

@ -1,6 +1,6 @@
<?php <?php
namespace App\Models\Cloudflare\API; namespace App\Models\Cloudflare;
use CodeIgniter\Model; use CodeIgniter\Model;