|
Revision 5704, 0.7 kB
(checked in by drry, 5 years ago)
|
|
platform/tdiary/filter/spamlookup.rb: more robust URL.
|
| Line | |
|---|
| 1 | # |
|---|
| 2 | # spamlookup.rb: included TDiary::Filter::SpamlookupFilter class |
|---|
| 3 | # |
|---|
| 4 | |
|---|
| 5 | require 'resolv' |
|---|
| 6 | require 'uri' |
|---|
| 7 | |
|---|
| 8 | module TDiary |
|---|
| 9 | module Filter |
|---|
| 10 | class SpamlookupFilter < Filter |
|---|
| 11 | def black_domain?( domain ) |
|---|
| 12 | begin |
|---|
| 13 | Resolv.getaddress( "#{domain}.rbl.bulkfeeds.jp" ) |
|---|
| 14 | return true |
|---|
| 15 | rescue |
|---|
| 16 | end |
|---|
| 17 | false |
|---|
| 18 | end |
|---|
| 19 | |
|---|
| 20 | def black_url?( body ) |
|---|
| 21 | URI.extract( body, %w[http] ) do |url| |
|---|
| 22 | domain = URI.parse( url ).host.sub( /\.$/, '' ) |
|---|
| 23 | return true if black_domain?( domain ) |
|---|
| 24 | end |
|---|
| 25 | false |
|---|
| 26 | end |
|---|
| 27 | |
|---|
| 28 | def comment_filter( diary, comment ) |
|---|
| 29 | !black_url?( comment.body ) |
|---|
| 30 | end |
|---|
| 31 | |
|---|
| 32 | def referer_filter( referer ) |
|---|
| 33 | !black_url?( referer ) |
|---|
| 34 | end |
|---|
| 35 | end |
|---|
| 36 | end |
|---|
| 37 | end |
|---|