netsoul 2.4.5 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -4
- data/.versions.conf +1 -1
- data/Gemfile +1 -1
- data/Rakefile +6 -6
- data/bin/netsoul-ruby +11 -11
- data/ext/netsoul_kerberos/extconf.rb +7 -7
- data/lib/netsoul/client.rb +7 -7
- data/lib/netsoul/config.rb +7 -7
- data/lib/netsoul/logging.rb +1 -1
- data/lib/netsoul/message.rb +42 -42
- data/lib/netsoul/version.rb +1 -1
- data/netsoul.gemspec +21 -21
- metadata +11 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e5416b8bd85d9a4c1b4d07f37d5324f3d71ca7b
|
4
|
+
data.tar.gz: d1d8ffa84fc7f46e83677d54f905ab77fc1f4d6c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a0410aa83734c72fcc5506b45526e40aa765438ee6efd84ea5b47ff4befb059f9d4c49249b8194e9704c6fd0928006f014e35544fa03e5cad9303de25a3c1ae
|
7
|
+
data.tar.gz: 97c82221c5f18b170671b17a8b3a95ffe52bf18682c26fda481c2a2c87b767bac5cf09228e056151abca3e50405efe0c7de29e306233a941c3eccd8350b4c33a
|
data/.travis.yml
CHANGED
data/.versions.conf
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
ruby=2.
|
1
|
+
ruby=2.4.0
|
2
2
|
ruby-gemset=netsoul
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -4,17 +4,17 @@ require 'bundler/gem_tasks'
|
|
4
4
|
require 'rspec/core/rake_task'
|
5
5
|
require 'yard'
|
6
6
|
|
7
|
-
RSpec::Core::RakeTask.new('spec'
|
7
|
+
RSpec::Core::RakeTask.new('spec')
|
8
8
|
|
9
9
|
task default: :spec
|
10
10
|
|
11
11
|
require 'rake/extensiontask'
|
12
|
-
Rake::ExtensionTask.new 'netsoul_kerberos'
|
13
|
-
ext.lib_dir = 'lib'
|
12
|
+
Rake::ExtensionTask.new 'netsoul_kerberos' do |ext|
|
13
|
+
ext.lib_dir = 'lib'
|
14
14
|
end
|
15
15
|
|
16
|
-
desc 'Generate documentation'
|
16
|
+
desc 'Generate documentation'
|
17
17
|
YARD::Rake::YardocTask.new do |t|
|
18
|
-
t.files = %w(lib/**/*.rb - LICENSE.txt).map(&:freeze)
|
19
|
-
t.options = %w(--main README.md --no-private --protected).map(&:freeze)
|
18
|
+
t.files = %w(lib/**/*.rb - LICENSE.txt).map(&:freeze)
|
19
|
+
t.options = %w(--main README.md --no-private --protected).map(&:freeze)
|
20
20
|
end
|
data/bin/netsoul-ruby
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
lib = File.join(File.dirname(File.realpath(__FILE__)), '..'
|
4
|
+
lib = File.join(File.dirname(File.realpath(__FILE__)), '..', 'lib')
|
5
5
|
$LOAD_PATH.unshift File.expand_path(lib)
|
6
6
|
|
7
7
|
require 'netsoul/client'
|
@@ -9,20 +9,20 @@ require 'netsoul/client'
|
|
9
9
|
require 'optparse'
|
10
10
|
require 'yaml'
|
11
11
|
|
12
|
-
process_name_string = "#{__FILE__} #{ARGV.join(' '
|
12
|
+
process_name_string = "#{__FILE__} #{ARGV.join(' ')}"
|
13
13
|
Process.respond_to?(:setproctitle) ? Process.setproctitle(process_name_string) : $PROGRAM_NAME = process_name_string
|
14
14
|
|
15
15
|
options = {}
|
16
16
|
OptionParser.new do |opts|
|
17
|
-
opts.banner = 'Usage: netsoul-ruby [options]'
|
18
|
-
opts.separator ''
|
19
|
-
opts.separator 'Netsoul-Ruby options:'
|
17
|
+
opts.banner = 'Usage: netsoul-ruby [options]'
|
18
|
+
opts.separator ''
|
19
|
+
opts.separator 'Netsoul-Ruby options:'
|
20
20
|
|
21
|
-
opts.on('-c'
|
21
|
+
opts.on('-c', '--config FILE', 'Configuration file in YAML') do |file|
|
22
22
|
options[:user_opts] = YAML.load_file(file) if File.file?(file)
|
23
23
|
end
|
24
24
|
|
25
|
-
opts.on('-h'
|
25
|
+
opts.on('-h', '--help', 'Display this screen') do
|
26
26
|
puts opts
|
27
27
|
exit 42
|
28
28
|
end
|
@@ -30,16 +30,16 @@ end.parse!
|
|
30
30
|
|
31
31
|
if options.empty? || options[:user_opts].size == 0
|
32
32
|
unless ENV.to_a.count { |k, _v| %w(NETSOUL_LOGIN NETSOUL_SOCKS_PASSWORD NETSOUL_LOGIN NETSOUL_UNIX_PASSWORD NETSOUL_AUTH_METHOD).include?(k) } >= 2
|
33
|
-
puts '[ERROR] You have to specify a configuration file or environment variables'
|
33
|
+
puts '[ERROR] You have to specify a configuration file or environment variables'
|
34
34
|
exit 42
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
def trap_interrupt(client)
|
39
|
-
Signal.trap('INT'
|
39
|
+
Signal.trap('INT') do
|
40
40
|
exit 42 unless client.started
|
41
41
|
begin client.disconnect; end
|
42
|
-
puts '!!! [SIGINT] !!!'
|
42
|
+
puts '!!! [SIGINT] !!!'
|
43
43
|
exit 42
|
44
44
|
end
|
45
45
|
end
|
@@ -59,7 +59,7 @@ begin
|
|
59
59
|
retry_wait_time = 1.0
|
60
60
|
loop do
|
61
61
|
res = c.get
|
62
|
-
res != 'nothing'
|
62
|
+
res != 'nothing' ? log(:info, "[get ] #{res}") : log(:warn, '[get ] (<was empty!!!>)')
|
63
63
|
if res.to_s.match(/^ping.*/)
|
64
64
|
c.send res
|
65
65
|
log :info, "[send] #{res}"
|
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
require 'mkmf'
|
4
4
|
|
5
|
-
have_library('krb5'
|
6
|
-
have_library('gssapi_krb5'
|
7
|
-
have_header('string.h'
|
8
|
-
have_header('krb5.h'
|
9
|
-
have_header('gssapi/gssapi.h'
|
10
|
-
have_header('gssapi/gssapi_krb5.h'
|
5
|
+
have_library('krb5', 'krb5_init_context')
|
6
|
+
have_library('gssapi_krb5', 'gss_init_sec_context')
|
7
|
+
have_header('string.h')
|
8
|
+
have_header('krb5.h')
|
9
|
+
have_header('gssapi/gssapi.h')
|
10
|
+
have_header('gssapi/gssapi_krb5.h')
|
11
11
|
|
12
|
-
create_makefile('netsoul_kerberos'
|
12
|
+
create_makefile('netsoul_kerberos')
|
data/lib/netsoul/client.rb
CHANGED
@@ -17,7 +17,7 @@ module Netsoul
|
|
17
17
|
|
18
18
|
def auth_ag
|
19
19
|
send(Message.auth_ag)
|
20
|
-
raise Netsoul::IdentificationError, 'Identification failed.'
|
20
|
+
raise Netsoul::IdentificationError, 'Identification failed.' unless get.split(' ')[1] == '002'
|
21
21
|
end
|
22
22
|
private :auth_ag
|
23
23
|
|
@@ -27,8 +27,8 @@ module Netsoul
|
|
27
27
|
else
|
28
28
|
send(Message.standard_auth(@config))
|
29
29
|
end
|
30
|
-
raise Netsoul::AuthenticationError, 'Authentication failed. See your config file or environment variables'
|
31
|
-
unless get.split(' '
|
30
|
+
raise Netsoul::AuthenticationError, 'Authentication failed. See your config file or environment variables' \
|
31
|
+
unless get.split(' ')[1] == '002'
|
32
32
|
end
|
33
33
|
private :auth_method
|
34
34
|
|
@@ -40,7 +40,7 @@ module Netsoul
|
|
40
40
|
|
41
41
|
def connect
|
42
42
|
@socket = TCPSocket.new(@config.server_host, @config.server_port)
|
43
|
-
raise Netsoul::SocketError, 'Could not open a socket. Connection is unavailable.'
|
43
|
+
raise Netsoul::SocketError, 'Could not open a socket. Connection is unavailable.' unless @socket
|
44
44
|
_cmd, _socket_num, md5_hash, client_ip, client_port, _server_timestamp = get.split
|
45
45
|
|
46
46
|
@config.build_user_connection_info md5_hash: md5_hash, client_ip: client_ip, client_port: client_port
|
@@ -62,7 +62,7 @@ module Netsoul
|
|
62
62
|
def send(str)
|
63
63
|
_, sock = IO.select(nil, [@socket], nil, SOCKET_WRITE_TIMEOUT)
|
64
64
|
s = sock.first
|
65
|
-
raise Netsoul::SocketError, 'Timeout or raise on write socket'
|
65
|
+
raise Netsoul::SocketError, 'Timeout or raise on write socket' unless s
|
66
66
|
s.puts str
|
67
67
|
s.flush
|
68
68
|
end
|
@@ -70,12 +70,12 @@ module Netsoul
|
|
70
70
|
def get
|
71
71
|
sock, = IO.select([@socket], nil, nil, SOCKET_READ_TIMEOUT)
|
72
72
|
s = sock.first
|
73
|
-
raise Netsoul::SocketError, 'Timeout or raise on read socket'
|
73
|
+
raise Netsoul::SocketError, 'Timeout or raise on read socket' unless s
|
74
74
|
res = s.gets.chomp
|
75
75
|
if !res.empty?
|
76
76
|
res
|
77
77
|
else
|
78
|
-
'nothing'
|
78
|
+
'nothing' # Send some string and permit IO.select to thrown exception if something goes wrong.
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
data/lib/netsoul/config.rb
CHANGED
@@ -34,18 +34,18 @@ module Netsoul
|
|
34
34
|
#
|
35
35
|
# rubocop:disable all
|
36
36
|
def initialize(opts = {})
|
37
|
-
@server_host = ENV['NETSOUL_SERVER_HOST'] || opts.fetch(:server_host, 'ns-server.epita.fr'
|
37
|
+
@server_host = ENV['NETSOUL_SERVER_HOST'] || opts.fetch(:server_host, 'ns-server.epita.fr')
|
38
38
|
@server_port = Integer(ENV['NETSOUL_SERVER_PORT'] || opts.fetch(:server_port, 4242))
|
39
|
-
@login = ENV['NETSOUL_LOGIN'] || opts.fetch(:login, 'ionis'
|
40
|
-
@socks_password = ENV['NETSOUL_SOCKS_PASSWORD'] || opts.fetch(:socks_password, 'socks_password'
|
41
|
-
@unix_password = ENV['NETSOUL_UNIX_PASSWORD'] || opts.fetch(:unix_password, 'unix_password'
|
39
|
+
@login = ENV['NETSOUL_LOGIN'] || opts.fetch(:login, 'ionis')
|
40
|
+
@socks_password = ENV['NETSOUL_SOCKS_PASSWORD'] || opts.fetch(:socks_password, 'socks_password')
|
41
|
+
@unix_password = ENV['NETSOUL_UNIX_PASSWORD'] || opts.fetch(:unix_password, 'unix_password')
|
42
42
|
@auth_method = (ENV['NETSOUL_AUTH_METHOD'] || (AUTH_METHODS.include?(opts[:auth_method]) ? opts[:auth_method] : :std)).to_sym
|
43
43
|
@state = (ENV['NETSOUL_STATE'] || (USER_STATES.include?(opts[:state]) ? opts[:state] : :none)).to_sym
|
44
|
-
@location = ENV['NETSOUL_LOCATION'] || opts.fetch(:location, 'Home'
|
45
|
-
@user_group = ENV['NETSOUL_USER_GROUP'] || opts.fetch(:user_group, 'ETNA_2008'
|
44
|
+
@location = ENV['NETSOUL_LOCATION'] || opts.fetch(:location, 'Home')
|
45
|
+
@user_group = ENV['NETSOUL_USER_GROUP'] || opts.fetch(:user_group, 'ETNA_2008')
|
46
46
|
@user_connection_info = {}
|
47
47
|
|
48
|
-
@client_name = ENV['NETSOUL_CLIENT_NAME'] || opts.fetch(:client_name, "(Netsoul-Ruby v#{Netsoul::VERSION}) -> { Christian Kakesa, since 2009}"
|
48
|
+
@client_name = ENV['NETSOUL_CLIENT_NAME'] || opts.fetch(:client_name, "(Netsoul-Ruby v#{Netsoul::VERSION}) -> { Christian Kakesa, since 2009}")
|
49
49
|
end
|
50
50
|
# rubocop:enable all
|
51
51
|
|
data/lib/netsoul/logging.rb
CHANGED
@@ -16,7 +16,7 @@ module Netsoul
|
|
16
16
|
$stdout.sync = true
|
17
17
|
logger.level = Logger::INFO
|
18
18
|
logger.formatter = proc do |severity, datetime, _progname, msg|
|
19
|
-
"#{severity} [#{datetime.strftime('%Y-%m-%d %H:%M:%S.%L'
|
19
|
+
"#{severity} [#{datetime.strftime('%Y-%m-%d %H:%M:%S.%L')}] #{msg}\n"
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
data/lib/netsoul/message.rb
CHANGED
@@ -16,7 +16,7 @@ module Netsoul
|
|
16
16
|
|
17
17
|
def standard_auth(config)
|
18
18
|
client_ip = config.user_connection_info[:client_ip]
|
19
|
-
location = Message._escape(Location.get(client_ip) == 'ext'
|
19
|
+
location = Message._escape(Location.get(client_ip) == 'ext' ? config.location : Location.get(client_ip))
|
20
20
|
client_name = Message._escape(config.client_name)
|
21
21
|
"ext_user_log #{config.login} #{_standard_auth_string(config)} #{client_name} #{location}"
|
22
22
|
end
|
@@ -39,14 +39,14 @@ module Netsoul
|
|
39
39
|
|
40
40
|
def kerberos_auth(config)
|
41
41
|
unless _kerberos_get.build_token(config.login, config.unix_password)
|
42
|
-
raise Netsoul::Error, 'Impossible to retrieve the kerberos token.'
|
42
|
+
raise Netsoul::Error, 'Impossible to retrieve the kerberos token.'
|
43
43
|
end
|
44
44
|
_kerberos_auth_klog(config)
|
45
45
|
end
|
46
46
|
# :nocov:
|
47
47
|
|
48
48
|
def auth_ag
|
49
|
-
'auth_ag ext_user none none'
|
49
|
+
'auth_ag ext_user none none'
|
50
50
|
end
|
51
51
|
|
52
52
|
def send_message(user, msg)
|
@@ -74,7 +74,7 @@ module Netsoul
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def attach
|
77
|
-
'user_cmd attach'
|
77
|
+
'user_cmd attach'
|
78
78
|
end
|
79
79
|
|
80
80
|
def user_state(state, timestamp)
|
@@ -102,16 +102,16 @@ module Netsoul
|
|
102
102
|
end
|
103
103
|
|
104
104
|
def ping
|
105
|
-
'pong'
|
105
|
+
'pong'
|
106
106
|
end
|
107
107
|
|
108
108
|
def ns_exit
|
109
|
-
'exit'
|
109
|
+
'exit'
|
110
110
|
end
|
111
111
|
|
112
112
|
def _escape(str)
|
113
|
-
str = URI.escape(str, Regexp.new("#{URI::PATTERN::ALNUM}[:graph:][:punct:][:cntrl:][:print:][:blank:]", false, 'N'
|
114
|
-
URI.escape(str, Regexp.new("[^#{URI::PATTERN::ALNUM}]", false, 'N'
|
113
|
+
str = URI.escape(str, Regexp.new("#{URI::PATTERN::ALNUM}[:graph:][:punct:][:cntrl:][:print:][:blank:]", false, 'N'))
|
114
|
+
URI.escape(str, Regexp.new("[^#{URI::PATTERN::ALNUM}]", false, 'N'))
|
115
115
|
end
|
116
116
|
|
117
117
|
def _unescape(str)
|
@@ -126,45 +126,45 @@ module Netsoul
|
|
126
126
|
locations.each do |key, val|
|
127
127
|
return key.to_s if ip =~ /^#{val}/
|
128
128
|
end
|
129
|
-
'ext'
|
129
|
+
'ext'
|
130
130
|
end
|
131
131
|
|
132
132
|
# rubocop:disable all
|
133
133
|
def locations
|
134
134
|
@locations ||= {
|
135
|
-
:'lab-cisco-mid-sr' => '10.251.'
|
136
|
-
etna: '10.245.'
|
137
|
-
lse: '10.227.42.'
|
138
|
-
:'sda-1' => '10.227.4.'
|
139
|
-
lab: '10.227.'
|
140
|
-
:'lab-tcom' => '10.226.7.'
|
141
|
-
:'lab-acu' => '10.226.6.'
|
142
|
-
:'lab-console' => '10.226.5.'
|
143
|
-
:'lab-mspe' => '10.226.'
|
144
|
-
epitanim: '10.225.19.'
|
145
|
-
epidemic: '10.225.18.'
|
146
|
-
:'sda-2' => '10.225.10.'
|
147
|
-
cycom: '10.225.8.'
|
148
|
-
epx: '10.225.7.'
|
149
|
-
prologin: '10.225.6.'
|
150
|
-
nomad: '10.225.2.'
|
151
|
-
assos: '10.225.'
|
152
|
-
sda: '10.224.14.'
|
153
|
-
www: '10.223.106.'
|
154
|
-
episport: '10.223.104.'
|
155
|
-
epicom: '10.223.103.'
|
156
|
-
:'bde-epita' => '10.223.100.'
|
157
|
-
omatis: '10.223.42.'
|
158
|
-
ipsa: '10.223.15.'
|
159
|
-
lrde: '10.223.13.'
|
160
|
-
cvi: '10.223.7.'
|
161
|
-
epi: '10.223.1.'
|
162
|
-
pasteur: '10.223.'
|
163
|
-
bocal: '10.42.42.'
|
164
|
-
sm: '10.42.'
|
165
|
-
vpn: '10.10.'
|
166
|
-
adm: '10.1.'
|
167
|
-
epita: '10.'
|
135
|
+
:'lab-cisco-mid-sr' => '10.251.',
|
136
|
+
etna: '10.245.',
|
137
|
+
lse: '10.227.42.',
|
138
|
+
:'sda-1' => '10.227.4.',
|
139
|
+
lab: '10.227.',
|
140
|
+
:'lab-tcom' => '10.226.7.',
|
141
|
+
:'lab-acu' => '10.226.6.',
|
142
|
+
:'lab-console' => '10.226.5.',
|
143
|
+
:'lab-mspe' => '10.226.',
|
144
|
+
epitanim: '10.225.19.',
|
145
|
+
epidemic: '10.225.18.',
|
146
|
+
:'sda-2' => '10.225.10.',
|
147
|
+
cycom: '10.225.8.',
|
148
|
+
epx: '10.225.7.',
|
149
|
+
prologin: '10.225.6.',
|
150
|
+
nomad: '10.225.2.',
|
151
|
+
assos: '10.225.',
|
152
|
+
sda: '10.224.14.',
|
153
|
+
www: '10.223.106.',
|
154
|
+
episport: '10.223.104.',
|
155
|
+
epicom: '10.223.103.',
|
156
|
+
:'bde-epita' => '10.223.100.',
|
157
|
+
omatis: '10.223.42.',
|
158
|
+
ipsa: '10.223.15.',
|
159
|
+
lrde: '10.223.13.',
|
160
|
+
cvi: '10.223.7.',
|
161
|
+
epi: '10.223.1.',
|
162
|
+
pasteur: '10.223.',
|
163
|
+
bocal: '10.42.42.',
|
164
|
+
sm: '10.42.',
|
165
|
+
vpn: '10.10.',
|
166
|
+
adm: '10.1.',
|
167
|
+
epita: '10.'
|
168
168
|
}
|
169
169
|
end
|
170
170
|
# rubocop:enable all
|
data/lib/netsoul/version.rb
CHANGED
data/netsoul.gemspec
CHANGED
@@ -1,38 +1,38 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
lib = File.expand_path('../lib'
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
5
|
require 'netsoul/version'
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
-
spec.name = 'netsoul'
|
8
|
+
spec.name = 'netsoul'
|
9
9
|
spec.version = Netsoul::VERSION
|
10
|
-
spec.authors = ['Christian Kakesa'
|
11
|
-
spec.email = ['christian.kakesa@gmail.com'
|
10
|
+
spec.authors = ['Christian Kakesa']
|
11
|
+
spec.email = ['christian.kakesa@gmail.com']
|
12
12
|
|
13
|
-
spec.summary = 'Netsoul client and library for ruby.'
|
13
|
+
spec.summary = 'Netsoul client and library for ruby.'
|
14
14
|
spec.description = spec.summary
|
15
|
-
spec.homepage = 'https://github.com/fenicks/netsoul-ruby'
|
16
|
-
spec.license = 'MIT'
|
15
|
+
spec.homepage = 'https://github.com/fenicks/netsoul-ruby'
|
16
|
+
spec.license = 'MIT'
|
17
17
|
|
18
18
|
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
19
19
|
# delete this section to allow pushing this gem to any host.
|
20
|
-
raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
|
21
|
-
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
20
|
+
raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.' unless spec.respond_to?(:metadata)
|
21
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
22
22
|
|
23
23
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
24
|
-
spec.bindir = 'bin'
|
24
|
+
spec.bindir = 'bin'
|
25
25
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
26
|
-
spec.require_paths = %w(lib ext bin).map(&:freeze)
|
27
|
-
spec.extensions = ['ext/netsoul_kerberos/extconf.rb'
|
26
|
+
spec.require_paths = %w(lib ext bin).map(&:freeze)
|
27
|
+
spec.extensions = ['ext/netsoul_kerberos/extconf.rb']
|
28
28
|
|
29
|
-
spec.add_development_dependency 'bundler'
|
30
|
-
spec.add_development_dependency 'rake'
|
31
|
-
spec.add_development_dependency 'rubocop'
|
32
|
-
spec.add_development_dependency 'rspec'
|
33
|
-
spec.add_development_dependency 'simplecov'
|
34
|
-
spec.add_development_dependency 'coveralls'
|
35
|
-
spec.add_development_dependency 'yard'
|
36
|
-
spec.add_development_dependency 'memory_profiler'
|
37
|
-
spec.add_development_dependency 'rake-compiler'
|
29
|
+
spec.add_development_dependency 'bundler', '~> 1.13', '>= 1.13.7'
|
30
|
+
spec.add_development_dependency 'rake', '~> 0'
|
31
|
+
spec.add_development_dependency 'rubocop', '~> 0'
|
32
|
+
spec.add_development_dependency 'rspec', '~> 3.5'
|
33
|
+
spec.add_development_dependency 'simplecov', '~> 0'
|
34
|
+
spec.add_development_dependency 'coveralls', '~> 0'
|
35
|
+
spec.add_development_dependency 'yard', '~> 0'
|
36
|
+
spec.add_development_dependency 'memory_profiler', '~> 0' if RUBY_VERSION >= '2.1.0'
|
37
|
+
spec.add_development_dependency 'rake-compiler', '~> 1.0.3'
|
38
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: netsoul
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Kakesa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,20 +16,20 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.13'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.7
|
22
|
+
version: 1.13.7
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '1.
|
29
|
+
version: '1.13'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 1.7
|
32
|
+
version: 1.13.7
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rake
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -64,14 +64,14 @@ dependencies:
|
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '3.
|
67
|
+
version: '3.5'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '3.
|
74
|
+
version: '3.5'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: simplecov
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,14 +134,14 @@ dependencies:
|
|
134
134
|
requirements:
|
135
135
|
- - "~>"
|
136
136
|
- !ruby/object:Gem::Version
|
137
|
-
version: 0.
|
137
|
+
version: 1.0.3
|
138
138
|
type: :development
|
139
139
|
prerelease: false
|
140
140
|
version_requirements: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
142
|
- - "~>"
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version: 0.
|
144
|
+
version: 1.0.3
|
145
145
|
description: Netsoul client and library for ruby.
|
146
146
|
email:
|
147
147
|
- christian.kakesa@gmail.com
|
@@ -197,9 +197,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
197
197
|
version: '0'
|
198
198
|
requirements: []
|
199
199
|
rubyforge_project:
|
200
|
-
rubygems_version: 2.
|
200
|
+
rubygems_version: 2.6.8
|
201
201
|
signing_key:
|
202
202
|
specification_version: 4
|
203
203
|
summary: Netsoul client and library for ruby.
|
204
204
|
test_files: []
|
205
|
-
has_rdoc:
|