pcaprub 0.12.0 → 0.12.1

Sign up to get free protection for your applications and to get access to all the features.
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