pcaprub 0.12.0 → 0.12.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.
- checksums.yaml +5 -13
- data/Gemfile +1 -0
- data/README.rdoc +10 -2
- data/Rakefile +40 -22
- data/ext/pcaprub_c/extconf.rb +27 -0
- data/ext/pcaprub_c/pcaprub.c +103 -5
- data/lib/pcaprub/common.rb +3 -0
- data/lib/pcaprub/ext.rb +1 -1
- data/lib/pcaprub/version.rb +2 -2
- data/test/{helper.rb → test_helper.rb} +3 -4
- data/test/test_pcaprub_unit.rb +21 -2
- metadata +53 -41
- data/test/test_pcaprub.rb +0 -7
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MzcyNDk3YTY1YjUzNGE2ZDQyYTQ1MTU4YTk3YjcyOGY3NGIxODIxMg==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b40590aca5ff2daad1628f3b1a0e6c97a9708c34
|
4
|
+
data.tar.gz: a6e49962b099f5d7a1e35db4052c35d532338b0e
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NDJkNjgxOTM3ODk4YzRhMjFlMDMwYTcxZjM3Mzk4OTJiNTI5ODhiOTU5NmVm
|
11
|
-
MTBhNGQxNTI0ZDMyNGJmMmRhNzJlYmUzNjZhZGEzNjFiYjAyMTA=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ODc3OGFhY2RjZmEwNzIzM2IwNGQ1OGNiMTQ5MzhmY2JiMDUyNDA5NDAxYTZm
|
14
|
-
MGJmZDJmNGVkNmM4YjY4MjMwZTYwODI2NTc3OGE4MTNmZDAyZTE3MGM3Y2Qy
|
15
|
-
YzBhNTcyYTMxOTZkZTQ4YmIzY2Y2ZWQyYmZkOWQ5Mjc1MWYxODE=
|
6
|
+
metadata.gz: 8417a0109228972f697b536fb01ed951f582d05872188a874c0ffb939f44161153501289dfeaf269de8d24b7d013394549b02d9d758caa85fd0bf86860d6d3f8
|
7
|
+
data.tar.gz: adea669c22d2d0547bf772cb62ec1bb1ecdc53dd2cf7141b61fc886889b34bbcf3339aea37f6d2be39c170620ab781e5c4b5f57f74fbdaa30d8770236035a73d
|
data/Gemfile
CHANGED
data/README.rdoc
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
= pcaprub
|
2
2
|
|
3
|
+
{<img src="https://badges.gitter.im/Join%20Chat.svg" alt="Join the chat at https://gitter.im/pcaprub/pcaprub">}[https://gitter.im/pcaprub/pcaprub?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge]
|
4
|
+
|
3
5
|
{<img src="https://travis-ci.org/pcaprub/pcaprub.png" alt="Build Status" />}[https://travis-ci.org/pcaprub/pcaprub]
|
6
|
+
{<img src="https://ci.appveyor.com/api/projects/status/7g3x62y9rgy3twds?svg=true" alt="Windows Builds" />}[https://ci.appveyor.com/project/shadowbq/pcaprub]
|
4
7
|
{<img src="https://codeclimate.com/github/pcaprub/pcaprub.png" />}[https://codeclimate.com/github/pcaprub/pcaprub]
|
5
8
|
{<img src="https://badge.fury.io/rb/pcaprub.png" alt="Gem Version" />}[http://badge.fury.io/rb/pcaprub]
|
6
9
|
{<img src="https://gemnasium.com/pcaprub/pcaprub.svg" alt="Dependency Status" />}[https://gemnasium.com/pcaprub/pcaprub]
|
@@ -29,11 +32,16 @@ MRI Windows Ruby (Native compilation)
|
|
29
32
|
Ruby 1.9.3 or higher
|
30
33
|
Ruby 2.x or higher
|
31
34
|
|
32
|
-
WinPcap - http://www.winpcap.org
|
35
|
+
WinPcap Developer's Pack - http://www.winpcap.org
|
36
|
+
|
33
37
|
|
34
38
|
== Installation
|
35
39
|
|
36
|
-
gem install pcaprub
|
40
|
+
gem install pcaprub
|
41
|
+
|
42
|
+
Advanced options in a Windows ENV
|
43
|
+
|
44
|
+
gem install pcaprub --no-ri --no-rdoc -- --with-pcap-dir="c:/dev/src/WpdPack"
|
37
45
|
|
38
46
|
== Usage
|
39
47
|
|
data/Rakefile
CHANGED
@@ -5,7 +5,7 @@ def java?
|
|
5
5
|
/java/ === RUBY_PLATFORM
|
6
6
|
end
|
7
7
|
|
8
|
-
ENV['LANG'] = "en_US.UTF-8"
|
8
|
+
ENV['LANG'] = "en_US.UTF-8"
|
9
9
|
|
10
10
|
|
11
11
|
@gemspec = Gem::Specification.new do |spec|
|
@@ -38,8 +38,7 @@ ENV['LANG'] = "en_US.UTF-8"
|
|
38
38
|
"lib/pcaprub/common.rb",
|
39
39
|
"lib/pcaprub/ext.rb",
|
40
40
|
"lib/pcaprub/version.rb",
|
41
|
-
"test/
|
42
|
-
"test/test_pcaprub.rb",
|
41
|
+
"test/test_helper.rb",
|
43
42
|
"test/test_pcaprub_unit.rb"
|
44
43
|
]
|
45
44
|
|
@@ -56,33 +55,20 @@ ENV['LANG'] = "en_US.UTF-8"
|
|
56
55
|
spec.require_paths = ["lib"]
|
57
56
|
|
58
57
|
spec.add_development_dependency "bundler", "~> 1.3"
|
59
|
-
spec.add_development_dependency "rake", '>= 0.9.2'
|
60
|
-
spec.add_development_dependency "rake-compiler", '>= 0.6.0'
|
61
|
-
spec.add_development_dependency "shoulda-context", '~> 1.1.6'
|
62
|
-
spec.add_development_dependency "minitest", '~> 4.7.0'
|
58
|
+
spec.add_development_dependency "rake", '~> 0.9', '>= 0.9.2'
|
59
|
+
spec.add_development_dependency "rake-compiler", '~> 0.6', '>= 0.6.0'
|
60
|
+
spec.add_development_dependency "shoulda-context", '~> 1.1', '~> 1.1.6'
|
61
|
+
spec.add_development_dependency "minitest", '~> 4.7', '>= 4.7.0'
|
63
62
|
|
64
63
|
end
|
65
64
|
|
66
65
|
require 'rake/testtask'
|
67
66
|
Rake::TestTask.new(:test) do |test|
|
68
67
|
test.libs << 'lib' << 'test'
|
69
|
-
test.
|
68
|
+
test.test_files = FileList['test/test_pcaprub_unit.rb']
|
70
69
|
test.verbose = true
|
71
70
|
end
|
72
71
|
|
73
|
-
begin
|
74
|
-
require 'rcov/rcovtask'
|
75
|
-
Rcov::RcovTask.new do |test|
|
76
|
-
test.libs << 'test'
|
77
|
-
test.pattern = 'test/**/test_*.rb'
|
78
|
-
test.verbose = true
|
79
|
-
end
|
80
|
-
rescue LoadError
|
81
|
-
task :rcov do
|
82
|
-
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
72
|
task :test
|
87
73
|
|
88
74
|
require 'rubygems/package_task'
|
@@ -91,6 +77,20 @@ Gem::PackageTask.new(@gemspec) do |pkg|
|
|
91
77
|
pkg.need_tar = false
|
92
78
|
end
|
93
79
|
|
80
|
+
# prepend DevKit into compilation phase
|
81
|
+
if RUBY_PLATFORM =~ /mingw/
|
82
|
+
task :compile => [:devkit]
|
83
|
+
task :native => [:devkit]
|
84
|
+
end
|
85
|
+
|
86
|
+
task :devkit do
|
87
|
+
begin
|
88
|
+
require "devkit"
|
89
|
+
rescue LoadError => e
|
90
|
+
abort "Failed to activate RubyInstaller's DevKit required for compilation."
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
94
|
require 'rake/extensiontask'
|
95
95
|
Rake::ExtensionTask.new('pcaprub_c', @gemspec)
|
96
96
|
|
@@ -109,4 +109,22 @@ RDoc::Task.new do |rdoc|
|
|
109
109
|
end
|
110
110
|
|
111
111
|
require 'rubygems/tasks'
|
112
|
-
Gem::Tasks.new
|
112
|
+
Gem::Tasks.new
|
113
|
+
|
114
|
+
# Override standard release task
|
115
|
+
require 'git'
|
116
|
+
Rake::Task["release"].clear
|
117
|
+
task :release do
|
118
|
+
version = "#{PCAPRUB::VERSION::STRING}"
|
119
|
+
remote = 'origin'
|
120
|
+
puts "Creating tag v#{version}"
|
121
|
+
git = Git.open(".")
|
122
|
+
git.add_tag("v#{version}")
|
123
|
+
puts "Pushing tag to #{remote}"
|
124
|
+
git.push(remote, 'master', true)
|
125
|
+
Rake::Task['clobber'].invoke
|
126
|
+
Rake::Task['compile'].invoke
|
127
|
+
Rake::Task['gem'].invoke
|
128
|
+
gemtask = Gem::Tasks::Push.new
|
129
|
+
gemtask.push("pkg/pcaprub-#{version}.gem")
|
130
|
+
end
|
data/ext/pcaprub_c/extconf.rb
CHANGED
@@ -34,6 +34,33 @@ elsif /i386-mswin32/ =~ RUBY_PLATFORM
|
|
34
34
|
have_library("wpcap", "pcap_open_live")
|
35
35
|
have_library("wpcap", "pcap_setnonblock")
|
36
36
|
else
|
37
|
+
libdir = RbConfig::CONFIG['libdir']
|
38
|
+
includedir = RbConfig::CONFIG['includedir']
|
39
|
+
|
40
|
+
header_dirs = [
|
41
|
+
# macports
|
42
|
+
'/opt/local/include',
|
43
|
+
# source installations
|
44
|
+
'/usr/local/include',
|
45
|
+
# ruby install locations
|
46
|
+
includedir,
|
47
|
+
# finally fall back to usr
|
48
|
+
'/usr/include'
|
49
|
+
]
|
50
|
+
|
51
|
+
lib_dirs = [
|
52
|
+
# macports
|
53
|
+
'/opt/local/lib',
|
54
|
+
# source installations
|
55
|
+
'/usr/local/lib',
|
56
|
+
# ruby install locations
|
57
|
+
libdir,
|
58
|
+
# usr
|
59
|
+
'/usr/lib'
|
60
|
+
]
|
61
|
+
|
62
|
+
dir_config("pcap", header_dirs, lib_dirs)
|
63
|
+
|
37
64
|
have_library("pcap", "pcap_open_live", ["pcap.h"])
|
38
65
|
have_library("pcap", "pcap_setnonblock", ["pcap.h"])
|
39
66
|
end
|
data/ext/pcaprub_c/pcaprub.c
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
static VALUE mPCAP;
|
20
20
|
static VALUE rb_cPcap, rb_cPkt;
|
21
|
-
static VALUE ePCAPRUBError, eDumperError, eBindingError, eBPFilterError;
|
21
|
+
static VALUE ePCAPRUBError, eDumperError, eBindingError, eBPFilterError, eLinkTypeError;
|
22
22
|
|
23
23
|
#if defined(WIN32)
|
24
24
|
static VALUE rbpcap_thread_wait_handle(HANDLE fno);
|
@@ -260,6 +260,73 @@ rbpcap_settimeout(VALUE self, VALUE timeout)
|
|
260
260
|
}
|
261
261
|
}
|
262
262
|
|
263
|
+
/*
|
264
|
+
* call-seq:
|
265
|
+
* listdatalinks()
|
266
|
+
*
|
267
|
+
* Get supported datalinks for this interface
|
268
|
+
*
|
269
|
+
* Returns an array of supported datalinks.
|
270
|
+
*/
|
271
|
+
static VALUE
|
272
|
+
rbpcap_listdatalinks(VALUE self)
|
273
|
+
{
|
274
|
+
rbpcap_t *rbp;
|
275
|
+
int *links, numlinks;
|
276
|
+
int i;
|
277
|
+
Data_Get_Struct(self, rbpcap_t, rbp);
|
278
|
+
|
279
|
+
numlinks = pcap_list_datalinks(rbp->pd, &links);
|
280
|
+
if (numlinks > 0) {
|
281
|
+
VALUE hash = rb_hash_new();
|
282
|
+
for (i = 0; i < numlinks; i++) {
|
283
|
+
const char *name = pcap_datalink_val_to_name(links[i]);
|
284
|
+
if (name != NULL) {
|
285
|
+
VALUE namestring = rb_str_new2(name);
|
286
|
+
rb_hash_aset(hash, INT2NUM(links[i]), namestring);
|
287
|
+
}
|
288
|
+
}
|
289
|
+
pcap_free_datalinks(links);
|
290
|
+
return hash;
|
291
|
+
} else {
|
292
|
+
rb_raise(eLinkTypeError, "unable to get datalinks (%d): %s", numlinks, pcap_geterr(rbp->pd));
|
293
|
+
}
|
294
|
+
}
|
295
|
+
|
296
|
+
|
297
|
+
/*
|
298
|
+
* call-seq:
|
299
|
+
* setdatalink(1234)
|
300
|
+
*
|
301
|
+
* Set datalink type for the capture.
|
302
|
+
*
|
303
|
+
* Returns the object itself.
|
304
|
+
*/
|
305
|
+
static VALUE
|
306
|
+
rbpcap_setdatalink(VALUE self, VALUE datalink)
|
307
|
+
{
|
308
|
+
rbpcap_t *rbp;
|
309
|
+
int linktype, errcode;
|
310
|
+
Data_Get_Struct(self, rbpcap_t, rbp);
|
311
|
+
|
312
|
+
if(TYPE(datalink) == T_FIXNUM ) {
|
313
|
+
linktype = NUM2INT(datalink);
|
314
|
+
} else if (TYPE(datalink) == T_STRING) {
|
315
|
+
linktype = pcap_datalink_name_to_val(RSTRING_PTR(datalink));
|
316
|
+
if (linktype < 0) {
|
317
|
+
rb_raise(eLinkTypeError, "invalid datalink name: %s", RSTRING_PTR(datalink));
|
318
|
+
}
|
319
|
+
} else {
|
320
|
+
rb_raise(rb_eArgError, "datalink type must be a string or fixnum");
|
321
|
+
}
|
322
|
+
|
323
|
+
errcode = pcap_set_datalink(rbp->pd, linktype);
|
324
|
+
if (errcode == 0) {
|
325
|
+
return self;
|
326
|
+
} else {
|
327
|
+
rb_raise(eLinkTypeError, "unable to set datalink (%d): %s", errcode, pcap_geterr(rbp->pd));
|
328
|
+
}
|
329
|
+
}
|
263
330
|
|
264
331
|
/*
|
265
332
|
* call-seq:
|
@@ -352,12 +419,39 @@ rbpcap_setfilter(VALUE self, VALUE filter)
|
|
352
419
|
rb_warn("unable to get IP: %s", eb);
|
353
420
|
}
|
354
421
|
|
355
|
-
if(pcap_compile(rbp->pd, &bpf, RSTRING_PTR(filter), 0, mask) < 0)
|
356
|
-
rb_raise(eBPFilterError, "invalid bpf filter");
|
422
|
+
if(pcap_compile(rbp->pd, &bpf, RSTRING_PTR(filter), 0, mask) < 0) {
|
423
|
+
rb_raise(eBPFilterError, "invalid bpf filter: %s", pcap_geterr(rbp->pd));
|
424
|
+
}
|
425
|
+
|
426
|
+
if(pcap_setfilter(rbp->pd, &bpf) < 0) {
|
427
|
+
pcap_freecode(&bpf);
|
428
|
+
rb_raise(eBPFilterError, "unable to set bpf filter: %s", pcap_geterr(rbp->pd));
|
429
|
+
}
|
430
|
+
|
431
|
+
pcap_freecode(&bpf);
|
432
|
+
return self;
|
433
|
+
}
|
357
434
|
|
358
|
-
|
359
|
-
|
435
|
+
/*
|
436
|
+
* call-seq:
|
437
|
+
* compile(filter)
|
438
|
+
*
|
439
|
+
* Raises an exception if "filter" has a syntax error
|
440
|
+
*
|
441
|
+
* Returns self if the filter is valid
|
442
|
+
*/
|
443
|
+
static VALUE
|
444
|
+
rbpcap_compile(VALUE self, VALUE filter) {
|
445
|
+
struct bpf_program bpf;
|
446
|
+
u_int32_t mask = 0;
|
447
|
+
rbpcap_t *rbp;
|
448
|
+
|
449
|
+
Data_Get_Struct(self, rbpcap_t, rbp);
|
450
|
+
if(pcap_compile(rbp->pd, &bpf, RSTRING_PTR(filter), 0, mask) < 0) {
|
451
|
+
rb_raise(eBPFilterError, "invalid bpf filter: %s", pcap_geterr(rbp->pd));
|
452
|
+
}
|
360
453
|
|
454
|
+
pcap_freecode(&bpf);
|
361
455
|
return self;
|
362
456
|
}
|
363
457
|
|
@@ -1177,6 +1271,7 @@ Init_pcaprub_c()
|
|
1177
1271
|
eBindingError = rb_path2class("PCAPRUB::BindingError");
|
1178
1272
|
eBPFilterError = rb_path2class("PCAPRUB::BPFError");
|
1179
1273
|
eDumperError = rb_path2class("PCAPRUB::DumperError");
|
1274
|
+
eLinkTypeError = rb_path2class("PCAPRUB::LinkTypeError");
|
1180
1275
|
|
1181
1276
|
rb_define_module_function(rb_cPcap, "lookupdev", rbpcap_s_lookupdev, 0);
|
1182
1277
|
rb_define_module_function(rb_cPcap, "lookupnet", rbpcap_s_lookupnet, 1);
|
@@ -1259,10 +1354,13 @@ Init_pcaprub_c()
|
|
1259
1354
|
|
1260
1355
|
rb_define_method(rb_cPcap, "next", rbpcap_next_data, 0);
|
1261
1356
|
rb_define_method(rb_cPcap, "setfilter", rbpcap_setfilter, 1);
|
1357
|
+
rb_define_method(rb_cPcap, "compile", rbpcap_compile, 1);
|
1262
1358
|
rb_define_method(rb_cPcap, "setmonitor", rbpcap_setmonitor, 1);
|
1263
1359
|
rb_define_method(rb_cPcap, "setsnaplen", rbpcap_setsnaplen, 1);
|
1264
1360
|
rb_define_method(rb_cPcap, "settimeout", rbpcap_settimeout, 1);
|
1265
1361
|
rb_define_method(rb_cPcap, "setpromisc", rbpcap_setpromisc, 1);
|
1362
|
+
rb_define_method(rb_cPcap, "setdatalink", rbpcap_setdatalink, 1);
|
1363
|
+
rb_define_method(rb_cPcap, "listdatalinks", rbpcap_listdatalinks, 0);
|
1266
1364
|
rb_define_method(rb_cPcap, "activate", rbpcap_activate, 0);
|
1267
1365
|
rb_define_method(rb_cPcap, "inject", rbpcap_inject, 1);
|
1268
1366
|
rb_define_method(rb_cPcap, "datalink", rbpcap_datalink, 0);
|
data/lib/pcaprub/common.rb
CHANGED
data/lib/pcaprub/ext.rb
CHANGED
data/lib/pcaprub/version.rb
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler/setup'
|
3
|
-
require 'test/unit'
|
4
|
-
require 'shoulda-context'
|
5
3
|
|
6
4
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
7
5
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
6
|
+
|
7
|
+
require "minitest/autorun"
|
8
|
+
require 'test/unit'
|
8
9
|
require 'pcaprub'
|
9
10
|
|
10
|
-
class Test::Unit::TestCase
|
11
|
-
end
|
12
11
|
|
13
12
|
if RUBY_VERSION >= "1.9.2"
|
14
13
|
require 'coveralls'
|
data/test/test_pcaprub_unit.rb
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
base = File.symlink?(__FILE__) ? File.readlink(__FILE__) : __FILE__
|
4
4
|
$:.unshift(File.join(File.dirname(base)))
|
5
5
|
|
6
|
-
|
7
|
-
require '
|
6
|
+
|
7
|
+
require File.expand_path '../test_helper.rb', __FILE__
|
8
8
|
|
9
9
|
#
|
10
10
|
# Simple unit test, requires r00t.
|
@@ -117,10 +117,29 @@ class Pcap::UnitTest < Test::Unit::TestCase
|
|
117
117
|
o.close
|
118
118
|
end
|
119
119
|
|
120
|
+
def test_set_datalink
|
121
|
+
d = Pcap.lookupdev
|
122
|
+
o = Pcap.open_live(d, 65535, true, -1)
|
123
|
+
dls = o.listdatalinks
|
124
|
+
assert_equal(o,o.setdatalink(dls.values.first))
|
125
|
+
end
|
126
|
+
|
120
127
|
def test_monitor
|
121
128
|
return if RUBY_PLATFORM =~ /mingw|win/
|
122
129
|
d = Pcap.lookupdev
|
123
130
|
o = Pcap.create(d)
|
124
131
|
assert_equal(o, o.setmonitor(true))
|
125
132
|
end
|
133
|
+
|
134
|
+
def test_filter
|
135
|
+
d = Pcap.lookupdev
|
136
|
+
o = Pcap.create(d)
|
137
|
+
o.activate
|
138
|
+
assert_nothing_raised do
|
139
|
+
o.compile("ip host 1.2.3.4")
|
140
|
+
end
|
141
|
+
assert_raise PCAPRUB::BPFError do
|
142
|
+
o.compile("A non working filter")
|
143
|
+
end
|
144
|
+
end
|
126
145
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pcaprub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- shadowbq
|
@@ -11,88 +11,102 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2016-01-20 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
|
-
- - ~>
|
20
|
+
- - "~>"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
23
|
-
MS4z
|
22
|
+
version: '1.3'
|
24
23
|
type: :development
|
25
24
|
prerelease: false
|
26
25
|
version_requirements: !ruby/object:Gem::Requirement
|
27
26
|
requirements:
|
28
|
-
- - ~>
|
27
|
+
- - "~>"
|
29
28
|
- !ruby/object:Gem::Version
|
30
|
-
version:
|
31
|
-
MS4z
|
29
|
+
version: '1.3'
|
32
30
|
- !ruby/object:Gem::Dependency
|
33
31
|
name: rake
|
34
32
|
requirement: !ruby/object:Gem::Requirement
|
35
33
|
requirements:
|
36
|
-
- -
|
34
|
+
- - "~>"
|
37
35
|
- !ruby/object:Gem::Version
|
38
|
-
version:
|
39
|
-
|
36
|
+
version: '0.9'
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 0.9.2
|
40
40
|
type: :development
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- -
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0.9'
|
47
|
+
- - ">="
|
45
48
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
47
|
-
MC45LjI=
|
49
|
+
version: 0.9.2
|
48
50
|
- !ruby/object:Gem::Dependency
|
49
51
|
name: rake-compiler
|
50
52
|
requirement: !ruby/object:Gem::Requirement
|
51
53
|
requirements:
|
52
|
-
- -
|
54
|
+
- - "~>"
|
53
55
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
55
|
-
|
56
|
+
version: '0.6'
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 0.6.0
|
56
60
|
type: :development
|
57
61
|
prerelease: false
|
58
62
|
version_requirements: !ruby/object:Gem::Requirement
|
59
63
|
requirements:
|
60
|
-
- -
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0.6'
|
67
|
+
- - ">="
|
61
68
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
63
|
-
MC42LjA=
|
69
|
+
version: 0.6.0
|
64
70
|
- !ruby/object:Gem::Dependency
|
65
71
|
name: shoulda-context
|
66
72
|
requirement: !ruby/object:Gem::Requirement
|
67
73
|
requirements:
|
68
|
-
- - ~>
|
74
|
+
- - "~>"
|
69
75
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
71
|
-
|
76
|
+
version: '1.1'
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 1.1.6
|
72
80
|
type: :development
|
73
81
|
prerelease: false
|
74
82
|
version_requirements: !ruby/object:Gem::Requirement
|
75
83
|
requirements:
|
76
|
-
- - ~>
|
84
|
+
- - "~>"
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '1.1'
|
87
|
+
- - "~>"
|
77
88
|
- !ruby/object:Gem::Version
|
78
|
-
version:
|
79
|
-
MS4xLjY=
|
89
|
+
version: 1.1.6
|
80
90
|
- !ruby/object:Gem::Dependency
|
81
91
|
name: minitest
|
82
92
|
requirement: !ruby/object:Gem::Requirement
|
83
93
|
requirements:
|
84
|
-
- - ~>
|
94
|
+
- - "~>"
|
85
95
|
- !ruby/object:Gem::Version
|
86
|
-
version:
|
87
|
-
|
96
|
+
version: '4.7'
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 4.7.0
|
88
100
|
type: :development
|
89
101
|
prerelease: false
|
90
102
|
version_requirements: !ruby/object:Gem::Requirement
|
91
103
|
requirements:
|
92
|
-
- - ~>
|
104
|
+
- - "~>"
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '4.7'
|
107
|
+
- - ">="
|
93
108
|
- !ruby/object:Gem::Version
|
94
|
-
version:
|
95
|
-
NC43LjA=
|
109
|
+
version: 4.7.0
|
96
110
|
description: libpcap bindings for ruby with Ruby1.8, Ruby1.9, Ruby 2.x
|
97
111
|
email: shadowbq@gmail.com
|
98
112
|
executables: []
|
@@ -105,8 +119,8 @@ extra_rdoc_files:
|
|
105
119
|
- USAGE.rdoc
|
106
120
|
- ext/pcaprub_c/pcaprub.c
|
107
121
|
files:
|
108
|
-
- .document
|
109
|
-
- .travis.yml
|
122
|
+
- ".document"
|
123
|
+
- ".travis.yml"
|
110
124
|
- FAQ.rdoc
|
111
125
|
- Gemfile
|
112
126
|
- LICENSE
|
@@ -123,8 +137,7 @@ files:
|
|
123
137
|
- lib/pcaprub/common.rb
|
124
138
|
- lib/pcaprub/ext.rb
|
125
139
|
- lib/pcaprub/version.rb
|
126
|
-
- test/
|
127
|
-
- test/test_pcaprub.rb
|
140
|
+
- test/test_helper.rb
|
128
141
|
- test/test_pcaprub_unit.rb
|
129
142
|
homepage: https://github.com/pcaprub/pcaprub
|
130
143
|
licenses:
|
@@ -136,22 +149,21 @@ require_paths:
|
|
136
149
|
- lib
|
137
150
|
required_ruby_version: !ruby/object:Gem::Requirement
|
138
151
|
requirements:
|
139
|
-
- -
|
152
|
+
- - ">="
|
140
153
|
- !ruby/object:Gem::Version
|
141
154
|
version: '0'
|
142
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
156
|
requirements:
|
144
|
-
- -
|
157
|
+
- - ">="
|
145
158
|
- !ruby/object:Gem::Version
|
146
159
|
version: '0'
|
147
160
|
requirements:
|
148
161
|
- libpcap
|
149
162
|
rubyforge_project:
|
150
|
-
rubygems_version: 2.4.
|
163
|
+
rubygems_version: 2.4.8
|
151
164
|
signing_key:
|
152
165
|
specification_version: 4
|
153
166
|
summary: libpcap bindings for ruby
|
154
167
|
test_files:
|
155
|
-
- test/
|
156
|
-
- test/test_pcaprub.rb
|
168
|
+
- test/test_helper.rb
|
157
169
|
- test/test_pcaprub_unit.rb
|