انتقل إلى المحتوى
العودة إلى وثائق Launch

تنزيل Markdownالوثيقة الأصلية على GitHub

إصلاح خروج حساب Launch SDK وتعدد المثيلات والاختبار المشترك للطرفين

التاريخ: 2026-10-24. اكتملت إصلاحات Launch SDK ضمن البندين 1 و3 اللذين أذن بهما المستخدم، والمقابلة لجزء استمرار الحساب من AUTH-08 وAUTH-10. زومنت تحديثات Licentivo واكتمل الاختبار المشترك المحلي. لم تُطلق هذه المهمة، ولم يُصدر SDK، ولم يُلتزم Git أو يُدفع.

نتائج الإصلاح

تستخدم مهمة خروج الحساب والدخول الحالي القابل للاستعادة مفتاحين مختلفين في التخزين الآمن. عند فشل كتابة علامة الخروج يُنظف الدخول القديم الخاص بذلك المثيل فقط دون حذف جلسات أخرى. تُسجل نية خروج حساب محلية إضافية بملخص النطاق وبيانات الجلسة؛ وتُفحص قبل استعادة الحساب، بما يشمل إعادة التشغيل بعد فشل كتابة/حذف التخزين الآمن أو انتهاء مهلة القفل. لا تحفظ bearer أو تأكيد الهوية أو الترخيص ولا تقرر أذونات الميزات.

تستخدم عمليات دورة حياة الحساب على مستخدم OS والجهاز نفسيهما تنسيقًا بين المثيلات والعمليات. لا يستطيع الخروج المتأخر للمثيل القديم أو تنظيف HTTP 401 أو إعادة الإرسال بعد الفشل أو الخروج مجددًا بعد النجاح الكتابة فوق دخول أحدث حُفظ لاحقًا أو حذفه. يمكن لمهمة الجلسة القديمة إعادة إرسال إلغاء الحساب بصورة مستقلة دون إعادة بناء بيئة ترخيص جلسة أخرى حالية.

زومنت مداخل دورة حياة Application والأمثلة الأصلية وتعليمات التكامل لـ Go وJavaScript وPython وC# وJava وRuby وRust وC/C++. تبقى تواقيع طرق Store الآمن العامة دون تغيير ويجب دعم مفاتيح معتمة متعددة وحفظ ذري بصورة صحيحة. تظل بيانات حساب MemoryStore الافتراضي في الذاكرة فقط. إذا تعذر حفظ Store الآمن وعلامة الخروج المحلية معًا، يبلغ SDK بخطأ صريح ويوقف هذا المثيل دون ادعاء اكتمال خروج يمكن استعادته بعد إعادة التشغيل.

تحديث Licentivo

استخدمت اختبارات التشغيل الفعلية في هذه الجولة SDK الرسمي 0.11.1، بمعرّف لقطة ثابت local-20261024-5d74ba5ea131. استُخدم نص الاستيراد الموجود بالمستودع للمزامنة؛ ويشمل البيان 115 ملفًا، تغير منها فعليًا 23 وبقي 92 دون تغيير ولا توجد ملفات جديدة. تقابل التغييرات 17 ملف مصدر أصلي؛ وتُعبأ نواة C بصورة مكررة في حزم native وRuby وRust. تحقق الاستيراد المختبر من تجزئات الملفات المستهدفة ولقطة المصدر عند اكتمال الاختبارات.

لم تعدل هذه المهمة مصدر خادم Licentivo؛ ويستخدم تنفيذ ترخيص SDK الإصدار الذي قدمه الطرف الآخر. عُدلت الاختبارات المحلية وفق الاتفاق المحدث: يحتفظ الخروج ببيانات الجهاز المشتركة وملفات الترخيص، ويمنع سجل خروج SDK الجلسة القديمة؛ وقد يكون إيصال فك الربط المكرر الثاني stale. لا يزال رفض التنفيذ الفعلي واستعادة الربط الجديد وحصة الخدمة الذاتية مفحوصة، ولم تُخفف متطلبات العمل هذه.

