pcaprub 0.13.2 → 0.13.3

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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 535c4c591e5797f6a4963cf133b0382a078456801918bca13e28afe0b72436b2
4
- data.tar.gz: cd18712ab62ecbc51ea710cecedbcf5099922555e6fee5f1e0a3b86a9668264d
3
+ metadata.gz: 6c07274578544377dda665e39affdcb19979c7497887ce37f807390c3cdb3ff8
4
+ data.tar.gz: eb637469104d446bacebae7c670e0dea91621bbc27f99e35c9bbeadbe09c78bb
5
5
  SHA512:
6
- metadata.gz: 58380aee87fe885d6651f4b69934e167166237413dc9790634bd95cd3db13709a7ccb4d3cd89c9db64abc3a04e8f142e29172b7add6d62e82891870d336634e4
7
- data.tar.gz: 505f6970e65157340d7bff1f0454ac46fd01dedd64fd00728016713b01e1bafa50cfbba0008324fbbdd65ecf7bc3ed3890f92664865bacf143f51b4f9bc04f19
6
+ metadata.gz: a816e68c66133672c2e33f2800130fecd3570345dd59bd9da5d068d0b2dee6b64a63bdd32418c327638e978e8120f5b9be30be8ac0e34d51d27badbb4bbf4168
7
+ data.tar.gz: 5c8b31ca16e5d34dec166fa5cacedb976285b0b7ccf8ddf42d9da1d3c9ab4c30058e6cc7fcb8a53bab9de9bde2c448eb974682bcc7af9e895b9b907071474937
@@ -3,6 +3,10 @@ extension_name = 'pcaprub_c'
3
3
 
4
4
  puts "\n[*] Running checks for #{extension_name} code..."
5
5
  puts("platform is #{RUBY_PLATFORM}")
6
+ default_npcap_sdk = 'C:/npcap-sdk'
7
+ default_winpcap_sdk = 'C:/WpdPack'
8
+ # Default to npcap if it exists, otherwise fallback to winpcap
9
+ default_pcap_sdk = File.directory?(default_npcap_sdk) ? default_npcap_sdk : default_winpcap_sdk
6
10
 
7
11
  if /i386-mingw32/ =~ RUBY_PLATFORM || /x64-mingw32/ =~ RUBY_PLATFORM || /x64-mingw-ucrt/ =~ RUBY_PLATFORM
8
12
  unless have_library("ws2_32" ) and
@@ -14,7 +18,7 @@ if /i386-mingw32/ =~ RUBY_PLATFORM || /x64-mingw32/ =~ RUBY_PLATFORM || /x64-min
14
18
  exit
15
19
  end
16
20
 
17
- pcap_dir = with_config("pcap-dir", "C:/WpdPack")
21
+ pcap_dir = with_config("pcap-dir", default_pcap_sdk)
18
22
  pcap_includedir = with_config("pcap-includedir", pcap_dir + "/include")
19
23
  pcap_libdir = with_config("pcap-libdir", pcap_dir + "/lib")
20
24
 
@@ -28,12 +32,15 @@ if /i386-mingw32/ =~ RUBY_PLATFORM || /x64-mingw32/ =~ RUBY_PLATFORM || /x64-min
28
32
  $LDFLAGS += " -g" if with_config("debug")
29
33
 
30
34
  have_header("ruby/thread.h")
35
+ if have_header(pcap_includedir + "/Win32-Extensions.h", pcap_includedir + "/pcap.h")
36
+ append_cflags("-DHAVE_WIN32_EXTENSIONS_H")
37
+ end
31
38
  have_func("rb_thread_blocking_region") # Pre ruby 2.2
32
39
  have_func("rb_thread_call_without_gvl") # Post ruby 2.2
33
40
  have_library("wpcap", "pcap_open_live")
34
41
  have_library("wpcap", "pcap_setnonblock")
35
42
  elsif /i386-mswin32/ =~ RUBY_PLATFORM || /x64-mswin32/ =~ RUBY_PLATFORM
36
- pcap_dir = with_config("pcap-dir", "C:\\WpdPack")
43
+ pcap_dir = with_config("pcap-dir", default_pcap_sdk)
37
44
  pcap_includedir = with_config("pcap-includedir", pcap_dir + "\\include")
38
45
  pcap_libdir = with_config("pcap-libdir", pcap_dir + "\\lib")
39
46
 
@@ -46,6 +53,9 @@ elsif /i386-mswin32/ =~ RUBY_PLATFORM || /x64-mswin32/ =~ RUBY_PLATFORM
46
53
  $LDFLAGS = "/link /LIBPATH:#{pcap_libdir}"
47
54
  $LDFLAGS += " -g" if with_config("debug")
48
55
  have_header("ruby/thread.h")
56
+ if have_header(pcap_includedir + "/Win32-Extensions.h", pcap_includedir + "/pcap.h")
57
+ append_cflags("-DHAVE_WIN32_EXTENSIONS_H")
58
+ end
49
59
  have_func("rb_thread_blocking_region") # Pre ruby 2.2
50
60
  have_func("rb_thread_call_without_gvl") # Post ruby 2.2
51
61
 
@@ -9,8 +9,11 @@
9
9
  #endif
10
10
 
11
11
  #include <pcap.h>
