diff --git a/app/Config/Routes.php b/app/Config/Routes.php index a8a5dc3..233cc6d 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -25,6 +25,9 @@ $routes->get('/', 'Home::index'); $routes->group('/RSSFeed', function ($routes) { $routes->get('getITWorld', 'RSSFeedController::getITWorld'); }); +$routes->group('/Webhook', function ($routes) { + $routes->post('Cloudflare', 'WebhookController::cludflare'); +}); $routes->group('/user', function ($routes) { $routes->get('login', 'UserController::login_form'); $routes->post('login', 'UserController::login'); diff --git a/app/Controllers/WebhookController.php b/app/Controllers/WebhookController.php new file mode 100644 index 0000000..f990d4a --- /dev/null +++ b/app/Controllers/WebhookController.php @@ -0,0 +1,46 @@ +request->getJSON(); + + if (empty($jsonData)) { + return $this->response->setStatusCode(400)->setJSON([ + 'status' => 'error', + 'message' => 'Invalid JSON data' + ]); + } + + // 현재 시간 추가 + $logData = [ + 'timestamp' => date('Y-m-d H:i:s'), + 'data' => $jsonData + ]; + + // 파일 경로 설정 + $filePath = WRITEPATH . 'webhook.txt'; + + // 데이터를 JSON 형식으로 변환하고 새 줄 문자 추가 + $logEntry = json_encode($logData, JSON_PRETTY_PRINT) . "\n---\n"; + + // 파일에 데이터 추가 + if (file_put_contents($filePath, $logEntry, FILE_APPEND) === false) { + return $this->response->setStatusCode(500)->setJSON([ + 'status' => 'error', + 'message' => 'Failed to write to file' + ]); + } + + return $this->response->setJSON([ + 'status' => 'success', + 'message' => 'Webhook data logged successfully' + ]); + } +}