confman 0.0.2 → 0.0.3

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.
data/LICENSE.txt CHANGED
@@ -1,22 +1,38 @@
1
- Copyright (c) 2013 Masahji Stewart
1
+ All other components of this product are
2
+ Copyright (c) 2013 Synctree, Inc. All rights reserved.
2
3
 
3
- MIT License
4
+ Certain inventions disclosed in this file may be claimed within
5
+ patents owned or patent applications filed by Synctree, Inc. or third
6
+ parties.
4
7
 
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
8
+ Subject to the terms of this notice, Synctree grants you a
9
+ nonexclusive, nontransferable license, without the right to
10
+ sublicense, to (a) install and execute one copy of these files on any
11
+ number of workstations owned or controlled by you and (b) distribute
12
+ verbatim copies of these files to third parties. As a condition to the
13
+ foregoing grant, you must provide this notice along with each copy you
14
+ distribute and you must not remove, alter, or obscure this notice. All
15
+ other use, reproduction, modification, distribution, or other
16
+ exploitation of these files is strictly prohibited, except as may be set
17
+ forth in a separate written license agreement between you and New
18
+ Relic. The terms of any such license agreement will control over this
19
+ notice. The license stated above will be automatically terminated and
20
+ revoked if you exceed its scope or violate any of the terms of this
21
+ notice.
12
22
 
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
23
+ This License does not grant permission to use the trade names,
24
+ trademarks, service marks, or product names of Synctree, except as
25
+ required for reasonable and customary use in describing the origin of
26
+ this file and reproducing the content of this notice. You may not
27
+ mark or brand this file with any trade name, trademarks, service
28
+ marks, or product names other than the original brand (if any)
29
+ provided by Synctree.
15
30
 
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
+ Unless otherwise expressly agreed by Synctree in a separate written
32
+ license agreement, these files are provided AS IS, WITHOUT WARRANTY OF
33
+ ANY KIND, including without any implied warranties of MERCHANTABILITY,
34
+ FITNESS FOR A PARTICULAR PURPOSE, TITLE, or NON-INFRINGEMENT. As a
35
+ condition to your use of these files, you are solely responsible for
36
+ such use. Synctree will have no liability to you for direct,
37
+ indirect, consequential, incidental, special, or punitive damages or
38
+ for lost profits or data.
data/confman.gemspec CHANGED
@@ -11,7 +11,6 @@ Gem::Specification.new do |spec|
11
11
  spec.description = 'Confman ruby client'
12
12
  spec.summary = ''
13
13
  spec.homepage = ""
14
- spec.license = "MIT"
15
14
 
16
15
  spec.files = `git ls-files`.split($/)
17
16
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
@@ -19,6 +18,7 @@ Gem::Specification.new do |spec|
19
18
  spec.require_paths = ["lib"]
20
19
 
21
20
  spec.add_dependency "rest-client", "~> 1"
21
+ spec.add_dependency "daemons", "~> 1"
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 1.3"
24
24
  spec.add_development_dependency "rspec", "~> 2.6"
@@ -9,14 +9,18 @@ class Confman::Access
9
9
  end
10
10
 
11
11
  def extract_keys(file = authorized_keys_location)
12
- r = { :keys => [] }
12
+ r = { :manual_keys => [], :users => {} }
13
13
  return r unless File.exists?(file)
14
14
  File.readlines(file).each do |key|
15
15
  key.chomp!
16
16
  if key =~ /^#\sAM\s([^=]+)=(.*)$/
17
17
  r[$1.to_sym] = $2
18
+ elsif key =~ /^environment=\"AM_USER=([^\"]+)\"\s(.*)$/
19
+ r[:users][$1] ||= []
20
+ r[:users][$1].push($2)
21
+
18
22
  elsif key =~ /^ssh-/
19
- r[:keys].push(key.chomp)
23
+ r[:manual_keys].push(key.chomp)
20
24
  end
21
25
  end
22
26
  r
@@ -54,8 +58,13 @@ class Confman::Access
54
58
  current_keys = extract_keys
55
59
  new_keys = request_new_keys
56
60
 
57
- if new_keys[:updated_at] != current_keys[:updated_at]
58
- new_keys[:manual_keys] = current_keys[:keys].reject { |key| key =~ /AM_USER/ }
61
+ keys_changed = current_keys[:users].keys.sort != new_keys[:users].keys.sort
62
+ current_keys[:users].each do |user, ssh_keys|
63
+ keys_changed = true if ssh_keys.sort != new_keys[:users][user].sort
64
+ end unless keys_changed
65
+
66
+ if keys_changed
67
+ new_keys[:manual_keys] = current_keys[:manual_keys]
59
68
 
60
69
  new_authorized_keys_file = "#{authorized_keys_location}.#{Time.now.to_i}"
61
70
  save_keys(new_keys, new_authorized_keys_file)
data/lib/confman/cli.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'confman'
2
2
  require 'optparse'
3
+ require 'daemons'
3
4
 
4
5
  class Confman::CLI
5
6
  @@options = {}
@@ -25,6 +26,7 @@ class Confman::CLI
25
26
  opt.separator " export -n <name> -f <outputfile>: Imports conf_set named 'name' into a file."
26
27
  opt.separator " init -e <endpoint> -k <key>: Sets up config. Run this before querying the ConfMan server.(run as root)"
27
28
  opt.separator " reset_keys: Resets authorized keys for the current user."
29
+ opt.separator " keyd: Periodically Resets authorized keys for the current user"
28
30
  opt.separator ""
29
31
  opt.separator "Options"
30
32
 
@@ -47,7 +49,7 @@ class Confman::CLI
47
49
 
48
50
  @@opt_parser.parse!(args)
49
51
 
50
- if respond_to?(command)
52
+ if command && respond_to?(command)
51
53
  send(command)
52
54
  else
53
55
  puts @@opt_parser
@@ -87,6 +89,15 @@ class Confman::CLI
87
89
  Confman.access.reset_keys
88
90
  end
89
91
 
92
+ def self.keyd
93
+ Daemons.run_proc('keyd') do
94
+ loop do
95
+ reset_keys
96
+ sleep(60)
97
+ end
98
+ end
99
+ end
100
+
90
101
  def self.exportall
91
102
  out = @@options[:outputfile] ? File.open(@@options[:outputfile], "w") : STDOUT
92
103
  out.write(Confman.api.conf_sets)
@@ -1,3 +1,3 @@
1
1
  module Confman
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: confman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-10 00:00:00.000000000 Z
12
+ date: 2013-07-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
29
  version: '1'
30
+ - !ruby/object:Gem::Dependency
31
+ name: daemons
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: bundler
32
48
  requirement: !ruby/object:Gem::Requirement
@@ -100,8 +116,7 @@ files:
100
116
  - spec/confman_spec.rb
101
117
  - spec/data_store_spec.rb
102
118
  homepage: ''
103
- licenses:
104
- - MIT
119
+ licenses: []
105
120
  post_install_message:
106
121
  rdoc_options: []
107
122
  require_paths: