Dieses Plugin war etwas veraltet und wurde heute (mit Hilfe von @Arkshine, muss ich hinzufügen
) aktualisiert. Aktualisieren Sie das Plugin und ich glaube, Sie müssen die App neu erstellen, wenn es sich um eine Produktion handelt, oder die Anwendung neu starten. Hier sind einige Anweisungen vom Discourse-Team: Install plugins on a self-hosted site
Danke für das Update. Ich kann bestätigen, dass alles funktioniert.
Hallo zusammen
Kann mir jemand helfen, dieses Problem zu beheben?
Auf dem Desktop wird ein schwarzer Bildschirm angezeigt
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 (<unbekannt>)
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 (<unbekannt>)
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)
Hallo und willkommen @viswanatha ![]()
Da dies mit dem Plugin topic-trade-buttons zusammenzuhängen scheint, habe ich Ihren Beitrag an das entsprechende Thema verschoben, damit die richtigen Personen ihn sehen. ![]()
@viswanatha Haben Sie Ihr Projekt neu erstellt, nachdem Sie dieses Plugin hinzugefügt haben?
Hallo @Janno_Liivak,
Ich habe mein Projekt neu erstellt, aber immer noch dasselbe Problem.
Die folgenden Optionen fehlen ebenfalls.
Schaltflächen für das Thema “Trading” aktivieren
![]()
Kategorieeinstellung
@Janno_Liivak Sie benötigen möglicherweise Pinning plugin and theme versions for older Discourse installs (.discourse-compatibility), da der letzte PR discourse-i18n importiert hat, der erst kürzlich im Kern hinzugefügt wurde (ich glaube am 12. Oktober).
Soweit ich sehe, geschah diese Änderung nach 3.2.0.beta2-dev (am 12. September).
Daher halte ich es für sinnvoll, einen Eintrag in .discourse-compatibility hinzuzufügen, der besagt, dass Benutzer mit einer älteren Discourse-Version als 3.2.0-beta2-dev an den letzten Commit vor meinem PR (dem vom 22. Februar) gebunden sind.
< 3.2.0.beta2-dev 88db827dcecf5faf4e009e38422ede6847488535
Sicherheitslücke ![]()
Zusammenfassung: Die Installation dieses Plugins führt dazu, dass – selbst wenn es deaktiviert ist – alle vorhandenen benutzerdefinierten Topic-Felder für jeden, der Zugriff auf das Topic hat, einschließlich anonymer Benutzer, offengelegt werden. Abhängig von anderen installierten Plugins können benutzerdefinierte Topic-Felder sensible Daten enthalten.
Bei der Überprüfung dieses Plugins für einen Kunden haben wir eine Reihe von Sicherheitsproblemen entdeckt. Wir haben diese Probleme in unserer Fork (https://github.com/communiteq/discourse-topic-trade-buttons/tree/master) behoben und einen Pull-Request erstellt. Der Topic-Autor hat jedoch weder auf unseren Pull-Request noch auf unsere private Nachricht geantwortet, sodass wir diese Probleme nun offenlegen.
Sicherheitsfix: Informationsleck
Alle benutzerdefinierten Felder (auch die von anderen Plugins!) werden serialisiert, auch für anonyme Benutzer. Benutzerdefinierte Felder können sensible Daten enthalten und sollten niemals auf diese Weise serialisiert werden.
Da die Werte sold_at usw. ohnehin serverseitig gesetzt werden und die Buttons auf topic.archived „berechnet“ werden, kann die Logik für benutzerdefinierte Felder aus dem Frontend-Code entfernt werden, und die benutzerdefinierten Felder müssen nur für die Admin-Oberfläche serialisiert werden, damit diese funktioniert – daher kann die Serialisierung auf Admin-Benutzer beschränkt werden. Wir vermuten, dass dies nicht einmal notwendig ist.
Initialisierungsfixes
Die Prüfung if SiteSetting.topic_trade_buttons_enabled, die die Serialisierungslogik absperrt, macht einen Neustart von Discourse nach dem Aktivieren oder Deaktivieren des Plugins erforderlich. Diese Prüfung ist unnötig, da Discourse sich bereits darum kümmert.
Die Verwendung von respect_plugin_enabled: false ist unnötig und verschlimmert das oben beschriebene Sicherheitsproblem.
Pull Request zusammengeführt jetzt
Ich auch, kann nicht einrichten
Ich habe gerade eine Deprecation-Meldung in der Entwicklerkonsole meines Browsers gefunden:
deprecation-identify-source.js:15 DEPRECATION: [PLUGIN discourse-topic-trade-buttons] Die
model-Eigenschaft wurde im Templatediscourse/plugins/discourse-topic-trade-buttons/discourse/templates/connectors/topic-above-post-stream/trade-buttons.hbsverwendet, ohnethiszu benutzen. Dieses Fallback-Verhalten wurde als veraltet markiert, alle Eigenschaften müssen inthisnachgeschlagen werden, wenn sie im Template verwendet werden: {{this.model}} [deprecation id: ember-this-fallback.this-property-fallback] Dies wird in ember-this-fallback n/a entfernt. Weitere Details finden Sie unter Resolving the `this-property-fallback` deprecation.
Ich wollte das nur zur Kenntnis bringen – obwohl ich es nicht selbst beheben kann. ![]()
Lassen Sie mich für Sie ins Portugiesisch-BR übersetzen! Ich komme aus Brasilien.
Hallo @Anderson_Cardoso_Silva! Bist du in der Lage, einen Pull-Request mit Übersetzungen zu machen?
Ich habe einige der Probleme behoben, die ich in den Browserprotokollen gesehen habe (einschließlich dessen, was @Roi erwähnt hat), sowie einige englische Texte, die seltsam waren. Ich habe alles in der lokalen Entwicklungsumgebung getestet, aber wenn jemand anderes es auf seinem Discourse testen könnte, wäre ich dankbar.
@Arkshine , diese Zeile zu .discourse-compatibility hinzugefügt. Danke!
Sicherheitslücke 
Hallo @Janno_Liivak,
Vielen Dank für dieses nützliche Plugin! Ich habe einige kritische Sicherheitslücken gefunden, die Aufmerksamkeit erfordern:
Probleme
- Keine Autorisierungsprüfung – Jeder Benutzer kann jedes Thema als verkauft/gekauft/getauscht markieren
- Fehlende Backend-Validierung – Controller überprüfen nicht:
- Plugin aktiviert (
topic_trade_buttons_enabled) - Schaltflächen für Kategorien aktiviert (
enable_*_button) - Nur das Frontend prüft diese Einstellungen (unsicher)
- Plugin aktiviert (
- Keine Eingabevalidierung – Der Parameter
topic_idwird nicht validiert - Keine Aktion nach Erstellung – Operationen werden nicht protokolliert, keine Aufzeichnung darüber, wer Aktionen ausgeführt hat
Auswirkungen
- Nicht autorisierte Themenmanipulation
- Umgehung von Plugin-/Kategorieeinstellungen durch direkte API-Aufrufe
- Kein Audit-Trail darüber, wer Handelsaktionen ausgeführt hat
Hallo @Janno_Liivak,
Die Labels „\[Purchased\]“ und „\[Sold\]“ erscheinen plötzlich auf unserer Website in vereinfachtem Chinesisch. Discourse 3.6.0.beta2. An unserer Website wurden außer Updates keine Änderungen vorgenommen.
Haben Sie eine Idee, wie wir die Labels an die Sprache und den Zeichensatz des Themas/der Website anpassen können?
Wurden die von @lava erwähnten Sicherheitslücken jemals behoben?
Danke!
Gunnar
Hallo @Gunnar! Welche Sprache (und welcher Sprachcode) verwendet deine Website?
Diese Sicherheitsprobleme wurden noch nicht behoben. Ich war in letzter Zeit ziemlich beschäftigt und da ich Discourse selbst nicht mehr benutze, habe ich sie einfach vergessen ![]()
Aber ich werde mir jetzt eine Aufgabe stellen und versuchen, bald Zeit zu finden, alles zu beheben. Wenn jemand helfen kann, würde ich mich freuen, den Pull Request zu überprüfen.






