simp-cli 1.0.12 → 1.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MGNhMzQ0NTM3Y2Q2MWM2NTRhNmE5NjdkYzk2ZjcxZmUzZTBmMjBhMA==
5
- data.tar.gz: !binary |-
6
- YTUyY2E3M2JmNDYwNTMwMDU0MmVkZmUwMzk5NjBhZjQ3MjI1ZDYzNA==
2
+ SHA1:
3
+ metadata.gz: c00f1a66b228c83d906fc95be29996b521bb4bc2
4
+ data.tar.gz: 288f511795f8e390be8299c28bde9cf86650d8a9
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZDM3ZTEwNzkyZDA4N2E5ZDZlYmU1NzQ2ZWIxYzMwMWZkODQ3NDZlOTM0OTMw
10
- ZTlhNTJkOTU4ZDFiMTQ3YjcwMDZlMTQyZjRlY2ZhZWE5YmJmMmE3ZTVhOWNi
11
- ZTVmYmY4ZThmYjdkZjc4Yjc4M2ZlMDVkOWNkYWUzOGNjZTI0YWQ=
12
- data.tar.gz: !binary |-
13
- OWIxODU0MGNjYjVlMWY1Nzk3YjVlMjA1Y2UxZWRlZGM1OWQ0MzdmZGFjZWU0
14
- ZTFkMzQ1ODIxYmI2NzBhNWY4M2VhN2UxMjAzZjAwNzlhMWYwOTA3ZjY4MDZk
15
- YjQ5Njg3ZWQzOGI2NmQ4N2MzYjUxOTFjNzE5NjkxZjdiNTUxYTM=
6
+ metadata.gz: 3e3d45b70867323215dd05c5c2b43325c55976f63b7bf039876ed86356eb92eccadf7e66c79cc7b8a0d4cebe71090fad79b8998a483c6ac2635def9785064e71
7
+ data.tar.gz: 791d38e9d4bca5aa79e3426f39eee29e2aa48a1be50d98c61a74e67accdbf358e91b8c7dc89d31057656cb0dee56c9f3bfcb33ced90aea49e18937ccd0077030
data/README.md CHANGED
@@ -30,11 +30,8 @@ Displays SIMP documentation in elinks.
30
30
  Controls user passwords.
31
31
 
32
32
  #### Recently deprecated
33
- ##### `check` _(removed)_
34
- Validates various subsystems
35
-
36
33
  ##### `cleancerts` _(deprecated - use `puppet cert clean CERTNAME` instead)_
37
- Revokes and removed Puppet certificates from a list of hosts.
34
+ Revokes and removes Puppet certificates from a list of hosts.
38
35
 
39
36
  ##### `runpuppet`_(deprecated - use [mcollective](http://puppetlabs.com/mcollective) instead._
40
37
  Runs puppet on a list of hosts.
@@ -5,7 +5,7 @@ module Simp; end
5
5
 
6
6
  # namespace for SIMP CLI commands
7
7
  class Simp::Cli
8
- VERSION = '1.0.12'
8
+ VERSION = '1.0.17'
9
9
 
10
10
  require 'optparse'
11
11
  require 'simp/cli/lib/utils'
@@ -143,7 +143,7 @@ class Simp::Cli::Commands::Bootstrap < Simp::Cli
143
143
  end
144
144
  end
145
145
 
146
- FileUtils.ln_s('simp','production')
146
+ FileUtils.ln_s('simp','production') unless File.exist?('production')
147
147
  end
148
148
 
149
149
  linecounts = Array.new
@@ -234,7 +234,7 @@ class Simp::Cli::Commands::Bootstrap < Simp::Cli
234
234
  # At this point, we should be connected to LDAP properly.
235
235
  # Run puppet up to 3 additional times if we can't verify that we're actually connected!
236
236
  j = 0
237
- while (j < 3) && !system('getent group administrators') do
237
+ while (j < 3) && !system('getent group administrators >& /dev/null') do
238
238
  track_output("#{pupcmd}")
239
239
  j = j + 1
240
240
  end
@@ -27,7 +27,7 @@ module Simp::Cli::Config
27
27
 
