Commit Graph
36 Commits
Author SHA1 Message Date
Hamza-Ayed 4846109824 Fix payment server: remove global conRide to prevent crashing non-ride DB queries 2026-08-01 16:23:52 +03:00
Hamza-Ayed 0966699070 Add test_hash.php 2026-08-01 16:20:17 +03:00
Hamza-Ayed 80e457d6e3 Fix loginJwtDriver.php: include CarRegistration year in hash to match register.php 2026-08-01 16:14:16 +03:00
Hamza-Ayed e7938446a0 Fix password verify logic in loginJwtDriver.php to use raw DB ciphertext 2026-08-01 16:08:12 +03:00
Hamza-Ayed 7efb913245 Fix 500 in payment endpoints by using separate connections 2026-08-01 15:54:52 +03:00
Hamza-Ayed 3c6ed0d2b1 Fix 500 in payment endpoints: use rideDB.ride cross-database prefix since payment server connects to paymentDB 2026-08-01 06:07:16 +03:00
Hamza-Ayed 80a99fef7d Add try..catch blocks to payment queries to prevent 500 Empty Body on SQL errors 2026-08-01 05:58:44 +03:00
Hamza-Ayed 926b49c18f Change default socket ports to 12032 and 13032 to avoid collision with siro/tripz 2026-08-01 05:53:32 +03:00
Hamza-Ayed b335296efc Fix socket build context to allow copying composer files from loction_server and ride_server 2026-08-01 05:49:46 +03:00
Hamza-Ayed 0a49a3d4e8 Fix vendor autoload missing in docker images by adding anonymous volumes and installing composer dependencies for all servers 2026-08-01 05:48:27 +03:00
Hamza-Ayed d0ab3653dd Add error handling for missing vendor to prevent 500 Empty Body errors 2026-08-01 05:44:25 +03:00
Hamza-Ayed 84c725040f Update: 2026-08-01 05:29:35 2026-08-01 05:29:35 +03:00
Hamza-Ayed 782138ef7b translate 2026-08-01 04:47:15 +03:00
Hamza-Ayed e9f4f3cc5c Fix CLIQ: remove unknown column phone 2026-08-01 03:51:40 +03:00
Hamza-Ayed 4460823b8d Fix CLIQ: accept click_phone or cliq_phone field name 2026-08-01 03:49:43 +03:00
Hamza-Ayed 3be2254b70 Fix wallet: safe parsing in Flutter + LEFT JOIN always returns balance 2026-08-01 03:46:46 +03:00
Hamza-Ayed 508a6ce1d0 Fix wallet: bake composer vendor into Docker image 2026-08-01 03:19:55 +03:00
Hamza-Ayed 414965de45 Update: 2026-08-01 03:01:01 2026-08-01 03:01:01 +03:00
Hamza-Ayed af77727f4a Update: 2026-08-01 02:55:16 2026-08-01 02:55:16 +03:00
Hamza-Ayed 9f2d49300b Fix phone_verification_passenger query in register.php 2026-08-01 02:51:30 +03:00
Hamza-Ayed 125c940814 Update: 2026-08-01 02:48:36 2026-08-01 02:48:36 +03:00
Hamza-Ayed f47b862185 Update: 2026-07-29 20:23:34 2026-07-29 20:23:34 +03:00
Hamza-Ayed 90d976e1d1 Update: 2026-07-29 19:44:57 2026-07-29 19:44:58 +03:00
Hamza-Ayed 2cf5c63a1e docs(env): document ENCRYPTION_MODE, BLIND_INDEX_PEPPER, and one-time migration SRC_DB_* vars
These were required on the server to run the v2 migration and switch
write mode to GCM, but .env.example didn't mention them — anyone
provisioning a fresh environment from this file alone would hit the
same "table doesn't exist" / "access denied" surprises we just debugged.
2026-07-29 17:32:28 +03:00
Hamza-Ayed 307009d149 add sample_decrypt.php for manual post-migration sanity checks
Decrypts a random sample of migrated rows and prints masked plaintext
so the migration can be eyeballed for correctness beyond the automated
--verify pass — catches cases where decryption "succeeds" but produces
garbage rather than the real value.
2026-07-29 17:09:33 +03:00
Hamza-Ayed 8df0f92fcf fix(migration): apply schema fixes statement-by-statement, tolerating already-applied changes
The bulk `mysql < file.sql` run aborted on the first "duplicate column"
error because some columns from an earlier partial run already existed.
apply_sql_tolerant.sh now runs each ALTER separately and only skips
MySQL errors 1060/1061/1091/1050 (duplicate column/key, missing to drop,
table exists) — any other error still stops the migration immediately.
2026-07-29 17:04:05 +03:00
Hamza-Ayed ffedd458cb Update: 2026-07-29 16:51:14 2026-07-29 16:51:14 +03:00
Hamza-Ayed c0a20e5396 Update: 2026-07-29 16:46:22 2026-07-29 16:46:22 +03:00
Hamza-Ayed af57ca87f2 Update: 2026-07-29 16:36:26 2026-07-29 16:36:27 +03:00
Hamza-Ayed a84f2a31a7 Update: 2026-07-28 02:30:44 2026-07-28 02:30:44 +03:00
Hamza-Ayed f79ffb0fd7 Update: 2026-07-28 01:39:55 2026-07-28 01:39:55 +03:00
Hamza-Ayed 7eeddeb950 Update: 2026-07-27 17:18:25 2026-07-27 17:18:25 +03:00
Hamza-AyedandClaude Opus 5 5a65fc5a9e fix(api): مواءمة مسارات links.dart مع باك إند v3 الفعلي
هدف المالك: أن يعمل المسار كاملاً (تسجيل → رحلة → إنهاء) على api الجديد.
فحصت 463 مساراً في links.dart بمطابقتها على ملفات PHP الفعلية عبر خريطة
docker (root /var/www: /backend → backend/ · /v2/main → payment_server/v2/main/
· /loction_server → loction_server/). كان 71 مساراً بلا ملف؛ صار 44، وكلها
كودٌ ميت أو فجوات موثّقة أدناه لا تخمين.

