#contents

*ベースシステム [#c0b35882]
-Pukiwiki Plus! 1.4.6-plus-u2-eucjp

*導入プラグイン [#m797bf29]

**rssdiff.inc.php [#fdd986c5]

http://pctraining.s21.xrea.com/download/rssdiff.inc_php.txt

RSSの出力内容を、現在との差分を本文に入れて出力してくれるプラグイン。
スキンを修正して、標準でこのプラグインの出力がRSSとして扱われるようにする。
**mail.in.php [#b6f9e24d]

http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fmail.inc.php

メールフォーム用。
凍結したページからでないと利用できないように制限が掛っているため、実質管理者権限のある人でないと運用できないようになっている。

**recentcomment.inc.php [#wa6bce4f]
pcommentで、最近投稿されたコメントを任意の位置に表示するためのプラグイン

**div.inc.php [#v698df52]
任意のDIV指定を書けるようにするプラグイン
CSSの指定とともに利用することで、トップページのように、本文を2カラムにしたいページで利用。
一部うまく利用できなかったため、修正してある。
CSSは base_3float.css にて
 div#content_right{
         float:right;
         width:48%;
 }
 div#content_left{
         float:left;
         width:48%;
 }
と指定してwrap_content内でさらに左右分割するように指定してあり
 #div(start, id, content_left)
 【左側カラム内容】
 #div(end)
 #div(start, id, content_right)
 【右側カラム内容】
 #div(end)
のようにして利用する。
*プラグインの修正 [#qd9d1213]

**article.inc.php [#te399de7]

&ref(./article.inc.php.patch);

***line_break=1の場合の修正 [#ec382fb5]
改行指定が必要ない設定でも改行文字が入ってしまい、無駄に空行が入ってしまうため、$line_break = 1のときに改行を入れないように修正。

***スパム投稿への対応 [#k22db688]
&color(Maroon){この機能はspam_filter.phpに統合したため、そちらで一括して管理したほうが便利です。};

投稿内容に、指定の正規表現が含まれていた場合に拒否する設定を追加。具体的には例えば</a>や[/url]が含まれている場合に拒否することで、スパム投稿を拒否することができるようになる。

設定はpukiwiki.ini.phpで下記のパラメータで禁止正規表現を指定する。
 define('PLUGIN_ARTICLE_NGREG',  '/<\/a>|\[\/url\]/i'); 

**comment.inc.php [#nb4e09c0]

&ref(./comment.inc.php.patch);

***コメント入力欄行数の指定 [#f5eaa814]
コメント入力欄行数を増やすため、入力欄の行数指定ができるようにして、2行以上の場合はTEXTAREAを利用するように修正。
また、文中の改行を削除してしまうようになっていたため、最後の改行や空行だけ削除するようにし、文中の空行は改行命令に置き換えるように修正。

設定はpukiwiki.ini.phpで下記のパラメータで行数を指定する。
 define('PLUGIN_COMMENT_ROWS_MSG',    2);

***スパム投稿への対応 [#z9e91c61]
&color(Maroon){この機能はspam_filter.phpに統合したため、そちらで一括して管理したほうが便利です。};

投稿内容に、指定の正規表現が含まれていた場合に拒否する設定を追加。具体的には例えば&#60;/a&#62;や&#91;/url&#93;が含まれている場合に拒否することで、スパム投稿を拒否することができるようになる。

設定はpukiwiki.ini.phpで下記のパラメータで禁止正規表現を指定する。
 define('PLUGIN_COMMENT_NGREG',  '/<\/a>|\[\/url\]/i'); 

**pcomment.inc.php [#k7143a16]

&ref(./pcomment.inc.php.patch);

***コメント入力欄行数の指定 [#zd477563]
コメント入力欄行数を増やすため、入力欄の行数指定ができるようにして、2行以上の場合はTEXTAREAを利用するように修正。

設定はpukiwiki.ini.phpで下記のパラメータで行数を指定する。
 define('PLUGIN_PCOMMENT_ROWS_MSG',   2);

***スパム投稿への対応 [#i7b6304d]
&color(Maroon){この機能はspam_filter.phpに統合したため、そちらで一括して管理したほうが便利です。};

投稿内容に、指定の正規表現が含まれていた場合に拒否する設定を追加。具体的には例えば&#60;/a&#62;や&#91;/url&#93;が含まれている場合に拒否することで、スパム投稿を拒否することができるようになる。

設定はpukiwiki.ini.phpで下記のパラメータで禁止正規表現を指定する。
 define('PLUGIN_PCOMMENT_NGREG',  '/<\/a>|\[\/url\]/i'); 

**rss.inc.php [#hf47be3a]
デフォルトのRSSバージョン指定をできるようにして、たとえばデフォルトをRSS1.0にすることで、IE7のRSSアイコンが機能するように修正。

&ref(./rss.inc.php.patch);

設定はpukiwiki.ini.phpで下記のパラメータでデフォルトのバージョンを指定する。
 define('PLUGIN_RSS_VERSION_DEFAULT', '1.0');

**attach.inc.php [#k637527b]
&color(Maroon){この機能はspam_filter.phpに統合したため、そちらで一括して管理したほうが便利です。};

ファイル名が正規表現にマッチしたらアップロードを許可しないように修正。

&ref(./attach.inc.php.patch);
&ref(./ja.lng.php.attach.patch);
&ref(./en.lng.php.attach.patch);

設定はpukiwiki.ini.phpで下記のパラメータで添付を許可しないファイル名を正規表現で指定する。
 define('PLUGIN_ATTACH_UPLOAD_FILEREG', '/\.html$|\.htm$/');

**init.php/file.php [#offddcd4]
スパム投稿の情報を簡単に参照できるようにするため、diffで表示した差分の最後に、編集者のIPやUSER AGENT情報などを表示するように修正。

lib/init.php へのパッチ &ref(./init.php.patch);
lib/file.php へのパッチ &ref(./file.php.patch);

**spam_filter.php [#ofa18e88]
akismet組み込み用の追加を参考に、複数のスパムフィルタを利用できる汎用のフィルタ(のベースになるもの)を作成。

lib/spam_filter &ref(./spam_filter.php);
lib/plugin.php へのパッチ &ref(./plugin.php.patch);

正規表現によるHTTP_USER_AGENTでのフィルタを利用するためには下記パッチも必要です。

lib/init.php へのパッチ &ref(./init.php.patch);

また、Akismetのフィルタを利用するためには
PukiWiki/Akismetによるspam(スパム)防止機能 - ARK-Web SandBox Wiki
http://www.ark-web.jp/sandbox/wiki/190.html
を参照の上、Akismet.class.phpを導入する必要があります。

pukiwiki.ini.phpで、利用するフィルタ種を
 define('SPAM_FILTER_COND', '#useragent() || #filename() || #atag()');
のように指定して、各フィルタをどのプラグインに掛けるかを
 define('SPAM_FILTER_NGREG_PLUGIN_NAME', 'edit,comment,pcomment,article');
のように指定します。
この例では正規表現によるNGワードフィルタ(ngreg)を編集(edit),commentなどのプラグインに対して掛けるよう指定しています。
個々のフィルタの設定がある程度書いてあるため、SPAM_FILTER_NAMEで下記制限を選択するだけで、使えるようになります。

現時点では以下の制限を利用できます
- ngreg
正規表現のNGワードで編集内容に対するフィルタ
- url
内容にURLっぽいものが含まれているかチェック
- atag
内容に&#60;/a&#62;や&#91;/url&#93;のようなアンカータグが含まれているかチェック
- onlyeng
内容が半角英数のみ(日本語が入っていない)かチェック
- urlnum
内容に含まれているURLが何個以上かチェック
- useragent
正規表現によるHTTP_USER_AGENTでのフィルタ
- filename
正規表現による添付ファイル名でのフィルタ
- urlnsbl
URLのNSがブラックリストに入っているか確認
- akismet
Akismetを利用したフィルタ

*設定ファイルの修正 [#k528c2ed]
**ローカルなアイコンを直接表示させるためにアイコンフォルダを準備 [#m5a82e55]
pukiwiki.ini.php
 // ローカルなアイコン管理用
 // 管理者がアイコンを置くためのディレクトリ
 define('ICON_DIR', 'icon/');
 // アイコン用のURIを設定
 define('ICON_URI', ROOT_URI . ICON_DIR);

**(up)や(new)を手軽に入れれるようにする [#hdc1a6df]
 (up) (new)
という表記で簡単にアイコンを書けるようにする。
default.ini.php ファイルの facemark_rules に追記
 // new up marks
 '(\(new\))'     => ' <img alt="$1" src="' . ICON_URI . 'new.jpg" />',
 '(\(up\))'      => ' <img alt="$1" src="' . ICON_URI . 'up.jpg" />',
 '(\(star\))'    => ' <img alt="$1" src="' . ICON_URI . 'star.gif" />',

**アイコンフォルダにある画像を簡単に直接表示できるようにする [#ka31093a]
 (icon 【画像ファイル名】)
という場合、アイコン画像のURLが直接書かれるようにする。
default.ini.php ファイルの facemark_rules に追記
 // icon replace
 '\(icon\s+(\S+)\)' =>' <img alt="$1" src="' . ICON_URI . '$1" />',

**refプラグインで画像サイズを取得しないようにする [#s5d276bb]
refプラグインで画像が表示する場合、デフォルトでは画像サイズを得るようになっているが、取得できない画像や時間がかかるものがある場合、そこでサイズを得るために読み込もうとするため、非常に遅くなってしまう問題が起こる。
URL指定時に画像サイズを取得するかを決める PLUGIN_REF_URL_GET_IMAGE_SIZE を画像サイズを取得しないように変更。

pukiwiki.ini.php
 define('PLUGIN_REF_URL_GET_IMAGE_SIZE', FALSE);
**コメントの入力欄を2行に設定 [#p6566411]
comment,pcomment プラグインの修正をして、コメントの入力欄を指定できるようにしたので、comment,pcomment共に2行に指定。

pukiwiki.ini.php
 define('PLUGIN_COMMENT_ROWS_MSG',    2);
 define('PLUGIN_PCOMMENT_ROWS_MSG',   2);

**ARTICLEプラグインの投稿内容で改行をBRに自動変換しない [#ibe298e3]
pukiwiki.ini.php
 define('PLUGIN_ARTICLE_AUTO_BR',     0);

**RSSのデフォルト出力バージョンを1.0にする [#cceac110]
&color(Maroon){CSSを変更し、rssdiffプラグインを使ってRSSの出力に差分も表示されるようにしたため、現在は使っていません。};

pukiwiki.ini.php
 define('PLUGIN_RSS_VERSION_DEFAULT', '1.0');
*スキンの設定 [#n2d7faf5]
skin/miasa.skin.php というスキン設定ファイルを skin/iridorange.skin.php をベースに修正して作成

**上部メニューの表示内容を修正する [#g590d46a]
ja.lng.php ファイルの内容を修正

「編集」→「このページを編集する」
「バックアップ」→「更新履歴をみる」
「差分」→「最新の修正箇所をみる」
など、説明をわかりやすいように変更。

&ref(./ja.lng.php.patch);

Navi2を利用しているため、Navigationページを修正してメニュー内容を変更

 -edit
 -diff
 -backup
 -new
 --rename
 --upload
 --copy
 --freeze
 --unfreeze

という設定で
 このページを編集する 最新の修正箇所をみる 更新履歴をみる 新しいページを作る
という表示になります。
**本文にページタイトルが出ないようにする [#q07ad452]
skin/miasa.skin.php ファイルでH1を本文に出さないようにして、サイトタイトルの下のページ名をH1で出すように修正

**編集時にはじめからテキスト整形ルールを表示するようにする [#w87fe51b]
skin/miasa.skin.php ファイルで
 $_LINK['edit'] = "$script?cmd=edit&amp;help=true&amp;page=$r_page";
を入れて、編集コマンドで最初からhelp=trueとなるように修正

**RSSをrssdiffプラグインを使うように変更 [#w87fe51b]
skin/miasa.skin.php ファイルで
 $_LINK['rss']  = "$script?cmd=rssdiff";
を入れて、rssdiffプラグインのRSSの出力として使うように修正

*スパム対策 [#f9956689]

**「FrontPage」→「TopPage」に修正 [#cb252411]
pukiwiki.ini.phpで「$defaultpage」を「FrontPage」→「TopPage」に修正。
スパマーはFrontPageで検索してターゲットを探している場合が多いようなので、FrontPageという名前を使わないようにしました。

pukiwiki.ini.php
 $defaultpage  = 'TopPage';     // トップページ / 既定のページ

**いくつかのスパムフィルタを使えるspam_filter.phpの導入 [#l03d83a6]
lib/spam_filter.php &ref(./spam_filter.php);
lib/plugin.php へのパッチ &ref(./plugin.php.patch);
lib/init.php へのパッチ &ref(./init.php.patch);

および、最終編集者の情報を知るためのパッチ
lib/file.php へのパッチ &ref(./file.php.patch);

を導入します。
spam_filter.phpをlibディレクトリ以下に置きます。
plugin.phpにplugin.php.patchを当てて同ファイルを置き換えます。同様にinit.phpとfile.phpもパッチを当てます。

下記のように、利用するスパムフィルタを指定します。
他に現在はakismetが利用できます(のつもり)。今後もspam_filter.phpの修正によりフィルタを追加する予定です。

現在導入しているフィルタとその設定です。

-編集した内容に&#60;/a&#62;や&#91;/url&#93;が含まれている書き込みを拒否
-クライアントHTTP_USER_AGENTが「WWW-Mechanize」「libwww-perl」等からの書き込みとファイル添付を拒否 [#y6d02f03]
-添付ファイル名拡張子が「.html」「.htm」の添付を拒否
-Menu編集スパムが使っていたドメインbiglobe-ne.comとURL羅列スパマーが使っていたomyqeso.comのNSをブラックリストとして拒否
-内容に日本語がなくてURLが3件以上ある書き込みを拒否

pukiwiki.ini.php
 define('SPAM_FILTER_COND', '#useragent() || #filename() || #atag() || (#onlyeng() && #urlnum()) || #urlnsbl()');
 define('SPAM_FILTER_URLNSBL_REG', '/ns[0-9]\.dnsfamily\.com|216\.195\.58\.5[0-9]/i');

**AタグやphpBB形式のタグ書式でURLが書き込まれていたら、その書き込みをキャンセル [#n92e1cd8]
&color(Maroon){これは前記spam_filter.phpに統合されたため、現在は利用していません。};
&color(Maroon){spam_filter.phpを設置してplugin.phpへのパッチを当ててもらえれば、個別のプラグインへのパッチを当てる必要はないので、spam_filter.phpのほうを利用いただいたほうが簡単です。};

articleやcomment,pcommentの内容に、「&#60;/a&#62;」と「&#91;/url&#93;」というタグが入っている書き込みを拒否する。

article.inc.php,comment.inc.php,pcomment.inc.php プラグインの修正と、禁止パラメータの指定。

pukiwiki.ini.php
 define('PLUGIN_COMMENT_NGREG',  '/<\/a>|\[\/url\]/i');
 define('PLUGIN_PCOMMENT_NGREG', '/<\/a>|\[\/url\]/i');
 define('PLUGIN_ARTICLE_NGREG',  '/<\/a>|\[\/url\]/i');

**「.html」「.htm」のファイルアップロードを禁止 [#vd543a94]
&color(Maroon){これは前記spam_filter.phpに統合されたため、現在は利用していません。};
&color(Maroon){spam_filter.phpを設置してplugin.phpへのパッチを当ててもらえれば、個別のプラグインへのパッチを当てる必要はないので、spam_filter.phpのほうを利用いただいたほうが簡単です。};

拡張子がHTMLファイルのアップロードを禁止しました。

attach.inc.php プラグインの修正と、禁止パラメータの指定。

pukiwiki.ini.php
 define('PLUGIN_ATTACH_UPLOAD_FILEREG', '/\.html$|\.htm$/');

**リダイレクトサービスを利用したURLが一定数以上の更新を禁止 [#pa254163]
未実装

**Proxy経由での書き込みを禁止 [#x84ad925]
これはまだやらない

**Captchaの導入 [#t44fe004]
怪しい(URLが書いてある、逆引きできないIPからの書き込み、など)書き込みに対してのみ、Captcha(ゆがんだ文字列画像を表示してその内容を入力してもらう)でのチェックを掛ける。
まだ未実装。
ただ、下記サイトでcaptchaのフィルタ自体は公開されてるので、これをベースにさせていただいて修正し、怪しい場合だけ掛けるように修正したい。

自作プラグイン/captcha - teanan.homeip.net - PukiWiki
http://teanan.homeip.net/pukiwiki/?%BC%AB%BA%EE%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%2Fcaptcha

**他のWikiサイトでの導入例と本家バージョン向けパッチ [#z824c918]
Wiki/PukiWiki/Tips/スパムがウザイ - TOBY SOFT wiki
http://tobysoft.net/wiki/index.php?Wiki%2FPukiWiki%2FTips%2F%A5%B9%A5%D1%A5%E0%A4%AC%A5%A6%A5%B6%A5%A4


*質問や要望などコメントがあればどうぞ [#n79cf808]

#comment

----
このページは管理者しか編集できないように制限を掛けています。