عند إنهاء العمل كانت مساحة العمل قد حُدثت بصورة منفصلة إلى Licentivo SDK 0.11.2 (licentivo-sdk-v0.11.2-release-20261024). تتطابق تجزئات الملفات المستهدفة الـ 115 الحالية مع البيان وملفات المصدر الأصلي. مقارنة بلقطة هذه الجولة المختبرة لم تتغير في المصدر الأصلي إلا VERSION وثابت Ruby VERSION ورقم إصدار CMake؛ وتنفيذ الترخيص متطابق. أضاف نص الاستيراد الحالي أيضًا البحث عن المكتبة الأصلية في دليل امتداد Ruby gem. تخص سجلات اختبارات التشغيل أعلاه لقطة 0.11.1 الثابتة؛ ولا يعد هذا التقرير سجل قبول لحزمة إصدار 0.11.2.

التحقق

النطاق النتيجة
HTTP حساب Launch Go وDPAPI وفشل تخزين الخروج والقفل بين العمليات 26 سجلًا ناجحًا بما فيها الحالات الفرعية؛ دون فشل أو تخطٍّ
انحدار حساب Go وSDK الموقع بعد مزامنة SDK الرسمي نجح 21؛ وتُخطي اختبارا HTTP يحتاجان إلى قاعدة منفصلة وقد تم التحقق منهما في السطر السابق والاختبار الفعلي للطرفين
انحدار ترخيص Licentivo HTTP الحالي والضوابط المتخصصة دُمج تنفيذان حسب الحالة، مع 62 سجل نجاح نهائيًا؛ بما فيه إعادة الفحص بعد تصحيح تأكيد الإيصال المكرر
Go SDK الرسمي الحالي 67 سجل نجاح دون فشل
JavaScript / Python نجح 14 / 12، بما فيه التشغيل الموقع الفعلي
C# / Java نجحت دورة الحياة والتشغيل الرسمي؛ ونجحت 9 مجموعات اختبارات حساب/أمان Java
Ruby / Rust نجح 17 اختبارًا لغلاف Ruby وSDK الأصلي الفعلي؛ ونجح 16 اختبارًا لـ Rust
C / C++ نجح مشغلا دورة حياة SDK الموقع الفعلي، بما يشمل DPAPI وانقطاع الشبكة وفشل التخزين وخروج المثيل القديم

استخدم الاختبار الحقيقي للطرفين Launch الفعلي وLicentivo الحالي وMySQL وGo Launch SDK وSDK الترخيص الرسمي وDPAPI، ونتجت 18 سجلات نجاح للمرحلة (17 مرحلة تحقق وسجل إكمال). شمل مزامنة مدة الشراء والميزة المحمية الفعلية والاستعادة بعد الإغلاق العادي وفشل كتابة تخزين الخروج/فشل الكتابة والحذف مع انقطاع شبكة الطرفين ورفض استعادة الحساب القديم بعد إعادة التشغيل وإعادة إرسال الإلغاء بعد عودة الشبكة والدخول الجديد وفقد الاستجابة وفك الربط عن بُعد واسترداد التجديد ورفض الترخيص بعد رد المبلغ.

أكد التحقق المتخصص بالخدمة الفعلية أيضًا أن إرسال أرقام عمليات مختلفة لجيل الربط نفسه يستهلك حصة الخدمة الذاتية مرة واحدة فقط؛ وأن الخروج القديم لا يحذف بيانات الربط الجديد وترخيصه ويمكن استعادته دون شبكة؛ وأن إصدار JWT جديد لـ sid قديم نفسه لا يستعيد ربطًا خرج منه، بينما يمكن للدخول الحقيقي الجديد التفعيل؛ وأن تذكرة الخروج القديمة لا تؤثر في الربط الجديد؛ وأن التنفيذ دون اتصال لا يتجاوز موعد التوقيع المعروف.

لم تُكتشف مشكلات أعمال جديدة مانعة في هذه الجولة. أُجريت اختبارات التشغيل على Windows؛ واستخدمت سلسلة الأعمال الفعلية للطرفين Go، وأكملت اللغات الأخرى اختبارات SDK الموقعة المحلية. خدمات الدفع والترجمة محاكاة معزولة دون خصم أو استرداد أو نشر فعلي؛ ولم يُزَر 192.168.2.177. تأكد توقف خدمتي Licentivo وMySQL المؤقتتين، مع الاحتفاظ بالخدمات السابقة وتغييرات مساحة العمل الأخرى.

توجد السجلات الأصلية ولقطة المصدر المختبرة والفحوص في الدليل المتجاهل .local/account-store-fix-20261024/. راجع أدلة التحقق للملخص القابل للمشاركة.