12
+ // Win32-Extensions only exist in winpcap not npcap
12
13
  #if defined(WIN32)
13
- #include <Win32-Extensions.h>
14
+ #ifdef HAVE_WIN32_EXTENSIONS_H
15
+ #include <Win32-Extensions.h>
16
+ #endif
14
17
  #endif
15
18
 
16
19
  #if !defined(WIN32)
@@ -407,7 +410,7 @@ rbpcap_setfilter(VALUE self, VALUE filter)
407
410
  {
408
411
  char eb[PCAP_ERRBUF_SIZE];
409
412
  rbpcap_t *rbp;
410
- u_int32_t mask = 0, netid = 0;
413
+ bpf_u_int32 mask = 0, netid = 0;
411
414
  struct bpf_program bpf;
412
415
 
413
416
  Data_Get_Struct(self, rbpcap_t, rbp);
@@ -452,7 +455,7 @@ rbpcap_setfilter(VALUE self, VALUE filter)
452
455
  static VALUE
453
456
  rbpcap_compile(VALUE self, VALUE filter) {
454
457
  struct bpf_program bpf;
455
- u_int32_t mask = 0;
458
+ bpf_u_int32 mask = 0;
456
459
  rbpcap_t *rbp;
457
460
 
458
461
  Data_Get_Struct(self, rbpcap_t, rbp);
@@ -981,7 +984,7 @@ rbpcap_each_data(VALUE self)
981
984
  if(! rbpcap_ready(rbp)) return self;
982
985
 
983
986
  #if defined(WIN32)
984
- fno = (int)pcap_getevent(rbp->pd);
987
+ fno = (HANDLE)pcap_getevent(rbp->pd);
985
988
  #else
986
989
  fno = pcap_get_selectable_fd(rbp->pd);
987
990
  #endif
@@ -1023,7 +1026,7 @@ rbpcap_each_packet(VALUE self)
1023
1026
  if(! rbpcap_ready(rbp)) return self;
1024
1027
 
1025
1028
  #if defined(WIN32)
1026
- fno = (int)pcap_getevent(rbp->pd);
1029
+ fno = (HANDLE)pcap_getevent(rbp->pd);
1027
1030
  #else
1028
1031
  fno = pcap_get_selectable_fd(rbp->pd);
1029
1032
  #endif
@@ -1241,12 +1244,12 @@ rbpacket_data(VALUE self)
1241
1244
  }
1242
1245
 
1243
1246
  #if defined(WIN32)
1244
- static VALUE
1247
+ static void *
1245
1248
  rbpcap_thread_wait_handle_blocking(void *data)
1246
1249
  {
1247
1250
  VALUE result;
1248
1251
  result = (VALUE)WaitForSingleObject(data, 100);
1249
- return result;
1252
+ return (void *) result;
1250
1253
  }
1251
1254
 
1252
1255
  /*
@@ -4,7 +4,7 @@ module PCAPRUB #:nodoc:
4
4
 
5
5
  MAJOR = 0
6
6
  MINOR = 13
7
- TINY = 2
7
+ TINY = 3
8
8
 
9
9
  STRING = [MAJOR, MINOR, TINY].join('.')
10
10
 
data/lib/pcaprub.rb CHANGED
@@ -2,7 +2,31 @@ module PCAPRUB
2
2
  $:.unshift(File.dirname(__FILE__))
3
3
  require 'pcaprub/common'
4
4
  require 'pcaprub/version'
5
- require 'pcaprub/ext'
5
+
6
+ add_dll_path = proc do |path, &block|
7
+ if RUBY_PLATFORM =~/(mswin|mingw)/i && path && File.exist?(path)
8
+ begin
9
+ require 'ruby_installer/runtime'
10
+ RubyInstaller::Runtime.add_dll_directory(path, &block)
11
+ rescue LoadError
12
+ old_path = ENV['PATH']
13
+ ENV['PATH'] = "#{path};#{old_path}"
14
+ begin
15
+ block.call
16
+ ensure
17
+ ENV['PATH'] = old_path
18
+ end
19
+ end
20
+ else
21
+ block.call
22
+ end
23
+ end
24
+
25
+ npcap_path = "C:\\Windows\\System32\\Npcap"
26
+ add_dll_path.call(npcap_path) do
27
+ require 'pcaprub/ext'
28
+ end
29
+
6
30
  end
7
31
 
8
32
  #Force Include to allow backwards compatibility to ::PCAP.new
@@ -165,11 +165,12 @@ class Pcap::UnitTest < Test::Unit::TestCase
165
165
  def test_lib_version
166
166
  v = Pcap.lib_version.split
167
167
  if RUBY_PLATFORM =~ /mingw/
168
- assert_equal "WinPcap", v[0]
168
+ winpcap = 'WinPcap' == v[0]
169
+ npcap = 'Npcap' == v[0]
170
+ assert winpcap || npcap
169
171
  else
170
172
  assert_equal "libpcap", v[0]
171
173
  end
172
174
  assert_equal "version", v[1]
173
- assert_equal 3, v[2].split('.').size
174
175
  end
175
176
  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.13.2
4
+ version: 0.13.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - shadowbq
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2024-04-22 00:00:00.000000000 Z
14
+ date: 2024-07-29 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler