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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YTM1M2U0NmViOTRlNDVkNDk3ZWU5Yzk5NDI4OTk5MmQ0ZDE5ZWJlMg==
5
- data.tar.gz: !binary |-
6
- MzcyNDk3YTY1YjUzNGE2ZDQyYTQ1MTU4YTk3YjcyOGY3NGIxODIxMg==
2
+ SHA1:
3
+ metadata.gz: b40590aca5ff2daad1628f3b1a0e6c97a9708c34
4
+ data.tar.gz: a6e49962b099f5d7a1e35db4052c35d532338b0e
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- OGYwOWYxMTM1Y2VjOTE0NzBlOTA1NTljMzJkNmFlZWEyOWQ2MTI2MDE0ODVh
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
@@ -18,3 +18,4 @@ end
18
18
  gem 'rake', '>= 0.9.2'
19
19
  gem 'rake-compiler', '>= 0.6.0'
20
20
  gem 'rubygems-tasks'
21
+ gem 'git'
@@ -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/helper.rb",
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.pattern = 'test/**/test_*.rb'
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
@@ -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
@@ -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
- if(pcap_setfilter(rbp->pd, &bpf) < 0)
359
- rb_raise(eBPFilterError, "unable to set bpf filter");
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);
@@ -13,5 +13,8 @@ module PCAPRUB
13
13
  # deep.
14
14
  class DumperError < PCAPRUBError; end
15
15
 
16
+ # Raised if unable to set underlying capture link type
17
+ class LinkTypeError < PCAPRUBError; end
18
+
16
19
  end
17
20
 
@@ -6,7 +6,7 @@ begin
6
6
  elsif RUBY_VERSION =~ /2.0/
7
7
  require '2.0/pcaprub_c'
8
8
  elsif RUBY_VERSION =~ /2.1/
9
- require '2.1/pcapru_c'
9
+ require '2.1/pcaprub_c'
10
10
  else
11
11
  require 'pcaprub_c'
12
12
  end
@@ -4,7 +4,7 @@ module PCAPRUB #:nodoc:
4
4
 
5
5
  MAJOR = 0
6
6
  MINOR = 12
7
- TINY = 0
7
+ TINY = 1
8
8
 
9
9
  STRING = [MAJOR, MINOR, TINY].join('.')
10
10
 
@@ -15,4 +15,4 @@ module PCAPRUB #:nodoc:
15
15
  end
16
16
  end
17
17
 
18
- end
18
+ end
@@ -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'
@@ -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
- require 'test/unit'
7
- require 'pcaprub'
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.0
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: 2014-08-10 00:00:00.000000000 Z
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: !binary |-
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: !binary |-
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: !binary |-
39
- MC45LjI=
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: !binary |-
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: !binary |-
55
- MC42LjA=
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: !binary |-
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: !binary |-
71
- MS4xLjY=
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: !binary |-
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: !binary |-
87
- NC43LjA=
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: !binary |-
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/helper.rb
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.1
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/helper.rb
156
- - test/test_pcaprub.rb
168
+ - test/test_helper.rb
157
169
  - test/test_pcaprub_unit.rb
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class TestPcaprub < Test::Unit::TestCase
4
- should "be true" do
5
- assert true
6
- end
7
- end