pcaprub 0.11.3 → 0.12.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.
- checksums.yaml +15 -0
- data/.travis.yml +11 -0
- data/Gemfile +20 -0
- data/README.rdoc +57 -13
- data/Rakefile +71 -49
- data/ext/{pcaprub → pcaprub_c}/extconf.rb +20 -26
- data/ext/{pcaprub → pcaprub_c}/pcaprub.c +405 -139
- data/lib/pcaprub/ext.rb +15 -1
- data/lib/pcaprub/version.rb +7 -7
- data/test/helper.rb +8 -1
- data/test/test_pcaprub_unit.rb +111 -89
- metadata +106 -19
- data/pcaprub.gemspec +0 -60
data/lib/pcaprub/ext.rb
CHANGED
@@ -1 +1,15 @@
|
|
1
|
-
|
1
|
+
begin
|
2
|
+
if RUBY_VERSION =~ /1.8/
|
3
|
+
require '1.8/pcaprub_c'
|
4
|
+
elsif RUBY_VERSION =~ /1.9/
|
5
|
+
require '1.9/pcaprub_c'
|
6
|
+
elsif RUBY_VERSION =~ /2.0/
|
7
|
+
require '2.0/pcaprub_c'
|
8
|
+
elsif RUBY_VERSION =~ /2.1/
|
9
|
+
require '2.1/pcapru_c'
|
10
|
+
else
|
11
|
+
require 'pcaprub_c'
|
12
|
+
end
|
13
|
+
rescue Exception
|
14
|
+
require 'pcaprub_c'
|
15
|
+
end
|
data/lib/pcaprub/version.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
module PCAPRUB #:nodoc:
|
2
|
-
|
2
|
+
|
3
3
|
module VERSION #:nodoc:
|
4
|
-
|
4
|
+
|
5
5
|
MAJOR = 0
|
6
|
-
MINOR =
|
7
|
-
TINY =
|
6
|
+
MINOR = 12
|
7
|
+
TINY = 0
|
8
8
|
|
9
9
|
STRING = [MAJOR, MINOR, TINY].join('.')
|
10
|
-
|
10
|
+
|
11
11
|
end
|
12
12
|
class Pcap
|
13
|
-
def self.version
|
13
|
+
def self.version
|
14
14
|
return PCAPRUB::VERSION::STRING
|
15
15
|
end
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
end
|
data/test/helper.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
2
3
|
require 'test/unit'
|
3
|
-
require 'shoulda'
|
4
|
+
require 'shoulda-context'
|
4
5
|
|
5
6
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
7
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
@@ -8,3 +9,9 @@ require 'pcaprub'
|
|
8
9
|
|
9
10
|
class Test::Unit::TestCase
|
10
11
|
end
|
12
|
+
|
13
|
+
if RUBY_VERSION >= "1.9.2"
|
14
|
+
require 'coveralls'
|
15
|
+
Coveralls.wear!
|
16
|
+
end
|
17
|
+
|
data/test/test_pcaprub_unit.rb
CHANGED
@@ -11,94 +11,116 @@ require 'pcaprub'
|
|
11
11
|
#
|
12
12
|
|
13
13
|
class Pcap::UnitTest < Test::Unit::TestCase
|
14
|
+
def test_version
|
15
|
+
assert_equal(String, Pcap.version.class)
|
16
|
+
puts "Pcaprub version: #{Pcap.version}"
|
17
|
+
end
|
14
18
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
19
|
+
def test_lookupdev
|
20
|
+
assert_equal(String, Pcap.lookupdev.class)
|
21
|
+
puts "Pcaprub default device: #{Pcap.lookupdev}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_lookupnet
|
25
|
+
dev = Pcap.lookupdev
|
26
|
+
assert_equal(Array, Pcap.lookupnet(dev).class)
|
27
|
+
net = Pcap.lookupnet(dev)
|
28
|
+
puts "Pcaprub net (#{dev}): #{net[0]} #{[net[1]].pack("N").unpack("H*")[0]}"
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_pcap_new
|
32
|
+
o = Pcap.new
|
33
|
+
assert_equal(Pcap, o.class)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_pcap_setfilter_bad
|
37
|
+
e = nil
|
38
|
+
o = Pcap.new
|
39
|
+
begin
|
40
|
+
o.setfilter("not ip")
|
41
|
+
rescue ::Exception => e
|
42
|
+
end
|
43
|
+
|
44
|
+
assert_equal(e.class, PCAPRUB::PCAPRUBError)
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_pcap_setfilter
|
48
|
+
d = Pcap.lookupdev
|
49
|
+
o = Pcap.open_live(d, 65535, true, 1)
|
50
|
+
r = o.setfilter("not ip")
|
51
|
+
assert_equal(Pcap, r.class)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_pcap_inject
|
55
|
+
d = Pcap.lookupdev
|
56
|
+
o = Pcap.open_live(d, 65535, true, 1)
|
57
|
+
r = o.inject("X" * 512)
|
58
|
+
|
59
|
+
# Travis CI's virtual network interface does not support injection
|
60
|
+
if ENV['CI']
|
61
|
+
assert_equal(-1,r)
|
62
|
+
else
|
63
|
+
assert_equal(512, r)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_pcap_datalink
|
68
|
+
d = Pcap.lookupdev
|
69
|
+
o = Pcap.open_live(d, 65535, true, 1)
|
70
|
+
r = o.datalink
|
71
|
+
assert_equal(Fixnum, r.class)
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_pcap_snapshot
|
75
|
+
d = Pcap.lookupdev
|
76
|
+
o = Pcap.open_live(d, 1344, true, 1)
|
77
|
+
r = o.snapshot
|
78
|
+
assert_equal(1344, r)
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_pcap_stats
|
82
|
+
d = Pcap.lookupdev
|
83
|
+
o = Pcap.open_live(d, 1344, true, 1)
|
84
|
+
r = o.stats
|
85
|
+
assert_equal(Hash, r.class)
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_pcap_next
|
89
|
+
d = Pcap.lookupdev
|
90
|
+
o = Pcap.open_live(d, 1344, true, 1)
|
91
|
+
|
92
|
+
@c = 0
|
93
|
+
t = Thread.new { while(true); @c += 1; select(nil, nil, nil, 0.10); end; }
|
94
|
+
|
95
|
+
pkt_count = 0
|
96
|
+
require 'timeout'
|
97
|
+
begin
|
98
|
+
Timeout.timeout(10) do
|
99
|
+
o.each do |pkt|
|
100
|
+
pkt_count += 1
|
101
|
+
end
|
102
|
+
end
|
103
|
+
rescue ::Timeout::Error
|
104
|
+
end
|
105
|
+
|
106
|
+
t.kill
|
107
|
+
puts "Background thread ticked #{@c} times while capture was running"
|
108
|
+
puts "Captured #{pkt_count} packets"
|
109
|
+
assert(0 < @c, "Background thread failed to tick while capture was running");
|
110
|
+
true
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_create_from_primitives
|
114
|
+
d = Pcap.lookupdev
|
115
|
+
o = Pcap.create(d).setsnaplen(65535).settimeout(100).setpromisc(true)
|
116
|
+
assert_equal(o, o.activate)
|
117
|
+
o.close
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_monitor
|
121
|
+
return if RUBY_PLATFORM =~ /mingw|win/
|
122
|
+
d = Pcap.lookupdev
|
123
|
+
o = Pcap.create(d)
|
124
|
+
assert_equal(o, o.setmonitor(true))
|
125
|
+
end
|
104
126
|
end
|
metadata
CHANGED
@@ -1,30 +1,114 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pcaprub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.12.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- shadowbq
|
8
|
+
- crondaemon
|
9
|
+
- jmcavinee
|
10
|
+
- unmarshal
|
9
11
|
autorequire:
|
10
12
|
bindir: bin
|
11
13
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
14
|
-
|
14
|
+
date: 2014-08-10 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: bundler
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: !binary |-
|
23
|
+
MS4z
|
24
|
+
type: :development
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: !ruby/object:Gem::Requirement
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: !binary |-
|
31
|
+
MS4z
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: rake
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: !binary |-
|
39
|
+
MC45LjI=
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: !binary |-
|
47
|
+
MC45LjI=
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rake-compiler
|
50
|
+
requirement: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: !binary |-
|
55
|
+
MC42LjA=
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: !binary |-
|
63
|
+
MC42LjA=
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: shoulda-context
|
66
|
+
requirement: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ~>
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: !binary |-
|
71
|
+
MS4xLjY=
|
72
|
+
type: :development
|
73
|
+
prerelease: false
|
74
|
+
version_requirements: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ~>
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: !binary |-
|
79
|
+
MS4xLjY=
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: minitest
|
82
|
+
requirement: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ~>
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: !binary |-
|
87
|
+
NC43LjA=
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ~>
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: !binary |-
|
95
|
+
NC43LjA=
|
96
|
+
description: libpcap bindings for ruby with Ruby1.8, Ruby1.9, Ruby 2.x
|
15
97
|
email: shadowbq@gmail.com
|
16
98
|
executables: []
|
17
99
|
extensions:
|
18
|
-
- ext/
|
100
|
+
- ext/pcaprub_c/extconf.rb
|
19
101
|
extra_rdoc_files:
|
20
102
|
- FAQ.rdoc
|
21
103
|
- LICENSE
|
22
104
|
- README.rdoc
|
23
105
|
- USAGE.rdoc
|
24
|
-
- ext/
|
106
|
+
- ext/pcaprub_c/pcaprub.c
|
25
107
|
files:
|
26
108
|
- .document
|
109
|
+
- .travis.yml
|
27
110
|
- FAQ.rdoc
|
111
|
+
- Gemfile
|
28
112
|
- LICENSE
|
29
113
|
- README.rdoc
|
30
114
|
- Rakefile
|
@@ -33,38 +117,41 @@ files:
|
|
33
117
|
- examples/file_cap.rb
|
34
118
|
- examples/simple_cap.rb
|
35
119
|
- examples/telnet-raw.pcap
|
36
|
-
- ext/
|
37
|
-
- ext/
|
120
|
+
- ext/pcaprub_c/extconf.rb
|
121
|
+
- ext/pcaprub_c/pcaprub.c
|
38
122
|
- lib/pcaprub.rb
|
39
123
|
- lib/pcaprub/common.rb
|
40
124
|
- lib/pcaprub/ext.rb
|
41
125
|
- lib/pcaprub/version.rb
|
42
|
-
- pcaprub.gemspec
|
43
126
|
- test/helper.rb
|
44
127
|
- test/test_pcaprub.rb
|
45
128
|
- test/test_pcaprub_unit.rb
|
46
|
-
homepage:
|
47
|
-
licenses:
|
129
|
+
homepage: https://github.com/pcaprub/pcaprub
|
130
|
+
licenses:
|
131
|
+
- LGPL-2.1
|
132
|
+
metadata: {}
|
48
133
|
post_install_message:
|
49
134
|
rdoc_options: []
|
50
135
|
require_paths:
|
51
136
|
- lib
|
52
137
|
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
138
|
requirements:
|
55
139
|
- - ! '>='
|
56
140
|
- !ruby/object:Gem::Version
|
57
141
|
version: '0'
|
58
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
143
|
requirements:
|
61
144
|
- - ! '>='
|
62
145
|
- !ruby/object:Gem::Version
|
63
146
|
version: '0'
|
64
|
-
requirements:
|
65
|
-
|
66
|
-
|
147
|
+
requirements:
|
148
|
+
- libpcap
|
149
|
+
rubyforge_project:
|
150
|
+
rubygems_version: 2.4.1
|
67
151
|
signing_key:
|
68
|
-
specification_version:
|
152
|
+
specification_version: 4
|
69
153
|
summary: libpcap bindings for ruby
|
70
|
-
test_files:
|
154
|
+
test_files:
|
155
|
+
- test/helper.rb
|
156
|
+
- test/test_pcaprub.rb
|
157
|
+
- test/test_pcaprub_unit.rb
|
data/pcaprub.gemspec
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = "pcaprub"
|
8
|
-
s.version = "0.11.3"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["shadowbq"]
|
12
|
-
s.date = "2012-11-27"
|
13
|
-
s.description = "libpcap bindings for ruby compat with JRUBY Ruby1.8 Ruby1.9"
|
14
|
-
s.email = "shadowbq@gmail.com"
|
15
|
-
s.extensions = ["ext/pcaprub/extconf.rb"]
|
16
|
-
s.extra_rdoc_files = [
|
17
|
-
"FAQ.rdoc",
|
18
|
-
"LICENSE",
|
19
|
-
"README.rdoc",
|
20
|
-
"USAGE.rdoc",
|
21
|
-
"ext/pcaprub/pcaprub.c"
|
22
|
-
]
|
23
|
-
s.files = [
|
24
|
-
".document",
|
25
|
-
"FAQ.rdoc",
|
26
|
-
"LICENSE",
|
27
|
-
"README.rdoc",
|
28
|
-
"Rakefile",
|
29
|
-
"USAGE.rdoc",
|
30
|
-
"examples/dead_cap.rb",
|
31
|
-
"examples/file_cap.rb",
|
32
|
-
"examples/simple_cap.rb",
|
33
|
-
"examples/telnet-raw.pcap",
|
34
|
-
"ext/pcaprub/extconf.rb",
|
35
|
-
"ext/pcaprub/pcaprub.c",
|
36
|
-
"lib/pcaprub.rb",
|
37
|
-
"lib/pcaprub/common.rb",
|
38
|
-
"lib/pcaprub/ext.rb",
|
39
|
-
"lib/pcaprub/version.rb",
|
40
|
-
"pcaprub.gemspec",
|
41
|
-
"test/helper.rb",
|
42
|
-
"test/test_pcaprub.rb",
|
43
|
-
"test/test_pcaprub_unit.rb"
|
44
|
-
]
|
45
|
-
s.homepage = "http://github.com/shadowbq/pcaprub"
|
46
|
-
s.require_paths = ["lib"]
|
47
|
-
s.rubyforge_project = "pcaprub"
|
48
|
-
s.rubygems_version = "1.8.24"
|
49
|
-
s.summary = "libpcap bindings for ruby"
|
50
|
-
|
51
|
-
if s.respond_to? :specification_version then
|
52
|
-
s.specification_version = 3
|
53
|
-
|
54
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
55
|
-
else
|
56
|
-
end
|
57
|
-
else
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|