From d642da9348926e418655685b92f0b68c11b710f1 Mon Sep 17 00:00:00 2001 From: Matthias H Date: Thu, 6 Mar 2014 11:06:57 +0100 Subject: [PATCH 1/1] [config] adds a new param store_default Creates a new option to store the default at first run. This fixes the problem that random auth passwords are not kept, it also allows us to always store the core.db config value. --- lib/rbot/botuser.rb | 3 ++- lib/rbot/config.rb | 10 ++++++++++ lib/rbot/ircbot.rb | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/rbot/botuser.rb b/lib/rbot/botuser.rb index ab9a8de3..97bab93c 100644 --- a/lib/rbot/botuser.rb +++ b/lib/rbot/botuser.rb @@ -35,7 +35,8 @@ class Bot module Auth Config.register Config::StringValue.new( 'auth.password', - :default => [*?a..?z,*?A..?Z,*?0..?9].sample(8).join, :wizard => true, + :default => [*?a..?z,*?A..?Z,*?0..?9].sample(8).join, :store_default => true, + :wizard => true, :on_change => Proc.new {|bot, v| bot.auth.botowner.password = v}, :desc => _('Password for the bot owner')) Config.register Config::BooleanValue.new( 'auth.login_by_mask', diff --git a/lib/rbot/config.rb b/lib/rbot/config.rb index e6145a82..ef63a2fe 100644 --- a/lib/rbot/config.rb +++ b/lib/rbot/config.rb @@ -24,6 +24,7 @@ module Config attr_reader :desc attr_reader :key attr_reader :wizard + attr_reader :store_default attr_reader :requires_restart attr_reader :requires_rescan attr_reader :order @@ -52,6 +53,7 @@ module Config @on_change = params[:on_change] @validate = params[:validate] @wizard = params[:wizard] + @store_default = params[:store_default] @requires_restart = params[:requires_restart] @requires_rescan = params[:requires_rescan] @auth_path = "config::key::#{key.sub('.','::')}" @@ -274,6 +276,14 @@ module Config error "failed to read conf.yaml: #{$!}" end end + # config options with :store_default to true should store + # their default value at first run. + # Some defaults might change anytime the bot starts + # for instance core.db or authpw + @items.values.find_all {|i| i.store_default }.each do |value| + @config[value.key] = value.default + end + # if we got here, we need to run the first-run wizard Wizard.new(@bot).run # save newly created config diff --git a/lib/rbot/ircbot.rb b/lib/rbot/ircbot.rb index 8b827f15..f74b1530 100644 --- a/lib/rbot/ircbot.rb +++ b/lib/rbot/ircbot.rb @@ -435,7 +435,7 @@ class Bot }, :desc => "Percentage of IRC penalty to consider when sending messages to prevent being disconnected for excess flood. Set to 0 to disable penalty control.") Config.register Config::StringValue.new('core.db', - :default => default_db, + :default => default_db, :store_default => true, :wizard => true, :validate => Proc.new { |v| Registry::formats.include? v }, :requires_restart => true, -- 2.39.5