Show
Ignore:
Timestamp:
01/20/08 16:22:46 (5 years ago)
Author:
hsbt
Message:

platform/tdiary/filter/antirefspam/filter/antirefspam.rb: changed file encoding to UTF-8

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • platform/tdiary/filter/antirefspam/filter/antirefspam.rb

    r4635 r5055  
    1414 
    1515    class AntirefspamFilter < Filter 
    16       # ͭ������ꤷ���ե������ǥХå�������������     def debug_out(filename, str) 
     16      # 有効にすると指定したファイルにデバッグ情報文字列を追記する 
     17      def debug_out(filename, str) 
    1718        if $debug 
    1819          filename = File.join(@conf.data_path,"AntiRefSpamFilter",filename) 
     
    2324      end 
    2425 
    25       # str �˻�ꤵ�줿ʸ��Ŭ��ʥ���������뤫����å� 
     26      # str に指定された文字列が適切なリンク先を含んでいるかをチェック 
    2627      def isIncludeMyUrl(str) 
    27         # str ���RL���ޤޤ����뤫�ɤ��� 
     28        # str に日記のURLが含まれているかどうか 
    2829        base_url = @conf.base_url 
    2930        unless base_url.empty? 
     
    3334        end 
    3435 
    35         # str �˥ȥåץڡ���URL���ޤޤ����뤫�ɤ��� 
     36        # str にトップページURLが含まれているかどうか 
    3637        unless @conf.index_page.empty? 
    3738          if /\Ahttps?:\/\// =~ @conf.index_page 
     
    4243        end 
    4344 
    44         # str �˵������褬�ޤޤ����뤫�ɤ��� 
     45        # str に許容するリンク先が含まれているかどうか 
    4546        if (myurl = @conf['antirefspam.myurl']) && !myurl.empty? 
    4647          if str.include? myurl 
     
    6566        conf_proxy_port = @conf['antirefspam.proxy_port'] != nil && @conf['antirefspam.proxy_port'].size > 0 ? @conf['antirefspam.proxy_port'].to_s : nil 
    6667 
    67         if conf_disable == 'true'  or    # ����������å���ͭ���ʤ����ϥ��롼����          referer == nil          or    # ��������̵�� 
    68            referer.size <= 1       or    # ���Υ���ʤǹ������郎���ʤ��ʤ����б����뤿�ᡢ����������ʸ���ξ��ϵ�           isIncludeMyUrl(referer)       # ��ʬ�����������Ͽ������       then 
     68        if conf_disable == 'true'  or    # リンク元チェックが有効ではない場合はスルーする 
     69           referer == nil          or    # リンク元が無い 
     70           referer.size <= 1       or    # 一部のアンテナで更新時刻が取れなくなる問題に対応するため、リンク元が1文字以内の場合は許容 
     71           isIncludeMyUrl(referer)       # 自分の日記内からのリンクは信頼する 
     72        then 
    6973          return true 
    7074        end 
    7175 
    72         # "����Ǥ���L" �򣱤Ĥ��ļ��Ф���eferer�ȹ����뤫����å�����       conf_trustedurl.each_line do |trusted| 
     76        # "信頼できるURL" を1つずつ取り出してrefererと合致するかチェックする 
     77        conf_trustedurl.each_line do |trusted| 
    7378          trusted.sub!(/\r?\n/,'') 
    74           next if trusted =~ /\A(\#|\s*)\z/  # #�ޤ��϶�ǻϤޤ���ɤ��� 
     79          next if trusted =~ /\A(\#|\s*)\z/  # #または空白で始まる行は読み飛ばす 
    7580           
    76           # �ޤ���"����Ǥ���RL" �� referer �˴ޤޤ����ɤ��� 
     81          # まずは "信頼できる URL" が referer に含まれるかどうか 
    7782          if referer.include? trusted 
    7883            debug_out("trusted", trusted+" (include?) "+referer) 
     
    8085          end 
    8186           
    82           # �ޤޤ����ä�����"����Ǥ���RL" ���ɽ���Ȥߤʤ��ƺƥ���å� 
     87          # 含まれなかった場合は "信頼できる URL" を正規表現とみなして再チェック 
    8388          begin 
    8489            if referer =~ Regexp.new( trusted.gsub("/", "\\/").gsub(":", "\\:") ) 
     
    9196        end 
    9297 
    93         # URL����ꥹ�Ȥ򸫤�       if conf_checkreftable == 'true' 
    94           # "URL����ꥹ�� �򣱤Ĥ��ļ��Ф���eferer�ȹ����뤫����å�����         @conf.referer_table.each do |url, name| 
     98        # URL置換リストを見る 
     99        if conf_checkreftable == 'true' 
     100          # "URL置換リスト" を1つずつ取り出してrefererと合致するかチェックする 
     101          @conf.referer_table.each do |url, name| 
    95102            begin 
    96103              if /#{url}/i =~ referer && url != '^(.{50}).*$' 
     
    105112 
    106113        @work_path = File.join(@conf.data_path,"AntiRefSpamFilter") 
    107         @spamurl_list = File.join(@work_path,"spamurls")  # referer spam �Υ������� 
    108         @spamip_list  = File.join(@work_path,"spamips")   # referer spam ��P�� 
    109         @safeurl_list = File.join(@work_path,"safeurls")  # �����餯����Τʤ��������� 
    110  
    111         # �ǥ��쥯�ȥ�ե����뤬¸�ߤ��ʤ����� 
     114        @spamurl_list = File.join(@work_path,"spamurls")  # referer spam のリンク元一覧 
     115        @spamip_list  = File.join(@work_path,"spamips")   # referer spam のIP一覧 
     116        @safeurl_list = File.join(@work_path,"safeurls")  # おそらくは問題のないリンク元一覧 
     117 
     118        # ディレクトリ/ファイルが存在しなければ作る 
    112119        unless File.exist? @work_path 
    113120          Dir::mkdir(@work_path) 
     
    122129        uri = URI.parse(referer) 
    123130        temp_filename = File.join(@work_path,uri.host) 
    124         # ����å����ˤ�оݤΥɥᥤ���ä����ե������� 
     131        # チェック時には対象のドメイン名を持った一時ファイルを作る 
    125132        begin 
    126133          File::open(temp_filename, File::RDONLY | File::CREAT | File::EXCL).close 
    127134 
    128           # �� SPAM URL �Ȥߤʤ��������ʸ���          spamurls = IO::readlines(@spamurl_list).map {|url| url.chomp } 
     135          # 一度 SPAM URL とみなしたら以後は以後は拒否 
     136          spamurls = IO::readlines(@spamurl_list).map {|url| url.chomp } 
    129137          if spamurls.include? referer 
    130138            return false 
    131139          end 
    132140 
    133           # �� SPAM URL �Ǥʤ���������������          safeurls = IO::readlines(@safeurl_list).map {|url| url.chomp } 
     141          # 一度 SPAM URL でないと判断したら以後は許可 
     142          safeurls = IO::readlines(@safeurl_list).map {|url| url.chomp } 
    134143          if safeurls.include? referer 
    135144            return true 
    136145          end 
    137146 
    138           # ������ URL ��HTML �����äƤ���         Net::HTTP.version_1_2   # ���ޤ��ʤ��餷�� 
     147          # リンク元 URL の HTML を引っ張ってくる 
     148          Net::HTTP.version_1_2   # おまじないらしい 
    139149          body = "" 
    140150          begin 
     
    148158            end 
    149159 
    150             # body ���URL ���ޤޤ����ʤ��� SPAM �Ȥߤʤ� 
     160            # body に日記の URL が含まれていなければ SPAM とみなす 
    151161            unless isIncludeMyUrl(body) 
    152162              File::open(@spamurl_list, "a+") {|f| 
     
    163173            end 
    164174          rescue 
    165             # ���顼���Ф�����@spamurl_list ���������󥯸��ˤ����� 
     175            # エラーが出た場合は @spamurl_list に入れない&リンク元にも入れない 
    166176            return false 
    167177          end 
    168178 
    169179        rescue StandardError, TimeoutError 
    170           # ���ߥ���å���ʤ顢����������˴�����ʤ� 
     180          # 現在チェック中なら、今回はリンク元に勘定しない 
    171181          return false 
    172182        ensure 
     
    184194      def log_spamcomment( diary, comment ) 
    185195        @work_path = File.join(@conf.data_path,"AntiRefSpamFilter") 
    186         @spamcomment_list = File.join(@work_path,"spamcomments")  # comment spam �ΰ� 
    187  
    188         # �ǥ��쥯�ȥ�ե����뤬¸�ߤ��ʤ����� 
     196        @spamcomment_list = File.join(@work_path,"spamcomments")  # comment spam の一覧 
     197 
     198        # ディレクトリ/ファイルが存在しなければ作る 
    189199        unless File.exist? @work_path 
    190200          Dir::mkdir(@work_path) 
     
    204214 
    205215      def comment_filter( diary, comment ) 
    206         # �ĥå��ߤ���Ҥ餬�������������ޤޤ����ʤ������        if @conf['antirefspam.comment_kanaonly'] != nil 
     216        # ツッコミに日本語(ひらがな/カタカナ)が含まれていなければ不許可 
     217        if @conf['antirefspam.comment_kanaonly'] != nil 
    207218          if @conf['antirefspam.comment_kanaonly'].to_s == 'true' 
    208             unless comment.body =~ /[��-����/ 
     219            unless comment.body =~ /[ぁ-んァ-ヴー]/ 
    209220              log_spamcomment( diary, comment ) 
    210221              return false 
     
    213224        end 
    214225 
    215         # �ĥå��ߤ������ꤷ��������ʤ��ʤ���        maxsize = @conf['antirefspam.comment_maxsize'].to_i 
     226        # ツッコミの文字数が指定した上限以内でないなら不許可 
     227        maxsize = @conf['antirefspam.comment_maxsize'].to_i 
    216228        if maxsize > 0 
    217229          unless comment.body.size <= maxsize 
     
    221233        end 
    222234 
    223         # NG��ɤ����ĤǤ��ޤ���������        if @conf['antirefspam.comment_ngwords'] != nil 
     235        # NGワードが1つでも含まれていたら不許可 
     236        if @conf['antirefspam.comment_ngwords'] != nil 
    224237          ngwords = @conf['antirefspam.comment_ngwords'] 
    225238          ngwords.to_s.each_line do |ngword| 
     
    230243            end 
    231244 
    232             # �ޤޤ����ä�����"NG��� ���ɽ���Ȥߤʤ��ƺƥ���å� 
     245            # 含まれなかった場合は "NGワード" を正規表現とみなして再チェック 
    233246            begin 
    234247              if comment.body =~ Regexp.new( ngword, Regexp::MULTILINE )