أُصلح بيقين (27 مساراً):
- المقطع `ride/` كان ناقصاً في 20 مساراً — أغلبها في صميم الدورة:
  rides/get · rides/update · rides/getRideStatus{,Begin,FromStartApp} ·
  rides/updateRideAndCheckIfApplied · rides/getRideOrderID ·
  rides/getTripCountByCaptain · rides/delete · cancelRide/{add,get} ·
  mishwari · places_syria · driver_scam · tips · ecash.
- `seferWallet` → `siroWallet`: payment_server يسمّي المجلد siroWallet
  (تاريخ تسمية sefer→siro) — 3 مسارات محفظة.
- `addFingerPrint` كان على paymentServer وليس فيه firebase أصلاً؛ الملف في
  backend/ride/firebase/add.php.
- 🔴 `paymobPayoutDriverWallet` كان فيه **علامة اقتباس داخل الرابط**:
  `paymob_payout.php'` → 404 مضمون على صرف أرباح السائق. الملف موجود
  فعلاً في payment_server/v2/main/ride/payMob/paymob_driver/.
- `deletecaptainAccounr.php` (لا وجود له) → `auth/driver/deleteAccount.php`.

فجوات حقيقية بقيت — لها مستدعٍ في الكود ولا ملف في الباك إند، ولن أخمّن:
- `uploadEgypt` (4 استدعاءات) و`uploadEgypt1` و`uploadImage`: رافع صور عام
  يمرّر نوعاً ('face_detect' · 'car_front' · 'car_back'). المرشحون:
  auth/driver/uploadImage.php · auth/driver/uploadDriverDocs.php ·
  uploadImagePortrate.php — والاختيار يحدد أي جدول/مجلد يستقبل الصورة.
- `auth/Tester/{get,update}TesterApp.php`: لا مجلد Tester إطلاقاً.
- `auth/sms/getSender.php` و`updatePhoneInvalidSMS`: لا مجلد sms (الموجود
  webhook_sms/webhook.php فقط).
الباقي (نحو 35) بلا أي مستدعٍ = كود ميت من عهود أقدم، يُنظّف لاحقاً.

⚠️ الاحتمال الذي يجب حسمه: هذه الملفات قد تكون موجودة على سيرفر
jordan-siro الحيّ وغير مُودَعة في git. يُتحقق بـ`ls` على السيرفر قبل
كتابة أي بديل.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 16:23:53 +03:00
Hamza-AyedandClaude Opus 5 53322d87a6 feat: توجيه كل النداءات إلى api.intaleqapp.com وطيّ تبديل الدول
⚠️ الطيّ ضرورة أمان لا ترتيب: كل عائلة سيرفرات في links.dart كانت switch
بأربعة فروع (Syria · Egypt · Jordan · default)، وفروع سوريا ومصر تشير إلى
**سيرفرات سيرو الإنتاجية** (api-syria.siromove.com وغيرها). إبقاؤها في
انطلق يعني أن أي جهاز مخزَّن فيه countryCode='Syria' يخاطب إنتاج سيرو
مباشرة. انطلق نشرٌ واحد على مضيف واحد (docs/34: سيرفر لكل مستأجر)،
والدولة تُحل على السيرفر من GLOBAL_COUNTRY.

