トレーディングボタン

このプラグインは少し古くなっており、本日(@Arkshine の助けを借りて :slight_smile: )アップグレードされました。プラグインを更新し、本番環境の場合はアプリを再構築するか、アプリケーションを再起動する必要があると思われます。Discourse チームからの指示は次のとおりです。Install plugins on a self-hosted site

「いいね!」 5

アップデートありがとうございます。すべて正常に動作することを確認しました。

「いいね!」 5

皆さん、こんにちは。

この問題の解決にご協力いただけますでしょうか?

デスクトップで黒い画面が表示されます

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 :slight_smile:

これはトピック「trade-buttons」プラグインに関連しているようですので、適切な担当者の目に留まるよう、関連トピックに投稿を移動しました。:+1:

@viswanatha このプラグインを追加した後、プロジェクトを再構築しましたか?

Hi @Janno_Liivak

プロジェクトを再構築しましたが、まだ同じ問題が発生しています。

以下のオプションも表示されません。


トピック取引ボタンを有効にする

image

カテゴリ設定


「いいね!」 1

@Janno_Liivak 最後のPRで最近コアに追加されたdiscourse-i18nのインポートが導入されたため、古いDiscourseインストール用のピン留めプラグインとテーマのバージョンに関する Pinning plugin and theme versions for older Discourse installs (.discourse-compatibility) が必要になるかもしれません(10月12日だったと思います)。

私の見たところ、この変更は3.2.0.beta2-dev(9月12日)の後に行われました。

そのため、3.2.0-beta2-devより古いDiscourseバージョンのユーザーは、私のPR(2月22日のもの)より前の最新コミットにロックされることを示すために、.discourse-compatibilityにエントリを追加するのが理にかなっていると思います。

< 3.2.0.beta2-dev 88db827dcecf5faf4e009e38422ede6847488535
「いいね!」 4

:warning: セキュリティ脆弱性 :warning:

要約:このプラグインをインストールすると、無効になっている場合でも、トピックにアクセスできるすべての人(匿名ユーザーを含む)に すべての トピックカスタムフィールドが漏洩します。インストールされている他のプラグインによっては、トピックカスタムフィールドに機密データが含まれる可能性があります。

~~クライアントのためにこのプラグインを審査した際、いくつかのセキュリティ上の問題を発見しました。これらの問題は、私たちのフォーク(https://github.com/communiteq/discourse-topic-trade-buttons/tree/master)で修正し、プルリクエストを作成しました。しかし、トピックの作成者は私たちのプルリクエストやプライベートメッセージに返信していないため、これらの問題を公開することにしました。~~

セキュリティ修正:情報漏洩

すべてのカスタムフィールド(他のプラグインからのものを含む!)がシリアライズされており、匿名ユーザーにも漏洩しています。カスタムフィールドには機密データが含まれる可能性があり、決してそのようにシリアライズされるべきではありません。

sold_atなどの値は anyway サーバーサイドで設定され、ボタンは topic.archived で「計算」されるため、カスタムフィールドロジックはフロントエンドのユーザー向けコードから削除でき、カスタムフィールドは管理インターフェースが機能するためにのみシリアライズすればよいため、シリアライズは管理者ユーザーに限定できます。これすらも必要ないのではないかと疑っています。

初期化修正

シリアライズロジックを囲む if SiteSetting.topic_trade_buttons_enabled チェックにより、プラグインを有効または無効にした後にDiscourseを再起動する必要があります。このチェックは、Discourseがすでに処理しているため不要です。
respect_plugin_enabled: false を使用することは不要であり、上記のセキュリティ問題を悪化させます。

「いいね!」 6

プルリクエストがマージされました

「いいね!」 3

私もです。設定できません。

ブラウザの開発者コンソールで非推奨の通知を見つけました。

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}} [非推奨 ID: ember-this-fallback.this-property-fallback] これは ember-this-fallback n/a で削除されます。詳細については Resolving the `this-property-fallback` deprecation を参照してください。

注意喚起のために共有したかったのですが、自分で修正することはできません。 :see_no_evil_monkey:

「いいね!」 3

ポルトガル語(ブラジル)に翻訳します。ブラジル出身です。

「いいね!」 2

こんにちは @Anderson_Cardoso_Silva さん!翻訳のプルリクエストを作成していただけますか?

ブラウザログで確認した問題(@Roiさんが指摘したものを含む)と、おかしかった英語のテキストをいくつか修正しました。ローカル開発環境で全てテストしましたが、もし他の人が自分のDiscourseでテストしていただけるとありがたいです。

「いいね!」 2

@Arkshine さん、.discourse-compatibility にこの行を追加しました。ありがとうございます。

「いいね!」 1

:warning: セキュリティ脆弱性 :warning:

Janno_Liivak様、

この便利なプラグインをありがとうございます!注意が必要な重大なセキュリティ脆弱性を発見しました。

問題点

  1. 認可チェックなし - どのユーザーでも任意のトピックを販売済み/購入済み/交換済みとしてマークできます。
  2. バックエンド検証の欠如 - コントローラーは以下を検証しません。
    • プラグインが有効か (topic_trade_buttons_enabled)
    • カテゴリボタンが有効か (enable_*_button)
    • これらの設定はフロントエンドのみがチェックします(安全ではありません)。
  3. 入力検証なし - topic_id パラメータが検証されていません。
  4. アクション投稿の作成なし - 操作が記録されず、誰が操作を実行したかの記録がありません。

影響

  • 非認可のトピック操作
  • 直接のAPI呼び出しによるプラグイン/カテゴリ設定のバイパス
  • 取引アクションを実行したユーザーの監査証跡なし
「いいね!」 4

Hi @Janno_Liivak

「購入済み」と「販売済み」のラベルが、当社のサイトで突然、簡体字中国語で表示されるようになりました。Discourse 3.6.0.beta2 です。アップデート以外のサイトへの変更は行っていません。

ラベルをトピック/サイトの言語と文字セットに一致させる方法について、何かアイデアはありますか?

また、@lava が言及していたセキュリティ脆弱性の問題は、解決されましたか?

よろしくお願いします!
Gunnar

こんにちは、@Gunnar さん!あなたのサイトではどの言語(および言語コード)を使用していますか?

これらのセキュリティ問題はまだ対処されていません。最近はとても忙しく、自分でDiscourseを使わなくなってしまったので、単純に忘れていました :see_no_evil_monkey:

しかし、今自分自身にタスクを作成し、すぐにすべてを修正する時間を見つけようと思います。誰かが手伝ってくれるなら、プルリクエストをレビューできて嬉しいです。

「いいね!」 2

英語(米国)。こちらが、当サイトの「言語」設定のスクリーンショットです。