�V���ɐ���p��̧��(NGnozomi.dat:�߰Я��݂�600�ł����Ǝv���܂�)��p�ӂ��Ă��������B �ȉ���bbs.cgi�ɒlj����镔���ł��B # �ݒ� �̈�ԍŌ�ɒlj� # NG���[�h�ݒ� # 0 : ���� # 1 : �L�� $ngwordon = 1; # NG���[�h @ngword = ( 'Very good site!', 'good site!', 'site!', 'I like it!', 'A href', '�폜�˗�', '���傗', '����', '����', '�b��', '���b', '��', 'http://www.douteikaimasu.com/', ); # NG���t�@�� @ngreferer = ( '2ch', ); # NGURL @ngurl = ( '2ch', 'http://www.douteikaimasu.com/', ); # NG���[�h�g�p���̏���(1�Ŏw��A����1�ɂ��Ă��ォ��D��I�ɓK��) $shori1 = 1; #�g�p���̓��e���s�ƂȂ邾�� $shori2 = 0; #�{���̂݁A���e�s�̃A�N�Z�X���� $shori3 = 0; #�{�����e���ɕs�̃A�N�Z�X����(�e��) # h�����Ȃ���ݺېݒ� # 0 : ���� # 1 : �L��(�����I��h��t����) # 2 : �L��(NG���[�h�ɂ���BNG���[�h�̐ݒ��L���ɂ��Ȃ��Ɩ���) $hnukuna = 2; # �A�N�Z�X����p�t�@�C���� $access_l = './NGnozomi.dat'; # �e�����URL(�A�N�Z�X����p) $hajikiurl = 'http://www.google.co.jp/webhp'; # ���b�Z�[�W�`�F�b�N�� # &chkerror ( '�t�H�[���f�[�^�̈ꕔ�Ɍ���������܂��B������x��蒼���ĉ������B', 33 ); # }�@�̂��Ƃɒlj� # NG���[�h�`�F�b�N if ($ngwordon) { if ( $hnukuna == 2 ) { push ( @ngword, '(?<!h)ttps?://' ); } $i = 0; $j = 0; foreach (@ngword) { chomp($_); $i++ if ($FORM{'v'} =~ /$_/i); $i++ if ($FORM{'l'} =~ /$_/i); } &ng('ngword') if ($i); foreach (@ngurl) { $j++ if ($FORM{'l'} =~ /$_/i); } &ng('ngurl') if ($j); } # h�����Ȃ���ݺ� if ( $hnukuna == 1 ) { $FORM{'v'} =~ s#((?<!h)ttps?://)#(h�����Ȃ���ݺ�)h$1#ig; if ( $FORM{'l'} ) { $FORM{'l'} =~ s#((?<!h)ttps?://)#(h�����Ȃ���ݺ�)h$1#ig; } } # ��ʕ\����# �l�p�ݒ蔽�f�̊Ԃɒlj� ############################################################################### # �A�N�Z�X������s ############################################################################### sub accesschk { my ( @acldata, $acldel, $aflag, $tphost, $tagent, $way, $cu, $period, $adate, $aclimit ); if($access_l){ open ( ACCS, $access_l ) || &prterror ( '�t�@�C���̓ǂݍ��݂Ɏ��s���܂����B' ); eval 'flock ( ACCS, 1 )'; seek ( UCNT, 0, 0 ); @acldata = <ACCS>; eval 'flock ( ACCS, 8 )'; close ( ACCS ); $acldel = 0; for ( $i = 0 ; $i < @acldata ; $i++ ) { $aflag = 0; ( $tphost, $tagent, $way, $cu, $period, $adate ) = split ( /\,/, $acldata[$i] ); $tphost =~ s/\0/\,/g; $tagent =~ s/\0/\,/g; $cu =~ s/\0/\,/g; $adate =~ s/\n$//; if($period == 1){$aclimit = 86400;} if($period == 7){$aclimit = 604800;} # ������̏��O if ( ( $adate + $aclimit ) < $nowtime && $period ne 'forever' ) { $acldata[$i] = ''; $acldel = 1; # �t���O�`�F�b�N } elsif ( $host =~ /$tphost/i || $tphost eq 'all' ) { if ( $agent =~ /$tagent/i || $tagent eq 'all' ) { $aflag = 1; } } # �t���O���s if($aflag == 1){ if($way == 0 && $FORM{'v'} && $FORM{'v'} ne ''){ $FORM{'v'} = ''; }elsif($way == 1){ print "Location: $hajikiurl\n\n"; exit; } } } if($acldel==1){ open ( ACCS, ">>$access_l" ) || &prterror ( '�t�@�C���̏������݂Ɏ��s���܂����B' ); eval 'flock ( ACCS, 2 )'; truncate ( ACCS, 0 ); seek ( ACCS, 0, 0 ); print ACCS @cntdata; close ( ACCS ); } } } ############################################################################### # NG���� ############################################################################### sub ng { my ( $ngtype ) = $_[0]; if($ngtype eq 'ngreferer'){ $ngmessage = '�ǂ����痈�܂������R(�L��`)�m'; }elsif($ngtype eq 'ngword'){ $ngmessage = '���e���e��NG���[�h������R(�L��`)�m'; }elsif($ngtype eq 'ngurl'){ $ngmessage = '�ς�URL�͒j����ł���R(�L��`)�m'; } if($shori1){ $ngmessage2 = '�ȉ��̊��ϐ��͕ۑ����ĂȂ���(�M�[�L)hehehe'; }elsif($shori2){ $ngmessage2 = '�ȉ��̊��ϐ��̓�REMOTE_HOST���ۑ����ꂽ(�M�[�L)�������e�͂ł��Ȃ���hehehe'; }elsif($shori3){ $ngmessage2 = '�ȉ��̊��ϐ��̓�REMOTE_HOST���ۑ����ꂽ(�M�[�L)�����{������ł��Ȃ���hehehe'; } $addr = $ENV{'REMOTE_ADDR'}; $host = $ENV{'REMOTE_HOST'}; if ( $addr eq $host || !$host ) { $host = gethostbyaddr ( pack ( 'C4', split ( /\./, $addr ) ), 2 ) || $addr; } $ENV{'REMOTE_HOST'} = $host; if($shori2){ $tphost = quotemeta($ENV{'REMOTE_HOST'}); open ( ACADD, ">>$access_l" ) || &prterror ( '�t�@�C���ǂݍ��݂Ɏ��s���܂���' ); eval 'flock ( ACADD, 2 )'; $| = 1; seek ( ACADD, 0, 2 ); print ACADD "$tphost\,all\,0\,\,7\,$nowtime\n"; eval 'flock ( ACADD, 8 )'; close ( ACADD ); }elsif($shori3){ $tphost = quotemeta($ENV{'REMOTE_HOST'}); open ( ACADD, ">>$access_l" ) || &prterror ( '�t�@�C���ǂݍ��݂Ɏ��s���܂���' ); eval 'flock ( ACADD, 2 )'; $| = 1; seek ( ACADD, 0, 2 ); print ACADD "$tphost\,all\,1\,\,7\,$nowtime\n"; eval 'flock ( ACADD, 8 )'; close ( ACADD ); } $proxyflg = 0; $anonymous = 0; if ( $ENV{'HTTP_CACHE_CONTROL'} ) { $proxyflg = 1; } if ( $ENV{'HTTP_CACHE_INFO'} ) { $proxyflg += 2; } if ( $ENV{'HTTP_CLIENT_IP'} ) { $proxyflg += 4; } if ( $ENV{'HTTP_FORWARDED'} ) { $proxyflg += 8; } if ( $ENV{'HTTP_FROM'} ) { $proxyflg += 16; } if ( $ENV{'HTTP_PROXY_AUTHORIZATION'} ) { $proxyflg += 32; } if ( $ENV{'HTTP_PROXY_CONNECTION'} ) { $proxyflg += 64; } if ( $ENV{'HTTP_SP_HOST'} ) { $proxyflg += 128; } if ( $ENV{'HTTP_VIA'} ) { $proxyflg += 256; } if ( $ENV{'HTTP_X_FORWARDED_FOR'} ) { $proxyflg += 512; } if ( $ENV{'HTTP_X_LOCKING'} ) { $proxyflg += 1024; } if ( $agent =~ /cache|delegate|gateway|httpd|proxy|squid|www|via/i ) { $proxyflg += 2048; } if ( $host =~ /cache|^dns|dummy|^ns|firewall|gate|keep|mail|^news|pop|proxy|smtp|w3|^web|www/i ) { $proxyflg += 4096; } if ( $host eq $addr ) { $proxyflg += 8192; } $realaddr = ''; $realhost = ''; if ( $proxyflg > 0 ) { if ( $ENV{'HTTP_X_FORWARDED_FOR'} =~ s/^(\d+)\.(\d+)\.(\d+)\.(\d+).*/$1.$2.$3.$4/ ) { $realaddr = "$1.$2.$3.$4"; } elsif ( $ENV{'HTTP_FORWARDED'} =~ s/.*\s(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/ ) { $realaddr = "$1.$2.$3.$4"; } elsif ( $ENV{'HTTP_VIA'} =~ s/.*\s(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/ ) { $realaddr = "$1.$2.$3.$4"; } elsif ( $ENV{'HTTP_CLIENT_IP'} =~ s/(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/ ) { $realaddr = "$1.$2.$3.$4"; } elsif ( $ENV{'HTTP_SP_HOST'} =~ s/(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/ ) { $realaddr = "$1.$2.$3.$4"; } elsif ( $ENV{'HTTP_FORWARDED'} =~ s/.*\sfor\s(.+)/$1/ ) { $realhost = "$1"; } elsif ( $ENV{'HTTP_FROM'} =~ s/\-\@(.+)/$1/ ) { $realhost = "$1"; } if ( !$realaddr && $realhost ) { $realpackaddr = gethostbyname ( $realhost ); ( $a, $b, $c, $d ) = unpack ( 'C4', $realpackaddr ); $realaddr = "$a.$b.$c.$d"; } if ( $realaddr && $realhost && $realaddr eq $realhost ) { $realhost = gethostbyaddr ( pack ( 'C4', split ( /\./, $realaddr ) ), 2 ); } if ( $realaddr && $realhost eq '' ) { $realhost = gethostbyaddr ( pack ( 'C4', split ( /\./, $realaddr ) ), 2 ); } } if($realaddr ne ''){ $ENV{'REMOTE_ADDR'} = "$ENV{'REMOTE_ADDR'}\n<font color=\"red\"><b>realaddr = $realaddr</b></font>"; } if($realhost ne ''){ $ENV{'REMOTE_HOST'} = "$ENV{'REMOTE_HOST'}\n<font color=\"red\"><b>realhost = $realhost</b></font>"; } $i=0; foreach ( keys %ENV ) { $line[$i] = $_ . ' = ' . $ENV{$_} . "\n"; $i++; } @temp = sort @line; print <<EOF; Content-type: text/html; charset=Shift_JIS <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Pragma" content="no-cache"> <LINK rel="INDEX" href="$infopage"> <TITLE>$bbstitle NG�Ɉ������������������I</TITLE> </HEAD> $body <H3>$ngmessage</H3> <pre> $ngmessage2 @temp </pre> </BODY> </HTML> EOF exit; }