طُويت 35 كتلة switch إلى قيمة واحدة (11 rider · 11 driver · 6 admin ·
7 service)، والخريطة مأخوذة من تعليق docker/nginx/default.conf نفسه
(«نقطة واحدة لكل الخدمات — التطبيق يغيّر الدومين فقط»):
  server / rideServer   → https://api.intaleqapp.com/backend
  paymentServer         → https://api.intaleqapp.com/v2/main
  location              → …/backend/ride/location
  locationServerSide(د) → …/loction_server/siro/ride/location
  سوكيت الركاب          → https://api.intaleqapp.com:3030
  سوكيت السائقين        → https://api.intaleqapp.com:2020

وأيضاً:
- appDomain و invite: siromove.com → intaleqapp.com، والمجلد
  siromove.com/ → intaleqapp.com/ (فيه invite.php الذي يقصده التطبيق).
- روابط التنزيل siro.app → intaleqapp.com · بريد السائق المولَّد
  @siromove.com → @intaleqapp.com · صفحة التتبع · محاكاة تسجيل سوريا.
- حُذف getter `syria` الميت من links.dart الثلاثة (لا مستدعي له، وكان
  يشير إلى إنتاج سيرو).

لم يُمسّ عمداً:
- `ssl_pinning.dart`: `badCertificateCallback` لا يُستدعى إلا عند فشل
  التحقق العادي، فشهادة api.intaleqapp.com الصالحة تمرّ بلا مساس. ولا
  أختلق بصمة شهادة: تُضاف بصمة انطلق بعد إصدار الشهادة (docs/30 G7).
- `routesjo.intaleq.xyz` و `map-saas.intaleqapp.com`: خدمات خارجية قائمة
  بذاتها للمالك (قرار الخرائط المباشرة) لا تُنقل إلى api.
- `com.siromove.admin` في userAgentPackageName (5 مواضع): من عائلة هويات
  المتاجر — كوميت الهويات، وهو يحتاج قرار المالك.

⚠️ يحتاج نشراً على الطرف الآخر: invite.php و track/index.php و /driver
على intaleqapp.com.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 16:14:45 +03:00
Hamza-AyedandClaude Opus 5 0aab85c732 refactor: إعادة تسمية التطبيقات الأربعة siro_* → intaleq_*
المجلدات وأسماء حزم dart واستيراداتها:
  siro_rider → intaleq_rider    siro_driver  → intaleq_driver
  siro_admin → intaleq_admin    siro_service → intaleq_service

شمل ذلك `name:` في كل pubspec وكل `package:siro_*` في الاستيرادات
(115 ملفاً في rider وحده)، وإشارات أسماء المجلدات في docs/ وتعليق في
backend/Admin/notifications/broadcast.php. لم تبقَ إشارة واحدة (تحقّقت).

+ ضُمّت حزم get و get_storage داخل intaleq_driver/packages/ وحُوّلت
مساراتها الثلاثة من `../../Intaleq/packages/*` إلى `./packages/*`. كانت
تُحل عرضاً إلى مجلد App/Intaleq القديم المجاور — تبعية خارج المستودع
تنكسر بأول نقل. لم يبقَ في أي تطبيق تبعية مسار خارج الشجرة.

⚠️ لم تُمسّ بعد: هويات المتاجر (applicationId · PRODUCT_BUNDLE_IDENTIFIER ·
shorebird app_id) ولا الألوان ولا النصوص المرئية ولا النطاقات — كل منها
كوميت منفصل، والهويات تحتاج قرار المالك.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 16:10:58 +03:00
Hamza-AyedandClaude Opus 5 92dc6b3641 chore: استيراد أولي من سيرو (ecfe7568) — بلا أي تعديل
نسخة كاملة من مستودع سيرو عند ecfe7568 لتكون أساس تطبيق «انطلق».
نُسخ المتعقَّب في git فقط (12,509 ملفاً / 302 م.ب) بـ git archive، لا
`cp -r` — فاستُثنيت تلقائياً مخلفات البناء (build · node_modules ·
.dart_tool · .gradle · Pods ≈ 10.7 غ.ب) وكل ما يستثنيه .gitignore.

هذا الكوميت **بلا أي تعديل عمداً** حتى يكون كل ما يليه فرقاً مقروءاً
مقابل سيرو الأصلي. سيرو نفسه لم يُمسّ.

⚠️ لا يبني بعد: `.env` و`lib/env/env.g.dart` غير متعقَّبين في سيرو (وهذا
صحيح — أسرار لكل مستأجر). كل تطبيق فلاتر هنا يحتاج .env خاصاً بانطلق ثم
توليد env.g.dart عبر build_runner. لا تُنسخ أسرار سيرو.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 05:10:29 +03:00