url = uri_str.kind_of?(URI) ? uri_str : URI.parse(uri_str)
return if url.scheme !~ /https?/
- if url.host =~ @no_info_hosts
- return "Sorry, info retrieval for #{url.host} is disabled"
+ # also check the ip, the canonical name and the aliases
+ begin
+ checks = TCPSocket.gethostbyname(url.host)
+ checks.delete_at(-2)
+ rescue => e
+ return "Unable to retrieve info for #{url.host}: #{e.message}"
+ end
+
+ checks << url.host
+ checks.flatten!
+
+ unless checks.grep(@no_info_hosts).empty?
+ return "Sorry, info retrieval for #{url.host} (#{checks.first}) is disabled"
end
logopts = opts.dup
debug "Title #{title ? '' : 'not '} found"
reply = "#{LINK_INFO} #{title}" if title
rescue => e
+ if e.message =~ /\(404 - Not Found\)/i
+ # see if we failed to find the thing because of trailing punctuation
+ # but check that we still have 'something' in the URL
+ retry if urlstr.chop! and urlstr =~ /^https?:\/\/./
+ end
reply = "Error #{e.message}"
end
if display_info > urls_displayed
if reply
- m.reply(reply, :overlong => :truncate)
+ m.plainreply(reply, :overlong => :truncate)
urls_displayed += 1
end
end