ふむ、どうやらその日初めてのツッコミに対してはfilterが動いてないようだ。一度spam urlを入力してから、続けて二回目以降のspam urlを入力した場合には遮断している。うーん?
とりあえず、例外としてResolv::ResolvTimeoutを返したときにはResolv.getaddressを3回迄繰り返すように変更して、ついでにdebug時の処理を追加した。フィルタをすり抜けるときの条件が果てしなく謎。
dnsblフィルターで用いていた正規表現
http://([^/]+)/
ではuriの末端に/がついていないものの検出が出来ないので
http://([^/\s]+)(/[^\s]+)?
と変更した。これで正しく動くのかは謎。正規表現の神様教えてください。
神様のお告げも踏まえて
https?://([^/:\s]+)
という感じで行くことにした。先ほどコミットしたものだとhttpsの判定を付け忘れた。セーフリスト機能のコミット時に修正しよう。
あー、確かにセーフリストのような機能はあってしかるべきだな。単純にlookupをしないURIをリストとして保存しておいて、ホストがリストに含まれている時にはlookupをしない方が経済的か。
作った。もう少しテストしてからコミットする予定。
+ は最長一致なので、<br>https?://([^/:\s]+)<br>という感じでよいかと思います。
なるほど、パスの部分は不要でしたね。ありがとうございます。