X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Furl.rb;h=8d12f303f62cc8c3792fcffcf81879cd972e8544;hb=e22cb6b8d589f523bfe6d99c5f44b18ad5091def;hp=2cee5f4f5d37b2d1443b16355fe9ae60c086fc20;hpb=e00ea339ca3baaa9cfe74f6cec85c36e83307b61;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/url.rb b/data/rbot/plugins/url.rb index 2cee5f4f..8d12f303 100644 --- a/data/rbot/plugins/url.rb +++ b/data/rbot/plugins/url.rb @@ -28,7 +28,9 @@ class UrlPlugin < Plugin :default => ['localhost', '^192\.168\.', '^10\.', '^127\.', '^172\.(1[6-9]|2\d|31)\.'], :on_change => Proc.new { |bot, v| bot.plugins['url'].reset_no_info_hosts }, :desc => "A list of regular expressions matching hosts for which no info should be provided") - + Config.register Config::ArrayValue.new('url.only_on_channels', + :desc => "Show link info only on these channels", + :default => []) def initialize super @@ -120,7 +122,18 @@ class UrlPlugin < Plugin return extra.join(", ") if title or not @bot.config['url.titles_only'] end - def handle_urls(m, urls, display_info=@bot.config['url.display_link_info']) + def handle_urls(m, params={}) + opts = { + :display_info => @bot.config['url.display_link_info'], + :channels => @bot.config['url.only_on_channels'] + }.merge params + urls = opts[:urls] + display_info= opts[:display_info] + channels = opts[:channels] + unless channels.empty? + return unless channels.map { |c| c.downcase }.include?(m.channel.downcase) + end + return if urls.empty? debug "found urls #{urls.inspect}" list = m.public? ? @registry[m.target] : nil @@ -128,7 +141,7 @@ class UrlPlugin < Plugin urls_displayed = 0 urls.each do |urlstr| debug "working on #{urlstr}" - next unless urlstr =~ /^https?:/ + next unless urlstr =~ /^https?:\/\/./ title = nil debug "Getting title for #{urlstr}..." reply = nil @@ -154,7 +167,8 @@ class UrlPlugin < Plugin if display_info > urls_displayed if reply - m.plainreply(reply, :overlong => :truncate) + m.reply reply, :overlong => :truncate, :to => :public, + :nick => (m.address? ? :auto : false) urls_displayed += 1 end end @@ -177,7 +191,12 @@ class UrlPlugin < Plugin def info(m, params) escaped = URI.escape(params[:urls].to_s, OUR_UNSAFE) urls = URI.extract(escaped) - Thread.new { handle_urls(m, urls, params[:urls].length) } + Thread.new do + handle_urls(m, + :urls => urls, + :display_info => params[:urls].length, + :channels => []) + end end def message(m) @@ -186,7 +205,7 @@ class UrlPlugin < Plugin escaped = URI.escape(m.message, OUR_UNSAFE) urls = URI.extract(escaped, ['http', 'https']) return if urls.empty? - Thread.new { handle_urls(m, urls) } + Thread.new { handle_urls(m, :urls => urls) } end def reply_urls(opts={})