■10416 / ) |
Re[4]: VOTE COMの同一IP連続投稿防止改造時間設定版
|
□投稿者/ 南 -(2005/01/19(Wed) 22:09:37)
| 2005/01/19(Wed) 22:10:02 編集(投稿者)
すいません、先ほどのスクリプトに「$host」を取得する部分を忘れていました。 ついでにとあるスクリプト http://fairyland.cside.com/marine/tinkcgi/index.html Sugiura様のTinkCGI HPで公開している「Ana-Vote」 内に書かれていたプロクシ制限スクリプトを お借りした改造スクリプトもつけておきます
votec.cgiの 3行目:require './jcode.pl'; 以下に以下のスクリプトを入れてください。
#プロクシらしいIPをはじく------------------- #=============================== #環境変数を取得するサブルーチン #=============================== sub get_user_data { $addr = $ENV{'REMOTE_ADDR'}; $host = gethostbyaddr(pack('C4',split(/\./,$addr)),2); $client =$ENV{'HTTP_CLIENT_IP'}; $via = $ENV{'HTTP_VIA'}; $xfor = $ENV{'HTTP_X_FORWARDED_FOR'}; $for = $ENV{'HTTP_FORWARDED'}; $agent = $ENV{'HTTP_USER_AGENT'}; if ($xfor ne "") {$xfor_name = gethostbyaddr(pack('C4',split(/\./,$xfor)),2) || $xfor; } $referer = $ENV{'HTTP_REFERER'}; }
#================================== #投票制限対象を判定するサブルーチン #================================== sub reject_check { #プロクシ規制 if ($reject_proxy == "1"){ $ip = $host; $ip =~ s/[0-9\.]//g; #念のため停止 if ($ip eq "") {$rejection = 1;} if ($host =~ /^firewall|^router|proxy|^prx|cache|delegate|^gate|^gw|^host|^dns|keeper|cust|^mail|^www/i) {$rejection = 1;} #念のため停止 if ($host !~ /\.jp$/i && $host !~ /\.bbtec\.net$/i) {$rejection = 1;} #念のため停止 if ($via ne "" || $client ne "") {$rejection = 1;} } #教育機関、政府機関の規制 if ($reject_acgo == "1"){ if ($host =~ /kencho|pref|\.ac\.jp$|\.go\.jp$/i) {$rejection = 1;} } #フリープロバイダーの規制 if ($reject_free == "1"){ if ($host =~ /freecom.ne.jp|freeserve.ne.jp|freejpn.com|freenavi.net|livedoor.com/i) {$rejection = 1;} } #その他規制ホスト if ($reject_host ne ""){ if ($host =~ /$reject_host/i) {$rejection = 1;} elsif ($addr =~ /$reject_host/i) {$rejection = 1;} }
#特別に投票を許可するホスト if ($escape_host ne ""){ if ($host =~ /$escape_host/i) {$rejection = 0;} elsif ($addr =~ /$escape_host/i) {$rejection = 0;} } }
$reject_proxy = "1"; #プロクシによる投票を規制をするか 0=規制しない 1=規制する $reject_acgo = "0"; #教育機関や政府機関からの投票を規制するか 0=規制しない 1=規制する $reject_free = "0"; #フリープロバイダーからの投票を規制するか 0=規制しない 1=規制する $reject_host = ""; #その他、規制するホスト(ホスト名又はIPの一部でも可。複数のときは「|」で区切って指定) $escape_host = ""; #上の4つの投票規制対象に該当しても、特別に投票を許可するホスト(ホスト名又はIPの一部でも可。複数のときは「|」で区切って指定)
#================================== #実行形式例 #================================== &get_user_data; &reject_check;
if ($rejection == 1){ print "Content-type: text/html\n\n"; print "<html><body>プロクシ接続です</body></html>"; exit; }
#-------------------------------------------
#念のため停止 の部分は判定がきつすぎると思うのでコメントアウトしています。 必要に応じてコメントアウトを解除してください。
|
解決済み! |