ログインとアカウント作成には SSO を使用しています。当フォーラムでは、他の方法でのログインや登録はできません。
ただし、スクリーニング済み IP アドレスのリストには、毎日自動的に数十の IP アドレスが追加されています。これは想定された動作でしょうか?IP アドレスがスクリーニング済み IP アドレスのリストに追加される条件は何ですか?
ログインとアカウント作成には SSO を使用しています。当フォーラムでは、他の方法でのログインや登録はできません。
ただし、スクリーニング済み IP アドレスのリストには、毎日自動的に数十の IP アドレスが追加されています。これは想定された動作でしょうか?IP アドレスがスクリーニング済み IP アドレスのリストに追加される条件は何ですか?
私が思いつく唯一の方法は、アカウントを削除して「スパマーを削除」ボタンを選択する場合です。
良い指摘です。API を通じてアカウントを削除する際に、IP が「スクリーン済み IP」に追加されているのが問題ですね。
ただし、block_ip=false を指定して DELETE リクエストを送信しています。これは Rails のログからの抜粋です。
Parameters: {"delete_posts"=>"1", "block_email"=>"0", "blocked_urls"=>"0", "block_ip"=>"0", "id"=>"123"}
それにもかかわらず IP がブロックされているため、どこかにバグがあるのかもしれません。
そうかもしれませんし、違うかもしれません。私が使用しているのは、発見した唯一の ユーザーの削除 エンドポイントです。
DELETE /admin/users/{id}.json
このエンドポイントには、デフォルトで true になっている block_ip パラメータがあり、私は常にこれを false に設定しています。それにもかかわらず、IP アドレスがスクリーニング済み IP に追加されてしまいます。
ユーザーを削除する際、または「削除のみ」というボタンを押す際に、どのリクエストが送信されるかを正確に確認するために、Reverse engineer the Discourse API を参照することをお勧めします。
削除後に IP アドレスがスクリーンリストに追加されているのが見える場合、それは間違いなく、スパマーとしてユーザーを削除している(つまり、中央のボタンである「削除かつブロック」を使用している)からです。
早とちりしていたかもしれません。![]()
truthy/falsy パラメータを ‘true’/‘false’ の文字列に修正しましたが、ユーザーを削除する際に「スクリーン済み IP」や「スクリーン済みメール」にエントリが追加される現象は依然として発生しています。
以下は、API 呼び出し時の Rails ログです。
Started DELETE "/admin/users/9553.json" for 123.123.123.123 at 2021-06-10 00:01:21 +0000
Processing by Admin::UsersController#destroy as JSON
Parameters: {"delete_posts"=>"false", "block_email"=>"false", "blocked_urls"=>"false", "block_ip"=>"false", "id"=>"9553"}
Can't verify CSRF token authenticity.
Rendering text template
Rendered text template (Duration: 0.0ms | Allocations: 1)
Completed 418 in 8ms (Views: 1.4ms | ActiveRecord: 0.0ms | Allocations: 2301)
一方、API ではなく Web インターフェース経由で実行した際の要求は以下の通りです。
Started DELETE "/admin/users/49.json" for 123.123.123.123 at 2021-06-10 08:24:47 +0000
Processing by Admin::UsersController#destroy as JSON
Parameters: {"context"=>"/admin/users/49/XXX", "delete_posts"=>"true", "id"=>"49"}
Rendered text template (Duration: 0.0ms | Allocations: 1)
Completed 418 in 23ms (Views: 4.7ms | ActiveRecord: 0.0ms | Allocations: 1778)
いくつかテストを行った結果、API エンドポイント /admin/users/{id}.json のパラメータは、実際に ‘true’ または ‘false’ に設定されているかに関わらず、存在する限り常に true として解釈されているようです。
その後、‘true’ のパラメータのみを設定し、‘false’ のパラメータは省略するようにしたところ、「スクリーン済み IP」や「スクリーン済みメール」へのエントリ追加は止まりました。
これは意図した動作でしょうか?ドキュメント で理解した内容とは異なりますが。
Reverse engineer the Discourse API のトピックに従って観測される動作をエミュレートしていれば、問題ありません。「delete only」ボタンを押したときに、ネットワークモニターでどのような API 呼び出しが観測されますか?
場合によっては、JS が明示的に false をサーバーに渡さない場合、サーバーは存在する値をすべて true として扱います。おそらく、ここで遭遇している問題もこれに該当するでしょう。