28
28
  if !(
29
29
  File.exist?("#{@dirs[:keydist]}/#{hostname}/#{hostname}.pub") &&
30
- File.exist?("#{@dirs[:fake_ca]}/#{hostname}/#{hostname}.pem")
30
+ File.exist?("#{@dirs[:keydist]}/#{hostname}/#{hostname}.pem")
31
31
  )
32
32
  say_green "INFO: No certificates were found for '#{hostname}, generating..." if !@silent
33
33
  Simp::Cli::Config::Utils.generate_certificates([hostname], @dirs[:fake_ca])
@@ -8,7 +8,7 @@ module Simp::Cli::Config
8
8
  class Item::CommonRunLevelDefault < Item
9
9
  def initialize
10
10
  super
11
- @key = 'common::runlevel'
11
+ @key = 'simplib::runlevel'
12
12
  @description = %Q{The default system runlevel (1-5).}
13
13
  end
14
14
 
@@ -40,7 +40,7 @@ module Simp::Cli::Config
40
40
  cmd += %Q@ipaddr => '#{ipaddress}', @
41
41
  cmd += %Q@netmask => '#{netmask}', @
42
42
  cmd += %Q@gateway => '#{gateway}' } @
43
- cmd += %Q@class{ 'common::resolv': @
43
+ cmd += %Q@class{ 'simplib::resolv': @
44
44
  cmd += %Q@resolv_domain => '#{resolv_domain}', @
45
45
  cmd += %Q@nameservers => #{ format_puppet_array( dns_servers ) }, @
46
46
  cmd += %Q@search => #{ format_puppet_array( dns_search ) }, @
@@ -0,0 +1,35 @@
1
+ require 'highline/import'
2
+ require 'puppet'
3
+ require File.expand_path( '../item', File.dirname(__FILE__) )
4
+ require File.expand_path( '../utils', File.dirname(__FILE__) )
5
+
6
+ module Simp; end
7
+ class Simp::Cli; end
8
+ module Simp::Cli::Config
9
+ class Item::SssdDomains < ListItem
10
+ def initialize
11
+ super
12
+ @key = 'sssd::domains'
13
+ @description = %Q{
14
+ A list of domains for SSSD to use.
15
+ `simp config` will automativcally populate this field with `FQDN` if
16
+ `use_fqdn` is true, otherwise it will comment out the field.
17
+ }.gsub(/^\s+/, '' )
18
+ end
19
+
20
+
21
+ def validate_item( x )
22
+ x =~ /[-a-z]/i ? true : false
23
+ end
24
+
25
+ def query_ask
26
+ use_ldap = @config_items.fetch( 'use_ldap' ).value
27
+ if use_ldap
28
+ @value = ['LDAP']
29
+ else
30
+ @skip_yaml = true
31
+ @value = []
32
+ end
33
+ end
34
+ end
35
+ end
@@ -42,6 +42,10 @@ class Simp::Cli::Config::ItemListFactory
42
42
  # - ItemE
43
43
  # - ItemF
44
44
  # - ItemG
45
+ #
46
+ # modifers:
47
+ # USERAPPLY = execute apply() even when running non-privileged
48
+ # SILENT = set the Item's .silent flag to true
45
49
  ---
46
50
  # ==== network ====
47
51
  - UseFips
@@ -65,7 +69,7 @@ class Simp::Cli::Config::ItemListFactory
65
69
  - Gateway SILENT
66
70
  - DNSServers SILENT
67
71
  - DNSSearch SILENT
68
- false: # don't configure network (but get network info)
72
+ false: # don't configure network (but ask for info)
69
73
  - Hostname
70
74
  - IPAddress
71
75
  - Netmask
@@ -121,6 +125,7 @@ class Simp::Cli::Config::ItemListFactory
121
125
  - LdapUri
122
126
  false:
123
127
  - RemoveLdapFromHiera
128
+ - SssdDomains
124
129
 
125
130
  # ==== rsync ====
126
131
  - RsyncBase
@@ -0,0 +1,48 @@
1
+ require 'simp/cli/config/item/sssd_domains'
2
+ require 'simp/cli/config/item/use_ldap'
3
+ require 'rspec/its'
4
+ require_relative( 'spec_helper' )
5
+
6
+ describe Simp::Cli::Config::Item::SssdDomains do
7
+ before :each do
8
+ @ci = Simp::Cli::Config::Item::SssdDomains.new
9
+ @ci.silent = true
10
+ end
11
+
12
+ describe "#value" do
13
+ it "when `use_fqdn` is `true`" do
14
+ item = Simp::Cli::Config::Item::UseLdap.new
15
+ item.value = true
16
+ @ci.config_items[item.key] = item
17
+ @ci.query
18
+ expect( @ci.value ).to eq ['LDAP']
19
+ end
20
+
21
+ it "when `use_fqdn` is `false`" do
22
+ item = Simp::Cli::Config::Item::UseLdap.new
23
+ item.value = false
24
+ @ci.config_items[item.key] = item
25
+ @ci.query
26
+ expect( @ci.value ).to eq []
27
+ end
28
+ end
29
+
30
+ describe "#to_yaml_s" do
31
+ it "when `use_fqdn` is `true`" do
32
+ item = Simp::Cli::Config::Item::UseLdap.new
33
+ item.value = true
34
+ @ci.config_items[item.key] = item
35
+ @ci.query
36
+ expect( @ci.to_yaml_s ).to match( %r{^"?sssd::domains"?} )
37
+ end
38
+
39
+ it "when `use_fqdn` is `false`" do
40
+ item = Simp::Cli::Config::Item::UseLdap.new
41
+ item.value = false
42
+ @ci.config_items[item.key] = item
43
+ @ci.query
44
+ expect( @ci.to_yaml_s ).to match( %r{^#(#| )*"?sssd::domains"?} )
45
+ end
46
+ end
47
+ it_behaves_like "a child of Simp::Cli::Config::Item"
48
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simp-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.12
4
+ version: 1.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trevor Vaughan
@@ -13,200 +13,184 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2015-11-09 00:00:00.000000000 Z
16
+ date: 2016-06-24 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: highline
20
20
  requirement: !ruby/object:Gem::Requirement
21
21
  requirements:
22
- - - ~>
22
+ - - "~>"
23
23
  - !ruby/object:Gem::Version
24
24
  version: '1.6'
25
- - - ! '>'
25
+ - - ">"
26
26
  - !ruby/object:Gem::Version
27
27
  version: 1.6.1
28
28
  type: :runtime
29
29
  prerelease: false
30
30
  version_requirements: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
34
  version: '1.6'
35
- - - ! '>'
35
+ - - ">"
36
36
  - !ruby/object:Gem::Version
37
37
  version: 1.6.1
38
- - !ruby/object:Gem::Dependency
39
- name: puppet
40
- requirement: !ruby/object:Gem::Requirement
41
- requirements:
42
- - - ~>
43
- - !ruby/object:Gem::Version
44
- version: '3'
45
- type: :runtime
46
- prerelease: false
47
- version_requirements: !ruby/object:Gem::Requirement
48
- requirements:
49
- - - ~>
50
- - !ruby/object:Gem::Version
51
- version: '3'
52
- - !ruby/object:Gem::Dependency
53
- name: facter
54
- requirement: !ruby/object:Gem::Requirement
55
- requirements:
56
- - - ~>
57
- - !ruby/object:Gem::Version
58
- version: '2'
59
- type: :runtime
60
- prerelease: false
61
- version_requirements: !ruby/object:Gem::Requirement
62
- requirements:
63
- - - ~>
64
- - !ruby/object:Gem::Version
65
- version: '2'
66
38
  - !ruby/object:Gem::Dependency
67
39
  name: rake
68
40
  requirement: !ruby/object:Gem::Requirement
69
41
  requirements:
70
- - - ~>
42
+ - - "~>"
71
43
  - !ruby/object:Gem::Version
72
44
  version: '10'
73
45
  type: :development
74
46
  prerelease: false
75
47
  version_requirements: !ruby/object:Gem::Requirement
76
48
  requirements:
77
- - - ~>
49
+ - - "~>"
78
50
  - !ruby/object:Gem::Version
79
51
  version: '10'
80
52
  - !ruby/object:Gem::Dependency
81
53
  name: rspec
82
54
  requirement: !ruby/object:Gem::Requirement
83
55
  requirements:
84
- - - ~>
56
+ - - "~>"
85
57
  - !ruby/object:Gem::Version
86
58
  version: '3'
87
59
  type: :development
88
60
  prerelease: false
89
61
  version_requirements: !ruby/object:Gem::Requirement
90
62
  requirements:
91
- - - ~>
63
+ - - "~>"
92
64
  - !ruby/object:Gem::Version
93
65
  version: '3'
94
66
  - !ruby/object:Gem::Dependency
95
67
  name: rspec-its
96
68
  requirement: !ruby/object:Gem::Requirement
97
69
  requirements:
98
- - - ~>
70
+ - - "~>"
99
71
  - !ruby/object:Gem::Version
100
72
  version: '1'
101
73
  type: :development
102
74
  prerelease: false
103
75
  version_requirements: !ruby/object:Gem::Requirement
104
76
  requirements:
105
- - - ~>
77
+ - - "~>"
106
78
  - !ruby/object:Gem::Version
107
79
  version: '1'
80
+ - !ruby/object:Gem::Dependency
81
+ name: listen
82
+ requirement: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: 3.0.0
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: 3.0.0
108
94
  - !ruby/object:Gem::Dependency
109
95
  name: guard
110
96
  requirement: !ruby/object:Gem::Requirement
111
97
  requirements:
112
- - - ~>
98
+ - - "~>"
113
99
  - !ruby/object:Gem::Version
114
100
  version: '2'
115
101
  type: :development
116
102
  prerelease: false
117
103
  version_requirements: !ruby/object:Gem::Requirement
118
104
  requirements:
119
- - - ~>
105
+ - - "~>"
120
106
  - !ruby/object:Gem::Version
121
107
  version: '2'
122
108
  - !ruby/object:Gem::Dependency
123
109
  name: guard-shell
124
110
  requirement: !ruby/object:Gem::Requirement
125
111
  requirements:
126
- - - ~>
112
+ - - "~>"
127
113
  - !ruby/object:Gem::Version
128
114
  version: '0'
129
115
  type: :development
130
116
  prerelease: false
131
117
  version_requirements: !ruby/object:Gem::Requirement
132
118
  requirements:
133
- - - ~>
119
+ - - "~>"
134
120
  - !ruby/object:Gem::Version
135
121
  version: '0'
136
122
  - !ruby/object:Gem::Dependency
137
123
  name: guard-rspec
138
124
  requirement: !ruby/object:Gem::Requirement
139
125
  requirements:
140
- - - ~>
126
+ - - "~>"
141
127
  - !ruby/object:Gem::Version
142
128
  version: '4'
143
129
  type: :development
144
130
  prerelease: false
145
131
  version_requirements: !ruby/object:Gem::Requirement
146
132
  requirements:
147
- - - ~>
133
+ - - "~>"
148
134
  - !ruby/object:Gem::Version
149
135
  version: '4'
150
136
  - !ruby/object:Gem::Dependency
151
137
  name: pry
152
138
  requirement: !ruby/object:Gem::Requirement
153
139
  requirements:
154
- - - ~>
140
+ - - "~>"
155
141
  - !ruby/object:Gem::Version
156
142
  version: '0'
157
143
  type: :development
158
144
  prerelease: false
159
145
  version_requirements: !ruby/object:Gem::Requirement
160
146
  requirements:
161
- - - ~>
147
+ - - "~>"
162
148
  - !ruby/object:Gem::Version
163
149
  version: '0'
164
150
  - !ruby/object:Gem::Dependency
165
151
  name: pry-doc
166
152
  requirement: !ruby/object:Gem::Requirement
167
153
  requirements:
168
- - - ~>
154
+ - - "~>"
169
155
  - !ruby/object:Gem::Version
170
156
  version: '0'
171
157
  type: :development
172
158
  prerelease: false
173
159
  version_requirements: !ruby/object:Gem::Requirement
174
160
  requirements:
175
- - - ~>
161
+ - - "~>"
176
162
  - !ruby/object:Gem::Version
177
163
  version: '0'
178
164
  - !ruby/object:Gem::Dependency
179
165
  name: dotenv
180
166
  requirement: !ruby/object:Gem::Requirement
181
167
  requirements:
182
- - - ~>
168
+ - - "~>"
183
169
  - !ruby/object:Gem::Version
184
170
  version: '1'
185
171
  type: :development
186
172
  prerelease: false
187
173
  version_requirements: !ruby/object:Gem::Requirement
188
174
  requirements:
189
- - - ~>
175
+ - - "~>"
190
176
  - !ruby/object:Gem::Version
191
177
  version: '1'
192
178
  - !ruby/object:Gem::Dependency
193
179
  name: rubocop
194
180
  requirement: !ruby/object:Gem::Requirement
195
181
  requirements:
196
- - - ~>
182
+ - - "~>"
197
183
  - !ruby/object:Gem::Version
198
184
  version: '0.29'
199
185
  type: :development
200
186
  prerelease: false
201
187
  version_requirements: !ruby/object:Gem::Requirement
202
188
  requirements:
203
- - - ~>
189
+ - - "~>"
204
190
  - !ruby/object:Gem::Version
205
191
  version: '0.29'
206
- description: ! ' simp-cli provides the ''simp'' command to configure and manage
207
- SIMP.
208
-
209
- '
192
+ description: |2
193
+ simp-cli provides the 'simp' command to configure and manage SIMP.
210
194
  email: simp@simp-project.org
211
195
  executables:
212
196
  - simp
@@ -219,7 +203,6 @@ files:
219
203
  - bin/simp
220
204
  - lib/simp/cli.rb
221
205
  - lib/simp/cli/commands/bootstrap.rb
222
- - lib/simp/cli/commands/check.rb
223
206
  - lib/simp/cli/commands/cleancerts.rb
224
207
  - lib/simp/cli/commands/config.rb
225
208
  - lib/simp/cli/commands/doc.rb
@@ -276,6 +259,7 @@ files:
276
259
  - lib/simp/cli/config/item/rsync_timeout.rb
277
260
  - lib/simp/cli/config/item/set_grub_password.rb
278
261
  - lib/simp/cli/config/item/simp_yum_servers.rb
262
+ - lib/simp/cli/config/item/sssd_domains.rb
279
263
  - lib/simp/cli/config/item/use_auditd.rb
280
264
  - lib/simp/cli/config/item/use_fips.rb
281
265
  - lib/simp/cli/config/item/use_iptables.rb
@@ -286,7 +270,6 @@ files:
286
270
  - lib/simp/cli/config/questionnaire.rb
287
271
  - lib/simp/cli/config/utils.rb
288
272
  - lib/simp/cli/lib/utils.rb
289
- - lib/simp/simp.rb
290
273
  - spec/lib/simp/cli/commands/config_spec.rb
291
274
  - spec/lib/simp/cli/config/item/add_ldap_to_hiera_spec.rb
292
275
  - spec/lib/simp/cli/config/item/answers_yaml_file_writer_spec.rb
@@ -350,6 +333,7 @@ files:
350
333
  - spec/lib/simp/cli/config/item/set_grub_password_spec.rb
351
334
  - spec/lib/simp/cli/config/item/simp_yum_servers_spec.rb
352
335
  - spec/lib/simp/cli/config/item/spec_helper.rb
336
+ - spec/lib/simp/cli/config/item/sssd_domains_spec.rb
353
337
  - spec/lib/simp/cli/config/item/use_auditd_spec.rb
354
338
  - spec/lib/simp/cli/config/item/use_fips_spec.rb
355
339
  - spec/lib/simp/cli/config/item/use_iptables_spec.rb
@@ -372,12 +356,12 @@ require_paths:
372
356
  - lib
373
357
  required_ruby_version: !ruby/object:Gem::Requirement
374
358
  requirements:
375
- - - ! '>='
359
+ - - ">="
376
360
  - !ruby/object:Gem::Version
377
361
  version: '0'
378
362
  required_rubygems_version: !ruby/object:Gem::Requirement
379
363
  requirements:
380
- - - ! '>='
364
+ - - ">="
381
365
  - !ruby/object:Gem::Version
382
366
  version: '0'
383
367
  requirements:
@@ -1,163 +0,0 @@
1
- module Simp::Cli::Commands; end
2
-
3
- class Simp::Cli::Commands::Check < Simp::Cli
4
- @opt_parser = OptionParser.new do |opts|
5
- opts.banner = "*Options*"
6
-
7
- opts.on("-A", "--all", "Run all checks, equivalent to -nkl") do
8
- @check_network = true
9
- @check_keys = true
10
- @check_ldap = true
11
- end
12
-
13
- opts.on("-p", "--pre", "Run checks that should pass before first run, equivalent to -nk") do
14
- @check_network = true
15
- @check_keys = true
16
- end
17
-
18
- opts.on("-n", "--network", "Check network items") do
19
- @check_network = true
20
- end
21
-
22
- opts.on("-k", "--keys", "Check that keys have been generated for the host") do
23
- @check_keys = true
24
- end
25
-
26
- opts.on("-l", "--ldap", "Check validity of ldap passwords") do
27
- @check_ldap = true
28
- end
29
-
30
- opts.on("-v", "--verbose", "Run verbosely") do
31
- @verbose = true
32
- end
33
-
34
- opts.on("-r", "--report FILE", "Create a report in FILE. NOTE: if FILE exists, it will be overwritten!") do |file|
35
- @report_file = file
36
- end
37
-
38
- opts.on("-h", "--help", "Print this message") do
39
- puts opts
40
- exit
41
- end
42
- end
43
-
44
- def self.run(args)
45
- raise "simp check Requires Arguments" if args.empty?
46
-
47
- super
48
-
49
- @version = Simp.version
50
-
51
- report = []
52
-
53
- system('clear')
54
-
55
- if @check_network
56
- report.push "\n***Starting Network Check***\n"
57
-
58
- hostname = `hostname`.gsub!(/\s+/, '')
59
-
60
- begin
61
- network_hostname = `grep HOSTNAME /etc/sysconfig/network`.strip.match(/HOSTNAME\s*=\s*([^ ]*)/)[1]
62
- rescue
63
- report.push "ERROR: No hostname in /etc/sysconfig/network"
64
- end
65
-
66
- if hostname == network_hostname
67
- report.push "Hostname matches hostname in /etc/sysconfig/network"
68
- else
69
- report.push "ERROR: Hostname does not match hostname in /etc/sysconfig/network"
70
- end
71
-
72
- if `grep ^127.0.0.1 /etc/hosts`.split("\n").any? { |line| line =~ /localhost.localdomain[\s+\z]/ and line =~ /localhost[\s+\z]/ }
73
- report.push "Found valid entry for 127.0.0.1 in /etc/hosts"
74
- else
75
- report.push "ERROR: Did not find valid entry for 127.0.0.1 in /etc/hosts"
76
- end
77
-
78
- if `grep ^::1 /etc/hosts`.split("\n").any? { |line| line =~ /localhost6\.localdomain6(\s+|$)/ and line =~ /localhost6(\s+|$)/ }
79
- report.push "Found valid entry for ::1 in /etc/hosts"
80
- else
81
- report.push "ERROR: Did not find valid entry for ::1 in /etc/hosts"
82
- end
83
- end
84
-
85
- if @check_keys
86
- report.push "\n***Starting Keys Check***\n"
87
-
88
- key_count = 0
89
- valid_key_count = 0
90
-
91
- Dir.foreach("/etc/puppet/keydist") do |host|
92
- if (host !~ /\A\.+\z/) and (host !~ /\Acacerts\z/) and File::directory?("/etc/puppet/keydist/#{host}")
93
- Dir.foreach("/etc/puppet/keydist/#{host}") do |key|
94
- if key =~ /\.pem\z/ or key =~ /\.pub\z/
95
- key_count += 1
96
-
97
- if `openssl verify -CApath /etc/puppet/keydist/cacerts /etc/puppet/keydist/#{host}/#{key}`.strip =~ /\s+OK\z/
98
- valid_key_count += 1
99
- report.push "Key /etc/puppet/keydist/#{host}/#{key} validated\n"
100
- else
101
- report.push "ERROR: Key /etc/puppet/keydist/#{host}/#{key} did not validate\n"
102
- end
103
- end
104
- end
105
- end
106
- end
107
-
108
- if key_count == 0
109
- report.push "ERROR: No keys found (recursively) in /etc/puppet/keydist\n"
110
- else
111
- report.push "#{valid_key_count}/#{key_count} keys validated\n"
112
- end
113
- end
114
-
115
- if @check_ldap
116
- report.push "\n***Starting Ldap Check***\n"
117
-
118
- binddn = ""
119
- bindpw = ""
120
- host = ""
121
- base = ""
122
-
123
- ldap_conf = '/etc/ldap.conf'
124
- ldap_conf = '/etc/pam_ldap.conf' unless File.file?(ldap_conf)
125
-
126
- File.open(ldap_conf).each_line do |line|
127
- if (line =~ /\Abinddn\s+/) != nil
128
- binddn = line.gsub(/\Abinddn\s+/, "").chomp
129
- elsif (line =~ /\Abindpw\s+/) != nil
130
- bindpw = line.gsub(/\Abindpw\s+/, "").chomp
131
- elsif (line =~ /\Auri\s+/) != nil
132
- host = line.gsub(/\Auri\s+/, "").chomp
133
- elsif (line =~ /\Anss_base_passwd\s+/) != nil
134
- base = line.gsub(/\Anss_base_passwd\s+/, "").chomp.gsub(/\?.*/, "")
135
- end
136
- end
137
-
138
- exit_code = `ldapsearch -Z -LLLL -D "#{binddn}" -x -w "#{bindpw}" -H "#{host}" -b "#{base}" -s one uid sshPublidKey`.to_i
139
-
140
- if exit_code == 0
141
- report.push "Ldap appears to be working\n"
142
- else
143
- report.push "ERROR: Ldap does not appear to be working; ldapsearch exited with code #{exit_code}\n"
144
- end
145
- end
146
-
147
- report = report.select { |line| line =~ /\A(\*\*\*|WARNING|ERROR)/ } unless @verbose
148
-
149
- report = report.join("\n")
150
-
151
- unless @report_file.nil?
152
- begin
153
- f = File.open(File.expand_path(@report_file), 'w')
154
- f.puts report
155
- f.close
156
- rescue
157
- raise "An error occurred while writing the report:#{$!}"
158
- end
159
- end
160
-
161
- puts report
162
- end
163
- end
@@ -1,77 +0,0 @@
1
- #!/usr/bin/env ruby
2
- class Simp
3
- current_dir = File.dirname(File.expand_path(__FILE__)) + '/simp'
4
-
5
- require 'optparse'
6
- require current_dir + '/lib/utils'
7
-
8
- protected
9
- def self.menu
10
- puts "Usage: simp [command]"
11
- puts
12
- puts " Commands"
13
- @commands.each do |command_name, command_class|
14
- puts " - " + command_name
15
- end
16
- puts " - help [command]"
17
- puts
18
- end
19
-
20
- def self.help
21
- puts @opt_parser.to_s
22
- puts
23
- end
24
-
25
- def self.run(args = [])
26
- @opt_parser.parse!
27
- end
28
-
29
- private
30
- def self.version
31
- begin
32
- %x{rpm -q simp}.split(/\n/).last.match(/([0-9]+\.[0-9]+\.?[0-9]*)/)[1]
33
- rescue
34
- #raise "Simp is not installed!"
35
- '4.1'
36
- end
37
- end
38
-
39
- # load the commands from commands/*.rb and grab the classes that are simp commands
40
- Dir.glob(current_dir + '/commands/*.rb').sort_by(&:to_s).each do |command_file|
41
- require command_file
42
- end
43
-
44
- @commands = Simp::Commands::constants.inject({}) do |commands, constant|
45
- obj = Simp::Commands.const_get(constant)
46
- if obj.respond_to?(:superclass) and obj.superclass == Simp
47
- commands[constant.to_s.downcase] = obj
48
- end
49
- commands
50
- end
51
- @commands['version'] = self
52
-
53
- if ARGV.length == 0 or (ARGV.length == 1 and ARGV[0] == 'help')
54
- menu
55
- elsif ARGV[0] == 'version'
56
- puts version
57
- elsif ARGV[0] == 'help'
58
- if (command = @commands[ARGV[1]]).nil?
59
- puts "\n\033[31m#{ARGV[1]} is not a recognized command\033[39m\n\n"
60
- menu
61
- elsif ARGV[1] == 'version'
62
- puts "Display the current version of SIMP."
63
- else
64
- command.help
65
- end
66
- elsif (command = @commands[ARGV[0]]).nil?
67
- puts "\n\033[31m#{ARGV[0]} is not a recognized command\033[39m\n\n"
68
- menu
69
- else
70
- begin
71
- command.run(ARGV.drop(1))
72
- rescue => e
73
- puts "\n\033[31m#{e.message}\033[39m\n\n"
74
- e.backtrace.first(10).each{|l| puts l }
75
- end
76
- end
77
- end