rodsec 0.0.1 → 0.0.2
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 +4 -4
- data/.gitignore +1 -0
- data/ext/msc_intervention/extconf.rb +77 -1
- data/lib/rodsec/version.rb +1 -1
- data/lib/rodsec/wrapper.rb +3 -1
- data/rodsec.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac2432e156ba0488621acc680796b095b29593c0
|
4
|
+
data.tar.gz: be4ecc12f5e5f56b4831e329da176f53d754c4b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6cce1ddf8cc5277f245dab788578c6d9f3849f9fe665818bb0f9eda8895ed4d650392fab60434d31a7ed4dd4e7dcb06b946094104ddce0f80b77cf3794937de2
|
7
|
+
data.tar.gz: 19c75b3098c58fd0a4fb363be350e84bc12e6bdf362bc72e7372f4844714fa2656f157e7d4786903715adb50ea5c333fd505d120d7c24ac465032c2d5f74d200
|
data/.gitignore
CHANGED
@@ -1,5 +1,81 @@
|
|
1
1
|
require 'mkmf'
|
2
|
-
|
2
|
+
|
3
|
+
MODSECURITY_LIB_NAME = 'modsecurity'
|
4
|
+
SO_FUNC = 'msc_init'
|
5
|
+
|
6
|
+
def so_name
|
7
|
+
@so_name ||= "lib#{MODSECURITY_LIB_NAME}.#{CONFIG['DLEXT']}"
|
8
|
+
end
|
9
|
+
|
10
|
+
def intervention_header_name
|
11
|
+
@intervention_header_name ||= 'modsecurity/intervention.h'
|
12
|
+
end
|
13
|
+
|
14
|
+
# raise an exception if one of the paths doesn't exist
|
15
|
+
def confirm_include_lib include_dir, lib_dir
|
16
|
+
File.realpath(File.join include_dir, intervention_header_name)
|
17
|
+
File.realpath(File.join lib_dir, so_name)
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_modsec_lib_rb so_lib_path, dst_ruby_file: 'modsec_lib.rb'
|
21
|
+
puts "runtime loads #{so_lib_path}"
|
22
|
+
|
23
|
+
# create a direct path to the library, because it's often in a nonstandard location
|
24
|
+
ruby_lib_dir = File.join CONFIG['srcdir'], '..', '..', 'lib', 'rodsec'
|
25
|
+
File.open File.join(ruby_lib_dir,dst_ruby_file), 'w' do |io|
|
26
|
+
io.write <<~EOS
|
27
|
+
# Generated by extconf.rb
|
28
|
+
module Rodsec
|
29
|
+
MODSECURITY_SO_PATH = '#{so_lib_path}'
|
30
|
+
end
|
31
|
+
EOS
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def find_header_and_library include_dir, lib_dir
|
36
|
+
ok = true
|
37
|
+
ok &&= find_header intervention_header_name, include_dir
|
38
|
+
ok &&= find_library MODSECURITY_LIB_NAME, SO_FUNC, lib_dir
|
39
|
+
ok or abort
|
40
|
+
end
|
41
|
+
|
42
|
+
STANDARD_DIRS = [
|
43
|
+
%w[/usr/local/include /usr/local/lib],
|
44
|
+
%w[/usr/include /usr/lib],
|
45
|
+
]
|
46
|
+
|
47
|
+
# get the user config, or failing that the default ModSecurity installation paths
|
48
|
+
custom_dirs = dir_config 'modsecurity', '/usr/local/modsecurity'
|
49
|
+
|
50
|
+
found_dirs = ([custom_dirs] + STANDARD_DIRS).find do |(include_dir, lib_dir)|
|
51
|
+
# try to find files from config
|
52
|
+
begin
|
53
|
+
confirm_include_lib include_dir, lib_dir
|
54
|
+
[include_dir, lib_dir]
|
55
|
+
rescue
|
56
|
+
puts "#{[include_dir, lib_dir]} not found. Continuing..."
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
unless found_dirs
|
61
|
+
puts 'Cannot locate libmodsecurity.so'
|
62
|
+
abort
|
63
|
+
end
|
64
|
+
|
65
|
+
so_lib_path =
|
66
|
+
if found_dirs == custom_dirs
|
67
|
+
# we have custom dirs, set a specific path for the dlload in Wrapper
|
68
|
+
File.join found_dirs.last, so_name
|
69
|
+
else
|
70
|
+
# standard dirs, so do not use a specific path in Wrapper
|
71
|
+
so_name
|
72
|
+
end
|
73
|
+
|
74
|
+
# create the file so Wrapper knows where to load the .so
|
75
|
+
create_modsec_lib_rb so_lib_path
|
76
|
+
|
77
|
+
# finally, use find_header and find_library to add the paths to the Makefile
|
78
|
+
find_header_and_library *found_dirs
|
3
79
|
|
4
80
|
# don't need piles of debug info. Or maybe we do. Dunno.
|
5
81
|
CONFIG['debugflags'] = ''
|
data/lib/rodsec/version.rb
CHANGED
data/lib/rodsec/wrapper.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
require 'fiddle'
|
2
2
|
require 'fiddle/import'
|
3
3
|
|
4
|
+
require_relative 'modsec_lib.rb'
|
5
|
+
|
4
6
|
module Rodsec
|
5
7
|
module Wrapper
|
6
8
|
extend Fiddle::Importer
|
7
9
|
|
8
10
|
dlext = RbConfig::CONFIG['DLEXT']
|
9
11
|
msc_intervention = dlopen File.join __dir__, "msc_intervention.#{dlext}"
|
10
|
-
dlload msc_intervention,
|
12
|
+
dlload msc_intervention, MODSECURITY_SO_PATH
|
11
13
|
|
12
14
|
###########################
|
13
15
|
# from modsecurity/modsecurity.h
|
data/rodsec.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
end
|
24
24
|
|
25
25
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
26
|
-
f.match(%r{^(test|spec(?!/config)|features)/})
|
26
|
+
f.match(%r{^(test|spec(?!/config)|features|modsec_lib)/})
|
27
27
|
end
|
28
28
|
spec.bindir = 'exe'
|
29
29
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rodsec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Anderson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-09-
|
11
|
+
date: 2018-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|