summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2006-07-27 19:44:51 +0000
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2006-07-27 19:44:51 +0000
commitd24e4260457de3ecdae874be87201c7322c4f599 (patch)
tree9d3966fc78d4802b401249a228a5bf4ad6c4c1ad
parenta94d31b65f7e4134217b9623aab992287c480011 (diff)
Abort if levels.rbot is badly messed up. We don't want to make the bot suddenly become free for all
-rw-r--r--lib/rbot/auth.rb3
-rw-r--r--lib/rbot/ircbot.rb22
2 files changed, 19 insertions, 6 deletions
diff --git a/lib/rbot/auth.rb b/lib/rbot/auth.rb
index ad7283b4..c865636c 100644
--- a/lib/rbot/auth.rb
+++ b/lib/rbot/auth.rb
@@ -53,6 +53,9 @@ module Irc
end
end
end
+ if @levels.length < 1
+ raise RuntimeError, "No valid levels.rbot found! If you really want a free-for-all bot and this isn't the result of a previous error, write a proper levels.rbot"
+ end
end
# save current users and levels to files.
diff --git a/lib/rbot/ircbot.rb b/lib/rbot/ircbot.rb
index d435ac4c..a0b64d9b 100644
--- a/lib/rbot/ircbot.rb
+++ b/lib/rbot/ircbot.rb
@@ -314,7 +314,14 @@ class IrcBot
@httputil = Utils::HttpUtil.new(self)
@lang = Language::Language.new(@config['core.language'])
@keywords = Keywords.new(self)
- @auth = IrcAuth.new(self)
+ begin
+ @auth = IrcAuth.new(self)
+ rescue => e
+ fatal e.inspect
+ fatal e.backtrace.join("\n")
+ log_session_end
+ exit 2
+ end
Dir.mkdir("#{botclass}/plugins") unless File.exist?("#{botclass}/plugins")
@plugins = Plugins::Plugins.new(self, ["#{botclass}/plugins"])
@@ -546,16 +553,19 @@ class IrcBot
error "network exception: #{e.class}: #{e}"
debug e.backtrace.join("\n")
rescue BDB::Fatal => e
- error "fatal bdb error: #{e.class}: #{e}"
- error e.backtrace.join("\n")
+ fatal "fatal bdb error: #{e.class}: #{e}"
+ fatal e.backtrace.join("\n")
DBTree.stats
- restart("Oops, we seem to have registry problems ...")
+ # Why restart? DB problems are serious stuff ...
+ # restart("Oops, we seem to have registry problems ...")
+ log_session_end
+ exit 2
rescue Exception => e
error "non-net exception: #{e.class}: #{e}"
error e.backtrace.join("\n")
rescue => e
- error "unexpected exception: #{e.class}: #{e}"
- error e.backtrace.join("\n")
+ fatal "unexpected exception: #{e.class}: #{e}"
+ fatal e.backtrace.join("\n")
log_session_end
exit 2
end