匿名ユーザーのIPアドレスを非表示にする
目次 |
[編集] IPアドレスを置き換える
正規表現(preg_replace)を使うことで、IPアドレスを一律に特定文字に置き換えることができます。 MediaWikiのインストールフォルダにある、該当ファイルに以下を追記しましょう。
[編集] 編集履歴
includes/PageHistory.phpを編集します。 各ページの編集履歴に表示される、IPアドレスを別の文字列に置き換えます。 PageHistory.phpには以下のような文章が書いてあるはずですね?
wfRunHooks( 'PageHistoryLineEnding', array( &$row , &$s ) );
MediaWikiのVer.によっては
wfRunHooks( 'PageHistoryLineEnding', array( $this, &$row , &$s ) );
もしくは
wfRunHooks( 'PageHistoryLineEnding', array( $this, &$row , &$s, &$classes ) );
かもしれません。 その文章の次に以下を追記してください。
$s = preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $s);
注:「名無しさん」よりも「Nanashi-SAN」のように英字の方が上手くいくようです。
[編集] 差分表示
includes/diff/DifferenceEngine.phpを編集します。1.14からはincludes/diff/DifferenceEngine.phpです。 履歴の差分表示をした際に表示される、IPアドレスを別の文字列に置き換えます。
'<div id="mw-diff-otitle2">' . $sk->revUserTools( $this->mOldRev, true ) . "</div>" .
以下のコードに書き換えてください。
'<div id="mw-diff-otitle2">' . preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $sk->revUserTools( $this->mOldRev, true )) . "</div>" .
'<div id="mw-diff-ntitle2">' . $sk->revUserTools( $this->mNewRev, true ) . " $rollback</div>" .
以下のコードに書き換えてください。
'<div id="mw-diff-ntitle2">' . preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $sk->revUserTools( $this->mNewRev, true )) . " $rollback</div>" .
ここで2か所を書き換える理由は、差分表示した際に前版と最新版との2つの編集者履歴が表示されるからです。
[編集] 画像関連
includes/ImagePage.phpを編集します。 画像ページの履歴に表示される、IPアドレスを別の文字列に置き換えます。
$s = $list->beginImageHistoryList($navLink);
この次の行に以下を追記してください。
$s = preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $s);
includes/ImageGallery.phpを編集します。 Special:NewImagesに表示される、IPアドレスを別の文字列に置き換えます。
. $textlink . $text . $nb
以下のコードに書き換えてください。
. $textlink . preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $text) . $nb
[編集] 最近更新したページ
includes/special/SpecialRecentchanges.phpを編集します。 Special:Recentchangesに表示される、IPアドレスを別の文字列に置き換えます。
$s .= $list->endRecentChangesList();
以下のコードに書き換えてください。
$s = preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $s);
[編集] RSSフィード
最近更新したページの、配信されるRSSフィードに編集者情報が表示されます。その部分を置き換えないと、IPアドレスがそのまま表示されてしまうため、上記だけでは不完全です。
includes/Feed.phpを編集します。
<?php if( $item->getAuthor() ) { ?><dc:creator><?php print $item->getAuthor() ?></dc:creator><?php }?>
上記を下記に書き換えてください。
<?php if( $item->getAuthor() ) { ?><dc:creator><?php print preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $item->getAuthor()) ?></dc:creator><?php }?>
<?php if( $item->getAuthor() ) { ?><author><name><?php print $item->getAuthor() ?></name></author><?php }?>
上記を下記に書き換えてください。
<?php if( $item->getAuthor() ) { ?><author><name><?php print preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $item->getAuthor()) ?></name></author><?php }?>
書き換え箇所が2つ存在するのは、RSS2.0とAtomの両方をMediaWikiがサポートしているからです。 もし、RSSフィードを配信しないのであれば、LocalSettings.phoで$wgFeedをfalseにしてください。
[編集] 新しいページ
includes/special/SpecialNewpages.phpを編集します。 Special:Newpagesに表示される、IPアドレスを別の文字列に置き換えます。
$ulink = $this->skin->userLink( $result->rc_user, $result->rc_user_text ) . ' ' . $this->skin->userToolLinks( $result->rc_user, $result->rc_user_text );
この行の次に以下を追記してください。
$ulink = preg_replace('/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/', '名無しさん', $ulink);
[編集] 注意事項
この方法でIPアドレスをMediaWiki上に一切表示しなくなります。しかし、これは投稿者のIPアドレスを"名無しさん"に置き換えて表示しているだけなので、IPアドレスが記録されていないというわけではありません。 投稿者のIPアドレスを調べてたい場合、以上のうちどれかを削除することで確認することが出来ます。
[編集] 匿名ユーザーを一律名無しさんとする
includes/User.phpにある"$this->mName = IP::sanitizeIP( wfGetIP() );"を"$this->mName = 名無し;"と書き換える。これだけ。
これによって、匿名ユーザーはIPアドレスが表示されることなく名無しさんと表示される。これを使用すると、MediaWiki上では名無しというアカウントを持った人が投稿したと言うことになり、IPアドレス置き換えとは違ってMediaWiki上で(名無し以外の)誰か一人についてあれこれ調べることができなくなる。 Extension:CeckUserをあらかじめ入れておけば、後で調べることは可能。但し、インストール以前に遡って調べることは出来ない。
また、名無しというアカウントが既に存在していたり、後から取得されたりすると、その人が投稿したことになってしまう。この場合はUsername BlacklistやTitle Blacklistを使って事前に防ぐことが出来る。