libsqreen 0.3.0.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: cbb56500787a0d15c668257164ca25170ba8121cfca9245b5c4416534245cf8a
4
+ data.tar.gz: d238a6f72450a914cf6fe6b2a62aa8fc322972083ab5d6a2e6c9765b461c26f4
5
+ SHA512:
6
+ metadata.gz: c765d809b966a065a1b89df955ece005c668d259a46594f234fa77d25d97e0bf2c6e6178bbbf546424fed649c5b13c864546ddc7267373d7d1eaf923ed2a454c
7
+ data.tar.gz: c7a42810d5012ed06f6cbd5bd7ce17a5dd908f2395cca19d43b784847325a10a65f3f23a56cf59a765d3614e6c7422eeabf4386899584bed20319649fff1484d
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ *.bundle
2
+ *.so
3
+ Gemfile.lock
4
+ /pkg
5
+ /tmp
6
+ .location.yml
data/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "vendor/libsqreen"]
2
+ path = vendor/libsqreen
3
+ url = ../PowerWAF
data/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ # libsqreen v0.3.0.0.3
2
+
3
+ - Prevent libc++ symbol exposure
4
+ - Fix installation path issue
5
+
6
+ # libsqreen v0.3.0.0.2
7
+
8
+ - Add support for strings with NULL bytes
9
+ - Handle unsupported types gracefully
10
+
11
+ # libsqreen v0.3.0.0.1
12
+
13
+ - Implement In-App WAF core binding functions for macOS and Linux
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,7 @@
1
+ Sqreen for Ruby is free-to-use, proprietary software.
2
+
3
+ Please refer to our terms for more information: https://www.sqreen.com/terms.html
4
+
5
+ ## Vendored dependencies
6
+
7
+ Please refer to LICENSE files in the vendor directory
data/Makefile ADDED
@@ -0,0 +1,206 @@
1
+ LIBSQREEN_VERSION := 0.3.0
2
+ LIBSQREEN_PLATFORM := $(shell ruby -e 'puts case RUBY_PLATFORM; when /-linux-musl/; "Linux-x86_64-muslc"; when /-linux(-gnu|)/; "Linux-x86_64-glibc"; when /-darwin\d+/; "Darwin-x86_64"; when /-mingw64/; "Windows-AMD64"; else "UNSUPPORTED"; end')
3
+ RUBY_PLATFORM := $(shell ruby -e 'puts RUBY_PLATFORM')
4
+ RUBY_VERSION := $(shell ruby -e 'puts RUBY_VERSION')
5
+ RUBY_API_VERSION := $(shell ruby -e 'RUBY_VERSION =~ /^(\d+\.\d+)/ && puts($$1)')
6
+
7
+ all:
8
+
9
+ .PHONY: vars
10
+ vars:
11
+ @echo $(LIBSQREEN_VERSION)
12
+ @echo $(LIBSQREEN_PLATFORM)
13
+ @echo $(RUBY_PLATFORM)
14
+ @echo $(RUBY_VERSION)
15
+ @echo $(RUBY_API_VERSION)
16
+
17
+ .PHONY: vendor
18
+ vendor: vendor/libsqreen
19
+
20
+ vendor/libsqreen/git:
21
+ git submodule init
22
+ git submodule update
23
+ cd vendor/libsqreen && git submodule init && git submodule update
24
+
25
+ vendor/libsqreen/build/Makefile: vendor/libsqreen
26
+ cd vendor/libsqreen/build && cmake ..
27
+
28
+ vendor/libsqreen/build/libSqreenStatic.a: vendor/libsqreen/build/Makefile
29
+ cd vendor/libsqreen/build && make
30
+ cd vendor/libsqreen/build && rm -f libSqreen.{so,dylib}
31
+
32
+ vendor/libsqreen/build/libSqreen.a: vendor/libsqreen/build/libSqreenStatic.a
33
+ cd vendor/libsqreen/build && ln -sf libSqreenStatic.a libSqreen.a
34
+
35
+ vendor/libsqreen/include/PowerWAF.h: vendor/libsqreen
36
+
37
+ vendor/libsqreen/include/Sqreen.h: vendor/libsqreen/include/PowerWAF.h
38
+ cd vendor/libsqreen/include && ln -sf PowerWAF.h Sqreen.h
39
+
40
+ .PHONY: vendor/compile
41
+ vendor/compile: vendor/libsqreen/build/libSqreen.a vendor/libsqreen/include/Sqreen.h
42
+
43
+ tmp/fetch:
44
+ mkdir -p tmp/fetch
45
+
46
+ tmp/fetch/SqreenLibrary/SqreenLibrary-$(LIBSQREEN_VERSION)-$(LIBSQREEN_PLATFORM).tar.gz:
47
+ $(eval export AWS_ACCESS_KEY := $(shell test -f s3auth && cat s3auth | grep access_key | sed 's/^.*= //'))
48
+ $(eval export AWS_SECRET_KEY := $(shell test -f s3auth && cat s3auth | grep secret_key | sed 's/^.*= //'))
49
+ ./s3get sqreen-download-private.s3-eu-west-1.amazonaws.com/SqreenLibrary/SqreenLibrary-$(LIBSQREEN_VERSION)-$(LIBSQREEN_PLATFORM).tar.gz tmp/fetch/
50
+
51
+ .PHONY: fetch
52
+ fetch: tmp/fetch/SqreenLibrary/SqreenLibrary-$(LIBSQREEN_VERSION)-$(LIBSQREEN_PLATFORM).tar.gz
53
+
54
+ .PHONY: vendor/libsqreen/fetch
55
+ vendor/libsqreen/fetch: fetch
56
+ mkdir -p vendor/libsqreen
57
+ tar -xvz -C vendor/libsqreen -f tmp/fetch/SqreenLibrary/SqreenLibrary-$(LIBSQREEN_VERSION)-$(LIBSQREEN_PLATFORM).tar.gz --strip-components 1 >/dev/null
58
+
59
+ .PHONY: vendor/fetch
60
+ vendor/fetch: vendor/libsqreen/fetch vendor/libsqreen/include/Sqreen.h
61
+
62
+ .PHONY: compile
63
+ compile:
64
+ bundle exec rake compile
65
+
66
+ compile/darwin/1.9.3:
67
+ source /opt/arch/share/chruby/chruby.sh; chruby 1.9.3; make bundle compile
68
+
69
+ compile/darwin/2.0:
70
+ source /opt/arch/share/chruby/chruby.sh; chruby 2.0.; make bundle compile
71
+
72
+ compile/darwin/2.1:
73
+ source /opt/arch/share/chruby/chruby.sh; chruby 2.1.; make bundle compile
74
+
75
+ compile/darwin/2.2:
76
+ source /opt/arch/share/chruby/chruby.sh; chruby 2.2.; make bundle compile
77
+
78
+ compile/darwin/2.3:
79
+ source /opt/arch/share/chruby/chruby.sh; chruby 2.3.; make bundle compile
80
+
81
+ compile/darwin/2.4:
82
+ source /opt/arch/share/chruby/chruby.sh; chruby 2.4.; make bundle compile
83
+
84
+ compile/darwin/2.5:
85
+ source /opt/arch/share/chruby/chruby.sh; chruby 2.5.; make bundle compile
86
+
87
+ compile/darwin/2.6:
88
+ source /opt/arch/share/chruby/chruby.sh; chruby 2.6.; make bundle compile
89
+
90
+ compile/linux/1.9.3:
91
+ docker run --rm -it -v $$PWD:/libsqreen -w /libsqreen sqreen/native/ruby:1.9.3 make bundle compile
92
+
93
+ compile/linux/2.0:
94
+ docker run --rm -it -v $$PWD:/libsqreen -w /libsqreen sqreen/native/ruby:2.0 make bundle compile
95
+
96
+ compile/linux/2.1:
97
+ docker run --rm -it -v $$PWD:/libsqreen -w /libsqreen sqreen/native/ruby:2.1 make bundle compile
98
+
99
+ compile/linux/2.2:
100
+ docker run --rm -it -v $$PWD:/libsqreen -w /libsqreen sqreen/native/ruby:2.2 make bundle compile
101
+
102
+ compile/linux/2.3:
103
+ docker run --rm -it -v $$PWD:/libsqreen -w /libsqreen sqreen/native/ruby:2.3 make bundle compile
104
+
105
+ compile/linux/2.4:
106
+ docker run --rm -it -v $$PWD:/libsqreen -w /libsqreen sqreen/native/ruby:2.4 make bundle compile
107
+
108
+ compile/linux/2.5:
109
+ docker run --rm -it -v $$PWD:/libsqreen -w /libsqreen sqreen/native/ruby:2.5 make bundle compile
110
+
111
+ compile/linux/2.6:
112
+ docker run --rm -it -v $$PWD:/libsqreen -w /libsqreen sqreen/native/ruby:2.6 make bundle compile
113
+
114
+ compile/linux-musl/2.4:
115
+ docker run --rm -it -v $$PWD:/libsqreen -w /libsqreen sqreen/native/ruby:2.4-alpine make bundle compile
116
+
117
+ compile/linux-musl/2.5:
118
+ docker run --rm -it -v $$PWD:/libsqreen -w /libsqreen sqreen/native/ruby:2.5-alpine make bundle compile
119
+
120
+ compile/linux-musl/2.6:
121
+ docker run --rm -it -v $$PWD:/libsqreen -w /libsqreen sqreen/native/ruby:2.6-alpine make bundle compile
122
+
123
+ compile/darwin/all: compile/darwin/1.9.3 compile/darwin/2.0 compile/darwin/2.1 compile/darwin/2.2 compile/darwin/2.3 compile/darwin/2.4 compile/darwin/2.5 compile/darwin/2.6
124
+ compile/linux/all: compile/linux/1.9.3 compile/linux/2.0 compile/linux/2.1 compile/linux/2.2 compile/linux/2.3 compile/linux/2.4 compile/linux/2.5 compile/linux/2.6
125
+ compile/linux-musl/all: compile/linux-musl/2.4 compile/linux-musl/2.5 compile/linux-musl/2.6
126
+
127
+ .PHONY: gem
128
+ gem:
129
+ bundle exec rake build
130
+
131
+ .PHONY: test
132
+ test:
133
+ bundle exec ruby test/test_libsqreen.rb
134
+
135
+ .PHONY: pry
136
+ pry:
137
+ bundle exec ruby -I ext:lib -r libsqreen -r pry -e 'binding.pry'
138
+
139
+ .PHONY: clean/gem
140
+ clean/gem:
141
+ rm -rvf pkg
142
+
143
+ .PHONY: clean/vendor/compile
144
+ clean/vendor/compile:
145
+ cd vendor/libsqreen && git clean -f -d -x
146
+
147
+ .PHONY: clean/compile
148
+ clean/compile:
149
+ rm -rvf tmp lib/ext/$(RUBY_PLATFORM)
150
+
151
+ .PHONY: clean/compile/all
152
+ clean/compile/all:
153
+ rm -rvf tmp lib/ext/*
154
+
155
+ .PHONY: clean
156
+ clean: clean/gem clean/compile/all
157
+
158
+ bundle:
159
+ bundle install
160
+
161
+ docker/ruby/1.9.3/image:
162
+ docker build -f docker/Dockerfile.ruby --build-arg RUBY_VERSION=1.9.3-p551 -t sqreen/native/ruby:1.9.3 docker
163
+ docker/ruby/2.0/image:
164
+ docker build -f docker/Dockerfile.ruby --build-arg RUBY_VERSION=2.0.0-p648 -t sqreen/native/ruby:2.0 docker
165
+ docker/ruby/2.1/image:
166
+ docker build -f docker/Dockerfile.ruby --build-arg RUBY_VERSION=2.1.10 -t sqreen/native/ruby:2.1 docker
167
+ docker/ruby/2.2/image:
168
+ docker build -f docker/Dockerfile.ruby --build-arg RUBY_VERSION=2.2.10 -t sqreen/native/ruby:2.2 docker
169
+ docker/ruby/2.3/image:
170
+ docker build -f docker/Dockerfile.ruby --build-arg RUBY_VERSION=2.3.8 -t sqreen/native/ruby:2.3 docker
171
+ docker/ruby/2.4/image:
172
+ docker build -f docker/Dockerfile.ruby --build-arg RUBY_VERSION=2.4.7 -t sqreen/native/ruby:2.4 docker
173
+ docker/ruby/2.5/image:
174
+ docker build -f docker/Dockerfile.ruby --build-arg RUBY_VERSION=2.5.6 -t sqreen/native/ruby:2.5 docker
175
+ docker/ruby/2.6/image:
176
+ docker build -f docker/Dockerfile.ruby --build-arg RUBY_VERSION=2.6.4 -t sqreen/native/ruby:2.6 docker
177
+ docker/ruby/2.7/image:
178
+ docker build -f docker/Dockerfile.ruby --build-arg RUBY_VERSION=2.7.0-preview1 -t sqreen/native/ruby:2.7 docker
179
+ docker/ruby/image: docker/ruby/1.9.3/image docker/ruby/2.0/image docker/ruby/2.1/image docker/ruby/2.2/image docker/ruby/2.3/image docker/ruby/2.4/image docker/ruby/2.5/image docker/ruby/2.6/image docker/ruby/2.7/image
180
+
181
+ docker/ruby/2.4-alpine/image:
182
+ docker build -f docker/Dockerfile.ruby-alpine --build-arg RUBY_VERSION=2.4.7 -t sqreen/native/ruby:2.4-alpine docker
183
+ docker/ruby/2.5-alpine/image:
184
+ docker build -f docker/Dockerfile.ruby-alpine --build-arg RUBY_VERSION=2.5.6 -t sqreen/native/ruby:2.5-alpine docker
185
+ docker/ruby/2.6-alpine/image:
186
+ docker build -f docker/Dockerfile.ruby-alpine --build-arg RUBY_VERSION=2.6.4 -t sqreen/native/ruby:2.6-alpine docker
187
+ docker/ruby/2.7-alpine/image:
188
+ docker build -f docker/Dockerfile.ruby-alpine --build-arg RUBY_VERSION=2.7.0-preview1 -t sqreen/native/ruby:2.7-alpine docker
189
+
190
+ docker/debian/image:
191
+ docker build -f docker/Dockerfile.debian9 -t sqreen/native/debian docker
192
+
193
+ docker/arch/image:
194
+ docker build -f docker/Dockerfile.arch -t sqreen/native/arch docker
195
+
196
+ docker/alpine/image:
197
+ docker build -f docker/Dockerfile.alpine3 -t sqreen/native/alpine docker
198
+
199
+ docker/debian: docker/debian/image
200
+ docker run --rm -it -v $$PWD:/libsqreen -w /libsqreen sqreen/native/debian /bin/bash
201
+
202
+ docker/alpine: docker/alpine/image
203
+ docker run --rm -it -v $$PWD:/libsqreen -w /libsqreen sqreen/native/alpine /bin/sh
204
+
205
+ docker/arch: docker/arch/image
206
+ docker run --rm -it -v $$PWD:/libsqreen -w /libsqreen sqreen/native/arch /bin/bash
data/README.md ADDED
@@ -0,0 +1 @@
1
+ # ruby-libsqreen
data/Rakefile ADDED
@@ -0,0 +1,33 @@
1
+ require 'bundler/gem_tasks'
2
+ require "rake/testtask"
3
+ require "rake/extensiontask"
4
+
5
+ Bundler::GemHelper.install_tasks
6
+
7
+ Rake::TestTask.new(:test) do |t|
8
+ t.libs << 'test'
9
+ t.libs << 'lib'
10
+ t.test_files = FileList['test/**/*_test.rb']
11
+ end
12
+
13
+ DISTRIBUTIONS = [
14
+ 'x86_64-linux',
15
+ 'x86-linux',
16
+ 'x86_64-freebsd-10',
17
+ 'x86_64-freebsd-11',
18
+ 'amd64-freebsd-10',
19
+ 'amd64-freebsd-11',
20
+ 'arm-linux',
21
+ 'aarch64-linux',
22
+ 'x86_64-linux-musl'
23
+ ]
24
+
25
+ gem = Gem::Specification.load(File.dirname(__FILE__) + '/libsqreen.gemspec')
26
+ Rake::ExtensionTask.new('libsqreen', gem) do |ext|
27
+ RUBY_VERSION =~ /^(\d+\.\d+)/
28
+ ext.lib_dir = "lib/ext/#{RUBY_PLATFORM}/#{$1}"
29
+ end
30
+ Rake::ExtensionTask.new('libsqreen_extension', gem) do |ext|
31
+ RUBY_VERSION =~ /^(\d+\.\d+)/
32
+ ext.lib_dir = "lib/ext/#{RUBY_PLATFORM}/#{$1}"
33
+ end
@@ -0,0 +1,28 @@
1
+ strategy:
2
+ matrix:
3
+ Ubuntu:
4
+ imageName: 'ubuntu-latest'
5
+ macOS High Sierra:
6
+ imageName: 'macos-10.13'
7
+ macOS Mojave:
8
+ imageName: 'macos-10.14'
9
+ pool:
10
+ vmImage: $(imageName)
11
+ steps:
12
+ - checkout: self
13
+ clean: true
14
+ submodules: recursive
15
+ - script: if uname -s | grep -i -v darwin; then sudo apt-get install -y build-essential ruby ruby-dev cmake git curl; fi
16
+ - script: sudo gem install bundler --version '< 2.0' --no-document
17
+ - script: bundle install
18
+ - script: make compile
19
+ - script: make gem
20
+ - script: make test
21
+ - script: sudo gem install pkg/*.gem
22
+ - script: ls -l pkg
23
+ - script: cp -v pkg/*.gem $(Build.ArtifactStagingDirectory)/
24
+ - task: PublishBuildArtifacts@1
25
+ displayName: Save Artifacts
26
+ inputs:
27
+ pathtoPublish: "$(Build.ArtifactStagingDirectory)"
28
+ artifactName: "$(Agent.JobName) Gem"
@@ -0,0 +1,23 @@
1
+ # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
+
4
+ require 'rubygems'
5
+
6
+ module LibSqreen
7
+ module Arch
8
+ module_function
9
+
10
+ def libsqreen_arch
11
+ case Gem::Platform.local.cpu
12
+ when /^arm(v6.*|v7.*)*$/ then 'arm'
13
+ when /^a(rm|arch)64$/ then 'arm64'
14
+ when /^x86$/ then 'ia32'
15
+ when /^(x86_64|amd64)$/ then 'x64'
16
+ when /^universal$/ then 'x64' # OS X
17
+ else
18
+ warn "Unsupported target: #{Gem::Platform.local.cpu}"
19
+ Gem::Platform.local.cpu
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,20 @@
1
+ # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
+
4
+ require 'mkmf'
5
+ create_makefile('libsqreen')
6
+
7
+ require File.expand_path '../location', __FILE__
8
+
9
+ begin
10
+ location = LibSqreen::Location::Vendor.new
11
+ location.install!
12
+ rescue LibSqreen::Location::Vendor::HeaderNotFound => reason
13
+ puts 'could not find header. fallback to stubbing.'
14
+ location = LibSqreen::Location::Stub.new(reason)
15
+ location.install!
16
+ rescue LibSqreen::Location::Vendor::ArchiveNotFound => reason
17
+ puts "could not find binary archive: native features for platform #{RUBY_PLATFORM} not supported. fallback to stubbing."
18
+ location = LibSqreen::Location::Stub.new(reason)
19
+ location.install!
20
+ end
@@ -0,0 +1,29 @@
1
+ // Copyright (c) 2015 Sqreen. All Rights Reserved.
2
+ // Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
+
4
+ #include <ruby.h>
5
+
6
+ void
7
+ Init_libsqreen(void) {
8
+ VALUE mLibSqreen;
9
+
10
+ mLibSqreen = rb_define_module("LibSqreen");
11
+
12
+ // record load order
13
+ {
14
+ ID i_load_order;
15
+ VALUE load_order;
16
+
17
+ i_load_order = rb_intern("@load_order");
18
+ load_order = rb_ivar_get(mLibSqreen, i_load_order);
19
+ if (load_order == Qnil) {
20
+ load_order = rb_ary_new();
21
+ rb_ivar_set(mLibSqreen, i_load_order, load_order);
22
+ }
23
+
24
+ rb_ary_push(load_order, ID2SYM(rb_intern("libsqreen.c")));
25
+ }
26
+
27
+ // ensure libsqreen.rb is required too if this is loaded first
28
+ rb_require("libsqreen.rb");
29
+ }
@@ -0,0 +1,78 @@
1
+ # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
+ # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
+
4
+ require 'yaml'
5
+ require 'pathname'
6
+ require File.expand_path '../paths', __FILE__
7
+
8
+ module LibSqreen
9
+ class Location
10
+ def install!
11
+ File.open(Pathname(__FILE__).dirname.join('.location.yml'), "w") do |f|
12
+ f.write(self.to_yaml)
13
+ end
14
+ return 0
15
+ end
16
+
17
+ def self.load!
18
+ File.open(Pathname(__FILE__).dirname.join('.location.yml')) do |f|
19
+ YAML.load(f)
20
+ end
21
+ end
22
+
23
+ class Stub < Location
24
+ def initialize(reason)
25
+ @reason = reason
26
+ end
27
+
28
+ def verify!
29
+ raise @reason
30
+ end
31
+ end
32
+
33
+ class Vendor < Location
34
+ def install!
35
+ verify!
36
+ super
37
+ end
38
+
39
+ def configure(context = MkmfContext.new)
40
+ context.incflags.insert(0, LibSqreen::Paths.include_paths.map { |p| "-I#{p}" }.join(" ") + " ")
41
+ context.ldflags.insert(0, LibSqreen::Paths.object_paths.select { |p| File.exist?(p) }.join(" ") + " ")
42
+ end
43
+
44
+ def verify!
45
+ include_paths = LibSqreen::Paths.include_paths
46
+ header_files = LibSqreen::Paths.header_files
47
+ object_paths = LibSqreen::Paths.object_paths
48
+
49
+ header_files.each do |h|
50
+ unless include_paths.detect { |p| Pathname(p).join(h).exist? }
51
+ fail HeaderNotFound, "Unable to locate '#{h}' in the libsqreen header paths: #{include_paths.inspect}"
52
+ end
53
+ end
54
+ object_paths.each do |p|
55
+ fail(ArchiveNotFound, p) unless File.exist?(p)
56
+ end
57
+ end
58
+
59
+ class HeaderNotFound < StandardError; end
60
+
61
+ class ArchiveNotFound < StandardError
62
+ def initialize(filename)
63
+ super "Unable to find '#{filename}'"
64
+ end
65
+ end
66
+ end
67
+
68
+ class MkmfContext
69
+ def incflags
70
+ $INCFLAGS
71
+ end
72
+
73
+ def ldflags
74
+ $LDFLAGS
75
+ end
76
+ end
77
+ end
78
+ end