From 81f35011574f85a665f3c76d27a5349b99c77247 Mon Sep 17 00:00:00 2001 From: DevSoftTech Server Date: Wed, 14 Oct 2026 10:27:32 +0530 Subject: [PATCH] fix(security): implement WASA compliance hardening and vulnerability remediation --- .gitignore | 1 + app/Config/App.php | 2 +- app/Config/Cookie.php | 9 + app/Config/Filters.php | 26 +- app/Config/Security.php | 2 +- app/Config/Session.php | 2 +- app/Controllers/AbdmFhirInspector.php | 28 + app/Controllers/Api/v1/DoctorApi.php | 17 + app/Controllers/Api/v1/NursingApi.php | 17 + app/Controllers/Billing/CaseMaster.php | 30 +- app/Controllers/DoctorDocument.php | 20 +- app/Controllers/HealthplixCallback.php | 4 +- app/Controllers/HealthplixGateway.php | 21 + app/Controllers/OcasePathLap.php | 12 +- app/Controllers/Patient.php | 18 +- app/Controllers/SystemOps.php | 48 +- app/Views/Invoice/org_case_payment.php | 34 +- composer.lock | 29 +- har_1.txt | 813 ------------------------- public/setup_fs.php | 119 ---- public/uploads/.htaccess | 27 + upload.exp | 5 - writable/setup_db_complete.lock | 1 + 23 files changed, 266 insertions(+), 1019 deletions(-) delete mode 100644 har_1.txt delete mode 100644 public/setup_fs.php create mode 100644 public/uploads/.htaccess delete mode 100644 upload.exp create mode 100644 writable/setup_db_complete.lock diff --git a/.gitignore b/.gitignore index e557813..073a6bf 100644 --- a/.gitignore +++ b/.gitignore @@ -141,6 +141,7 @@ NiceAdmin-pro/ public/uploads/* !public/uploads/.gitkeep +!public/uploads/.htaccess # Always allow branding assets to be committed when present !public/assets/ diff --git a/app/Config/App.php b/app/Config/App.php index 71d8117..7114247 100644 --- a/app/Config/App.php +++ b/app/Config/App.php @@ -221,7 +221,7 @@ class App extends BaseConfig * secure, the user will be redirected to a secure version of the page * and the HTTP Strict Transport Security (HSTS) header will be set. */ - public bool $forceGlobalSecureRequests = false; + public bool $forceGlobalSecureRequests = (ENVIRONMENT === 'production'); /** * -------------------------------------------------------------------------- diff --git a/app/Config/Cookie.php b/app/Config/Cookie.php index 3bad184..f985e46 100644 --- a/app/Config/Cookie.php +++ b/app/Config/Cookie.php @@ -56,6 +56,15 @@ class Cookie extends BaseConfig */ public bool $secure = false; + public function __construct() + { + parent::__construct(); + + if (ENVIRONMENT === 'production' || (! empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')) { + $this->secure = true; + } + } + /** * -------------------------------------------------------------------------- * Cookie HTTPOnly diff --git a/app/Config/Filters.php b/app/Config/Filters.php index ccb9eb0..3eff990 100644 --- a/app/Config/Filters.php +++ b/app/Config/Filters.php @@ -74,25 +74,23 @@ class Filters extends BaseFilters public array $globals = [ 'before' => [ 'singleSession', - // 'honeypot', - // 'csrf', - // 'invalidchars', - ], - 'after' => [ - 'toolbar' => [ + 'invalidchars', + 'csrf' => [ 'except' => [ - 'Opd/*', - 'Opd_prescription/*', - 'billing/patient/abdm_*', - 'billing/patient/abdm_*/*', - 'AbdmHiu', - 'AbdmHiu/*', - 'AbdmGateway/*', 'api/*', + 'AbdmGateway/*', + 'AbdmHiu/*', + 'HealthplixCallback/*', + 'HealthplixGateway/*', + 'stt-proxy', + 'stt-proxy/*', ], ], // 'honeypot', - // 'secureheaders', + ], + 'after' => [ + 'secureheaders', + // 'honeypot', ], ]; diff --git a/app/Config/Security.php b/app/Config/Security.php index ee2bb9d..9096fcd 100644 --- a/app/Config/Security.php +++ b/app/Config/Security.php @@ -24,7 +24,7 @@ class Security extends BaseConfig * * Randomize the CSRF Token for added security. */ - public bool $tokenRandomize = false; + public bool $tokenRandomize = true; /** * -------------------------------------------------------------------------- diff --git a/app/Config/Session.php b/app/Config/Session.php index 2491286..d1bf80e 100644 --- a/app/Config/Session.php +++ b/app/Config/Session.php @@ -90,7 +90,7 @@ class Session extends BaseConfig * when auto-regenerating the session ID. When set to FALSE, the data * will be later deleted by the garbage collector. */ - public bool $regenerateDestroy = false; + public bool $regenerateDestroy = true; /** * -------------------------------------------------------------------------- diff --git a/app/Controllers/AbdmFhirInspector.php b/app/Controllers/AbdmFhirInspector.php index bd5ce3e..0f55ded 100644 --- a/app/Controllers/AbdmFhirInspector.php +++ b/app/Controllers/AbdmFhirInspector.php @@ -33,11 +33,27 @@ class AbdmFhirInspector extends BaseController } } + private function ensureAuthenticated() + { + if (! function_exists('auth') || ! auth()->loggedIn()) { + if ($this->request->isAJAX() || str_contains((string) $this->request->getHeaderLine('Accept'), 'application/json')) { + return $this->response->setStatusCode(401)->setJSON(['ok' => 0, 'error' => 'Authentication required']); + } + return redirect()->to(base_url('login'))->with('error', 'Please log in to access the FHIR Inspector.'); + } + + return null; + } + /** * Main page view for ABHA Filter & FHIR Inspector */ public function index() { + if ($deny = $this->ensureAuthenticated()) { + return $deny; + } + $filterAbha = trim((string) ($this->request->getGet('abha_address') ?? $this->request->getGet('abha') ?? '')); $patientId = (int) ($this->request->getGet('patient_id') ?? $this->request->getGet('id') ?? 0); $uhid = trim((string) ($this->request->getGet('uhid') ?? '')); @@ -59,6 +75,10 @@ class AbdmFhirInspector extends BaseController */ public function patientData() { + if ($deny = $this->ensureAuthenticated()) { + return $deny; + } + $patientId = (int) ($this->request->getGet('patient_id') ?? 0); $abhaAddress = trim((string) ($this->request->getGet('abha_address') ?? $this->request->getGet('abha') ?? '')); $pCode = trim((string) ($this->request->getGet('p_code') ?? $this->request->getGet('uhid') ?? '')); @@ -87,6 +107,10 @@ class AbdmFhirInspector extends BaseController */ public function gatewayCheck() { + if ($deny = $this->ensureAuthenticated()) { + return $deny; + } + $abha = trim((string) ($this->request->getGet('abha_address') ?? $this->request->getGet('abha') ?? '')); if ($abha === '') { return $this->response->setJSON(['ok' => 0, 'error_text' => 'ABHA address is required']); @@ -131,6 +155,10 @@ class AbdmFhirInspector extends BaseController */ public function previewBundle() { + if ($deny = $this->ensureAuthenticated()) { + return $deny; + } + $ref = trim((string) ($this->request->getGet('ref') ?? $this->request->getPost('ref') ?? $_GET['ref'] ?? $_REQUEST['ref'] ?? '')); $patientId = (int) ($this->request->getGet('patient_id') ?? $this->request->getPost('patient_id') ?? $_GET['patient_id'] ?? $_REQUEST['patient_id'] ?? 0); $abha = trim((string) ($this->request->getGet('abha') ?? $this->request->getPost('abha') ?? $_GET['abha'] ?? $_REQUEST['abha'] ?? '')); diff --git a/app/Controllers/Api/v1/DoctorApi.php b/app/Controllers/Api/v1/DoctorApi.php index fd88e70..6a1de2e 100644 --- a/app/Controllers/Api/v1/DoctorApi.php +++ b/app/Controllers/Api/v1/DoctorApi.php @@ -104,12 +104,29 @@ class DoctorApi extends BaseController ]); } + $clientIp = (string) $this->request->getIPAddress(); + $rateKey = 'doc_pin_' . md5($clientIp . '_' . $docId); + $cache = service('cache'); + $failedAttempts = (int) ($cache->get($rateKey) ?? 0); + if ($failedAttempts >= 5) { + return $this->response->setStatusCode(429)->setJSON([ + 'status' => 0, + 'message' => 'Too many failed PIN attempts. Account temporarily locked for 10 minutes.', + ]); + } + $isValid = password_verify($pin, $hashedPin) || ($pin === $hashedPin); if (! $isValid) { + $cache->save($rateKey, $failedAttempts + 1, 600); return $this->response->setStatusCode(401)->setJSON(['status' => 0, 'message' => 'Incorrect Security PIN']); } + $cache->delete($rateKey); + if (session_status() === PHP_SESSION_ACTIVE || ! session_id()) { + session()->set('pwa_auth_doctor_id', (int) $doctorRow->id); + } + return $this->response->setJSON([ 'status' => 1, 'message' => 'Authentication successful', diff --git a/app/Controllers/Api/v1/NursingApi.php b/app/Controllers/Api/v1/NursingApi.php index fd6de7b..7a431f0 100644 --- a/app/Controllers/Api/v1/NursingApi.php +++ b/app/Controllers/Api/v1/NursingApi.php @@ -150,12 +150,29 @@ class NursingApi extends BaseController ]); } + $clientIp = (string) $this->request->getIPAddress(); + $rateKey = 'nurse_pin_' . md5($clientIp . '_' . ($nurseRow['id'] ?? 0)); + $cache = service('cache'); + $failedAttempts = (int) ($cache->get($rateKey) ?? 0); + if ($failedAttempts >= 5) { + return $this->response->setStatusCode(429)->setJSON([ + 'status' => 0, + 'message' => 'Too many failed PIN attempts. Account temporarily locked for 10 minutes.', + ]); + } + $isValid = password_verify($pin, $hashedPin) || ($pin === $hashedPin); if (! $isValid) { + $cache->save($rateKey, $failedAttempts + 1, 600); return $this->response->setStatusCode(401)->setJSON(['status' => 0, 'message' => 'Incorrect Security PIN']); } + $cache->delete($rateKey); + if (session_status() === PHP_SESSION_ACTIVE || ! session_id()) { + session()->set('pwa_auth_nurse_id', (int) $nurseRow['id']); + } + return $this->response->setJSON([ 'status' => 1, 'message' => 'Authentication successful', diff --git a/app/Controllers/Billing/CaseMaster.php b/app/Controllers/Billing/CaseMaster.php index 739fb32..fc24555 100644 --- a/app/Controllers/Billing/CaseMaster.php +++ b/app/Controllers/Billing/CaseMaster.php @@ -706,9 +706,9 @@ class CaseMaster extends BaseController $invoiceId = (int) $invoiceItem[0]->inv_master_id; } - $data['invoiceDetails'] = $this->db->query('select i.*,t.group_desc from invoice_item i join hc_item_type t on i.item_type=t.itype_id where i.inv_master_id=' . $invoiceId)->getResult(); + $data['invoiceDetails'] = $this->db->query('select i.*,t.group_desc from invoice_item i join hc_item_type t on i.item_type=t.itype_id where i.inv_master_id = ?', [$invoiceId])->getResult(); $data['invoiceGtotal'] = $this->db->table('invoice_item')->selectSum('item_amount', 'Gtotal')->where('inv_master_id', $invoiceId)->get()->getResult(); - $data['invoice_master'] = $this->db->query("select *,(case payment_mode when 1 Then 'Cash' when 2 then 'Bank Card' when 3 then 'IPD Credit' when 4 then 'Org. Credit' else 'Pending' end) as Payment_type_str from invoice_master where id=" . $invoiceId)->getResult(); + $data['invoice_master'] = $this->db->query("select *,(case payment_mode when 1 Then 'Cash' when 2 then 'Bank Card' when 3 then 'IPD Credit' when 4 then 'Org. Credit' else 'Pending' end) as Payment_type_str from invoice_master where id = ?", [$invoiceId])->getResult(); $discountAmount = (float) ($data['invoice_master'][0]->discount_amount ?? 0); $correctionAmount = (float) ($data['invoice_master'][0]->correction_amount ?? 0); @@ -1131,18 +1131,18 @@ class CaseMaster extends BaseController $data['MedInvoice'] = $this->db->query('select sum(m.net_amount) as Med_Amount,o.id ,count(m.id) as no_inv from invoice_med_master m join ipd_master p join organization_case_master o on m.ipd_id=p.id and p.case_id=o.id and m.ipd_credit=1 and m.ipd_credit_type=1 - where o.id=' . $caseid . ' group by o.id')->getResult(); + where o.id = ? group by o.id', [$caseid])->getResult(); - $data['ipd_package'] = $this->db->query('SELECT p.* FROM ipd_package p JOIN ipd_master m ON p.ipd_id=m.id WHERE m.case_id=' . $caseid)->getResult(); + $data['ipd_package'] = $this->db->query('SELECT p.* FROM ipd_package p JOIN ipd_master m ON p.ipd_id=m.id WHERE m.case_id = ?', [$caseid])->getResult(); if (count($data['MedInvoice']) === 0) { $data['MedInvoice'] = $this->db->query('select sum(m.net_amount) as Med_Amount,o.id ,count(m.id) as no_inv from invoice_med_master m join organization_case_master o on m.case_id=o.id and m.case_credit=1 - where o.id=' . $caseid . ' group by o.id')->getResult(); + where o.id = ? group by o.id', [$caseid])->getResult(); } - $ipdMaster = $this->db->query('select p.* from ipd_master p join organization_case_master o on p.case_id=o.id where o.id=' . $caseid)->getResult(); + $ipdMaster = $this->db->query('select p.* from ipd_master p join organization_case_master o on p.case_id=o.id where o.id = ?', [$caseid])->getResult(); $tableHead = '' . ''; @@ -1284,10 +1284,10 @@ class CaseMaster extends BaseController $orgId = (int) $data['org_info'][0]->id; - $data['ipd_info'] = $this->db->query("select * from v_ipd_list where org_id='" . $orgId . "' ")->getResult(); + $data['ipd_info'] = $this->db->query("select * from v_ipd_list where org_id = ?", [$orgId])->getResult(); - $sql = "select *,if(gender=1,'Male','Female') as xgender from patient_master where id='" . $data['org_info'][0]->p_id . "' "; - $data['person_info'] = $this->db->query($sql)->getResult(); + $sql = "select *,if(gender=1,'Male','Female') as xgender from patient_master where id = ?"; + $data['person_info'] = $this->db->query($sql, [$data['org_info'][0]->p_id])->getResult(); $this->applyAge($data['person_info'], 'str_age'); return view('Invoice/org_case_payment', $data); @@ -1295,17 +1295,17 @@ class CaseMaster extends BaseController public function load_model_box(string $caseidcode) { - $data['org_info'] = $this->db->query("select * from organization_case_master where case_id_code='" . $caseidcode . "' ")->getResult(); + $data['org_info'] = $this->db->query("select * from organization_case_master where case_id_code = ?", [$caseidcode])->getResult(); if (empty($data['org_info'])) { return $this->response->setStatusCode(404)->setBody('Case not found'); } $orgId = (int) $data['org_info'][0]->id; - $data['ipd_info'] = $this->db->query("select * from v_ipd_list where org_id='" . $orgId . "' ")->getResult(); + $data['ipd_info'] = $this->db->query("select * from v_ipd_list where org_id = ?", [$orgId])->getResult(); - $sql = "select *,if(gender=1,'Male','Female') as xgender from patient_master where id='" . $data['org_info'][0]->p_id . "' "; - $data['person_info'] = $this->db->query($sql)->getResult(); + $sql = "select *,if(gender=1,'Male','Female') as xgender from patient_master where id = ?"; + $data['person_info'] = $this->db->query($sql, [$data['org_info'][0]->p_id])->getResult(); $this->applyAge($data['person_info'], 'str_age'); return view('Invoice/org_case_payment', $data); @@ -1340,7 +1340,7 @@ class CaseMaster extends BaseController if (! empty($orgInfo)) { $patientId = (int) $orgInfo[0]->p_id; - $personInfo = $this->db->query("select *,if(gender=1,'Male','Female') as xgender from patient_master where id='" . $patientId . "' ")->getResult(); + $personInfo = $this->db->query("select *,if(gender=1,'Male','Female') as xgender from patient_master where id = ?", [$patientId])->getResult(); $this->applyAge($personInfo, 'str_age'); $orgDate = $orgInfo[0]->insert_datetime; $patientName = $personInfo[0]->p_fname ?? ''; @@ -1403,7 +1403,7 @@ class CaseMaster extends BaseController if (! empty($orgInfo)) { $patientId = (int) $orgInfo[0]->p_id; - $personInfo = $this->db->query("select *,if(gender=1,'Male','Female') as xgender from patient_master where id='" . $patientId . "' ")->getResult(); + $personInfo = $this->db->query("select *,if(gender=1,'Male','Female') as xgender from patient_master where id = ?", [$patientId])->getResult(); $this->applyAge($personInfo, 'str_age'); $orgDate = $orgInfo[0]->insert_datetime; $patientName = $personInfo[0]->p_fname ?? ''; diff --git a/app/Controllers/DoctorDocument.php b/app/Controllers/DoctorDocument.php index 50f95a0..11a2195 100644 --- a/app/Controllers/DoctorDocument.php +++ b/app/Controllers/DoctorDocument.php @@ -512,15 +512,31 @@ class DoctorDocument extends BaseController } $origName = $file->getClientName(); - $ext = strtolower(pathinfo($origName, PATHINFO_EXTENSION) ?: 'pdf'); + $ext = strtolower(pathinfo($origName, PATHINFO_EXTENSION) ?: ''); + $allowedExts = ['pdf', 'jpg', 'jpeg', 'png', 'webp']; + if (! in_array($ext, $allowedExts, true)) { + return $this->response->setStatusCode(400)->setJSON([ + 'status' => 'error', + 'message' => 'Invalid file format. Only PDF, JPG, PNG, and WEBP files are allowed.', + ]); + } + $mimeType = $file->getClientMimeType() ?: 'application/pdf'; + $allowedMimes = ['application/pdf', 'image/jpeg', 'image/png', 'image/webp']; + if (! in_array($mimeType, $allowedMimes, true)) { + return $this->response->setStatusCode(400)->setJSON([ + 'status' => 'error', + 'message' => 'Invalid file type. Only PDF and image uploads are permitted.', + ]); + } $uploadDir = FCPATH . 'uploads' . DIRECTORY_SEPARATOR . 'nabh_ipd' . DIRECTORY_SEPARATOR; if (! is_dir($uploadDir)) { @mkdir($uploadDir, 0755, true); } - $newFileName = 'NABH_IPD_' . $ipdId . '_' . str_replace('-', '_', $nabhCategory) . '_' . date('Ymd_His') . '.' . $ext; + $safeCategory = preg_replace('/[^A-Za-z0-9_]/', '_', $nabhCategory); + $newFileName = 'NABH_IPD_' . $ipdId . '_' . $safeCategory . '_' . date('Ymd_His') . '_' . bin2hex(random_bytes(4)) . '.' . $ext; $file->move($uploadDir, $newFileName); $fileFullPath = $uploadDir . $newFileName; diff --git a/app/Controllers/HealthplixCallback.php b/app/Controllers/HealthplixCallback.php index 0797f11..0173753 100644 --- a/app/Controllers/HealthplixCallback.php +++ b/app/Controllers/HealthplixCallback.php @@ -12,9 +12,9 @@ class HealthplixCallback extends BaseController $expectedSecret = $this->resolveExpectedSecret(); $providedSecret = trim((string) $this->request->getHeaderLine('X-Healthplix-Secret')); - if ($expectedSecret !== '' && ! hash_equals($expectedSecret, $providedSecret)) { + if ($expectedSecret === '' || ! hash_equals($expectedSecret, $providedSecret)) { $this->logFetchEvent('error', 401, [ - 'message' => 'Invalid callback secret', + 'message' => 'Missing or invalid callback secret', 'payload_bytes' => strlen($rawBody), 'payload_keys' => array_keys($payload), ], 'Unauthorized callback request'); diff --git a/app/Controllers/HealthplixGateway.php b/app/Controllers/HealthplixGateway.php index 803a818..d86d795 100644 --- a/app/Controllers/HealthplixGateway.php +++ b/app/Controllers/HealthplixGateway.php @@ -6,8 +6,21 @@ use App\Libraries\HealthplixService; class HealthplixGateway extends BaseController { + private function ensureAuthenticated() + { + if (! function_exists('auth') || ! auth()->loggedIn()) { + return $this->response->setStatusCode(401)->setJSON(['ok' => 0, 'error_text' => 'Authentication required']); + } + + return null; + } + public function generateToken() { + if ($deny = $this->ensureAuthenticated()) { + return $deny; + } + if (! $this->request->isAJAX()) { return $this->response->setStatusCode(400)->setJSON(['ok' => 0, 'error_text' => 'Invalid request']); } @@ -30,6 +43,10 @@ class HealthplixGateway extends BaseController public function registerPatient() { + if ($deny = $this->ensureAuthenticated()) { + return $deny; + } + if (! $this->request->isAJAX()) { return $this->response->setStatusCode(400)->setJSON(['ok' => 0, 'error_text' => 'Invalid request']); } @@ -61,6 +78,10 @@ class HealthplixGateway extends BaseController public function bookAppointment() { + if ($deny = $this->ensureAuthenticated()) { + return $deny; + } + if (! $this->request->isAJAX()) { return $this->response->setStatusCode(400)->setJSON(['ok' => 0, 'error_text' => 'Invalid request']); } diff --git a/app/Controllers/OcasePathLap.php b/app/Controllers/OcasePathLap.php index 1164c1d..fe1474f 100644 --- a/app/Controllers/OcasePathLap.php +++ b/app/Controllers/OcasePathLap.php @@ -79,8 +79,8 @@ class OcasePathLap extends BaseController public function showinvoice(int $invoiceId) { - $sql = 'select i.*,t.desc from invoice_item i join hc_item_type t on i.item_type=t.itype_id where i.inv_master_id=' . $invoiceId; - $data['invoiceDetails'] = $this->db->query($sql)->getResult(); + $sql = 'select i.*,t.desc from invoice_item i join hc_item_type t on i.item_type=t.itype_id where i.inv_master_id = ?'; + $data['invoiceDetails'] = $this->db->query($sql, [$invoiceId])->getResult(); $data['invoiceGtotal'] = $this->db->table('invoice_item') ->selectSum('item_amount', 'Gtotal') @@ -97,8 +97,8 @@ class OcasePathLap extends BaseController return $this->response->setStatusCode(404)->setBody('Invoice not found'); } - $sql = 'select *,if(gender=1,\'Male\',\'Female\') as xgender from patient_master where id=' . (int) $data['invoice_master'][0]->attach_id; - $data['patient_master'] = $this->db->query($sql)->getResult(); + $sql = 'select *,if(gender=1,\'Male\',\'Female\') as xgender from patient_master where id = ?'; + $data['patient_master'] = $this->db->query($sql, [(int) $data['invoice_master'][0]->attach_id])->getResult(); $this->applyAge($data['patient_master']); $insCompId = (int) $data['invoice_master'][0]->insurance_id; @@ -119,7 +119,7 @@ class OcasePathLap extends BaseController ->get() ->getResult(); - $data['payment_history'] = $this->db->query('select sum(if(credit_debit>0,amount*-1,amount)) as paid_amount from payment_history where payof_type=2 and payof_id=' . $invoiceId)->getResult(); + $data['payment_history'] = $this->db->query('select sum(if(credit_debit>0,amount*-1,amount)) as paid_amount from payment_history where payof_type=2 and payof_id = ?', [$invoiceId])->getResult(); $discountAmount = (float) $data['invoice_master'][0]->discount_amount; $totalAmount = (float) ($data['invoiceGtotal'][0]->Gtotal ?? 0); @@ -378,7 +378,7 @@ class OcasePathLap extends BaseController ->get() ->getResult(); - $data['payment_history'] = $this->db->query('select *,(case payment_mode when 1 Then \'cash\' when 2 then \'Bank Card\' when 3 then \'Org Credit\' else \'Pending\' end) as Payment_type_str from payment_history where payof_type=2 and payof_id=' . $invoiceId)->getResult(); + $data['payment_history'] = $this->db->query('select *,(case payment_mode when 1 Then \'cash\' when 2 then \'Bank Card\' when 3 then \'Org Credit\' else \'Pending\' end) as Payment_type_str from payment_history where payof_type=2 and payof_id = ?', [$invoiceId])->getResult(); return view('Invoice/Organization_invoice_print_v', $data); } diff --git a/app/Controllers/Patient.php b/app/Controllers/Patient.php index a116c62..c43c277 100644 --- a/app/Controllers/Patient.php +++ b/app/Controllers/Patient.php @@ -3859,13 +3859,18 @@ class Patient extends BaseController $file = $this->request->getFile('upload_file'); if ($file && $file->isValid() && !$file->hasMoved()) { - $uploadPath = rtrim(FCPATH, '\\/') . '/uploads/patient'; - if (!is_dir($uploadPath)) { - mkdir($uploadPath, 0755, true); - } + $ext = strtolower((string) ($file->getClientExtension() ?: pathinfo((string) $file->getName(), PATHINFO_EXTENSION))); + $allowedExts = ['pdf', 'jpg', 'jpeg', 'png', 'webp', 'doc', 'docx']; + if (! in_array($ext, $allowedExts, true)) { + $message = 'Invalid file format. Upload PDF, image, or document only.'; + } else { + $uploadPath = rtrim(FCPATH, '\\/') . '/uploads/patient'; + if (!is_dir($uploadPath)) { + mkdir($uploadPath, 0755, true); + } - $newName = $file->getRandomName(); - if ($file->move($uploadPath, $newName)) { + $newName = $file->getRandomName(); + if ($file->move($uploadPath, $newName)) { $publicPath = '/uploads/patient/' . $newName; $insertId = $this->insertFileUploadRecord($pid, $docType, $publicPath, $file); @@ -3879,6 +3884,7 @@ class Patient extends BaseController } else { $message = 'Unable to save the file.'; } + } } elseif ($file && !$file->isValid()) { $message = $file->getErrorString(); } diff --git a/app/Controllers/SystemOps.php b/app/Controllers/SystemOps.php index 1c5c460..54e4680 100644 --- a/app/Controllers/SystemOps.php +++ b/app/Controllers/SystemOps.php @@ -7,8 +7,40 @@ use App\Libraries\SystemOperations; class SystemOps extends BaseController { - public function index(): string + private function ensureAdminAccess() { + if (! function_exists('auth') || ! auth()->loggedIn()) { + if ($this->request->isAJAX() || str_contains((string) $this->request->getHeaderLine('Accept'), 'application/json')) { + return $this->response->setStatusCode(401)->setJSON(['ok' => 0, 'error' => 'Authentication required']); + } + return redirect()->to(base_url('login'))->with('error', 'Authentication required.'); + } + + $user = auth()->user(); + $isAllowed = false; + if ($user && method_exists($user, 'inGroup')) { + $isAllowed = $user->inGroup('superadmin', 'admin', 'developer'); + } + if (! $isAllowed && $user && method_exists($user, 'can')) { + $isAllowed = $user->can('admin.settings'); + } + + if (! $isAllowed) { + if ($this->request->isAJAX() || str_contains((string) $this->request->getHeaderLine('Accept'), 'application/json')) { + return $this->response->setStatusCode(403)->setJSON(['ok' => 0, 'error' => 'Administrative privileges required']); + } + return $this->response->setStatusCode(403)->setBody('Access denied. Administrator privileges required.'); + } + + return null; + } + + public function index() + { + if ($deny = $this->ensureAdminAccess()) { + return $deny; + } + $ops = new SystemOperations(); $data = [ 'status' => $ops->collectStatus(), @@ -18,8 +50,12 @@ class SystemOps extends BaseController return view('Setting/Admin/system_ops', $data); } - public function panel(): string + public function panel() { + if ($deny = $this->ensureAdminAccess()) { + return $deny; + } + $ops = new SystemOperations(); $data = [ 'status' => $ops->collectStatus(), @@ -31,6 +67,10 @@ class SystemOps extends BaseController public function updateDirect() { + if ($deny = $this->ensureAdminAccess()) { + return $deny; + } + $ops = new SystemOperations(); $result = $ops->runUpdateDirect(); @@ -39,6 +79,10 @@ class SystemOps extends BaseController public function diagnose() { + if ($deny = $this->ensureAdminAccess()) { + return $deny; + } + $ops = new SystemOperations(); $diag = $ops->getGitDiagnosticsForWeb(); diff --git a/app/Views/Invoice/org_case_payment.php b/app/Views/Invoice/org_case_payment.php index 5fe45e7..54e6ecb 100644 --- a/app/Views/Invoice/org_case_payment.php +++ b/app/Views/Invoice/org_case_payment.php @@ -6,35 +6,35 @@

- Name :p_fname?> {p_rname?>} - / Age :str_age?> - / Gender :xgender?> - / P Code :p_code?> + Name :p_fname ?? '') ?> {p_rname ?? '') ?>} + / Age :str_age ?? '') ?> + / Gender :xgender ?? '') ?> + / P Code :p_code ?? '') ?>

- +

- Org Code :case_id_code?> - / Org. Name :insurance_company_name?> - / Card No :insurance_no?> - insurance_no_1?> - insurance_no_2?> + Org Code :case_id_code ?? '') ?> + / Org. Name :insurance_company_name ?? '') ?> + / Card No :insurance_no ?? '') ?> + insurance_no_1 ?? '') ?> + insurance_no_2 ?? '') ?>

- +
0){ ?>

- IPD Code :ipd_code?> - / Admit Date :str_register_date?> - / Dis. Date :str_discharge_date?> - / Charge Amt :charge_amount?> - / Medical Bill :med_amount?> + IPD Code :ipd_code ?? '') ?> + / Admit Date :str_register_date ?? '') ?> + / Dis. Date :str_discharge_date ?? '') ?> + / Charge Amt :charge_amount ?? '') ?> + / Medical Bill :med_amount ?? '') ?>

@@ -50,7 +50,7 @@
- +
diff --git a/composer.lock b/composer.lock index d933b6e..566edaf 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "codeigniter4/framework", - "version": "v4.7.0", + "version": "v4.7.5", "source": { "type": "git", "url": "https://github.com/codeigniter4/framework.git", - "reference": "e7753bc03f8b74af428f46b5e2bb74925487c930" + "reference": "a1f129d56df3278702a8d1048af955d0ebf68c03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/framework/zipball/e7753bc03f8b74af428f46b5e2bb74925487c930", - "reference": "e7753bc03f8b74af428f46b5e2bb74925487c930", + "url": "https://api.github.com/repos/codeigniter4/framework/zipball/a1f129d56df3278702a8d1048af955d0ebf68c03", + "reference": "a1f129d56df3278702a8d1048af955d0ebf68c03", "shasum": "" }, "require": { @@ -81,7 +81,7 @@ "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/codeigniter4/CodeIgniter4" }, - "time": "2026-02-01T20:39:35+00:00" + "time": "2026-10-09T15:41:56+00:00" }, { "name": "codeigniter4/settings", @@ -726,30 +726,29 @@ }, { "name": "setasign/fpdi", - "version": "v2.6.4", + "version": "v2.6.9", "source": { "type": "git", "url": "https://github.com/Setasign/FPDI.git", - "reference": "4b53852fde2734ec6a07e458a085db627c60eada" + "reference": "d97ade6368aa0b51b6316d5dc16a567e2bf60167" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Setasign/FPDI/zipball/4b53852fde2734ec6a07e458a085db627c60eada", - "reference": "4b53852fde2734ec6a07e458a085db627c60eada", + "url": "https://api.github.com/repos/Setasign/FPDI/zipball/d97ade6368aa0b51b6316d5dc16a567e2bf60167", + "reference": "d97ade6368aa0b51b6316d5dc16a567e2bf60167", "shasum": "" }, "require": { "ext-zlib": "*", - "php": "^7.1 || ^8.0" + "php": ">=7.2 <=8.6.99999" }, "conflict": { "setasign/tfpdf": "<1.31" }, "require-dev": { - "phpunit/phpunit": "^7", - "setasign/fpdf": "~1.8.6", + "phpunit/phpunit": "^8.5.52", + "setasign/fpdf": "^1.9.0", "setasign/tfpdf": "~1.33", - "squizlabs/php_codesniffer": "^3.5", "tecnickcom/tcpdf": "^6.8" }, "suggest": { @@ -786,7 +785,7 @@ ], "support": { "issues": "https://github.com/Setasign/FPDI/issues", - "source": "https://github.com/Setasign/FPDI/tree/v2.6.4" + "source": "https://github.com/Setasign/FPDI/tree/v2.6.9" }, "funding": [ { @@ -794,7 +793,7 @@ "type": "tidelift" } ], - "time": "2025-08-05T09:57:14+00:00" + "time": "2026-10-13T07:36:28+00:00" } ], "packages-dev": [ diff --git a/har_1.txt b/har_1.txt deleted file mode 100644 index df533e7..0000000 --- a/har_1.txt +++ /dev/null @@ -1,813 +0,0 @@ -{ - "log": { - "version": "1.2", - "creator": { - "name": "Firefox", - "version": "151.0.4" - }, - "browser": { - "name": "Firefox", - "version": "151.0.4" - }, - "pages": [ - { - "id": "page_1", - "pageTimings": { - "onContentLoad": -20878, - "onLoad": -20871 - }, - "startedDateTime": "2026-06-18T19:06:16.922+05:30", - "title": "http://localhost:8080/" - } - ], - "entries": [ - { - "startedDateTime": "2026-06-18T19:06:16.922+05:30", - "request": { - "bodySize": 0, - "method": "GET", - "url": "http://localhost:8080/billing/patient", - "httpVersion": "HTTP/1.1", - "headers": [ - { - "name": "Host", - "value": "localhost:8080" - }, - { - "name": "User-Agent", - "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:151.0) Gecko/20100101 Firefox/151.0" - }, - { - "name": "Accept", - "value": "text/html, */*; q=0.01" - }, - { - "name": "Accept-Language", - "value": "en-US,en;q=0.9" - }, - { - "name": "Accept-Encoding", - "value": "gzip, deflate, br, zstd" - }, - { - "name": "X-Requested-With", - "value": "XMLHttpRequest" - }, - { - "name": "DNT", - "value": "1" - }, - { - "name": "Connection", - "value": "keep-alive" - }, - { - "name": "Referer", - "value": "http://localhost:8080/" - }, - { - "name": "Cookie", - "value": "remember=dd1d2f566bb10ef05bb479aa%3A3cd366a8ca2a0aa6aaf2ae99d138c4f0cbdcf8f4; debug-bar-tab=ci-history; debug-bar-state=minimized; ci_session=bb58484b789171028415662d770d2a77" - }, - { - "name": "Sec-Fetch-Dest", - "value": "empty" - }, - { - "name": "Sec-Fetch-Mode", - "value": "cors" - }, - { - "name": "Sec-Fetch-Site", - "value": "same-origin" - } - ], - "cookies": [ - { - "name": "remember", - "value": "dd1d2f566bb10ef05bb479aa:3cd366a8ca2a0aa6aaf2ae99d138c4f0cbdcf8f4" - }, - { - "name": "debug-bar-tab", - "value": "ci-history" - }, - { - "name": "debug-bar-state", - "value": "minimized" - }, - { - "name": "ci_session", - "value": "bb58484b789171028415662d770d2a77" - } - ], - "queryString": [], - "headersSize": 613 - }, - "response": { - "status": 200, - "statusText": "OK", - "httpVersion": "HTTP/1.1", - "headers": [ - { - "name": "Host", - "value": "localhost:8080" - }, - { - "name": "Date", - "value": "Thu, 18 Jun 2026 13:36:20 GMT" - }, - { - "name": "Connection", - "value": "close" - }, - { - "name": "X-Powered-By", - "value": "PHP/8.3.14" - }, - { - "name": "Expires", - "value": "Thu, 19 Nov 1981 08:52:00 GMT" - }, - { - "name": "Cache-Control", - "value": "no-store, no-cache, must-revalidate" - }, - { - "name": "Pragma", - "value": "no-cache" - }, - { - "name": "Content-Type", - "value": "text/html; charset=UTF-8" - }, - { - "name": "Debugbar-Time", - "value": "1781789780.242202" - }, - { - "name": "Debugbar-Link", - "value": "http://localhost:8080/?debugbar_time=1781789780.242202" - }, - { - "name": "Set-Cookie", - "value": "ci_session=bb58484b789171028415662d770d2a77; expires=Thu, 18 Jun 2026 15:36:19 GMT; Max-Age=7199; path=/; HttpOnly; SameSite=Lax" - } - ], - "cookies": [ - { - "name": "ci_session", - "value": "bb58484b789171028415662d770d2a77" - } - ], - "content": { - "mimeType": "text/html; charset=UTF-8", - "size": 97801, - "text": "\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Patient Management
\r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
Please enter phone number.
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
Please enter full name.
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
Please enter relative name.
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n Searching...\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
ABHA Number Create and Verify
\r\n

Create and verify your unique health identification number

\r\n \r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
1
\r\n
Aadhaar & Consent
\r\n
\r\n
\r\n
2
\r\n
OTP Verify
\r\n
\r\n
\r\n
3
\r\n
Mobile Confirm
\r\n
\r\n
\r\n
4
\r\n
ABHA Ready
\r\n
\r\n
\r\n\r\n \r\n
\r\n

Enter the patient's Aadhaar number. An OTP will be sent to the mobile linked with it.

\r\n
\r\n
\r\n \r\n \r\n Mobile must be linked with Aadhaar for OTP.\r\n
\r\n
\r\n \r\n \r\n Will be linked to the new ABHA.\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n I hereby declare that I am voluntarily sharing my Aadhaar number and demographic information issued by UIDAI with the National Health Authority (NHA) for the sole purpose of creating an ABHA number. I understand this number may be used for healthcare service purposes as notified by ABDM. My personal identifiable information (Name, Address, Age, DOB, Gender, Photo) may be made available to entities in the National Digital Health Ecosystem. I consent to use and disclosure of my health information to NDHE entities as permitted by law.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n

Enter the OTP sent to the mobile number linked with Aadhaar.

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n

Enter the patient's mobile number registered with ABDM to retrieve their ABHA profile.

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
ABHA-Based Patient Registration
\r\n\r\n \r\n
\r\n
\r\n
\r\n
🆔
\r\n
By ABHA Number
\r\n
14-digit or @abdm address
\r\n
\r\n
\r\n
\r\n
\r\n
📷
\r\n
Scan ABHA QR
\r\n
Camera scan patient's QR
\r\n
\r\n
\r\n
\r\n
\r\n
🏥
\r\n
Scan Facility QR
\r\n
Patient scans hospital QR
\r\n
\r\n
\r\n
\r\n
\r\n
📱
\r\n
By Mobile OTP
\r\n
OTP to ABHA-linked mobile
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n

Enter patient's 14-digit ABHA number or ABHA address (e.g., john@abdm).

\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n

Enter the mobile number registered with this ABHA. OTP will be sent to it.

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n

Enter the 6-digit OTP received on the patient's mobile.

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n

Point camera at patient's ABHA QR code (from PHR app or printed card).

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
Scan & Share — Health Facility QR
\r\n

In this method, the patient scans the hospital's facility QR code using their ABHA / PHR app.

\r\n
    \r\n
  1. Patient opens their ABHA app (or PHR app)
  2. \r\n
  3. Selects \"Scan Facility QR\"
  4. \r\n
  5. Scans the hospital's QR code displayed at the OPD counter
  6. \r\n
  7. Grants consent — profile is sent to the HMS automatically
  8. \r\n
\r\n

The hospital's facility QR code is provided by NHA/ABDM based on your Health Facility Registry (HFR) ID.

\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n

Enter the patient's mobile number linked to ABDM/ABHA. OTP will be sent for verification.

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n

Enter the 6-digit OTP sent to the patient's mobile.

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \"\"\r\n
👤
\r\n
\r\n
—
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n View Patient Profile\r\n \r\n \r\n Print ABHA Card\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n" - }, - "redirectURL": "", - "headersSize": 520, - "bodySize": 98321 - }, - "cache": {}, - "timings": { - "blocked": 2017, - "dns": 2, - "connect": 2018, - "ssl": 0, - "send": 0, - "wait": 1308, - "receive": 2 - }, - "time": 5347, - "_securityState": "insecure", - "serverIPAddress": "::1", - "connection": "8080", - "pageref": "page_1" - }, - { - "startedDateTime": "2026-06-18T19:06:35.075+05:30", - "request": { - "bodySize": 70, - "method": "POST", - "url": "http://localhost:8080/abha/register/validate", - "httpVersion": "HTTP/1.1", - "headers": [ - { - "name": "Host", - "value": "localhost:8080" - }, - { - "name": "User-Agent", - "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:151.0) Gecko/20100101 Firefox/151.0" - }, - { - "name": "Accept", - "value": "application/json, text/javascript, */*; q=0.01" - }, - { - "name": "Accept-Language", - "value": "en-US,en;q=0.9" - }, - { - "name": "Accept-Encoding", - "value": "gzip, deflate, br, zstd" - }, - { - "name": "Content-Type", - "value": "application/x-www-form-urlencoded; charset=UTF-8" - }, - { - "name": "X-Requested-With", - "value": "XMLHttpRequest" - }, - { - "name": "Content-Length", - "value": "70" - }, - { - "name": "Origin", - "value": "http://localhost:8080" - }, - { - "name": "DNT", - "value": "1" - }, - { - "name": "Connection", - "value": "keep-alive" - }, - { - "name": "Referer", - "value": "http://localhost:8080/" - }, - { - "name": "Cookie", - "value": "remember=dd1d2f566bb10ef05bb479aa%3A3cd366a8ca2a0aa6aaf2ae99d138c4f0cbdcf8f4; debug-bar-tab=ci-history; debug-bar-state=minimized; ci_session=bb58484b789171028415662d770d2a77" - }, - { - "name": "Sec-Fetch-Dest", - "value": "empty" - }, - { - "name": "Sec-Fetch-Mode", - "value": "cors" - }, - { - "name": "Sec-Fetch-Site", - "value": "same-origin" - }, - { - "name": "Priority", - "value": "u=0" - } - ], - "cookies": [ - { - "name": "remember", - "value": "dd1d2f566bb10ef05bb479aa:3cd366a8ca2a0aa6aaf2ae99d138c4f0cbdcf8f4" - }, - { - "name": "debug-bar-tab", - "value": "ci-history" - }, - { - "name": "debug-bar-state", - "value": "minimized" - }, - { - "name": "ci_session", - "value": "bb58484b789171028415662d770d2a77" - } - ], - "queryString": [], - "headersSize": 775, - "postData": { - "mimeType": "application/x-www-form-urlencoded", - "params": [ - { - "name": "abha_id", - "value": "91510165305101" - }, - { - "name": "csrf_test_name", - "value": "2525ba2260b03d5d89d3c4a34bc68e76" - } - ], - "text": "abha_id=91510165305101&csrf_test_name=2525ba2260b03d5d89d3c4a34bc68e76" - } - }, - "response": { - "status": 200, - "statusText": "OK", - "httpVersion": "HTTP/1.1", - "headers": [ - { - "name": "Host", - "value": "localhost:8080" - }, - { - "name": "Date", - "value": "Thu, 18 Jun 2026 13:36:39 GMT" - }, - { - "name": "Connection", - "value": "close" - }, - { - "name": "X-Powered-By", - "value": "PHP/8.3.14" - }, - { - "name": "Expires", - "value": "Thu, 19 Nov 1981 08:52:00 GMT" - }, - { - "name": "Cache-Control", - "value": "no-store, no-cache, must-revalidate" - }, - { - "name": "Pragma", - "value": "no-cache" - }, - { - "name": "Content-Type", - "value": "application/json; charset=UTF-8" - }, - { - "name": "Debugbar-Time", - "value": "1781789799.948775" - }, - { - "name": "Debugbar-Link", - "value": "http://localhost:8080/?debugbar_time=1781789799.948775" - }, - { - "name": "Set-Cookie", - "value": "ci_session=bb58484b789171028415662d770d2a77; expires=Thu, 18 Jun 2026 15:36:39 GMT; Max-Age=7200; path=/; HttpOnly; SameSite=Lax" - } - ], - "cookies": [ - { - "name": "ci_session", - "value": "bb58484b789171028415662d770d2a77" - } - ], - "content": { - "mimeType": "application/json; charset=UTF-8", - "size": 38, - "text": "{\n \"ok\": 1,\n \"status\": \"VALID\"\n}" - }, - "redirectURL": "", - "headersSize": 527, - "bodySize": 565 - }, - "cache": {}, - "timings": { - "blocked": 2034, - "dns": 1, - "connect": 2034, - "ssl": 0, - "send": 0, - "wait": 2844, - "receive": 2 - }, - "time": 6915, - "_securityState": "insecure", - "serverIPAddress": "::1", - "connection": "8080", - "pageref": "page_1" - }, - { - "startedDateTime": "2026-06-18T19:06:47.987+05:30", - "request": { - "bodySize": 65, - "method": "POST", - "url": "http://localhost:8080/abha/create/communication", - "httpVersion": "HTTP/1.1", - "headers": [ - { - "name": "Host", - "value": "localhost:8080" - }, - { - "name": "User-Agent", - "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:151.0) Gecko/20100101 Firefox/151.0" - }, - { - "name": "Accept", - "value": "application/json, text/javascript, */*; q=0.01" - }, - { - "name": "Accept-Language", - "value": "en-US,en;q=0.9" - }, - { - "name": "Accept-Encoding", - "value": "gzip, deflate, br, zstd" - }, - { - "name": "Content-Type", - "value": "application/x-www-form-urlencoded; charset=UTF-8" - }, - { - "name": "X-Requested-With", - "value": "XMLHttpRequest" - }, - { - "name": "Content-Length", - "value": "65" - }, - { - "name": "Origin", - "value": "http://localhost:8080" - }, - { - "name": "DNT", - "value": "1" - }, - { - "name": "Connection", - "value": "keep-alive" - }, - { - "name": "Referer", - "value": "http://localhost:8080/" - }, - { - "name": "Cookie", - "value": "remember=dd1d2f566bb10ef05bb479aa%3A3cd366a8ca2a0aa6aaf2ae99d138c4f0cbdcf8f4; debug-bar-tab=ci-history; debug-bar-state=minimized; ci_session=bb58484b789171028415662d770d2a77" - }, - { - "name": "Sec-Fetch-Dest", - "value": "empty" - }, - { - "name": "Sec-Fetch-Mode", - "value": "cors" - }, - { - "name": "Sec-Fetch-Site", - "value": "same-origin" - }, - { - "name": "Priority", - "value": "u=0" - } - ], - "cookies": [ - { - "name": "remember", - "value": "dd1d2f566bb10ef05bb479aa:3cd366a8ca2a0aa6aaf2ae99d138c4f0cbdcf8f4" - }, - { - "name": "debug-bar-tab", - "value": "ci-history" - }, - { - "name": "debug-bar-state", - "value": "minimized" - }, - { - "name": "ci_session", - "value": "bb58484b789171028415662d770d2a77" - } - ], - "queryString": [], - "headersSize": 778, - "postData": { - "mimeType": "application/x-www-form-urlencoded", - "params": [ - { - "name": "mobile", - "value": "9720958717" - }, - { - "name": "csrf_test_name", - "value": "2525ba2260b03d5d89d3c4a34bc68e76" - } - ], - "text": "mobile=9720958717&csrf_test_name=2525ba2260b03d5d89d3c4a34bc68e76" - } - }, - "response": { - "status": 200, - "statusText": "OK", - "httpVersion": "HTTP/1.1", - "headers": [ - { - "name": "Host", - "value": "localhost:8080" - }, - { - "name": "Date", - "value": "Thu, 18 Jun 2026 13:36:53 GMT" - }, - { - "name": "Connection", - "value": "close" - }, - { - "name": "X-Powered-By", - "value": "PHP/8.3.14" - }, - { - "name": "Expires", - "value": "Thu, 19 Nov 1981 08:52:00 GMT" - }, - { - "name": "Cache-Control", - "value": "no-store, no-cache, must-revalidate" - }, - { - "name": "Pragma", - "value": "no-cache" - }, - { - "name": "Content-Type", - "value": "application/json; charset=UTF-8" - }, - { - "name": "Debugbar-Time", - "value": "1781789813.271600" - }, - { - "name": "Debugbar-Link", - "value": "http://localhost:8080/?debugbar_time=1781789813.271600" - }, - { - "name": "Set-Cookie", - "value": "ci_session=bb58484b789171028415662d770d2a77; expires=Thu, 18 Jun 2026 15:36:53 GMT; Max-Age=7200; path=/; HttpOnly; SameSite=Lax" - } - ], - "cookies": [ - { - "name": "ci_session", - "value": "bb58484b789171028415662d770d2a77" - } - ], - "content": { - "mimeType": "application/json; charset=UTF-8", - "size": 69, - "text": "{\n \"ok\": 1,\n \"txn_id\": \"7fbe347f-74f0-4999-9661-2e8e0f3bb661\"\n}" - }, - "redirectURL": "", - "headersSize": 527, - "bodySize": 596 - }, - "cache": {}, - "timings": { - "blocked": 2051, - "dns": 1, - "connect": 2051, - "ssl": 0, - "send": 0, - "wait": 3237, - "receive": 1 - }, - "time": 7341, - "_securityState": "insecure", - "serverIPAddress": "::1", - "connection": "8080", - "pageref": "page_1" - }, - { - "startedDateTime": "2026-06-18T19:07:17.738+05:30", - "request": { - "bodySize": 102, - "method": "POST", - "url": "http://localhost:8080/abha/create/verify_comm_otp", - "httpVersion": "HTTP/1.1", - "headers": [ - { - "name": "Host", - "value": "localhost:8080" - }, - { - "name": "User-Agent", - "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:151.0) Gecko/20100101 Firefox/151.0" - }, - { - "name": "Accept", - "value": "application/json, text/javascript, */*; q=0.01" - }, - { - "name": "Accept-Language", - "value": "en-US,en;q=0.9" - }, - { - "name": "Accept-Encoding", - "value": "gzip, deflate, br, zstd" - }, - { - "name": "Content-Type", - "value": "application/x-www-form-urlencoded; charset=UTF-8" - }, - { - "name": "X-Requested-With", - "value": "XMLHttpRequest" - }, - { - "name": "Content-Length", - "value": "102" - }, - { - "name": "Origin", - "value": "http://localhost:8080" - }, - { - "name": "DNT", - "value": "1" - }, - { - "name": "Connection", - "value": "keep-alive" - }, - { - "name": "Referer", - "value": "http://localhost:8080/" - }, - { - "name": "Cookie", - "value": "remember=dd1d2f566bb10ef05bb479aa%3A3cd366a8ca2a0aa6aaf2ae99d138c4f0cbdcf8f4; debug-bar-tab=ci-history; debug-bar-state=minimized; ci_session=bb58484b789171028415662d770d2a77" - }, - { - "name": "Sec-Fetch-Dest", - "value": "empty" - }, - { - "name": "Sec-Fetch-Mode", - "value": "cors" - }, - { - "name": "Sec-Fetch-Site", - "value": "same-origin" - }, - { - "name": "Priority", - "value": "u=0" - } - ], - "cookies": [ - { - "name": "remember", - "value": "dd1d2f566bb10ef05bb479aa:3cd366a8ca2a0aa6aaf2ae99d138c4f0cbdcf8f4" - }, - { - "name": "debug-bar-tab", - "value": "ci-history" - }, - { - "name": "debug-bar-state", - "value": "minimized" - }, - { - "name": "ci_session", - "value": "bb58484b789171028415662d770d2a77" - } - ], - "queryString": [], - "headersSize": 781, - "postData": { - "mimeType": "application/x-www-form-urlencoded", - "params": [ - { - "name": "otp", - "value": "890561" - }, - { - "name": "txn_id", - "value": "7fbe347f-74f0-4999-9661-2e8e0f3bb661" - }, - { - "name": "csrf_test_name", - "value": "2525ba2260b03d5d89d3c4a34bc68e76" - } - ], - "text": "otp=890561&txn_id=7fbe347f-74f0-4999-9661-2e8e0f3bb661&csrf_test_name=2525ba2260b03d5d89d3c4a34bc68e76" - } - }, - "response": { - "status": 200, - "statusText": "OK", - "httpVersion": "HTTP/1.1", - "headers": [ - { - "name": "Host", - "value": "localhost:8080" - }, - { - "name": "Date", - "value": "Thu, 18 Jun 2026 13:37:23 GMT" - }, - { - "name": "Connection", - "value": "close" - }, - { - "name": "X-Powered-By", - "value": "PHP/8.3.14" - }, - { - "name": "Expires", - "value": "Thu, 19 Nov 1981 08:52:00 GMT" - }, - { - "name": "Cache-Control", - "value": "no-store, no-cache, must-revalidate" - }, - { - "name": "Pragma", - "value": "no-cache" - }, - { - "name": "Content-Type", - "value": "application/json; charset=UTF-8" - }, - { - "name": "Debugbar-Time", - "value": "1781789843.465175" - }, - { - "name": "Debugbar-Link", - "value": "http://localhost:8080/?debugbar_time=1781789843.465175" - }, - { - "name": "Set-Cookie", - "value": "ci_session=bb58484b789171028415662d770d2a77; expires=Thu, 18 Jun 2026 15:37:23 GMT; Max-Age=7200; path=/; HttpOnly; SameSite=Lax" - } - ], - "cookies": [ - { - "name": "ci_session", - "value": "bb58484b789171028415662d770d2a77" - } - ], - "content": { - "mimeType": "application/json; charset=UTF-8", - "size": 9502, - "text": "{\n \"ok\": 1,\n \"abha_number\": \"91-5101-6530-5101\",\n \"name\": \"Devender Singh\",\n \"photo\": \"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\",\n \"gender\": \"M\",\n \"dob\": \"28-03-1979\",\n \"patient_id\": 7,\n \"p_code\": \"P26061000007\",\n \"is_new_patient\": false\n}" - }, - "redirectURL": "", - "headersSize": 527, - "bodySize": 10029 - }, - "cache": {}, - "timings": { - "blocked": 2022, - "dns": 2, - "connect": 2025, - "ssl": 0, - "send": 0, - "wait": 3707, - "receive": 3 - }, - "time": 7759, - "_securityState": "insecure", - "serverIPAddress": "::1", - "connection": "8080", - "pageref": "page_1" - }, - { - "startedDateTime": "2026-06-18T19:07:23.490+05:30", - "request": { - "bodySize": 0, - "method": "GET", - "url": "data:image/jpeg;base64,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", - "httpVersion": "", - "headers": [], - "cookies": [], - "queryString": [], - "headersSize": 0 - }, - "response": { - "status": 200, - "statusText": "0K", - "httpVersion": "", - "headers": [], - "cookies": [], - "content": { - "mimeType": "image/jpeg", - "size": 9276, - "encoding": "base64", - "text": "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" - }, - "redirectURL": "", - "headersSize": 24, - "bodySize": 0 - }, - "cache": {}, - "timings": { - "blocked": 0, - "dns": 0, - "ssl": 0, - "connect": 0, - "send": 0, - "wait": 0, - "receive": 0 - }, - "time": 0, - "pageref": "page_1" - } - ] - } -} \ No newline at end of file diff --git a/public/setup_fs.php b/public/setup_fs.php deleted file mode 100644 index 658e69e..0000000 --- a/public/setup_fs.php +++ /dev/null @@ -1,119 +0,0 @@ - + RewriteEngine On + RewriteRule \.(php|phtml|php3|php4|php5|php7|php8|phps|phar|cgi|pl|py|sh|asp|aspx|jsp|exe|bat|cmd)$ - [F,L,NC] + + + + + Require all denied + + + Order Deny,Allow + Deny from all + + + +Options -Indexes -ExecCGI + + + php_flag engine off + + + php_flag engine off + + + php_flag engine off + diff --git a/upload.exp b/upload.exp deleted file mode 100644 index a94dfe4..0000000 --- a/upload.exp +++ /dev/null @@ -1,5 +0,0 @@ -set timeout 300 -spawn scp -o StrictHostKeyChecking=no "d:\\Workplace\\HMS_CI4_OLD\\abdm-bridge-le-ssl.conf" root@159.89.175.190:/etc/apache2/sites-enabled/abdm-bridge-le-ssl.conf -expect \"password:\" -send \"bishT@9720958717H\r\" -expect eof diff --git a/writable/setup_db_complete.lock b/writable/setup_db_complete.lock new file mode 100644 index 0000000..af8e5f9 --- /dev/null +++ b/writable/setup_db_complete.lock @@ -0,0 +1 @@ +Setup locked on 2026-10-14 for WASA compliance.
Sr.No.DateDetails of ExpenditureNumber or QuantityRatePerAmount