tpr-webmodule) في كل pod من Ayakaleaf Pro. سجّل عميل OAuth الخاص بـ Zotero كما هو موضّح في تكامل Zotero، مع عنوان الاستدعاء الراجع ${OVERLEAF_SITE_URL}/user/zotero/oauth/callback، ثم اضبط Kubernetes كما يلي.
الإعداد
1
ConfigMap
30-config.yaml (changes)
ENABLED_LINKED_FILE_TYPES القيمة الواردة من التثبيت؛ لذا احتفظ بالأنواع الموجودة لديك وأضف zotero (وmendeley، إذا كنت تستخدم كليهما).2
Secret
ZOTERO_CIPHER_PASSWORD مفاتيح Zotero الخاصة بالمستخدمين في MongoDB. ومن دونه، يُنشئ كل pod ملف مفتاح في مجلد /var/lib/overleaf/data الخاص به. ومع عدة نسخ متماثلة يصبح لكل عقدة مفتاح مختلف، ولا يستطيع المستخدم الذي تخدمه نسخة متماثلة أخرى استخدام حساب Zotero المرتبط به. اضبطه قبل أن يربط أول مستخدم حساب Zotero: فتغييره لاحقًا يُلزم كل مستخدم بربط Zotero من جديد.3
التطبيق وإعادة التشغيل
عدة نسخ متماثلة
اضبطZOTERO_CIPHER_PASSWORD في الـ Secret، كما هو موضّح أعلاه. فمن دونه، لا يمكن تحديث ملف مستورد على نسخة متماثلة من نسخة متماثلة أخرى: إذ يفشل التحديث مع الرسالة “The remote service produced an error”، لأن ملف المفتاح الخاص بتلك النسخة المتماثلة لا يستطيع فك تشفير مفتاح Zotero الخاص بالمستخدم. أما مع وجود كلمة المرور في الـ Secret فيعمل على كل نسخة متماثلة؛ وقد اختبرنا الحالتين بالاستيراد على overleaf-0 والتحديث على overleaf-1. تحفظ مصافحة OAuth حالتها في الجلسة داخل Redis، لذا يمكن أن يصل الاستدعاء الراجع (callback) إلى أي نسخة متماثلة.
الاختبار على Kubernetes
في مقابل محاكاة لـ www.zotero.org وapi.zotero.org (موثوق بها عبرNODE_EXTRA_CA_CERTS من overleaf-certs)، وعلى Kubernetes 1.37 مع ثلاث نسخ متماثلة خلف HAProxy، تنجح اختباراتنا الشاملة (end-to-end) لـ Zotero (18 حالة): الربط عبر OAuth 1.0a وإلغاء الربط، واستيراد المكتبة والمجموعات إلى ملف .bib، وتحديثه، وإلغاء المفتاح على Zotero، وطلب الربط من جديد، وإمكانية البحث في المراجع من قِبل المتعاونين، واقتصار التحديث على من قام بالاستيراد، وأخطاء واجهة API، والاتصالات البطيئة بـ Zotero.
