vines-agent 0.1.0 → 0.1.1
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/README +4 -4
- data/Rakefile +5 -6
- data/lib/vines/agent.rb +1 -0
- data/lib/vines/agent/command/init.rb +2 -10
- data/lib/vines/agent/config.rb +16 -6
- data/lib/vines/agent/connection.rb +4 -3
- data/lib/vines/agent/version.rb +1 -1
- data/test/config_test.rb +1 -0
- metadata +74 -81
data/README
CHANGED
@@ -9,6 +9,8 @@ Users may run commands as any unix account, to which they've been granted access
|
|
9
9
|
on the system. While the agent runs as root, user commands run as less privileged
|
10
10
|
accounts.
|
11
11
|
|
12
|
+
Additional documentation can be found at www.getvines.com.
|
13
|
+
|
12
14
|
== Usage
|
13
15
|
|
14
16
|
1. gem install vines-agent
|
@@ -17,9 +19,8 @@ accounts.
|
|
17
19
|
|
18
20
|
== Dependencies
|
19
21
|
|
20
|
-
* blather >= 0.5.
|
22
|
+
* blather >= 0.5.8
|
21
23
|
* eventmachine >= 0.12.10
|
22
|
-
* nokogiri >= 1.4.4
|
23
24
|
* ruby >= 1.9.2
|
24
25
|
|
25
26
|
== Ubuntu setup
|
@@ -27,8 +28,7 @@ $ sudo apt-get install build-essential ruby1.9.1 ruby1.9.1-dev libxml2-dev libxs
|
|
27
28
|
|
28
29
|
== Contact
|
29
30
|
|
30
|
-
* David Graham
|
31
|
-
* Chris Johnson <chris@negativecode.com>
|
31
|
+
* David Graham <david@negativecode.com>
|
32
32
|
|
33
33
|
== License
|
34
34
|
|
data/Rakefile
CHANGED
@@ -7,15 +7,14 @@ require_relative 'lib/vines/agent/version'
|
|
7
7
|
spec = Gem::Specification.new do |s|
|
8
8
|
s.name = "vines-agent"
|
9
9
|
s.version = Vines::Agent::VERSION
|
10
|
-
s.date = Time.now.strftime("%Y-%m-%d")
|
11
10
|
|
12
11
|
s.summary = "An XMPP bot that runs shell commands on remote machines."
|
13
12
|
s.description = "Vines Agent executes shell commands sent by users after
|
14
13
|
authorizing them against an access control list, provided by the Vines Services
|
15
14
|
component. Manage a server as easily as chatting with a friend."
|
16
15
|
|
17
|
-
s.authors = ["David Graham"
|
18
|
-
s.email = %w[david@negativecode.com
|
16
|
+
s.authors = ["David Graham"]
|
17
|
+
s.email = %w[david@negativecode.com]
|
19
18
|
s.homepage = "http://www.getvines.com"
|
20
19
|
|
21
20
|
s.files = FileList['[A-Z]*', '{bin,lib,conf}/**/*']
|
@@ -23,10 +22,10 @@ component. Manage a server as easily as chatting with a friend."
|
|
23
22
|
s.executables = %w[vines-agent]
|
24
23
|
s.require_path = "lib"
|
25
24
|
|
26
|
-
s.add_dependency "blather", "~> 0.5.
|
27
|
-
s.add_dependency "ohai", "~> 0.6.
|
25
|
+
s.add_dependency "blather", "~> 0.5.8"
|
26
|
+
s.add_dependency "ohai", "~> 0.6.8"
|
28
27
|
s.add_dependency "session", "~> 3.1.0"
|
29
|
-
s.add_dependency "slave", "~> 1.
|
28
|
+
s.add_dependency "slave", "~> 1.3.0"
|
30
29
|
s.add_dependency "vines", "~> 0.3"
|
31
30
|
|
32
31
|
s.add_development_dependency "minitest"
|
data/lib/vines/agent.rb
CHANGED
@@ -37,19 +37,11 @@ module Vines
|
|
37
37
|
File.open(config, 'w') do |f|
|
38
38
|
replaced = text
|
39
39
|
.gsub('wonderland.lit', domain.downcase)
|
40
|
-
.gsub('secr3t',
|
40
|
+
.gsub('secr3t', Kit.auth_token)
|
41
41
|
f.write(replaced)
|
42
42
|
end
|
43
43
|
end
|
44
|
-
|
45
|
-
# Create a large, random password with which to authenticate the
|
46
|
-
# agent bot's JID.
|
47
|
-
def password
|
48
|
-
hash = Digest::SHA512.new
|
49
|
-
1024.times { hash << rand.to_s }
|
50
|
-
hash.hexdigest
|
51
|
-
end
|
52
44
|
end
|
53
45
|
end
|
54
46
|
end
|
55
|
-
end
|
47
|
+
end
|
data/lib/vines/agent/config.rb
CHANGED
@@ -34,9 +34,13 @@ module Vines
|
|
34
34
|
log.level = const
|
35
35
|
end
|
36
36
|
|
37
|
-
def domain(name, &block)
|
38
|
-
|
39
|
-
|
37
|
+
def domain(name=nil, &block)
|
38
|
+
if name
|
39
|
+
raise 'multiple domains not allowed' if @domain
|
40
|
+
@domain = Domain.new(name, &block)
|
41
|
+
else
|
42
|
+
@domain
|
43
|
+
end
|
40
44
|
end
|
41
45
|
|
42
46
|
def start
|
@@ -46,6 +50,7 @@ module Vines
|
|
46
50
|
class Domain
|
47
51
|
def initialize(name, &block)
|
48
52
|
@name, @password, @upstream = name, nil, []
|
53
|
+
@conf = File.expand_path('conf')
|
49
54
|
instance_eval(&block) if block
|
50
55
|
validate_domain(@name)
|
51
56
|
raise "password required" unless @password && !@password.strip.empty?
|
@@ -56,8 +61,12 @@ module Vines
|
|
56
61
|
end
|
57
62
|
end
|
58
63
|
|
59
|
-
def password(password)
|
60
|
-
|
64
|
+
def password(password=nil)
|
65
|
+
if password
|
66
|
+
@password = password
|
67
|
+
else
|
68
|
+
@password
|
69
|
+
end
|
61
70
|
end
|
62
71
|
|
63
72
|
def download(dir)
|
@@ -78,7 +87,8 @@ module Vines
|
|
78
87
|
base = {
|
79
88
|
password: @password,
|
80
89
|
domain: @name,
|
81
|
-
download: @download
|
90
|
+
download: @download,
|
91
|
+
conf: @conf
|
82
92
|
}
|
83
93
|
options = @upstream.map do |info|
|
84
94
|
base.clone.tap do |opts|
|
@@ -13,14 +13,15 @@ module Vines
|
|
13
13
|
SYSTEMS = 'http://getvines.com/protocol/systems'.freeze
|
14
14
|
|
15
15
|
def initialize(options)
|
16
|
-
domain, password, host, port, download =
|
17
|
-
*options.values_at(:domain, :password, :host, :port, :download)
|
16
|
+
domain, password, host, port, download, conf =
|
17
|
+
*options.values_at(:domain, :password, :host, :port, :download, :conf)
|
18
18
|
|
19
|
+
certs = File.expand_path('certs', conf)
|
19
20
|
@permissions, @services, @sessions, @component = {}, {}, {}, nil
|
20
21
|
@ready = false
|
21
22
|
|
22
23
|
jid = Blather::JID.new(fqdn, domain, 'vines')
|
23
|
-
@stream = Blather::Client.setup(jid, password, host, port)
|
24
|
+
@stream = Blather::Client.setup(jid, password, host, port, certs)
|
24
25
|
|
25
26
|
@stream.register_handler(:disconnected) do
|
26
27
|
log.info("Stream disconnected, reconnecting . . .")
|
data/lib/vines/agent/version.rb
CHANGED
data/test/config_test.rb
CHANGED
metadata
CHANGED
@@ -1,109 +1,105 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: vines-agent
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
4
5
|
prerelease:
|
5
|
-
version: 0.1.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- David Graham
|
9
|
-
- Chris Johnson
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-10-20 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
17
15
|
name: blather
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70352868783740 !ruby/object:Gem::Requirement
|
20
17
|
none: false
|
21
|
-
requirements:
|
18
|
+
requirements:
|
22
19
|
- - ~>
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: 0.5.
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.5.8
|
25
22
|
type: :runtime
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: ohai
|
29
23
|
prerelease: false
|
30
|
-
|
24
|
+
version_requirements: *70352868783740
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: ohai
|
27
|
+
requirement: &70352868782180 !ruby/object:Gem::Requirement
|
31
28
|
none: false
|
32
|
-
requirements:
|
29
|
+
requirements:
|
33
30
|
- - ~>
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version: 0.6.
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.6.8
|
36
33
|
type: :runtime
|
37
|
-
version_requirements: *id002
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: session
|
40
34
|
prerelease: false
|
41
|
-
|
35
|
+
version_requirements: *70352868782180
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: session
|
38
|
+
requirement: &70352868780480 !ruby/object:Gem::Requirement
|
42
39
|
none: false
|
43
|
-
requirements:
|
40
|
+
requirements:
|
44
41
|
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
42
|
+
- !ruby/object:Gem::Version
|
46
43
|
version: 3.1.0
|
47
44
|
type: :runtime
|
48
|
-
version_requirements: *id003
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: slave
|
51
45
|
prerelease: false
|
52
|
-
|
46
|
+
version_requirements: *70352868780480
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: slave
|
49
|
+
requirement: &70352868778940 !ruby/object:Gem::Requirement
|
53
50
|
none: false
|
54
|
-
requirements:
|
51
|
+
requirements:
|
55
52
|
- - ~>
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: 1.
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.3.0
|
58
55
|
type: :runtime
|
59
|
-
version_requirements: *id004
|
60
|
-
- !ruby/object:Gem::Dependency
|
61
|
-
name: vines
|
62
56
|
prerelease: false
|
63
|
-
|
57
|
+
version_requirements: *70352868778940
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: vines
|
60
|
+
requirement: &70352868777680 !ruby/object:Gem::Requirement
|
64
61
|
none: false
|
65
|
-
requirements:
|
62
|
+
requirements:
|
66
63
|
- - ~>
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version:
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0.3'
|
69
66
|
type: :runtime
|
70
|
-
version_requirements: *id005
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: minitest
|
73
67
|
prerelease: false
|
74
|
-
|
68
|
+
version_requirements: *70352868777680
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest
|
71
|
+
requirement: &70352865325120 !ruby/object:Gem::Requirement
|
75
72
|
none: false
|
76
|
-
requirements:
|
77
|
-
- -
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
version:
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
80
77
|
type: :development
|
81
|
-
version_requirements: *id006
|
82
|
-
- !ruby/object:Gem::Dependency
|
83
|
-
name: rake
|
84
78
|
prerelease: false
|
85
|
-
|
79
|
+
version_requirements: *70352865325120
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rake
|
82
|
+
requirement: &70352865324580 !ruby/object:Gem::Requirement
|
86
83
|
none: false
|
87
|
-
requirements:
|
88
|
-
- -
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version:
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
91
88
|
type: :development
|
92
|
-
|
93
|
-
|
94
|
-
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70352865324580
|
91
|
+
description: ! 'Vines Agent executes shell commands sent by users after
|
92
|
+
|
95
93
|
authorizing them against an access control list, provided by the Vines Services
|
96
|
-
|
97
|
-
|
94
|
+
|
95
|
+
component. Manage a server as easily as chatting with a friend.'
|
96
|
+
email:
|
98
97
|
- david@negativecode.com
|
99
|
-
|
100
|
-
executables:
|
98
|
+
executables:
|
101
99
|
- vines-agent
|
102
100
|
extensions: []
|
103
|
-
|
104
101
|
extra_rdoc_files: []
|
105
|
-
|
106
|
-
files:
|
102
|
+
files:
|
107
103
|
- LICENSE
|
108
104
|
- Rakefile
|
109
105
|
- README
|
@@ -125,31 +121,28 @@ files:
|
|
125
121
|
- test/rake_test_loader.rb
|
126
122
|
homepage: http://www.getvines.com
|
127
123
|
licenses: []
|
128
|
-
|
129
124
|
post_install_message:
|
130
125
|
rdoc_options: []
|
131
|
-
|
132
|
-
require_paths:
|
126
|
+
require_paths:
|
133
127
|
- lib
|
134
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
135
129
|
none: false
|
136
|
-
requirements:
|
137
|
-
- -
|
138
|
-
- !ruby/object:Gem::Version
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
139
133
|
version: 1.9.2
|
140
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
135
|
none: false
|
142
|
-
requirements:
|
143
|
-
- -
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version:
|
136
|
+
requirements:
|
137
|
+
- - ! '>='
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
146
140
|
requirements: []
|
147
|
-
|
148
141
|
rubyforge_project:
|
149
142
|
rubygems_version: 1.8.10
|
150
143
|
signing_key:
|
151
144
|
specification_version: 3
|
152
145
|
summary: An XMPP bot that runs shell commands on remote machines.
|
153
|
-
test_files:
|
146
|
+
test_files:
|
154
147
|
- test/config_test.rb
|
155
148
|
- test/rake_test_loader.rb
|