vagrant-node 0.0.2 → 1.0.0
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.md +39 -1
- data/lib/vagrant-node.rb +1 -0
- data/lib/vagrant-node/actions/.svn/entries +62 -0
- data/lib/vagrant-node/actions/.svn/text-base/snapshot.rb.svn-base +310 -0
- data/lib/vagrant-node/actions/snapshot.rb +57 -32
- data/lib/vagrant-node/api.rb +223 -42
- data/lib/vagrant-node/apidesc.rb +105 -1
- data/lib/vagrant-node/clientcontroller.rb +530 -291
- data/lib/vagrant-node/configmanager.rb +284 -0
- data/lib/vagrant-node/dbmanager.rb +120 -3
- data/lib/vagrant-node/exceptions.rb +87 -0
- data/lib/vagrant-node/nodeservercommand.rb +6 -0
- data/lib/vagrant-node/nodeserverpasswd.rb +75 -0
- data/lib/vagrant-node/nodeserverstart.rb +21 -11
- data/lib/vagrant-node/nodeserverstop.rb +23 -13
- data/lib/vagrant-node/pwmanager.rb +23 -0
- data/lib/vagrant-node/server.rb +39 -13
- data/lib/vagrant-node/version.rb +1 -1
- data/vagrant-node.gemspec +9 -3
- metadata +53 -13
@@ -24,6 +24,11 @@ module Vagrant
|
|
24
24
|
NodeServerStop
|
25
25
|
end
|
26
26
|
|
27
|
+
@subcommands.register(:passwd) do
|
28
|
+
require File.expand_path("../nodeserverpasswd", __FILE__)
|
29
|
+
NodeServerPasswd
|
30
|
+
end
|
31
|
+
|
27
32
|
# puts "MAIN ARGS #{@main_args}"
|
28
33
|
# puts "SUB COMMAND #{@sub_command}"
|
29
34
|
# puts "SUB ARGS #{@sub_args}"
|
@@ -66,6 +71,7 @@ module Vagrant
|
|
66
71
|
opts.separator "Available subcommands:"
|
67
72
|
opts.separator " start"
|
68
73
|
opts.separator " stop"
|
74
|
+
opts.separator " passwd"
|
69
75
|
opts.separator ""
|
70
76
|
end
|
71
77
|
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'vagrant-node/server'
|
3
|
+
require 'io/console'
|
4
|
+
require 'vagrant-node/dbmanager'
|
5
|
+
|
6
|
+
module Vagrant
|
7
|
+
module Node
|
8
|
+
class NodeServerPasswd < Vagrant.plugin(2, :command)
|
9
|
+
def execute
|
10
|
+
options = {}
|
11
|
+
|
12
|
+
opts = OptionParser.new do |opts|
|
13
|
+
opts.banner = "Usage: vagrant nodeserver passwd"
|
14
|
+
end
|
15
|
+
|
16
|
+
# argv = parse_options(opts)
|
17
|
+
# raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length > 1
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
# if (argv.length==0)
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
db = DB::DBManager.new(@env.data_dir)
|
26
|
+
|
27
|
+
#Checking if user knows the old password
|
28
|
+
if (db.node_password_set? && !db.node_default_password_set?)
|
29
|
+
print "Insert current password: "
|
30
|
+
old_password=STDIN.noecho(&:gets).chomp
|
31
|
+
print "\n"
|
32
|
+
if !db.node_check_password?(old_password)
|
33
|
+
@env.ui.error("Password failed!")
|
34
|
+
return 0
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
pass_m = "Insert your new password for this Node: "
|
39
|
+
confirm_m = "Please Insert again the new password: "
|
40
|
+
|
41
|
+
|
42
|
+
if STDIN.respond_to?(:noecho)
|
43
|
+
print pass_m
|
44
|
+
password=STDIN.noecho(&:gets).chomp
|
45
|
+
print "\n#{confirm_m}"
|
46
|
+
confirm=STDIN.noecho(&:gets).chomp
|
47
|
+
print "\n"
|
48
|
+
else
|
49
|
+
#FIXME Don't show password
|
50
|
+
password = @env.ui.ask(pass_m)
|
51
|
+
confirm = @env.ui.ask(confirm_m)
|
52
|
+
end
|
53
|
+
|
54
|
+
if (password==confirm)
|
55
|
+
db.node_password_set(password)
|
56
|
+
@env.ui.success("Password changed!")
|
57
|
+
else
|
58
|
+
@env.ui.error("Passwords does not match!")
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
# else
|
65
|
+
# puts "INTRODUCIDA EN TERMINAL"
|
66
|
+
# end
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
0
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -4,20 +4,30 @@ module Vagrant
|
|
4
4
|
module Node
|
5
5
|
class NodeServerStart < Vagrant.plugin(2, :command)
|
6
6
|
def execute
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
#FIXME EVLUAR SI MERECE LA PENA EL PASAR LA PASS POR LINEA DE COMANDOS
|
8
|
+
# options = {}
|
9
|
+
# options[:password]= ""
|
10
|
+
|
11
|
+
opts = OptionParser.new do |opts|
|
12
|
+
opts.banner = "Usage: vagrant nodeserver start [port=3333] -p password"
|
13
|
+
opts.separator ""
|
14
|
+
# opts.on("-p", "--passwd password", String, "Node Password") do |b|
|
15
|
+
# options[:password] = b
|
16
|
+
# end
|
17
|
+
end
|
12
18
|
|
13
|
-
|
14
|
-
|
15
|
-
|
19
|
+
argv = parse_options(opts)
|
20
|
+
return if !argv
|
21
|
+
raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length > 1
|
16
22
|
|
17
|
-
|
23
|
+
begin
|
24
|
+
ServerAPI::ServerManager.run(File.dirname(@env.lock_path),@env.data_dir,argv[0].to_i)
|
25
|
+
rescue Exception => e
|
26
|
+
@env.ui.error(e.message)
|
27
|
+
end
|
18
28
|
|
19
|
-
|
20
|
-
|
29
|
+
0
|
30
|
+
end
|
21
31
|
|
22
32
|
end
|
23
33
|
end
|
@@ -4,19 +4,29 @@ module Vagrant
|
|
4
4
|
module Node
|
5
5
|
class NodeServerStop < Vagrant.plugin(2, :command)
|
6
6
|
def execute
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
7
|
+
# options = {}
|
8
|
+
# options[:password]= ""
|
9
|
+
|
10
|
+
opts = OptionParser.new do |opts|
|
11
|
+
opts.banner = "Usage: vagrant nodeserver stop --passwd password"
|
12
|
+
opts.separator ""
|
13
|
+
# opts.on("-p","--passwd password", String, "Node Password") do |p|
|
14
|
+
# options[:password] = p
|
15
|
+
# end
|
16
|
+
end
|
17
|
+
|
18
|
+
argv = parse_options(opts)
|
19
|
+
return if !argv
|
20
|
+
raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length > 1
|
21
|
+
|
22
|
+
begin
|
23
|
+
ServerAPI::ServerManager.stop(File.dirname(@env.lock_path),@env.data_dir)
|
24
|
+
rescue Exception => e
|
25
|
+
@env.ui.error(e.message)
|
26
|
+
end
|
27
|
+
|
28
|
+
0
|
29
|
+
end
|
20
30
|
|
21
31
|
end
|
22
32
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'vagrant-node/dbmanager'
|
2
|
+
|
3
|
+
module Vagrant
|
4
|
+
module Node
|
5
|
+
class PwManager
|
6
|
+
def initialize(db)
|
7
|
+
@dbmanager=db
|
8
|
+
end
|
9
|
+
|
10
|
+
#Token is a MD5 token
|
11
|
+
#challenge was the
|
12
|
+
def authorized?(token,challenge)
|
13
|
+
#FIXME REMOVE
|
14
|
+
# pp "CHECKING PASSWORD"
|
15
|
+
# pp "TOKEN = #{token}"
|
16
|
+
# pp "CHALLENGED = #{Digest::MD5.hexdigest(challenge+@dbmanager.node_password)}"
|
17
|
+
#pp "EN HEX DIGEST #{Digest::MD5.hexdigest(challenge+@dbmanager.node_password)}"
|
18
|
+
return token==Digest::MD5.hexdigest(challenge+@dbmanager.node_password)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/vagrant-node/server.rb
CHANGED
@@ -2,8 +2,9 @@ require 'rubygems'
|
|
2
2
|
require 'vagrant-node/api'
|
3
3
|
require 'vagrant-node/pidfile'
|
4
4
|
require 'webrick'
|
5
|
-
|
6
|
-
|
5
|
+
require 'vagrant-node/dbmanager'
|
6
|
+
require 'io/console'
|
7
|
+
#FIXME EVALUAR SI MERECE LA PENA HACER AUTENTICACION DE PASSWORD AQUI
|
7
8
|
#FIXME Problema con el logging ya que únicamnete
|
8
9
|
#vuelca al fichero todo cuando se acaba el proceso con el
|
9
10
|
#vagrant server stop
|
@@ -15,13 +16,16 @@ module Vagrant
|
|
15
16
|
DEFAULT_BIND_PORT = 3333
|
16
17
|
BIND_ADDRESS = "0.0.0.0"
|
17
18
|
LOG_FILE = "webrick.log"
|
18
|
-
def self.run(pid_path,
|
19
|
+
def self.run(pid_path,data_path,port=DEFAULT_BIND_PORT)
|
20
|
+
|
21
|
+
check_password(data_path);
|
22
|
+
|
19
23
|
pid_file = File.join(pid_path,PIDFILENAME)
|
20
24
|
|
21
25
|
pid = fork do
|
22
26
|
|
23
27
|
|
24
|
-
log_file = File.open (
|
28
|
+
log_file = File.open (data_path + LOG_FILE).to_s, 'a+'
|
25
29
|
|
26
30
|
log = WEBrick::Log.new log_file
|
27
31
|
|
@@ -38,7 +42,7 @@ module Vagrant
|
|
38
42
|
:AccessLog => access_log
|
39
43
|
}
|
40
44
|
|
41
|
-
begin
|
45
|
+
#begin
|
42
46
|
server = WEBrick::HTTPServer.new(options)
|
43
47
|
|
44
48
|
server.mount "/", Rack::Handler::WEBrick,ServerAPI::API.new
|
@@ -49,9 +53,9 @@ module Vagrant
|
|
49
53
|
server.start
|
50
54
|
|
51
55
|
|
52
|
-
rescue Exception => e
|
53
|
-
puts e.message
|
54
|
-
end
|
56
|
+
# rescue Exception => e
|
57
|
+
# puts e.message
|
58
|
+
# end
|
55
59
|
|
56
60
|
#Alternative running mode
|
57
61
|
# ServerAPI::API.run! :bind => '0.0.0.0', :port => 1234
|
@@ -59,8 +63,11 @@ module Vagrant
|
|
59
63
|
|
60
64
|
end
|
61
65
|
|
62
|
-
def self.stop(pid_path)
|
63
|
-
|
66
|
+
def self.stop(pid_path,data_path)
|
67
|
+
|
68
|
+
|
69
|
+
# check_password(data_path,passwd);
|
70
|
+
|
64
71
|
|
65
72
|
pid_file = File.join(pid_path,PIDFILENAME)
|
66
73
|
|
@@ -81,12 +88,31 @@ module Vagrant
|
|
81
88
|
Process.kill('KILL', pid)
|
82
89
|
#Process.kill 9, pid
|
83
90
|
|
84
|
-
|
85
|
-
puts e.message
|
86
|
-
end
|
91
|
+
|
87
92
|
|
88
93
|
end
|
89
94
|
|
95
|
+
private
|
96
|
+
|
97
|
+
def self.check_password(data_path)
|
98
|
+
@db = DB::DBManager.new(data_path)
|
99
|
+
if (!@db.node_password_set? || @db.node_default_password_set?)
|
100
|
+
raise "Please, set first a password with the command \"vagrant nodeserver passwd\""
|
101
|
+
# else
|
102
|
+
# if (password==nil || password.size==0)
|
103
|
+
# if STDIN.respond_to?(:noecho)
|
104
|
+
# print "Password: "
|
105
|
+
# password=STDIN.noecho(&:gets).chomp
|
106
|
+
# print "\n"
|
107
|
+
# end
|
108
|
+
# end
|
109
|
+
|
110
|
+
# if(!@db.node_check_password?(password))
|
111
|
+
# raise "Password failed!"
|
112
|
+
# end
|
113
|
+
end
|
114
|
+
true
|
115
|
+
end
|
90
116
|
|
91
117
|
|
92
118
|
end
|
data/lib/vagrant-node/version.rb
CHANGED
data/vagrant-node.gemspec
CHANGED
@@ -8,8 +8,12 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Vagrant::Node::VERSION
|
9
9
|
spec.authors = ["Francisco Javier Lopez de San Pedro"]
|
10
10
|
spec.email = ["fjsanpedro@gmail.com"]
|
11
|
-
spec.description = "This Vagrant plugin allows you to configure a vm environment as a node in a client/server infraestructure. See vagrant-nodemaster"
|
12
|
-
spec.summary = "
|
11
|
+
spec.description = "This Vagrant plugin allows you to configure a vm environment as a node in a client/server infraestructure. See also vagrant-nodemaster"
|
12
|
+
spec.summary = "This plugin allows you to set a computer with a virtual environment configured with Vagrant to be controlled and managed remotely. The remote machine must have installed the controller plugin, Vagrant-NodeMaster.
|
13
|
+
With this plugin installed the Vagrant environment can perform requests, that you usually can execute locally, but commanded by a remote computer.
|
14
|
+
|
15
|
+
This plugin has been developed in the context of the Catedra SAES of the University of Murcia(Spain)."
|
16
|
+
|
13
17
|
spec.homepage = "http://www.catedrasaes.org"
|
14
18
|
spec.license = "GNU"
|
15
19
|
|
@@ -18,8 +22,10 @@ Gem::Specification.new do |spec|
|
|
18
22
|
spec.add_dependency "sinatra"
|
19
23
|
spec.add_dependency "json"
|
20
24
|
spec.add_dependency "rack"
|
21
|
-
spec.add_dependency "rubyzip"
|
25
|
+
spec.add_dependency "rubyzip", '< 1.0.0'
|
22
26
|
spec.add_dependency "sqlite3"
|
27
|
+
spec.add_dependency "ruby2ruby", "~> 2.0.6"
|
28
|
+
spec.add_dependency "ruby_parser", "~> 3.2.2"
|
23
29
|
#spec.add_dependency "sambal"
|
24
30
|
#spec.add_dependency "rexml"
|
25
31
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-node
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
|
+
- 1
|
7
8
|
- 0
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.2
|
10
|
+
version: 1.0.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Francisco Javier Lopez de San Pedro
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2014-02-12 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: sinatra
|
@@ -65,12 +65,14 @@ dependencies:
|
|
65
65
|
requirement: &id004 !ruby/object:Gem::Requirement
|
66
66
|
none: false
|
67
67
|
requirements:
|
68
|
-
- -
|
68
|
+
- - <
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
hash:
|
70
|
+
hash: 23
|
71
71
|
segments:
|
72
|
+
- 1
|
72
73
|
- 0
|
73
|
-
|
74
|
+
- 0
|
75
|
+
version: 1.0.0
|
74
76
|
type: :runtime
|
75
77
|
version_requirements: *id004
|
76
78
|
- !ruby/object:Gem::Dependency
|
@@ -88,9 +90,41 @@ dependencies:
|
|
88
90
|
type: :runtime
|
89
91
|
version_requirements: *id005
|
90
92
|
- !ruby/object:Gem::Dependency
|
91
|
-
name:
|
93
|
+
name: ruby2ruby
|
92
94
|
prerelease: false
|
93
95
|
requirement: &id006 !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ~>
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
hash: 3
|
101
|
+
segments:
|
102
|
+
- 2
|
103
|
+
- 0
|
104
|
+
- 6
|
105
|
+
version: 2.0.6
|
106
|
+
type: :runtime
|
107
|
+
version_requirements: *id006
|
108
|
+
- !ruby/object:Gem::Dependency
|
109
|
+
name: ruby_parser
|
110
|
+
prerelease: false
|
111
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
112
|
+
none: false
|
113
|
+
requirements:
|
114
|
+
- - ~>
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
hash: 11
|
117
|
+
segments:
|
118
|
+
- 3
|
119
|
+
- 2
|
120
|
+
- 2
|
121
|
+
version: 3.2.2
|
122
|
+
type: :runtime
|
123
|
+
version_requirements: *id007
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: bundler
|
126
|
+
prerelease: false
|
127
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
94
128
|
none: false
|
95
129
|
requirements:
|
96
130
|
- - ~>
|
@@ -101,11 +135,11 @@ dependencies:
|
|
101
135
|
- 3
|
102
136
|
version: "1.3"
|
103
137
|
type: :development
|
104
|
-
version_requirements: *
|
138
|
+
version_requirements: *id008
|
105
139
|
- !ruby/object:Gem::Dependency
|
106
140
|
name: rake
|
107
141
|
prerelease: false
|
108
|
-
requirement: &
|
142
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
109
143
|
none: false
|
110
144
|
requirements:
|
111
145
|
- - ">="
|
@@ -115,8 +149,8 @@ dependencies:
|
|
115
149
|
- 0
|
116
150
|
version: "0"
|
117
151
|
type: :development
|
118
|
-
version_requirements: *
|
119
|
-
description: This Vagrant plugin allows you to configure a vm environment as a node in a client/server infraestructure. See vagrant-nodemaster
|
152
|
+
version_requirements: *id009
|
153
|
+
description: This Vagrant plugin allows you to configure a vm environment as a node in a client/server infraestructure. See also vagrant-nodemaster
|
120
154
|
email:
|
121
155
|
- fjsanpedro@gmail.com
|
122
156
|
executables: []
|
@@ -132,15 +166,21 @@ files:
|
|
132
166
|
- README.md
|
133
167
|
- Rakefile
|
134
168
|
- lib/vagrant-node.rb
|
169
|
+
- lib/vagrant-node/actions/.svn/entries
|
170
|
+
- lib/vagrant-node/actions/.svn/text-base/snapshot.rb.svn-base
|
135
171
|
- lib/vagrant-node/actions/snapshot.rb
|
136
172
|
- lib/vagrant-node/api.rb
|
137
173
|
- lib/vagrant-node/apidesc.rb
|
138
174
|
- lib/vagrant-node/clientcontroller.rb
|
175
|
+
- lib/vagrant-node/configmanager.rb
|
139
176
|
- lib/vagrant-node/dbmanager.rb
|
177
|
+
- lib/vagrant-node/exceptions.rb
|
140
178
|
- lib/vagrant-node/nodeservercommand.rb
|
179
|
+
- lib/vagrant-node/nodeserverpasswd.rb
|
141
180
|
- lib/vagrant-node/nodeserverstart.rb
|
142
181
|
- lib/vagrant-node/nodeserverstop.rb
|
143
182
|
- lib/vagrant-node/pidfile.rb
|
183
|
+
- lib/vagrant-node/pwmanager.rb
|
144
184
|
- lib/vagrant-node/server.rb
|
145
185
|
- lib/vagrant-node/version.rb
|
146
186
|
- vagrant-node.gemspec
|
@@ -176,7 +216,7 @@ rubyforge_project: vagrant-node
|
|
176
216
|
rubygems_version: 1.8.15
|
177
217
|
signing_key:
|
178
218
|
specification_version: 3
|
179
|
-
summary:
|
219
|
+
summary: This plugin allows you to set a computer with a virtual environment configured with Vagrant to be controlled and managed remotely. The remote machine must have installed the controller plugin, Vagrant-NodeMaster. With this plugin installed the Vagrant environment can perform requests, that you usually can execute locally, but commanded by a remote computer. This plugin has been developed in the context of the Catedra SAES of the University of Murcia(Spain).
|
180
220
|
test_files: []
|
181
221
|
|
182
222
|
has_rdoc:
|