From ff6d7e5d043da99b2da36f628d52b7b5df47119d Mon Sep 17 00:00:00 2001 From: Matthias Hecker Date: Wed, 15 Apr 2020 20:26:54 +0200 Subject: refactor: wordlist shouldn't use bot singleton #35 also related to #41 and #6 --- lib/rbot/core/utils/wordlist.rb | 19 +++++++++---------- lib/rbot/core/wordlist_ui.rb | 8 +++++--- 2 files changed, 14 insertions(+), 13 deletions(-) mode change 100755 => 100644 lib/rbot/core/utils/wordlist.rb (limited to 'lib') diff --git a/lib/rbot/core/utils/wordlist.rb b/lib/rbot/core/utils/wordlist.rb old mode 100755 new mode 100644 index 81d7d775..339a3219 --- a/lib/rbot/core/utils/wordlist.rb +++ b/lib/rbot/core/utils/wordlist.rb @@ -10,11 +10,8 @@ require "find" module ::Irc class Bot class Wordlist - def self.wordlist_base - @@wordlist_base ||= Utils.bot.path 'wordlists' - end - - def self.get(where, options={}) + def self.get(bot, where, options={}) + wordlist_base = bot.path('wordlists') opts = { :spaces => false }.merge(options) wordlist_path = File.join(wordlist_base, where) @@ -44,21 +41,23 @@ class Wordlist # Return an array with the list of available wordlists. # Available options: # pattern:: pattern that should be matched by the wordlist filename - def self.list(options={}) + def self.list(bot, options={}) + wordlist_base = bot.path('wordlists') pattern = options[:pattern] || "**" # refuse patterns that contain ../ return [] if pattern =~ /\.\.\// - striplen = self.wordlist_base.length+1 - Dir.glob(File.join(self.wordlist_base, pattern)).map { |name| + striplen = wordlist_base.length+1 + Dir.glob(File.join(wordlist_base, pattern)).map { |name| name[striplen..-1] } end - def self.exist?(path) + def self.exist?(bot, path) + wordlist_base = bot.path('wordlists') fn = path.to_s # refuse to check outside of the wordlist base directory return false if fn =~ /\.\.\// - File.exist?(File.join(self.wordlist_base, fn)) + File.exist?(File.join(wordlist_base, fn)) end end diff --git a/lib/rbot/core/wordlist_ui.rb b/lib/rbot/core/wordlist_ui.rb index 20ccc228..8042089a 100644 --- a/lib/rbot/core/wordlist_ui.rb +++ b/lib/rbot/core/wordlist_ui.rb @@ -11,12 +11,14 @@ class WordlistModule < CoreBotModule end def do_list(m, p) - found = Wordlist.list(p) + found = Wordlist.list(@bot, p) if found.empty? - m.reply _("no wordlist found") + m.reply _("no wordlists found in %{path}") % { + path: @bot.path('wordlists') + } else m.reply _("Wordlists: %{found}") % { - :found => found.sort.join(', ') + found: found.sort.join(', ') } end end -- cgit v1.2.3