cfmgrv4 init...3
This commit is contained in:
parent
add1cb4b64
commit
7ee90f79f9
@ -11,20 +11,31 @@ $routes->addPlaceholder('uuid', '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}
|
|||||||
//authFilter는 추가적인 작업이 필요
|
//authFilter는 추가적인 작업이 필요
|
||||||
//1. app/Filters/AuthFilter.php
|
//1. app/Filters/AuthFilter.php
|
||||||
//2. Config/Filters.php -> $aliases = ['authFilter' => AuthFilter::class]
|
//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->get('/', 'Home::index');
|
||||||
$routes->group('/RSSFeed', function ($routes) {
|
$routes->group('/RSSFeed', function ($routes) {
|
||||||
$routes->get('getITWorld', 'RSSFeedController::getITWorld');
|
$routes->get('getITWorld', 'RSSFeedController::getITWorld');
|
||||||
});
|
});
|
||||||
$routes->group('/user', function ($routes) {
|
$routes->group('/user', function ($routes) {
|
||||||
$routes->get('login', 'UserController::login_form');
|
$routes->get('login', 'AuthController::login_form');
|
||||||
$routes->post('login', 'UserController::login');
|
$routes->post('login', 'AuthController::login');
|
||||||
$routes->get('google_login', 'UserController::google_login');
|
$routes->get('google_login', 'AuthController::google_login');
|
||||||
$routes->get('logout', 'UserController::logout');
|
$routes->get('logout', 'AuthController::logout');
|
||||||
});
|
});
|
||||||
$routes->group('cli', ['namespace' => 'App\Controllers\CLI'], function ($routes) {
|
$routes->group('/cloudflare', ['namespace' => 'App\Controllers\Cloudflare'], function ($routes) {
|
||||||
$routes->group('cloudflare', function ($routes) {
|
$routes->group('zone', function ($routes) {
|
||||||
$routes->cli('reload', 'Cloudflare::reload');
|
$routes->post('trigger/(:alphanum)', 'ZoneController::trigger/$1');
|
||||||
$routes->cli('reload/(:num)', 'Cloudflare::reload/$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) {
|
$routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:manager'], function ($routes) {
|
||||||
|
|||||||
@ -2,9 +2,10 @@
|
|||||||
|
|
||||||
namespace App\Controllers\Admin\Cloudflare;
|
namespace App\Controllers\Admin\Cloudflare;
|
||||||
|
|
||||||
|
use App\Controllers\CloudflareController;
|
||||||
use App\Helpers\Cloudflare\AccountHelper;
|
use App\Helpers\Cloudflare\AccountHelper;
|
||||||
use App\Services\Cloudflare\Account;
|
|
||||||
use App\Models\Cloudflare\AccountModel;
|
use App\Models\Cloudflare\AccountModel;
|
||||||
|
use App\Services\Cloudflare\Account;
|
||||||
use CodeIgniter\HTTP\DownloadResponse;
|
use CodeIgniter\HTTP\DownloadResponse;
|
||||||
use CodeIgniter\HTTP\RedirectResponse;
|
use CodeIgniter\HTTP\RedirectResponse;
|
||||||
use CodeIgniter\HTTP\RequestInterface;
|
use CodeIgniter\HTTP\RequestInterface;
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Controllers\Admin\Cloudflare;
|
namespace App\Controllers\Admin\Cloudflare;
|
||||||
|
|
||||||
|
use App\Controllers\CloudflareController;
|
||||||
use App\Helpers\Cloudflare\AuthHelper;
|
use App\Helpers\Cloudflare\AuthHelper;
|
||||||
use App\Models\Cloudflare\AuthModel;
|
use App\Models\Cloudflare\AuthModel;
|
||||||
use CodeIgniter\HTTP\DownloadResponse;
|
use CodeIgniter\HTTP\DownloadResponse;
|
||||||
|
|||||||
@ -2,10 +2,11 @@
|
|||||||
|
|
||||||
namespace App\Controllers\Admin\Cloudflare;
|
namespace App\Controllers\Admin\Cloudflare;
|
||||||
|
|
||||||
|
use App\Controllers\CloudflareController;
|
||||||
use App\Helpers\Cloudflare\FirewallHelper;
|
use App\Helpers\Cloudflare\FirewallHelper;
|
||||||
use App\Services\Cloudflare\Firewall;
|
|
||||||
use App\Models\Cloudflare\FirewallModel;
|
use App\Models\Cloudflare\FirewallModel;
|
||||||
use App\Models\Cloudflare\ZoneModel;
|
use App\Models\Cloudflare\ZoneModel;
|
||||||
|
use App\Services\Cloudflare\Firewall;
|
||||||
use CodeIgniter\HTTP\DownloadResponse;
|
use CodeIgniter\HTTP\DownloadResponse;
|
||||||
use CodeIgniter\HTTP\RedirectResponse;
|
use CodeIgniter\HTTP\RedirectResponse;
|
||||||
use CodeIgniter\HTTP\RequestInterface;
|
use CodeIgniter\HTTP\RequestInterface;
|
||||||
|
|||||||
@ -2,10 +2,11 @@
|
|||||||
|
|
||||||
namespace App\Controllers\Admin\Cloudflare;
|
namespace App\Controllers\Admin\Cloudflare;
|
||||||
|
|
||||||
|
use App\Controllers\CloudflareController;
|
||||||
use App\Helpers\Cloudflare\RecordHelper;
|
use App\Helpers\Cloudflare\RecordHelper;
|
||||||
use App\Services\Cloudflare\Record;
|
|
||||||
use App\Models\Cloudflare\RecordModel;
|
use App\Models\Cloudflare\RecordModel;
|
||||||
use App\Models\Cloudflare\ZoneModel;
|
use App\Models\Cloudflare\ZoneModel;
|
||||||
|
use App\Services\Cloudflare\Record;
|
||||||
use CodeIgniter\HTTP\DownloadResponse;
|
use CodeIgniter\HTTP\DownloadResponse;
|
||||||
use CodeIgniter\HTTP\RedirectResponse;
|
use CodeIgniter\HTTP\RedirectResponse;
|
||||||
use CodeIgniter\HTTP\RequestInterface;
|
use CodeIgniter\HTTP\RequestInterface;
|
||||||
|
|||||||
@ -2,11 +2,12 @@
|
|||||||
|
|
||||||
namespace App\Controllers\Admin\Cloudflare;
|
namespace App\Controllers\Admin\Cloudflare;
|
||||||
|
|
||||||
|
use App\Controllers\CloudflareController;
|
||||||
use App\Helpers\Cloudflare\ZoneHelper;
|
use App\Helpers\Cloudflare\ZoneHelper;
|
||||||
use App\Services\Cloudflare\Zone;
|
|
||||||
use App\Services\Cloudflare\Record;
|
|
||||||
use App\Models\Cloudflare\AccountModel;
|
use App\Models\Cloudflare\AccountModel;
|
||||||
use App\Models\Cloudflare\ZoneModel;
|
use App\Models\Cloudflare\ZoneModel;
|
||||||
|
use App\Services\Cloudflare\Record;
|
||||||
|
use App\Services\Cloudflare\Zone;
|
||||||
use CodeIgniter\HTTP\DownloadResponse;
|
use CodeIgniter\HTTP\DownloadResponse;
|
||||||
use CodeIgniter\HTTP\RedirectResponse;
|
use CodeIgniter\HTTP\RedirectResponse;
|
||||||
use CodeIgniter\HTTP\RequestInterface;
|
use CodeIgniter\HTTP\RequestInterface;
|
||||||
|
|||||||
@ -2,18 +2,18 @@
|
|||||||
|
|
||||||
namespace App\Controllers;
|
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\Libraries\MySocket\GoogleSocket\API as GoogleSocket;
|
||||||
use App\Models\UserModel;
|
|
||||||
use CodeIgniter\HTTP\RedirectResponse;
|
use CodeIgniter\HTTP\RedirectResponse;
|
||||||
|
|
||||||
use CodeIgniter\HTTP\RequestInterface;
|
use CodeIgniter\HTTP\RequestInterface;
|
||||||
use CodeIgniter\HTTP\ResponseInterface;
|
use CodeIgniter\HTTP\ResponseInterface;
|
||||||
use Psr\Log\LoggerInterface;
|
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)
|
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
||||||
{
|
{
|
||||||
55
app/Controllers/Cloudflare/FirewallController.php
Normal file
55
app/Controllers/Cloudflare/FirewallController.php
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Controllers\Admin\Cloudflare;
|
||||||
|
|
||||||
|
use App\Controllers\CloudflareController;
|
||||||
|
use CodeIgniter\HTTP\RequestInterface;
|
||||||
|
use CodeIgniter\HTTP\ResponseInterface;
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
|
use App\Models\Cloudflare\FirewallModel;
|
||||||
|
use App\Services\Cloudflare\Firewall;
|
||||||
|
|
||||||
|
class FirewallController extends CloudflareController
|
||||||
|
{
|
||||||
|
private $_zone_entity = null;
|
||||||
|
private $_myLibrays = [];
|
||||||
|
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
||||||
|
{
|
||||||
|
parent::initController($request, $response, $logger);
|
||||||
|
$this->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);
|
||||||
|
}
|
||||||
|
}
|
||||||
55
app/Controllers/Cloudflare/RecordController.php
Normal file
55
app/Controllers/Cloudflare/RecordController.php
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Controllers\Admin\Cloudflare;
|
||||||
|
|
||||||
|
use App\Controllers\CloudflareController;
|
||||||
|
use CodeIgniter\HTTP\RequestInterface;
|
||||||
|
use CodeIgniter\HTTP\ResponseInterface;
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
|
use App\Models\Cloudflare\RecordModel;
|
||||||
|
use App\Services\Cloudflare\Record;
|
||||||
|
|
||||||
|
class RecordController extends CloudflareController
|
||||||
|
{
|
||||||
|
private $_zone_entity = null;
|
||||||
|
private $_myLibrays = [];
|
||||||
|
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
||||||
|
{
|
||||||
|
parent::initController($request, $response, $logger);
|
||||||
|
$this->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);
|
||||||
|
}
|
||||||
|
}
|
||||||
55
app/Controllers/Cloudflare/ZoneController.php
Normal file
55
app/Controllers/Cloudflare/ZoneController.php
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Controllers\Admin\Cloudflare;
|
||||||
|
|
||||||
|
use App\Controllers\CloudflareController;
|
||||||
|
use CodeIgniter\HTTP\RequestInterface;
|
||||||
|
use CodeIgniter\HTTP\ResponseInterface;
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
|
use App\Models\Cloudflare\ZoneModel;
|
||||||
|
use App\Services\Cloudflare\Zone;
|
||||||
|
|
||||||
|
class ZoneController extends CloudflareController
|
||||||
|
{
|
||||||
|
private $_account_entity = null;
|
||||||
|
private $_myLibrays = [];
|
||||||
|
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
||||||
|
{
|
||||||
|
parent::initController($request, $response, $logger);
|
||||||
|
$this->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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,8 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Controllers\Admin\Cloudflare;
|
namespace App\Controllers;
|
||||||
|
|
||||||
use App\Controllers\Admin\AdminController;
|
|
||||||
use App\Models\Cloudflare\AccountModel;
|
use App\Models\Cloudflare\AccountModel;
|
||||||
use App\Models\Cloudflare\AuthModel;
|
use App\Models\Cloudflare\AuthModel;
|
||||||
use App\Models\Cloudflare\RecordModel;
|
use App\Models\Cloudflare\RecordModel;
|
||||||
@ -12,7 +11,7 @@ use CodeIgniter\HTTP\RequestInterface;
|
|||||||
use CodeIgniter\HTTP\ResponseInterface;
|
use CodeIgniter\HTTP\ResponseInterface;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
abstract class CloudflareController extends AdminController
|
abstract class CloudflareController extends MVController
|
||||||
{
|
{
|
||||||
private $_authModel = null;
|
private $_authModel = null;
|
||||||
private $_accountModel = null;
|
private $_accountModel = null;
|
||||||
@ -91,4 +90,24 @@ abstract class CloudflareController extends AdminController
|
|||||||
return redirect()->back()->with('error', __FUNCTION__ . " 실패하였습니다.\n" . $e->getMessage());
|
return redirect()->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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Controllers;
|
namespace App\Controllers\Front;
|
||||||
|
|
||||||
use App\Controllers\MVController;
|
use App\Controllers\MVController;
|
||||||
use CodeIgniter\HTTP\RequestInterface;
|
use CodeIgniter\HTTP\RequestInterface;
|
||||||
@ -4,7 +4,7 @@ namespace App\Controllers;
|
|||||||
|
|
||||||
use CodeIgniter\Controller;
|
use CodeIgniter\Controller;
|
||||||
|
|
||||||
class RSSFeedController extends Controller
|
class RSSFeedController extends CommonController
|
||||||
{
|
{
|
||||||
public function getITWorld()
|
public function getITWorld()
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user