Module: UtilityConfig

Defined in:
lib/nexpose_sccm/utilities/utility_config.rb

Class Method Summary collapse

Class Method Details

.load_config(settings_locations, settings_dir = nil) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/nexpose_sccm/utilities/utility_config.rb', line 2

def self.load_config(settings_locations, settings_dir=nil)
  # Load settings.yml from -s option or parse known locations for configuration file
  begin
    settings_dir = settings_dir.nil? ? settings_locations : [settings_dir]
    settings = nil

    settings_dir.each do |dir|
      Dir.glob(File.join(dir, '*.yml')) do |yml_file|
        tmp_settings = YAML::load_file(yml_file)
        next if tmp_settings.nil?
        settings = settings.nil? ? tmp_settings.dup : settings.merge(tmp_settings.to_h)
      end
    end
  rescue Exception => e
    abort("Could not parse or load settings file: #{e}")
  end
  settings
end

.load_encrypt(settings) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/nexpose_sccm/utilities/utility_config.rb', line 21

def self.load_encrypt(settings)
  # Load encrypted settings if defined
  begin
    if settings[:secret]
      priv_key = OpenSSL::PKey::RSA.new(File.read(File.join(settings[:secret][:encrypt_key_dir], 'rsa_key')))
      dec_buf = priv_key.private_decrypt(Base64.decode64(File.read(settings[:secret][:encrypt_cred_file])))
      YAML::load(dec_buf).each do |key,value|
        value.each do |k,v|
          if v.class == String
            settings[key][k] = v
          elsif v.class == Hash
            v.each do |k2,v2|
              settings[key][k][k2] = v2
            end
          end
        end
      end
    end
    return settings
  rescue Exception => e
    abort("Could not parse or load encrypted file #{settings[:secret][:encrypt_cred_file]} : #{e}")
  end
end

.save_encrypt(settings_locations, settings_dir = nil) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/nexpose_sccm/utilities/utility_config.rb', line 45

def self.save_encrypt(settings_locations, settings_dir=nil)
  begin
    settings_dir = settings_dir.nil? ? settings_locations : [settings_dir]
    settings_dir.each do |dir|
      Dir.glob(File.join(dir, '*.yml')) do |yml_file|
        text = File.read(yml_file)
        new_contents = text.gsub(/:\s+[\'\"]\(enc\).*[\'\"][\r\n]*/, ": 'secret'\n")
        File.open(yml_file, "w") {|file| file.puts new_contents}
      end
    end
  rescue Exception => e
    abort("Could not parse or save settings file: #{e}")
  end
end