diff --git a/app/Config/Routes.php b/app/Config/Routes.php index a31d88f..0f4daa1 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -11,20 +11,31 @@ $routes->addPlaceholder('uuid', '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4} //authFilter는 추가적인 작업이 필요 //1. app/Filters/AuthFilter.php //2. Config/Filters.php -> $aliases = ['authFilter' => AuthFilter::class] +$routes->group('cli', ['namespace' => 'App\Controllers\CLI'], function ($routes) { + $routes->group('cloudflare', function ($routes) { + $routes->cli('reload', 'Cloudflare::reload'); + $routes->cli('reload/(:num)', 'Cloudflare::reload/$1'); + }); +}); $routes->get('/', 'Home::index'); $routes->group('/RSSFeed', function ($routes) { $routes->get('getITWorld', 'RSSFeedController::getITWorld'); }); $routes->group('/user', function ($routes) { - $routes->get('login', 'UserController::login_form'); - $routes->post('login', 'UserController::login'); - $routes->get('google_login', 'UserController::google_login'); - $routes->get('logout', 'UserController::logout'); + $routes->get('login', 'AuthController::login_form'); + $routes->post('login', 'AuthController::login'); + $routes->get('google_login', 'AuthController::google_login'); + $routes->get('logout', 'AuthController::logout'); }); -$routes->group('cli', ['namespace' => 'App\Controllers\CLI'], function ($routes) { - $routes->group('cloudflare', function ($routes) { - $routes->cli('reload', 'Cloudflare::reload'); - $routes->cli('reload/(:num)', 'Cloudflare::reload/$1'); +$routes->group('/cloudflare', ['namespace' => 'App\Controllers\Cloudflare'], function ($routes) { + $routes->group('zone', function ($routes) { + $routes->post('trigger/(:alphanum)', 'ZoneController::trigger/$1'); + }); + $routes->group('record', function ($routes) { + $routes->post('trigger/(:alphanum)', 'RecordController::trigger/$1'); + }); + $routes->group('firewall', function ($routes) { + $routes->post('trigger/(:alphanum)', 'FirewallController::trigger/$1'); }); }); $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:manager'], function ($routes) { diff --git a/app/Controllers/Admin/Cloudflare/AccountController.php b/app/Controllers/Admin/Cloudflare/AccountController.php index 5d06e89..32dfb23 100644 --- a/app/Controllers/Admin/Cloudflare/AccountController.php +++ b/app/Controllers/Admin/Cloudflare/AccountController.php @@ -2,9 +2,10 @@ namespace App\Controllers\Admin\Cloudflare; +use App\Controllers\CloudflareController; use App\Helpers\Cloudflare\AccountHelper; -use App\Services\Cloudflare\Account; use App\Models\Cloudflare\AccountModel; +use App\Services\Cloudflare\Account; use CodeIgniter\HTTP\DownloadResponse; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; diff --git a/app/Controllers/Admin/Cloudflare/AuthController.php b/app/Controllers/Admin/Cloudflare/AuthController.php index 4397cc0..7ac9d12 100644 --- a/app/Controllers/Admin/Cloudflare/AuthController.php +++ b/app/Controllers/Admin/Cloudflare/AuthController.php @@ -2,6 +2,7 @@ namespace App\Controllers\Admin\Cloudflare; +use App\Controllers\CloudflareController; use App\Helpers\Cloudflare\AuthHelper; use App\Models\Cloudflare\AuthModel; use CodeIgniter\HTTP\DownloadResponse; diff --git a/app/Controllers/Admin/Cloudflare/FirewallController.php b/app/Controllers/Admin/Cloudflare/FirewallController.php index 34c2551..c8167a8 100644 --- a/app/Controllers/Admin/Cloudflare/FirewallController.php +++ b/app/Controllers/Admin/Cloudflare/FirewallController.php @@ -2,10 +2,11 @@ namespace App\Controllers\Admin\Cloudflare; +use App\Controllers\CloudflareController; use App\Helpers\Cloudflare\FirewallHelper; -use App\Services\Cloudflare\Firewall; use App\Models\Cloudflare\FirewallModel; use App\Models\Cloudflare\ZoneModel; +use App\Services\Cloudflare\Firewall; use CodeIgniter\HTTP\DownloadResponse; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; diff --git a/app/Controllers/Admin/Cloudflare/RecordController.php b/app/Controllers/Admin/Cloudflare/RecordController.php index 282188f..97d1d4d 100644 --- a/app/Controllers/Admin/Cloudflare/RecordController.php +++ b/app/Controllers/Admin/Cloudflare/RecordController.php @@ -2,10 +2,11 @@ namespace App\Controllers\Admin\Cloudflare; +use App\Controllers\CloudflareController; use App\Helpers\Cloudflare\RecordHelper; -use App\Services\Cloudflare\Record; use App\Models\Cloudflare\RecordModel; use App\Models\Cloudflare\ZoneModel; +use App\Services\Cloudflare\Record; use CodeIgniter\HTTP\DownloadResponse; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; diff --git a/app/Controllers/Admin/Cloudflare/ZoneController.php b/app/Controllers/Admin/Cloudflare/ZoneController.php index 2e75179..c019a58 100644 --- a/app/Controllers/Admin/Cloudflare/ZoneController.php +++ b/app/Controllers/Admin/Cloudflare/ZoneController.php @@ -2,11 +2,12 @@ namespace App\Controllers\Admin\Cloudflare; +use App\Controllers\CloudflareController; use App\Helpers\Cloudflare\ZoneHelper; -use App\Services\Cloudflare\Zone; -use App\Services\Cloudflare\Record; use App\Models\Cloudflare\AccountModel; use App\Models\Cloudflare\ZoneModel; +use App\Services\Cloudflare\Record; +use App\Services\Cloudflare\Zone; use CodeIgniter\HTTP\DownloadResponse; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; diff --git a/app/Controllers/UserController.php b/app/Controllers/AuthController.php similarity index 98% rename from app/Controllers/UserController.php rename to app/Controllers/AuthController.php index b088443..382cb6f 100644 --- a/app/Controllers/UserController.php +++ b/app/Controllers/AuthController.php @@ -2,18 +2,18 @@ namespace App\Controllers; -use App\Helpers\UserHelper; -use App\Libraries\MyAuth\GoogleAuth; -use App\Libraries\MyAuth\LocalAuth; use App\Libraries\MySocket\GoogleSocket\API as GoogleSocket; -use App\Models\UserModel; use CodeIgniter\HTTP\RedirectResponse; - use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; -class UserController extends FrontController +use App\Models\UserModel; +use App\Helpers\UserHelper; +use App\Libraries\MyAuth\GoogleAuth; +use App\Libraries\MyAuth\LocalAuth; + +class AuthController extends MVController { public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { diff --git a/app/Controllers/Cloudflare/FirewallController.php b/app/Controllers/Cloudflare/FirewallController.php new file mode 100644 index 0000000..9c5d6e6 --- /dev/null +++ b/app/Controllers/Cloudflare/FirewallController.php @@ -0,0 +1,55 @@ +class_name .= "Firewall"; + $this->class_path .= $this->class_name; + $this->title = lang("{$this->class_path}.title"); + } + final protected function getModel(): FirewallModel + { + if ($this->model === null) { + $this->model = new FirewallModel(); + } + return $this->model; + } + final protected function getMyLibrary(): Firewall + { + if (!isset($this->_myLibrays[$this->_zone_entity->getPK()])) { + $this->_myLibrays[$this->_zone_entity->getPK()] = new Firewall($this->_zone_entity); + } + return $this->_myLibrays[$this->_zone_entity->getPK()]; + } + //Trigger작업 + protected function trigger_process(mixed $uid): void + { + // //자신정보정의 + // $this->entity = $this->getModel()->getEntityByPK($uid); + // if ($this->entity === null) { + // throw new \Exception("{$uid} 정보를 찾을수 없습니다."); + // } + // //부모데이터정의 + // $this->_zone_entity = $this->getZoneModel()->getEntityByPK($this->entity->getParent()); + // //Socket처리 + // $this->entity = $this->getMyLibrary()->sync($this->entity); + log_message("notice", message: "Firewall Trigger 작업완료"); + } + public function trigger(mixed $uid): ResponseInterface + { + return $this->trigger_procedure($uid); + } +} diff --git a/app/Controllers/Cloudflare/RecordController.php b/app/Controllers/Cloudflare/RecordController.php new file mode 100644 index 0000000..14fc0bb --- /dev/null +++ b/app/Controllers/Cloudflare/RecordController.php @@ -0,0 +1,55 @@ +class_name .= "Record"; + $this->class_path .= $this->class_name; + $this->title = lang("{$this->class_path}.title"); + } + final protected function getModel(): RecordModel + { + if ($this->model === null) { + $this->model = new RecordModel(); + } + return $this->model; + } + final protected function getMyLibrary(): Record + { + if (!isset($this->_myLibrays[$this->_zone_entity->getPK()])) { + $this->_myLibrays[$this->_zone_entity->getPK()] = new Record($this->_zone_entity); + } + return $this->_myLibrays[$this->_zone_entity->getPK()]; + } + //Trigger작업 + protected function trigger_process(mixed $uid): void + { + // //자신정보정의 + // $this->entity = $this->getModel()->getEntityByPK($uid); + // if ($this->entity === null) { + // throw new \Exception("{$uid} 정보를 찾을수 없습니다."); + // } + // //부모데이터정의 + // $this->_zone_entity = $this->getZoneModel()->getEntityByPK($this->entity->getParent()); + // //Socket처리 + // $this->entity = $this->getMyLibrary()->sync($this->entity); + log_message("notice", "Record Trigger 작업완료"); + } + public function trigger(mixed $uid): ResponseInterface + { + return $this->trigger_procedure($uid); + } +} diff --git a/app/Controllers/Cloudflare/ZoneController.php b/app/Controllers/Cloudflare/ZoneController.php new file mode 100644 index 0000000..162bb8c --- /dev/null +++ b/app/Controllers/Cloudflare/ZoneController.php @@ -0,0 +1,55 @@ +class_name .= "Zone"; + $this->class_path .= $this->class_name; + $this->title = lang("{$this->class_path}.title"); + } + final protected function getModel(): ZoneModel + { + if ($this->model === null) { + $this->model = new ZoneModel(); + } + return $this->model; + } + final protected function getMyLibrary(): Zone + { + if (!isset($this->_myLibrays[$this->_account_entity->getPK()])) { + $this->_myLibrays[$this->_account_entity->getPK()] = new Zone($this->_account_entity); + } + return $this->_myLibrays[$this->_account_entity->getPK()]; + } + //Trigger작업 + protected function trigger_process(mixed $uid): void + { + // //자신정보정의 + // $this->entity = $this->getModel()->getEntityByPK($uid); + // if ($this->entity === null) { + // throw new \Exception("{$uid} 정보를 찾을수 없습니다."); + // } + // //부모데이터정의 + // $this->_account_entity = $this->getAccountModel()->getEntityByPK($this->entity->getParent()); + // //Socket처리 + // $this->entity = $this->getMyLibrary()->sync($this->entity); + log_message("notice", "Zone Trigger 작업완료"); + } + public function trigger(mixed $uid): ResponseInterface + { + return $this->trigger_procedure($uid); + } +} diff --git a/app/Controllers/Admin/Cloudflare/CloudflareController.php b/app/Controllers/CloudflareController.php similarity index 77% rename from app/Controllers/Admin/Cloudflare/CloudflareController.php rename to app/Controllers/CloudflareController.php index 14049b2..52b4ac9 100644 --- a/app/Controllers/Admin/Cloudflare/CloudflareController.php +++ b/app/Controllers/CloudflareController.php @@ -1,8 +1,7 @@ back()->with('error', __FUNCTION__ . " 실패하였습니다.\n" . $e->getMessage()); } } + //Trigger + protected function trigger_process(mixed $uid): void {} + final protected function trigger_procedure(mixed $uid): ResponseInterface + { + //Transaction Start + $this->getModel()->transStart(); + try { + // 여기에 필요한 로직을 구현하세요 + $this->trigger_process($uid); + $this->message = "{$this->class_name}: Trigger 작업이 완료되었습니다."; + $this->getModel()->transCommit(); + log_message("notice", __FUNCTION__ . $this->message); + return $this->response->setJSON(['status' => 200, $this->message], 200); + } catch (\Exception $e) { + //Transaction Rollback + $this->getModel()->transRollback(); + log_message("error", $e->getMessage()); + return $this->response->setJSON(['status' => 500, 'message' => $e->getMessage()], 500); + } + } } diff --git a/app/Controllers/FrontController.php b/app/Controllers/Front/FrontController.php similarity index 93% rename from app/Controllers/FrontController.php rename to app/Controllers/Front/FrontController.php index 6eedae4..7fb0de0 100644 --- a/app/Controllers/FrontController.php +++ b/app/Controllers/Front/FrontController.php @@ -1,6 +1,6 @@