Update: 2026-07-22 00:32:07
This commit is contained in:
@@ -1,14 +1,21 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* generate_mock_data.php
|
* generate_mock_data.php
|
||||||
* Standalone JWT generator — ZERO external dependencies.
|
* Standalone JWT & Price Token generator for Stress Test.
|
||||||
* Generates HS256 JWT matching Siro JwtService verification logic.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
error_reporting(E_ALL);
|
error_reporting(E_ALL);
|
||||||
ini_set('display_errors', '0');
|
ini_set('display_errors', '0');
|
||||||
|
|
||||||
// ── Load .env ──
|
// Load bootstrap if available for EncryptionHelper
|
||||||
|
$bootstrapPath = dirname(__DIR__) . '/backend/core/bootstrap.php';
|
||||||
|
if (file_exists($bootstrapPath)) {
|
||||||
|
try {
|
||||||
|
require_once $bootstrapPath;
|
||||||
|
} catch (Throwable $e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fallback .env loader
|
||||||
$loadedFiles = [];
|
$loadedFiles = [];
|
||||||
function loadEnvFile(string $path): void {
|
function loadEnvFile(string $path): void {
|
||||||
global $loadedFiles;
|
global $loadedFiles;
|
||||||
@@ -30,7 +37,6 @@ function loadEnvFile(string $path): void {
|
|||||||
|
|
||||||
loadEnvFile(dirname(__DIR__) . '/docker/.env');
|
loadEnvFile(dirname(__DIR__) . '/docker/.env');
|
||||||
loadEnvFile(dirname(__DIR__) . '/backend/.env');
|
loadEnvFile(dirname(__DIR__) . '/backend/.env');
|
||||||
loadEnvFile('/home/location/env/.env');
|
|
||||||
|
|
||||||
function getJwtSecret(): string {
|
function getJwtSecret(): string {
|
||||||
$keyPath = getenv('JWT_SECRET_KEY_PATH');
|
$keyPath = getenv('JWT_SECRET_KEY_PATH');
|
||||||
@@ -86,9 +92,39 @@ if ($fpInToken) {
|
|||||||
|
|
||||||
$jwt = generate_jwt($secret, $payload);
|
$jwt = generate_jwt($secret, $payload);
|
||||||
|
|
||||||
|
// Generate encrypted price token for passenger
|
||||||
|
$priceToken = '';
|
||||||
|
if ($role === 'passenger') {
|
||||||
|
$tokenData = json_encode([
|
||||||
|
'passenger_id' => (string)$userId,
|
||||||
|
'start_location' => '31.95,35.91',
|
||||||
|
'end_location' => '31.96,35.92',
|
||||||
|
'price' => '5',
|
||||||
|
'expires' => time() + 3600
|
||||||
|
]);
|
||||||
|
if (isset($GLOBALS['encryptionHelper']) && is_object($GLOBALS['encryptionHelper'])) {
|
||||||
|
$priceToken = $GLOBALS['encryptionHelper']->encryptData($tokenData);
|
||||||
|
} elseif (isset($encryptionHelper) && is_object($encryptionHelper)) {
|
||||||
|
$priceToken = $encryptionHelper->encryptData($tokenData);
|
||||||
|
} else {
|
||||||
|
// Pure PHP Encryption fallback if EncryptionHelper not loaded
|
||||||
|
try {
|
||||||
|
$encKey = getenv('ENCRYPTION_KEY') ?: $secret;
|
||||||
|
$keyBytes = substr(hash('sha256', $encKey, true), 0, 32);
|
||||||
|
$iv = random_bytes(12);
|
||||||
|
$tag = '';
|
||||||
|
$ciphertext = openssl_encrypt($tokenData, 'aes-256-gcm', $keyBytes, OPENSSL_RAW_DATA, $iv, $tag);
|
||||||
|
$priceToken = 'GCM:' . base64_encode($iv) . ':' . base64_encode($ciphertext . $tag);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
$priceToken = 'dummy';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
echo json_encode([
|
echo json_encode([
|
||||||
'user_id' => $userId,
|
'user_id' => $userId,
|
||||||
'role' => $role,
|
'role' => $role,
|
||||||
'jwt' => $jwt,
|
'jwt' => $jwt,
|
||||||
'fp' => $fpHeader
|
'fp' => $fpHeader,
|
||||||
|
'price_token' => $priceToken
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -48,7 +48,11 @@ function getMockJwt(userId, role = 'driver') {
|
|||||||
console.error(`[Error] JWT generation returned empty for ${role} ${userId}: ${output}`);
|
console.error(`[Error] JWT generation returned empty for ${role} ${userId}: ${output}`);
|
||||||
return { jwt: '', fp: '' };
|
return { jwt: '', fp: '' };
|
||||||
}
|
}
|
||||||
return { jwt: parsed.jwt, fp: parsed.fp || `mock_device_fp_${userId}` };
|
return {
|
||||||
|
jwt: parsed.jwt,
|
||||||
|
fp: parsed.fp || `mock_device_fp_${userId}`,
|
||||||
|
price_token: parsed.price_token || ''
|
||||||
|
};
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(`[Error] Failed to generate JWT for ${role} ${userId}:`, err.message);
|
console.error(`[Error] Failed to generate JWT for ${role} ${userId}:`, err.message);
|
||||||
return { jwt: '', fp: '' };
|
return { jwt: '', fp: '' };
|
||||||
@@ -130,7 +134,7 @@ async function simulateTrip(tripIndex) {
|
|||||||
start_location: '31.95,35.91',
|
start_location: '31.95,35.91',
|
||||||
end_location: '31.96,35.92',
|
end_location: '31.96,35.92',
|
||||||
price: '5',
|
price: '5',
|
||||||
price_token: 'dummy',
|
price_token: passengerAuth.price_token || 'dummy',
|
||||||
distance: '2',
|
distance: '2',
|
||||||
carType: 'Economy',
|
carType: 'Economy',
|
||||||
passenger_name: 'Test Passenger',
|
passenger_name: 'Test Passenger',
|
||||||
|
|||||||
Reference in New Issue
Block a user