From bbc035fea348bc953b4e2f24a060ac4bfa41d85c Mon Sep 17 00:00:00 2001 From: velz Date: Fri, 9 Feb 2024 12:44:43 +0530 Subject: [PATCH] FILES_LOGGER_HELPER_ADDED --- app/Config/Autoload.php | 1 + app/Config/Routes.php | 4 +- app/Config/Services.php | 21 +++++++ app/Controllers/BaseController.php | 1 + app/Controllers/LoginController.php | 5 +- app/Controllers/UserController.php | 9 +++ app/Filters/HttpRequestLog.php | 22 +++---- app/Helpers/HttpRequestHelper.php | 25 ++++++++ app/Helpers/session_helper.php | 23 +++++++- app/Helpers/uuid_helper.php | 28 ++++----- app/Libraries/DataServiceSqlite.php | 89 +++++++++++++++++++++++++++++ app/Libraries/MyLogger.php | 53 +++++++++++++++++ writable/cache/.gitkeep | 11 ++++ writable/debugbar/.gitkeep | 11 ++++ writable/logs/.gitkeep | 11 ++++ writable/session/.gitkeep | 11 ++++ writable/uploads/.gitkeep | 11 ++++ 17 files changed, 302 insertions(+), 34 deletions(-) create mode 100644 app/Helpers/HttpRequestHelper.php create mode 100644 app/Libraries/DataServiceSqlite.php create mode 100644 app/Libraries/MyLogger.php create mode 100644 writable/cache/.gitkeep create mode 100644 writable/logs/.gitkeep create mode 100644 writable/session/.gitkeep create mode 100644 writable/uploads/.gitkeep diff --git a/app/Config/Autoload.php b/app/Config/Autoload.php index a01b35cc..62937931 100755 --- a/app/Config/Autoload.php +++ b/app/Config/Autoload.php @@ -47,6 +47,7 @@ class Autoload extends AutoloadConfig public $psr4 = [ APP_NAMESPACE => APPPATH, // For custom app namespace 'Config' => APPPATH . 'Config', + 'Helpers' => APPPATH . 'Helpers' ]; /** diff --git a/app/Config/Routes.php b/app/Config/Routes.php index b0a9deb0..9d1e8141 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -7,9 +7,9 @@ use CodeIgniter\Router\RouteCollection; */ // $routes->get('/', 'LoginController::index'); $routes->get('/test', 'Home::test'); -$routes->get('/login', 'LoginController::index'); +$routes->get('/login', 'LoginController::index');///auth/google $routes->get('/logout', 'LoginController::logout'); -$routes->get('/LoginController/receiveGoogleOAuthResponse', 'LoginController::receiveGoogleOAuthResponse'); +$routes->get('/oauth2callback', 'LoginController::receiveGoogleOAuthResponse'); $routes->group("/user", ["filter" => "authMVC"], function($routes){ diff --git a/app/Config/Services.php b/app/Config/Services.php index 797c4e24..e9a21d37 100644 --- a/app/Config/Services.php +++ b/app/Config/Services.php @@ -4,6 +4,8 @@ namespace Config; use CodeIgniter\Config\BaseService; use App\Libraries\Slug; +use App\Libraries\MyLogger; +use App\Libraries\DataServiceSqlite; use App\Controllers\Home; /** @@ -39,5 +41,24 @@ class Services extends BaseService return new Home(); } + + public static function mylogger($getShared = true) + { + if ($getShared) { + return static::getSharedInstance('mylogger'); + } + + return new MyLogger(); + } + + + public static function dataServiceSqlite($getShared = true) + { + if ($getShared) { + return static::getSharedInstance('dataServiceSqlite'); + } + + return new DataServiceSqlite(); + } } diff --git a/app/Controllers/BaseController.php b/app/Controllers/BaseController.php index a3cb2655..c53dc7bb 100644 --- a/app/Controllers/BaseController.php +++ b/app/Controllers/BaseController.php @@ -46,6 +46,7 @@ abstract class BaseController extends Controller /** * @return void */ + protected $session; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { // Do Not Edit This Line diff --git a/app/Controllers/LoginController.php b/app/Controllers/LoginController.php index bf1ffe46..5de0cb5e 100644 --- a/app/Controllers/LoginController.php +++ b/app/Controllers/LoginController.php @@ -14,7 +14,9 @@ class LoginController extends BaseController public function index(){ - $isLoggedIn = session()->get('isLoggedIn'); + // $session_data = ['isLoggedIn' => True ,'userid' => '4']; + // set_session_data($session_data); + $isLoggedIn = check_session(); if ($isLoggedIn) { return redirect()->to(base_url('/dashboard/view')); @@ -25,6 +27,7 @@ class LoginController extends BaseController public function receiveGoogleOAuthResponse() { + //echo 'DONE';die(); $UserModel = new UserModal(); if ($this->request->getGet('code')) { $code = (string) $this->request->getGet('code'); diff --git a/app/Controllers/UserController.php b/app/Controllers/UserController.php index ccb8e578..a8dc7af7 100644 --- a/app/Controllers/UserController.php +++ b/app/Controllers/UserController.php @@ -15,9 +15,18 @@ use App\Models\TeamsModal; class UserController extends AdminController { + + protected $myLogger; + public function __construct() + { + // helper('utility'); + set_session_context('User'); + $this->myLogger = \Config\Services::mylogger(); + } public function list() { + $this->myLogger->logme('error','list {data} called',['data' => '9638527410']); $model = new UserModal(); $data['UserList'] = $model->where('is_active', 1)->orderBy('id', 'DESC')->findAll(); echo view('layout/header'); diff --git a/app/Filters/HttpRequestLog.php b/app/Filters/HttpRequestLog.php index 72a5a552..d17ad777 100644 --- a/app/Filters/HttpRequestLog.php +++ b/app/Filters/HttpRequestLog.php @@ -9,26 +9,20 @@ class HttpRequestLog implements FilterInterface { public function before(RequestInterface $request, $arguments = null) { - log_message('info', 'HttpRequestLog before'); + // log_message('info', 'HttpRequestLog before'); $uuid = generate_uuid(); + // echo $uuid;//die(); set_session_uuid($uuid); - // echo $uuid.'
'; - // $slug = \Config\Services::slug(); - // $home = \Config\Services::home(); - // echo $home->testService(); - // // echo !check_session();// print_r($slug);die(); - // echo $slug->slugify('www.googl.com article no 5');die(); - - // echo 'before HttpRequestLog'.'
' + $context = 'HTTP REQUEST'; + $log = \Config\Services::mylogger(); + $message = '{ip} - {platform} - {browser} - {method} - {endpoint} - {getparams} - {postparams} - REQ RECEIVED'; + $log->logme('ERROR',$message,['context' => $context],1); + ; } public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { - // Do something here - // log_message('info', 'HttpRequestLog after'); - // echo 'last HttpRequestLog'.'
'; - // $this->session = \Config\Services::session(); - // echo $this->session->get('uuid'); + } } \ No newline at end of file diff --git a/app/Helpers/HttpRequestHelper.php b/app/Helpers/HttpRequestHelper.php new file mode 100644 index 00000000..9850d42b --- /dev/null +++ b/app/Helpers/HttpRequestHelper.php @@ -0,0 +1,25 @@ + $request->getIPAddress(), + 'platform' => $request->getUserAgent()->getPlatform(), + 'browser' => ($request->getUserAgent()->getBrowser().' '.$request->getUserAgent()->getVersion()), + 'method' => $request->getMethod(), + 'endpoint' => $request->uri->getPath(), + 'getparams' => $request->uri->getSegments(), + 'postparams' => $request->getPost() + ]; + + $data['method'] = (isset($data['method']) ? strtoupper($data['method']) : $data['method']); + $data['getparams'] = is_array($data['getparams']) ? json_encode($data['getparams']) : $data['getparams']; + $data['postparams'] = is_array($data['postparams']) ? json_encode($data['postparams']) : $data['postparams']; + return $data; + } +} diff --git a/app/Helpers/session_helper.php b/app/Helpers/session_helper.php index 8d568080..b42f04e7 100644 --- a/app/Helpers/session_helper.php +++ b/app/Helpers/session_helper.php @@ -50,7 +50,6 @@ if (!function_exists('check_permission')) { if (!function_exists('set_session_uuid')) { function set_session_uuid($uuid) { - // $CI =& get_instance(); $session = \Config\Services::session(); $session->set('uuid', $uuid); } @@ -59,9 +58,8 @@ if (!function_exists('set_session_uuid')) { if (!function_exists('get_session_uuid')) { function get_session_uuid() { - // $CI =& get_instance(); $session = \Config\Services::session(); - $session->get('uuid'); + return $session->get('uuid'); } } @@ -73,3 +71,22 @@ if (!function_exists('set_session')) { $session->set($data); } } + + +if (!function_exists('set_session_context')) { + function set_session_context($context) + { + // $CI =& get_instance(); + $session = \Config\Services::session(); + $session->set('context',$context); + } +} + +if (!function_exists('get_session_context')) { + function get_session_context() + { + // $CI =& get_instance(); + $session = \Config\Services::session(); + return $session->get('context'); + } +} diff --git a/app/Helpers/uuid_helper.php b/app/Helpers/uuid_helper.php index 4333047a..660f75e1 100644 --- a/app/Helpers/uuid_helper.php +++ b/app/Helpers/uuid_helper.php @@ -2,18 +2,18 @@ // File: app/Helpers/Uuid_helper.php -if (!function_exists('generate_uuid')) { - function generate_uuid($version = 4, $format = 'hex') - { - $data = random_bytes(16); - // echo $data.'
'; - // Set version to 0100 - $data[6] = chr(ord($data[6]) & 0x0f | 0x40); - // Set bits 6-7 to 10 - $data[8] = chr(ord($data[8]) & 0x3f | 0x80); +// if (!function_exists('generate_uuid')) { +// function generate_uuid($version = 4, $format = 'hex') +// { +// $data = random_bytes(16); +// // echo $data.'
'; +// // Set version to 0100 +// $data[6] = chr(ord($data[6]) & 0x0f | 0x40); +// // Set bits 6-7 to 10 +// $data[8] = chr(ord($data[8]) & 0x3f | 0x80); - // Output the 36 character UUID. - $uuid = vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4)); - return $uuid; - } -} +// // Output the 36 character UUID. +// $uuid = vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4)); +// return $uuid; +// } +// } diff --git a/app/Libraries/DataServiceSqlite.php b/app/Libraries/DataServiceSqlite.php new file mode 100644 index 00000000..226cba32 --- /dev/null +++ b/app/Libraries/DataServiceSqlite.php @@ -0,0 +1,89 @@ +sqliteDb = new PDO('sqlite:' . $dbPath); + $this->sqliteDb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $this->createDefaultTable(); + } catch (\PDOException $e) { + // Database doesn't exist, create it + log_message('error', 'SQLite DB not found: ' . $e->getMessage()); + try { + log_message('error', 'Creating SQLite DB: '); + $this->sqliteDb = new PDO('sqlite:' . $dbPath); + $this->sqliteDb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + // Create default table + $this->createDefaultTable(); + log_message('error', 'Creating SQLite DB doné'); + } catch (\PDOException $e) { + log_message('error', 'Failed to create SQLite database: ' . $e->getMessage()); + throw $e; // Re-throw to allow for further handling + } + } + } + + // ... other methods ... + + protected function createDefaultTable() + { + $sql = "CREATE TABLE IF NOT EXISTS http ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + uuid TEXT, + ip TEXT, + platform TEXT, + browser TEXT, + method TEXT, + endpoint TEXT, + getparams TEXT, + postparams TEXT, + createdon DATETIME DEFAULT CURRENT_TIMESTAMP + )"; + + $this->sqliteDb->exec($sql); + + $sql = "CREATE TABLE IF NOT EXISTS log ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + context TEXT, + uuid TEXT, + msg TEXT, + createdon DATETIME DEFAULT CURRENT_TIMESTAMP + )"; + + $this->sqliteDb->exec($sql); + } + + public function insertData(array $data, string $tableName): bool + { + log_message('error', 'SQLite insert called: '); + unset($data['context']); + $columns = implode(', ', array_keys($data)); + // print_r($columns); + $placeholders = implode(', ', array_fill(0, count($data), '?')); + + $sql = "INSERT INTO $tableName ($columns) VALUES ($placeholders)"; + + try { + $stmt = $this->sqliteDb->prepare($sql); + $stmt->execute(array_values($data)); + return true; + } catch (\PDOException $e) { + log_message('error', 'SQLite insert failed: ' . $e->getMessage()); + return false; + } + } + +} + diff --git a/app/Libraries/MyLogger.php b/app/Libraries/MyLogger.php new file mode 100644 index 00000000..efa401d5 --- /dev/null +++ b/app/Libraries/MyLogger.php @@ -0,0 +1,53 @@ + get_session_uuid()]); + // print_r($context);die(); + // echo isset($context['context']) ? $context['context'] : $this->context;die(); + $context['context'] = isset($context['context']) ? $context['context'] : get_session_context(); + + if($type == 1) //http log only + { + $path = WRITEPATH . 'logs/http'; + $fileHandler = new FileHandler(['path' => $path]); + //get current request info + $requestInfo = HttpRequestHelper::getRequestInfo(); + $context = array_merge($context,$requestInfo); + // print_r($context);//die(); + $message = preg_replace_callback('/\{(.*?)\}/', function($matches) use ($context) { return $context[$matches[1]]; }, $message); + // echo $message;die(); + $fileHandler->handle($level,$message); + + + } + + if($type == 0) // default CI log + { + log_message($level,$message,$context); + + } + + } + + +} diff --git a/writable/cache/.gitkeep b/writable/cache/.gitkeep new file mode 100644 index 00000000..b702fbc3 --- /dev/null +++ b/writable/cache/.gitkeep @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/writable/debugbar/.gitkeep b/writable/debugbar/.gitkeep index e69de29b..b702fbc3 100755 --- a/writable/debugbar/.gitkeep +++ b/writable/debugbar/.gitkeep @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/writable/logs/.gitkeep b/writable/logs/.gitkeep new file mode 100644 index 00000000..b702fbc3 --- /dev/null +++ b/writable/logs/.gitkeep @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/writable/session/.gitkeep b/writable/session/.gitkeep new file mode 100644 index 00000000..b702fbc3 --- /dev/null +++ b/writable/session/.gitkeep @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/writable/uploads/.gitkeep b/writable/uploads/.gitkeep new file mode 100644 index 00000000..b702fbc3 --- /dev/null +++ b/writable/uploads/.gitkeep @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + +