This commit is contained in:
Hamza-Ayed
2026-04-28 14:14:11 +03:00
parent 76d06a4140
commit 3fa9aee14e
6 changed files with 21 additions and 20 deletions

View File

@@ -218,7 +218,7 @@ class JwtService
// ── Internal API Key — للـ get_connect.php ───────────── // ── Internal API Key — للـ get_connect.php ─────────────
public static function validateInternalKey(): void public static function validateInternalKey(): void
{ {
$keyPath = '/home/intaleq-api/.internal_socket_key'; $keyPath = getenv('INTERNAL_SOCKET_KEY_PATH');
$sent = $_SERVER['HTTP_X_INTERNAL_KEY'] ?? ''; $sent = $_SERVER['HTTP_X_INTERNAL_KEY'] ?? '';
$expected = (file_exists($keyPath) ? trim(file_get_contents($keyPath)) : '') ?: 'Intaleq_Secure_Bridge_Key_2026_@!socket'; $expected = (file_exists($keyPath) ? trim(file_get_contents($keyPath)) : '') ?: 'Intaleq_Secure_Bridge_Key_2026_@!socket';

View File

@@ -76,10 +76,11 @@ require_once __DIR__ . '/Auth/JwtService.php';
// 6. تهيئة Encryption Helper العام (للتوافقية) // 6. تهيئة Encryption Helper العام (للتوافقية)
// يتم استخدام .enckey (32 بايت) لتشفير البيانات // يتم استخدام .enckey (32 بايت) لتشفير البيانات
$encKey = trim(@file_get_contents('/home/intaleq-api/.enckey') ?: ''); $encKeyPath = getenv('ENCRYPTION_KEY_PATH');
if (!$encKey) { $encKey = trim(@file_get_contents($encKeyPath) ?: '');
$encKey = getenv('ENC_KEY') ?: ''; if (!$encKey) {
} $encKey = getenv('ENC_KEY') ?: '';
}
if (!$encKey || strlen($encKey) !== 32) { if (!$encKey || strlen($encKey) !== 32) {
error_log("[FATAL] Encryption key (.enckey) is missing or invalid length (must be 32 bytes)."); error_log("[FATAL] Encryption key (.enckey) is missing or invalid length (must be 32 bytes).");

View File

@@ -8,7 +8,7 @@ use Firebase\JWT\SignatureInvalidException;
use Firebase\JWT\BeforeValidException; use Firebase\JWT\BeforeValidException;
$INTERNAL_KEY = trim(file_get_contents('/home/intaleq-api/.internal_socket_key')); $INTERNAL_KEY = trim(file_get_contents(getenv('INTERNAL_SOCKET_KEY_PATH')));
/** /**
@@ -22,8 +22,8 @@ $INTERNAL_KEY = trim(file_get_contents('/home/intaleq-api/.internal_socket_key')
function sendToLocationServer($action, $data) { function sendToLocationServer($action, $data) {
// رابط سيرفر اللوكيشن الداخلي أو العام // رابط سيرفر اللوكيشن الداخلي أو العام
$url = "http://location.intaleq.xyz:2021"; $url = getenv('LOCATION_SOCKET_URL');
$INTERNAL_KEY = trim(@file_get_contents('/home/intaleq-api/.internal_socket_key')); $INTERNAL_KEY = trim(file_get_contents(getenv('INTERNAL_SOCKET_KEY_PATH')));
$postData = [ $postData = [
'action' => $action, 'action' => $action,
@@ -43,8 +43,8 @@ function sendToLocationServer($action, $data) {
function findBestDrivers($con, $lat, $lng, $carType) { function findBestDrivers($con, $lat, $lng, $carType) {
// 1. الاتصال بـ Redis لجلب الأقرب // 1. الاتصال بـ Redis لجلب الأقرب
$locationServerUrl = "https://location.intaleq.xyz/api_get_nearby.php"; $locationServerUrl = getenv('LOCATION_API_URL');
$INTERNAL_KEY = trim(@file_get_contents('/home/intaleq-api/.internal_socket_key')); $INTERNAL_KEY = trim(file_get_contents(getenv('INTERNAL_SOCKET_KEY_PATH')));
$postData = ['lat' => $lat, 'lng' => $lng, 'radius' => 5, 'limit' => 100]; $postData = ['lat' => $lat, 'lng' => $lng, 'radius' => 5, 'limit' => 100];
@@ -158,7 +158,7 @@ function notifyDriversRideTaken($rideId, $winnerDriverId) {
// رابط سيرفر السائقين الداخلي (نفس البورت المستخدم في driver_socket.php) // رابط سيرفر السائقين الداخلي (نفس البورت المستخدم في driver_socket.php)
$url = getenv('LOCATION_SOCKET_URL'); $url = getenv('LOCATION_SOCKET_URL');
if (!$url) throw new RuntimeException('LOCATION_SOCKET_URL not configured'); if (!$url) throw new RuntimeException('LOCATION_SOCKET_URL not configured');
$INTERNAL_KEY = trim(@file_get_contents('/home/intaleq-api/.internal_socket_key')); $INTERNAL_KEY = trim(file_get_contents(getenv('INTERNAL_SOCKET_KEY_PATH')));
$postData = [ $postData = [
'action' => 'ride_taken_event', // هذا الأكشن الجديد في السوكيت 'action' => 'ride_taken_event', // هذا الأكشن الجديد في السوكيت
@@ -181,7 +181,7 @@ function notifyDriversOnLocationServer($drivers_ids_array, $payload, $rideId = n
// رابط سيرفر اللوكيشن الخارجي // رابط سيرفر اللوكيشن الخارجي
$url = getenv('LOCATION_SOCKET_URL'); $url = getenv('LOCATION_SOCKET_URL');
if (!$url) throw new RuntimeException('LOCATION_SOCKET_URL not configured'); if (!$url) throw new RuntimeException('LOCATION_SOCKET_URL not configured');
$INTERNAL_KEY = trim(@file_get_contents('/home/intaleq-api/.internal_socket_key')); $INTERNAL_KEY = trim(file_get_contents(getenv('INTERNAL_SOCKET_KEY_PATH')));
$postData = [ $postData = [
'action' => 'dispatch_order', // اسم الحدث المتفق عليه في socket_server.php هناك 'action' => 'dispatch_order', // اسم الحدث المتفق عليه في socket_server.php هناك
@@ -221,7 +221,7 @@ function notifyPassengerOnRideServer($passenger_id, $payload) {
error_log("[FATAL] PASSENGER_SOCKET_URL not configured"); error_log("[FATAL] PASSENGER_SOCKET_URL not configured");
throw new RuntimeException('PASSENGER_SOCKET_URL not configured'); throw new RuntimeException('PASSENGER_SOCKET_URL not configured');
} }
$INTERNAL_KEY = trim(@file_get_contents('/home/intaleq-api/.internal_socket_key')); $INTERNAL_KEY = trim(file_get_contents(getenv('INTERNAL_SOCKET_KEY_PATH')));
$postData = [ $postData = [
'action' => 'update_ride_status', 'action' => 'update_ride_status',
@@ -262,7 +262,7 @@ function dispatchRideToDrivers($driversData, $rideId, $payloadTemplate, $startNa
$socketUrl = getenv('LOCATION_SOCKET_URL'); $socketUrl = getenv('LOCATION_SOCKET_URL');
if (!$socketUrl) throw new RuntimeException('LOCATION_SOCKET_URL not configured'); if (!$socketUrl) throw new RuntimeException('LOCATION_SOCKET_URL not configured');
$internalKeyPath = '/home/intaleq-api/.internal_socket_key'; $internalKeyPath = getenv('INTERNAL_SOCKET_KEY_PATH');
$internalKey = file_exists($internalKeyPath) ? trim(file_get_contents($internalKeyPath)) : ''; $internalKey = file_exists($internalKeyPath) ? trim(file_get_contents($internalKeyPath)) : '';
foreach ($driversData as $driver) { foreach ($driversData as $driver) {

View File

@@ -31,9 +31,9 @@ try {
// ========================================== // ==========================================
// 2. طلب الـ IDs والمواقع من سيرفر اللوكيشن (Redis API) // 2. طلب الـ IDs والمواقع من سيرفر اللوكيشن (Redis API)
// ========================================== // ==========================================
$locationServerUrl = "https://location.intaleq.xyz/api_get_nearby.php"; $locationServerUrl = getenv('LOCATION_API_URL');
// تأكد من المسار الصحيح للمفتاح على السيرفر الرئيسي // تأكد من المسار الصحيح للمفتاح على السيرفر الرئيسي
$INTERNAL_KEY = trim(file_get_contents('/home/intaleq-api/.internal_socket_key')); $INTERNAL_KEY = trim(file_get_contents(getenv('INTERNAL_SOCKET_KEY_PATH')));
$ch = curl_init(); $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $locationServerUrl); curl_setopt($ch, CURLOPT_URL, $locationServerUrl);

View File

@@ -21,8 +21,8 @@ $redisResultsMap = [];
// 1. محاولة البحث عبر Redis // 1. محاولة البحث عبر Redis
try { try {
$locationServerUrl = "http://location.intaleq.xyz:2021"; $locationServerUrl = getenv('LOCATION_SOCKET_URL');
$INTERNAL_KEY = trim(@file_get_contents('/home/intaleq-api/.internal_socket_key')); $INTERNAL_KEY = trim(file_get_contents(getenv('INTERNAL_SOCKET_KEY_PATH')));
$postData = [ $postData = [
'action' => 'get_nearby_ride_ids', 'action' => 'get_nearby_ride_ids',

View File

@@ -16,10 +16,10 @@ ini_set('error_log', '/home/intaleq-api/add_ride_error.log');
// ================================================================================= // =================================================================================
function broadcastRideToMarket($rideId, $lat, $lng, $payloadData) { function broadcastRideToMarket($rideId, $lat, $lng, $payloadData) {
// رابط سيرفر اللوكيشن (تأكد من صحة الرابط والبورت) // رابط سيرفر اللوكيشن (تأكد من صحة الرابط والبورت)
$url = "http://location.intaleq.xyz:2021"; $url = getenv('LOCATION_SOCKET_URL');
// قراءة مفتاح الأمان الداخلي للمصادقة // قراءة مفتاح الأمان الداخلي للمصادقة
$INTERNAL_KEY = trim(@file_get_contents('/home/intaleq-api/.internal_socket_key')); $INTERNAL_KEY = trim(file_get_contents(getenv('INTERNAL_SOCKET_KEY_PATH')));
// تجهيز البيانات بشكل (Key-Value Map) لسهولة التعامل في التطبيق والسوكيت // تجهيز البيانات بشكل (Key-Value Map) لسهولة التعامل في التطبيق والسوكيت
// ملاحظة: نستخدم القيم من $payloadData التي هي عبارة عن List حالياً // ملاحظة: نستخدم القيم من $payloadData التي هي عبارة عن List حالياً