Class: Conjur::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/conjur/config.rb

Constant Summary collapse

@@attributes =
{}

Class Method Summary collapse

Class Method Details

.[](key) ⇒ Object



127
128
129
# File 'lib/conjur/config.rb', line 127

def [](key)
  @@attributes[key.to_s]
end

.alternate_key(key) ⇒ Object



135
136
137
138
139
140
141
# File 'lib/conjur/config.rb', line 135

def alternate_key key
  case key
    when String then key.to_sym
    when Symbol then key.to_s
    else key
  end
end

.applyObject



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/conjur/config.rb', line 71

def apply
  require 'conjur/configuration'

  keys = Config.keys.dup
  keys.delete(:plugins)

  cfg = Conjur.configuration
  keys.each do |k|
    if Conjur.configuration.respond_to?("#{k}_env_var") && (env_var = Conjur.configuration.send("#{k}_env_var")) && (v = ENV[env_var])
      if Conjur.log
        Conjur.log << "Not overriding environment setting #{k}=#{v}\n"
      end
      next
    end
    value = Config[k]
    cfg.set k, value if value
  end

  if Conjur.log
    require 'conjur/api'
    host = begin
      Conjur::Authn::API.host
    rescue RuntimeError
      nil
    end
    if host
      Conjur.log << "Using authn host #{Conjur::Authn::API.host}\n"
    end
  end

  Conjur.config.apply_cert_config!
end

.clearObject



29
30
31
# File 'lib/conjur/config.rb', line 29

def clear
  @@attributes = {}
end

.default_config_filesObject



48
49
50
# File 'lib/conjur/config.rb', line 48

def default_config_files
  ['/etc/conjur.conf', user_config_files].flatten.uniq
end

.inspectObject



105
106
107
# File 'lib/conjur/config.rb', line 105

def inspect
  @@attributes.inspect
end

.keysObject



123
124
125
# File 'lib/conjur/config.rb', line 123

def keys
  @@attributes.keys.map(&:to_sym)
end

.load(config_files = default_config_files) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/conjur/config.rb', line 52

def load(config_files = default_config_files)
  require 'yaml'
  require 'conjur/log'

  config_files.each do |f|
    if File.file?(f)
      if Conjur.log
        Conjur.log << "Loading #{f}\n"
      end
      config = YAML.load(IO.read(f)).stringify_keys rescue {}
      if config['cert_file']
        config['cert_file'] = File.expand_path(config['cert_file'], File.dirname(f))
      end
      Conjur::Config.merge config
    end
  end
end

.member?(key) ⇒ Boolean

Returns:

  • (Boolean)


131
132
133
# File 'lib/conjur/config.rb', line 131

def member? key
  @@attributes.member?(key) || @@attributes.member?(alternate_key(key))
end

.merge(a) ⇒ Object



118
119
120
121
# File 'lib/conjur/config.rb', line 118

def merge(a)
  a = {} unless a
  @@attributes.deep_merge!(a.stringify_keys)
end

.pluginsObject



109
110
111
112
113
114
115
116
# File 'lib/conjur/config.rb', line 109

def plugins
  plugins = @@attributes['plugins']
  if plugins
    plugins.is_a?(Array) ? plugins : plugins.split(',')
  else
    []
  end
end

.user_config_filesObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/conjur/config.rb', line 33

def user_config_files
  if ENV['CONJURRC']
    return ENV['CONJURRC']
  else
    homefile = File.expand_path "~/.conjurrc"
    pwdfile = File.expand_path ".conjurrc"
    if homefile != pwdfile && File.file?(pwdfile)
      $stderr.puts "WARNING: .conjurrc file from current directory is " +
          "used. This behaviour is deprecated. Use ENV['CONJURRC'] to " +
          "explicitly define custom configuration file if needed"
    end
    [ homefile, pwdfile ]
  end
end