كانت هذه الإضافة قديمة بعض الشيء ولم يتم ترقيتها إلا اليوم (بمساعدة @Arkshine يجب أن أضيف
). قم بتحديث الإضافة وأعتقد أنه يجب عليك إعادة بناء التطبيق إذا كان إنتاجياً أو إعادة تشغيل التطبيق. إليك بعض التعليمات من فريق Discourse: Install plugins on a self-hosted site
شكرا للتحديث. يمكنني التأكيد على أن كل شيء يعمل.
مرحباً بالجميع
هل يمكن لأحد مساعدتي في إصلاح هذه المشكلة؟
على سطح المكتب، أحصل على شاشة سوداء
Discourse - V3.1.3
Uncaught (in promise) Error: Could not find module discourse-i18n imported from discourse/plugins/discourse-topic-trade-buttons/discourse/connectors/topic-above-post-stream/trade-buttons
Uncaught (in promise) Error: Could not find module `discourse-i18n` imported from `discourse/plugins/discourse-topic-trade-buttons/discourse/connectors/topic-above-post-stream/trade-buttons`
at loader.js:247:1
at u (loader.js:258:1)
at a.findDeps (loader.js:168:1)
at u (loader.js:262:1)
at requireModule (loader.js:24:1)
at plugin-connectors.js:57:1
at plugin-connectors.js:45:1
at Array.forEach (<anonymous>)
at b (plugin-connectors.js:40:1)
at plugin-connectors.js:56:1
at plugin-connectors.js:153:1
at plugin-connectors.js:45:1
at Array.forEach (<anonymous>)
at b (plugin-connectors.js:40:1)
at S (plugin-connectors.js:150:1)
at j (plugin-connectors.js:159:1)
at e.renderedConnectorsFor (plugin-connectors.js:164:1)
at get connectors [as connectors] (plugin-outlet.js:126:1)
at Ce (index.js:1251:1)
at reference.js:175:1
at reference.js:136:1
at e.track (validator.js:668:1)
at f (reference.js:135:1)
at index.js:5588:1
at reference.js:136:1
at e.track (validator.js:668:1)
at f (reference.js:135:1)
at index.js:5588:1
at reference.js:136:1
at e.track (validator.js:668:1)
at f (reference.js:135:1)
at reference.js:312:1
at reference.js:136:1
at e.track (validator.js:668:1)
at f (reference.js:135:1)
at Object.evaluate (runtime.js:3440:1)
at Object.evaluate (runtime.js:1052:1)
at It.evaluateSyscall (runtime.js:4263:1)
at It.evaluateInner (runtime.js:4234:1)
at It.evaluateOuter (runtime.js:4227:1)
at Wt.next (runtime.js:5058:1)
at Wt._execute (runtime.js:5045:1)
at Wt.execute (runtime.js:5038:1)
at Qt.sync (runtime.js:5105:1)
at wr.render (index.js:6749:1)
at index.js:7013:1
at Mt (runtime.js:4139:1)
at Tr._renderRoots (index.js:6996:1)
at Tr._renderRootsTransaction (index.js:7039:1)
at Tr._renderRoot (index.js:6985:1)
at Tr._appendDefinition (index.js:6911:1)
at Tr.appendOutletView (index.js:6899:1)
at p.invoke (queue.ts:203:14)
at p.flush (queue.ts:98:13)
at h.flush (deferred-action-queues.ts:75:19)
at $._end (index.ts:616:32)
at _boundAutorunEnd (index.ts:257:12)
أهلاً بك يا @viswanatha ![]()
بما أن هذا يبدو مرتبطًا بمكون topic-trade-buttons الإضافي، فقد قمت بنقل منشورك إلى الموضوع ذي الصلة للحصول على الاهتمام المناسب. ![]()
@viswanatha هل قمت بإعادة بناء مشروعك بعد إضافة هذه الإضافة؟
مرحباً @Janno_Liivak،
لقد أعدت بناء مشروعي، لكنني ما زلت أواجه نفس المشكلة.
الخيارات التالية مفقودة أيضًا.
تمكين أزرار تداول الموضوع
![]()
إعداد الفئة
@Janno_Liivak قد تحتاج إلى Pinning plugin and theme versions for older Discourse installs (.discourse-compatibility) نظرًا لأن آخر طلب سحب قدم استيراد discourse-i18n الذي تمت إضافته مؤخرًا نسبيًا في النواة (في 12 أكتوبر أعتقد).
مما أراه، حدث هذا التغيير بعد 3.2.0.beta2-dev (في 12 سبتمبر).
لذا أعتقد أنه سيكون من المنطقي إضافة إدخال في .discourse-compatibility للقول بأن المستخدمين الذين لديهم إصدار Discourse أقدم من 3.2.0-beta2-dev مقيدون بأحدث تثبيت قبل طلب السحب الخاص بي (وهو التثبيت في 22 فبراير)
< 3.2.0.beta2-dev 88db827dcecf5faf4e009e38422ede6847488535
ثغرة أمنية ![]()
ملخص سريع: تثبيت هذه الإضافة سيؤدي - حتى عند تعطيلها - إلى تسريب جميع الحقول المخصصة للموضوع الموجودة إلى أي شخص يمكنه الوصول إلى الموضوع، بما في ذلك المستخدمون المجهولون. اعتمادًا على الإضافات الأخرى المثبتة لديك، يمكن أن تحتوي الحقول المخصصة للموضوع على بيانات حساسة.
عند فحص هذه الإضافة لأحد العملاء، اكتشفنا عددًا من المشكلات الأمنية. لقد قمنا بإصلاح هذه المشكلات في نسختنا (https://github.com/communiteq/discourse-topic-trade-buttons/tree/master) وقدمنا طلب سحب (pull request). ومع ذلك، لم يستجب مؤلف الموضوع لطلب السحب الخاص بنا أو رسالتنا الخاصة، لذلك نقوم الآن بالكشف عن هذه المشكلات.
إصلاح أمني: تسرب المعلومات
يتم تسلسل جميع الحقول المخصصة (بما في ذلك تلك الواردة من إضافات أخرى!)، بما في ذلك للمستخدمين المجهولين. يمكن أن تحتوي الحقول المخصصة على بيانات حساسة ويجب عدم تسلسلها بهذه الطريقة أبدًا.
نظرًا لأن قيم sold_at وما إلى ذلك يتم تعيينها من جانب الخادم على أي حال ويتم “حساب” الأزرار عند topic.archived، يمكن إزالة منطق الحقول المخصصة من كود الواجهة الأمامية الذي يواجهه المستخدم، وتحتاج الحقول المخصصة فقط إلى التسلسل لواجهة المسؤول للعمل - وبالتالي يمكن قصر التسلسل على المستخدمين المسؤولين. نشك في أن هذا ليس ضروريًا أيضًا.
إصلاحات التهيئة
التحقق if SiteSetting.topic_trade_buttons_enabled الذي يحيط بمنطق التسلسل يجعل من الضروري إعادة تشغيل Discourse بعد تمكين أو تعطيل الإضافة. هذا التحقق غير ضروري لأن Discourse يعتني بذلك بالفعل.
استخدام respect_plugin_enabled: false غير ضروري ويزيد من تفاقم المشكلة الأمنية الموضحة أعلاه.
تم دمج طلب السحب الآن
وأنا أيضاً، لا يمكنني الإعداد
لقد عثرت للتو على إشعار إهمال في وحدة تحكم المطور في متصفحي:
deprecation-identify-source.js:15 إهمال: [PLUGIN discourse-topic-trade-buttons] تم استخدام المسار الخاصية
modelفي القالبdiscourse/plugins/discourse-topic-trade-buttons/discourse/templates/connectors/topic-above-post-stream/trade-buttons.hbsدون استخدامthis. تم إهمال سلوك التراجع هذا، يجب البحث عن جميع الخصائص فيthisعند استخدامها في القالب: {{this.model}} [معرف الإهمال: ember-this-fallback.this-property-fallback] سيتم إزالة هذا في ember-this-fallback n/a. انظر Resolving the `this-property-fallback` deprecation لمزيد من التفاصيل.
أردت فقط لفت الانتباه إلى هذا - على الرغم من أنني لا أستطيع إصلاحه بنفسي. ![]()
دعني أترجم لك إلى البرتغالية البرازيلية! أنا من البرازيل.
مرحبًا @Anderson_Cardoso_Silva! هل يمكنك تقديم طلب سحب بالترجمات؟
قمت بحل بعض المشاكل التي لاحظتها في سجلات المتصفح (بما في ذلك ما ذكره @Roi) وبعض النصوص الإنجليزية التي كانت غريبة. جربت كل شيء في بيئة التطوير المحلية ولكن إذا كان بإمكان شخص آخر تجربة ذلك على Discourse الخاص به، فسأكون ممتنًا.
@Arkshine ، أضفت هذا السطر إلى .discourse-compatibility. شكراً لك!
ثغرة أمنية 
مرحباً @Janno_Liivak،
شكراً لك على هذه الإضافة المفيدة! لقد وجدت بعض الثغرات الأمنية الحرجة التي تحتاج إلى اهتمام:
المشاكل
- عدم وجود تحقق من الصلاحيات - يمكن لأي مستخدم تحديد أي موضوع على أنه مباع/مشترى/متبادل
- نقص التحقق من جانب الخادم - لا تتحقق وحدات التحكم من:
- تمكين الإضافة (
topic_trade_buttons_enabled) - تمكين أزرار الفئة (
enable_*_button) - التحقق من الواجهة الأمامية فقط من هذه الإعدادات (غير آمن)
- تمكين الإضافة (
- عدم وجود تحقق من المدخلات - لم يتم التحقق من المعلمة
topic_id - عدم إنشاء سجل للإجراءات - لم يتم تسجيل العمليات، ولا يوجد سجل لمن قام بالإجراءات
التأثير
- التلاعب غير المصرح به بالمواضيع
- تجاوز إعدادات الإضافة/الفئة عبر استدعاءات API مباشرة
- لا يوجد سجل تدقيق لمن قام بإجراءات التداول
مرحباً @Janno_Liivak،
تظهر تسميات “[تم الشراء]” و “[تم البيع]” فجأة باللغة الصينية المبسطة على موقعنا. Discourse 3.6.0.beta2. لم يتم إجراء أي تغييرات على موقعنا بخلاف التحديثات.
هل لديك أي أفكار حول كيفية جعل التسميات تتطابق مع لغة المجموعة الحرفية للموضوع/الموقع؟
أيضاً، هل تم تناول مشكلات الثغرات الأمنية التي ذكرها @lava على الإطلاق؟
شكراً!
Gunnar
مرحباً @Gunnar! ما هي اللغة (ورمز اللغة) التي يستخدمها موقعك؟
لم تتم معالجة مشكلات الأمان هذه بعد. لقد كنت مشغولاً للغاية مؤخرًا وبما أنني لم أعد أستخدم Discourse بنفسي، فقد نسيت أمرها ببساطة ![]()
لكنني سأقوم بإنشاء مهمة لنفسي الآن وسأحاول إيجاد وقت قريب لإصلاح كل شيء. إذا استطاع شخص ما المساعدة، فسأكون سعيدًا بمراجعة طلب السحب.






