ごあいさつ
この度は当CGIをダウンロードして頂き、誠にありがとうございます。
dorama.cgi及びdorama_ini.cgi、dorama_denyallow.cgiファイルを編集を行う前に、当マニュアルをぜひご一読ください。
なお、このマニュアルはWeB DoRaMaを設置した人向けに書かれております。
前書き
俺がこのCGI/Perlの改造を行った理由は、悪質な荒らし・利用者の指揮及び連続投稿・自作自演によるによるコンテンツ支配が多発したのと、ウェブブラウザ搭載の携帯電話の普及に伴い、ネットワーク人口が増大した事が契機なのかも知れません。
しかし、このスクリプトに出会ってしばらくして、改造を行いました。
初期版は環境変数とかを追加しただけの粗末な物でしたが携帯電話向けの掲示板スクリプト及び各キャリアの公式ホームページを閲覧し、調べ上げ、他のスクリプトから移植した結果が現在のスクリプトの原型ともなりました。
その後、現在に至るまで様々な改変とスクリプトの最適化等を行った為、現在の姿に近付きました。
携帯経由のアクセスによるレイアウトの変更及びスクリプトの改良、アクセスキー使用による利便性の向上、セキュリティの向上、内部機能の改良、ロックスクリプトの改変により現在の姿になりました。
苦い経験があった為、現在の物が出来た事になったのは紛れも無い事実なのかも知れません…
★機能説明
Shigeto Nakazawa氏作のWeB DoRaMaにいくつかの荒らし対策機能を強化たものです。
変更点は以下のとおりです。
- 連続投稿ツール対策の強化。
オリジナル版で連続投稿可能な、フェイザー型連続投稿ツールによる連続投稿をされにくくしました。
- プロキシチェックの強化(mm氏作ルーチンを使用)。
設定によってプロキシによく使われるドメイン名が獲得できないIPやjpドメインでないホストをプロキシ経由とみなすようにできます。
- プロキシ経由とみなされた場合でも許可するIP/ホスト/クッキーの指定。
- 同一内容投稿の禁止。
- 拒否IPの指定にホスト名を指定できるように変更(IPの指定に比べてアクセス規制がしやすくなります)。
同一PC判定のためのクッキーの記録とクッキーによるアクセス規制・許可cid〜と表示されるのがクッキーです。
IPによるアクセス規制と違って個別にアクセスの規制・許可が行なえるので他の人まで規制されることを防ぐことができます。
IPで規制して、イタズラしないのに規制される人をクッキーで許可するのが効果的だと思います。
- 執筆なしでの過去のストーリーの表示。
- 出演者エディタのIP・クッキーの記録と管理者ログインでの表示。
- 出演者エディタのIP・クッキーによるアクセス規制。
- 出演者エディタのゲストログイン時のアイコンURLの指定から古いスクリプトへの投稿を行うURLを排除。
- 新機能としてWILLCOM以外の携帯電話情報取得機能を追加(簡易的に取得するのみですが…)。
(ただし、副作用によりPC経由の情報も取得してしまうと言う機能も入っています…)
- 管理者専用エディタのみどの端末で投稿したかを知る事が出来るようになった(例えばDoCoMoの場合は mova 及び FOMA と言うぐあいに)。
- 携帯経由の投稿制限機能の追加(ただし、携帯電話情報(シリアルbェ含まれていなくとも)が読まれるとヤバイ事になるのでログファイルを別の名前に書き換える事をお勧めしますw)。
- ログファイルのバックアップ機構。
- 新たなロック機構の採用。
- 公開串対策。
- ドラマの利用者用注意事項説明HTMLの表示の追加。
『携帯のみの新機能』
- 携帯でのアクセス時にレイアウトが変わる。
単独スクリプトではあまり例の無い試みですが、容量が若干軽量化されると思います。
- 携帯のみキー操作によるをダイレクトアクセス機能を追加。
従来と比べてもかなりの手間がかかりません♪
その代わり、ファイル自体がかなり重くなりました…(^^;
★設置方法
アーカイブには以下のファイルが含まれています。
manual/ ... ReadMeファイルディレクトリ
readme.html ... このファイルです
readme.css ... このファイルのスタイルシート
icon ... お楽しみファイル
dorama.cgi ... CGIスクリプト
lib/ ... ライブラリディレクトリ
xxxxx.pl ... 各機種向け表示ライブラリ
jacode.pl ... 日本語変換ライブラリ(Thanks Kazumasa Utashiro)
data/ ... 各種データディレクトリ
dorama_denyallow.cgi ... 投稿制限及び許可設定ファイル
dorama_init.cgi ... 設定ファイル
dorama.log ... 記録ファイル
dorama_bak.log ... 記録ファイル(バックアップ)
dorama.act ... 出演者用ファイル
dorama_bak.act ... 出演者用ファイル(バックアップ)
accesslog.txt ... 簡易アクセスログ記録ファイル
errlog.txt ... エラー記録ファイル
tmp/ ... ロックディレクトリ
dorama.txt ... リネームロック用テキストファイル
common/ ... スタイルシート等ディレクトリ
css/ ... スタイルシートディレクトリ
xxxxx.css ... 各機種向けスタイルシート
image/ ... イメージファイルディレクトリ
dorama.gif ... ドラマの画像ファイル(Thanks Mina)
dorama/ ... 画像変換ディレクトリ
heart.jpg ... 画像変換用画像
heart_m.gif ... 画像変換用画像
heart_m.png ... 画像変換用画像
namida.jpg ... 画像変換用画像
namida_m.gif ... 画像変換用画像
namida_m.png ... 画像変換用画像
makka.jpg ... 画像変換用画像
makka_m.gif ... 画像変換用画像
makka_m.png ... 画像変換用画像
jito.jpg ... 画像変換用画像
jito_m.gif ... 画像変換用画像
jito_m.png ... 画像変換用画像
kyupin.jpg ... 画像変換用画像
kyupin_m.gif ... 画像変換用画像
kyupin_m.png ... 画像変換用画像
BIGLOBEのwww5?.biglobe.ne.jpサーバーの場合は、「★BIGLOBE(www5?.biglobe.ne.jp)の設置」を読んでください。
ただしCGIの実行がwww5?.biglobe.ne.jpドメインで実行可能になっている場合は通常通り設置できます。
まずdorama.cgiを設置環境に応じて編集します。
一行目が設置するサーバーのPerlのパスと異なっている場合は変更します。
普通は全てのファイルを同じディレクトリ(フォルダ)内に置けば良いです。
(プロバイダによって指定されている場合は、オプション設定で変更の必要あり)
以下のファイルをアスキーモードで転送し、パーミッションを後の[]の中の値に設定します。
設置するHP領域のサポートページで推奨している値があったらそちらを設定します。
特に理由がなければ、セキュリティのためなるべく左の方の値を設定するようにしてください。
・dorama.cgi [700|705|755]
・xxxxx.pl [700|705|755]
・dorama_denyallow.cgi [700|705|755]
・dorama_init.cgi [700|705|755]
・jacode.pl [600|604|644]
・dorama.log [600|606|666]
・dorama_bak.log [600|606|666]
・dorama.act [600|606|666]
・dorama_bak.act [600|606|666]
・accesslog.txt [600|606|666]
・errlog.txt [600|606|666]
・tmp [700|705|707|755|777]
・dorama.txt [600|604|644]
・common [705|755]
・css [705|755]
・xxxxx.css [604|644]
・image [705|755]
・dorama.gif [604|644]
・dorama [705|755]
・heart.jpg [604|644]
・heart_m.gif [604|644]
・heart_m.png [604|644]
・namida.jpg [604|644]
・namida_m.gif [604|644]
・namida_m.png [604|644]
・makka.jpg [604|644]
・makka_m.gif [604|644]
・makka_m.png [604|644]
・jito.jpg [604|644]
・jito_m.gif [604|644]
・jito_m.png [604|644]
・kyupin.jpg [604|644]
・kyupin_m.gif [604|644]
・kyupin_m.png [604|644]
dorama.gifとdorama.jarはバイナリモードで転送します。
★Nifty(homepage?.nifty.com)の設置
画像ファイルはhttp://homepage?.nifty.comでないと表示されないので、$back_urlをhttp://homepage?.nifty.com/アカウント名/配下のディレクトリに設定してdorama.gifを対応したディレクトリにバイナリモードで転送します(?は自分のHP領域のサーバーの番号です)。
以下のファイルをcgi-binディレクトリの下のフォルダに
アスキーモードで転送し、パーミッションを後の[]の中の値に設定します。
・lock [700|705|707|755|777]
・dorama [600|604|644]
・dorama.cgi [700|705|755]
・xxxxx.pl [700|705|755]
・dorama_denyallow.cgi [700|705|755]
・dorama_init.cgi [700|705|755]
・jacode.pl [600|604|644]
・dorama.log [600|606|666]
・dorama_bak.log [600|606|666]
・dorama.act [600|606|666]
・dorama_bak.act [600|606|666]
・accesslog.txt [600|606|666]
・errlog.txt [600|606|666]
dorama.gifとdorama.cssは別フォルダへ転送します。
エラーログをブラウザで確認したい場合は$error_logを/homepage/ディレクトリの下にしておくとエラーログをブラウザで見ることが出来ます。
★設置後の動作確認
転送とパーミッションの設定が完了したらdorama.cgiにアクセスしてうまく設置できているか確認します(BIGLOBEのwww5で始まるサーバーの場合はdorama.cgiにリンクしたHTMLからアクセスします)。
始めてドラマが動いた時は、
???「」
???「」
???「」
???「」
???「」
と表示されたら正常に動作しています。
後は何回か登録するとちゃんとしたドラマになります。
あとはカスタマイズ項目を自分のページに合わせて設定して、出演者エディタで出演者を設定すれば設定完了です。
セキュリティー項目はセキュリティー項目の設定についてを参照してください。
出演者エディタで設定する場合、削除すると表示がおかしくなるのでなるべく削除は避けるようにしてください。
★トラブルについて
CGIに不都合がある場合はオリジナルの配布元の
CGI-StaTionのトラブルシューティングのページとサポート掲示板が参考になります。
ただしShigeto Nakazawa氏の迷惑になりますのでサポート掲示板やShigeto Nakazawa氏へのメールでの質問はしないでください。
質問やトラブルの報告は
当方の伝言板をご利用下さい。
CGIの知識があまりないので(^^;)、充分な対応ができない場合がありますので
あらかじめご承知ください(ちなみに俺もですが…)。
★セキュリティ項目の設定
投稿制限及び許可設定ファイル
- 禁止ワード:@BAD_WORD = ('〜','〜');
書きこまれたくない言葉をここに記述すると、その言葉を含む単語などを投稿できなくします。
他のその言葉を含む内容も排除されるので設定には注意してください。
@BAD_WORD = ('禁止ワード1','禁止ワード2','…');というように '' の中に単語を書き、 , で区切って増やします。
間の空白を削ってからチェックするので、空白を入れないようにしてください。
- 投稿規制:@check_ipad = ('〜','〜');
イタズラをする人のIPアドレス/リモートホスト/携帯端末情報/クッキーからの投稿を排除します。
イタズラする人のIP/ホスト/携帯端末情報/クッキーを記述することで、そのIPアドレスからの投稿はできなくなります。
ダイアルアップ等の場合はIPアドレスが毎回変ることがあります。
(例)
IP1A123.tky.host.ne.jp
IP1A001.tky.host.ne.jp
と変わる場合、その場合は先頭に*を付けてホスト名の変化する数字より後の部分を指定します。
@check_ipad = ('*tky.host.ne.jp');
ホスト名が獲得できなくてIPアドレスのみになる場合は最初の3つだけを記入するようにします。
@check_ipad = ('123.456.789.');
- 投稿規制(クッキー):@check_cokkie = ('〜','〜')
イタズラをする人のIP/ホスト/携帯端末/クッキーからの投稿を排除します。
イタズラする人のIP/ホスト/携帯端末/クッキーを正確に記述することで、そのIP/ホスト/携帯端末/クッキーからの投稿はできなくなります。
また、ここに''を追加するとクッキーを無効にした状態での投稿を排除します。
ただしクッキーを無効にしたり削除すると投稿できてしまいます。
- 匿名プロクシ制限:$check_proxy = n;
匿名プロクシを使って荒らし行為が行われる場合に設定します。
この匿名プロクシ制限と、上のIPアドレス制限でほとんどの荒らしを排除可能です。
- 値の意味は以下の通りです。
- 0 … 匿名プロクシを制限しません。
- 1 … 匿名プロクシからの投稿を拒否します。
匿名プロクシチェックはCATVやイントラネット経由の環境等プロクシ経由でなくてもプロクシとみなしてしまうことがあります。
- この場合は後の許可IPアドレスにその人のホストかIPアドレスを設定することで投稿を受け付けるようになります。
- ロリポップ等一部のサーバーではプロキシ判定が上手く行かない場合があります。
- この場合は後の$only_jpを2に設定することで、環境変数によるプロキシ判定を行わずにjpドメインでないホスト名をプロキシとみなします。
ドメインネームの取得ができるサーバであることが条件です。
- ドメインのないIPを排除:$check_host = n;
$check_proxyを0以外にした場合にここの値を 1 にすると、プロキシによく使われるドメインネームの取得ができないIPをプロキシ経由とみなします。
- 一部のドメインネームの取得ができないプロバイダまでプロキシ経由とみなすので設定には注意してください。
- HP領域がドメインネームの取得ができないサーバの場合は全てプロキシ経由とみなすので0のままにしてください。
- jpドメイン以外を排除:$only_jp = n;
$check_proxyを0以外にした場合にここの値を 1 にすると、
プロキシによく使われるjpドメイン以外のホストをプロキシ経由とみなします。
- Yahoo!BBやuu.net等jpドメインでないプロバイダまでプロキシ経由とみなすので設定には注意してください。
- HP領域がドメインネームの取得ができないサーバの場合は0のままにしてください。
- ロリポップ等一部のサーバーではプロキシ判定が上手く行かない場合があります。
この場合はここの値を 2 に設定することで、環境変数によるプロキシ判定を行わずにjpドメインでないホスト名をプロキシとみなします。
ドメインネームの取得ができるサーバであることが条件です。 -
- 投稿許可IP:allow_ipad = ('〜','〜');
ここに プロクシ経由でないのに投稿できなくなる方の IP/ホスト/携帯端末情報/クッキー名を書いておくと、そのIP/ホスト/携帯端末情報/クッキーからの投稿を許可します。
記述の形式は@check_ipadと同じです。
- 投稿許可クッキーID:@allow_cookie = ('〜','〜');
ここにイタズラをしてないのにアクセス規制・プロクシ経由規制で投稿できなくなる方のIP/ホスト/携帯端末/クッキーを正確に書いておくと、そのIP/ホスト/携帯端末/クッキーからの投稿を許可します。
- 設定ファイル
- 不正アクセス防止:$check_url = "〜";
荒らしスクリプト等の他URIからの投稿を拒否します。
このCGIの正確な URL (http://〜) を記述します。
Windows CE等環境によって投稿できなくなることもあります。
- 他サイトからの入室禁止:@allow_url = ('〜','〜');
ここに入室を許可するURLを設定しておくと、
設定したURLを含むURLからのみ、入室と投稿を許可します。
他サイトからの入室とURLを直接入力しての入室は排除されます。
@allow_url = ('許可URL1','許可URL2');というように '' の中にURLの一部を書き、 , で区切って増やします。
ここを設定する場合は必ずこのCGIの設置URLも許可されるようにしてください。
- 注意
携帯の機種によってはリファラを吐きませんので(ブラウザの仕様)よほどの事が無い限り設定しないほうがいいと思われます。
- 匿名プロクシ制限:$check_proxy = n;
匿名プロクシを使って荒らし行為が行われる場合に設定します。
この匿名プロクシ制限と、上のIPアドレス制限でほとんどの荒らしを排除可能です。
値の意味は以下の通りです。
0 … 匿名プロクシを制限しません。
1 … 匿名プロクシからの投稿を拒否します。
匿名プロクシチェックはCATVやイントラネット経由の環境等
プロクシ経由でなくてもプロクシとみなしてしまうことがあります。
この値を2に設定するとプロバイダのIPで投稿させることができます。
この場合はプロバイダのIPがIPアドレス制限に登録されている場合だけ排除されます。
ただしブラウザや環境によっては投稿できなかったり、トラブルが起きる場合があります。
この場合は後の許可IPアドレスにその人のホストかIPアドレスを設定することでJavaの生IP抜きなしで投稿を受け付けるようになります。
なるべく訪問者の環境から判断して設定した方が良いでしょう。
- 公開串制限:$bbq = n;
公開プロキシを使用していると自動的に弾かれますが、副作用があるかも知れません。
よほどの事がなければ使用しなくても構いません。
- リモートホスト情報のないIPを排除:$check_host = n;
$check_proxyを 0 以外にした場合にここの値を 1 にすると、プロキシによく使われるドメインネームの取得ができないIPをプロキシ経由とみなします。
一部のリモートホスト情報の取得ができないプロバイダまでプロキシ経由とみなすので設定には注意してください。
HP領域がリモートホスト情報の取得ができないサーバの場合は全てプロキシ経由とみなすので 0 のままにしてください。
- jpドメイン以外を排除:$only_jp = n;
$check_proxyを 0 以外にした場合にここの値を 1 にすると、プロキシによく使われるjp以外のプロバイダをプロキシ経由とみなします。
Yahoo!BBやuu.net等jp以外のプロバイダまでプロキシ経由とみなすので設定には注意してください。
HP領域がリモートホスト情報の取得ができないサーバの場合は 0 のままにしてください。
- でたらめの内容の排除:do_check_frq = n;
ここの値を 1 にすると、同じ言葉の繰り返し等使用文字種が異常に少ない投稿を排除します。
効果音や叫び声等が排除されやすいので、なるべく設定しないほうが良いでしょう。
- 同じIP/ホスト/携帯端末/クッキーから次の投稿を許可する時間:wait_time = n;
設定した秒数が経過するまで、同じIP/ホスト/携帯端末/クッキーのブラウザからの次の投稿を排除します。
クッキーを無効にして投稿した場合は、設定した秒数が経過するまでクッキーなしの投稿を排除します。
大量に連続投稿されるときに効果があります。
- DoCoMo及びJ-PHONE経由で携帯端末情報送信制御:selchk = n;
ここの値を 1 にすると、携帯端末情報を送信しない場合の投稿を拒否します。
- 書き込み停止機構:(stop_dorama = n;:stop_actor = n;:stop_actor_del = n;)
値を 1 にした場合、強制的に書き込めなくする事が出来ます。
特に出演者エディタは効果が期待できます。
補足
XHTML版のみの問題です。
サーバーならびにブラウザによっては[dorama.cgi]がファイルと認識されてダウンロードされてしまう問題が発生しています。
この場合は、[application/xhtml+xml]の部分を、[text/html]とするか[application/xml | text/xml]と書き換えるように、お願いします…それでも動作しない場合は記述を[text/html]にするしかありません(各キャリアに関しては全て[./dorama_t.pl]にしてください、ただしiPhoneとかゲーム機はそのままでいいです)。
推測ですが、サーバー側でまだ対処されていないのかも知れません(XHTML関連が)…
もう一つは <?xml version=\"1.0\" encoding=\"$charset_code\"?> は、ブラウザによっては互換モードに変わってしまうので、削るか # を追加してください。
サーバーによっては一部動作が異なったりします。この事に関して追記するのを忘れていました、すみません・・・
★免責事項
作者はこのスクリプトを使用した事によって発生したトラブル(データ破損等)の責任は負いません。
あらかじめご了承ください。
★利用規定
このスクリプトの利用規定はオリジナルの配付元であるCGI-StaTionでの利用規定に準じます。
さいごに…
自分で言うのも難なのですが、あまりの強力さにびっくりします。
特にしつこいイタズラ書き及び匿名投稿等に…
ですがあんまり使い過ぎないようにしてください…(^^;
なお、わからないことがある場合にいきなりメール送るのはできるだけやめてください(処理に困るので)。
それでは、あなたのホームページが楽しくなることを願ってます。
おまけ
CGIファイル[ 〜.cgi ]のアクセス権限を「700/705/755」(サーバーによって異なる)にして、
Perlパスのすぐ下に、
BEGIN { $| = 1; print "content-type: text/html,application/xhtml+xml\n\n"; open (STDERR, ">&STDOUT"); }
を挿入してアクセスすれば、エラー原因・ヒント(エラー行など)が表示されます。
ただし英語で表示されますので若干の語学力が要求されます…(^^;
記入例:
#!/usr/local/bin/perl(サーバーによって異なる)
BEGIN { $| = 1; print "content-type: text/html\n\n"; open (STDERR, ">&STDOUT"); }
content-type: text/x-hdml; charset="Shift_JIS\n\n";
(追加しても大丈夫なタグ)
<embed src="任意のパス" hidden="true" autostart="true" loop="true"></embed>
(WeB DoRaMa内でBGMを流したいときに追加してください)
<table align="center">
<tbody>
<tr><td align="center">
あらすじ
</td></tr>
<tr><td>
A行<br />
B行
</td></tr>
</tbody>
</table>
あらすじを使用したいときに追加してください、それと、A行とB行は例ですので削除してから文字を入力してください<br />
(使用例)
<table align="center">
<tbody>
<tr><td align="center">
〜(サブタイトルでも構いません)〜
</td></tr>
<tr><td>
A行<br />
B行
</td></tr>
</table>
(はっきり言ってテキトーですが… 自分なりにあらすじを考えてくだされば結構です)<br />
(二行を超える場合)
</td></tr>
</tbody>
</table>
(あらすじを使用したいときに追加してください、それと、A行とB行は例ですので削除してから文字を入力してください)<br />
(使用例)
<table align="center">
<tbody>
<tr><td align="center">
〜(サブタイトルでも構いません)〜
</td></tr>
<tr><td>
A行<br />
B行<br />
C行以降
</td></tr>
<tbody>
</table>