puffy 0.2.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +18 -0
- data/.github/workflows/ci.yml +5 -3
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +30 -1
- data/Gemfile +13 -0
- data/Rakefile +4 -2
- data/lib/core_ext.rb +6 -8
- data/lib/puffy/formatters/iptables.rb +10 -2
- data/lib/puffy/formatters/pf.rb +9 -1
- data/lib/puffy/parser.tab.rb +992 -327
- data/lib/puffy/rule.rb +1 -2
- data/lib/puffy/version.rb +1 -1
- data/puffy.gemspec +0 -13
- metadata +4 -171
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b05f6a865607d5ece6a83d81f3ef925decf281b4fa0fc54daf7aaa2213135831
|
4
|
+
data.tar.gz: 9ac1891cb02cf876b0ac64fc19dc857996c1e3dfa3141e5b339c82f98603ced9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 73c1d65f67292e4e3d2452978ad21bc2bca7001cce5304472686a8a843bf742e635b11c86606f43a1af1024cb30bf63faf7f1444cc4b380ee7f589300086bb2b
|
7
|
+
data.tar.gz: f93e5ffc88eda099624f28ce13997dbe0a9222955eb76aa6e5e725d77be3a313da0b38ccddf3f10a550f60418cb44e39bb3724e2a02aab952c2a6b643ec7d28c
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# To get started with Dependabot version updates, you'll need to specify which
|
2
|
+
# package ecosystems to update and where the package manifests are located.
|
3
|
+
# Please see the documentation for all configuration options:
|
4
|
+
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
5
|
+
|
6
|
+
version: 2
|
7
|
+
updates:
|
8
|
+
# Open PR for gem updates
|
9
|
+
- package-ecosystem: "bundler" # See documentation for possible values
|
10
|
+
directory: "/" # Location of package manifests
|
11
|
+
schedule:
|
12
|
+
interval: "daily"
|
13
|
+
|
14
|
+
# Open PR for GitHub Actions updates
|
15
|
+
- package-ecosystem: "github-actions"
|
16
|
+
directory: "/"
|
17
|
+
schedule:
|
18
|
+
interval: "daily"
|
data/.github/workflows/ci.yml
CHANGED
@@ -14,7 +14,7 @@ jobs:
|
|
14
14
|
rubocop:
|
15
15
|
runs-on: ubuntu-latest
|
16
16
|
steps:
|
17
|
-
- uses: actions/checkout@
|
17
|
+
- uses: actions/checkout@v4
|
18
18
|
- name: Setup ruby
|
19
19
|
uses: ruby/setup-ruby@v1
|
20
20
|
with:
|
@@ -32,9 +32,11 @@ jobs:
|
|
32
32
|
- "2.7"
|
33
33
|
- "3.0"
|
34
34
|
- "3.1"
|
35
|
+
- "3.2"
|
36
|
+
- "3.3"
|
35
37
|
name: Ruby ${{ matrix.ruby }}
|
36
38
|
steps:
|
37
|
-
- uses: actions/checkout@
|
39
|
+
- uses: actions/checkout@v4
|
38
40
|
- name: Setup ruby
|
39
41
|
uses: ruby/setup-ruby@v1
|
40
42
|
with:
|
@@ -47,7 +49,7 @@ jobs:
|
|
47
49
|
run: bundle exec rake
|
48
50
|
- name: Run tests and upload coverage to Code Climate
|
49
51
|
if: ${{ matrix.ruby == '3.0' }}
|
50
|
-
uses: paambaati/codeclimate-action@
|
52
|
+
uses: paambaati/codeclimate-action@v5.0.0
|
51
53
|
env:
|
52
54
|
CC_TEST_REPORTER_ID: ${{ secrets.CODECLIMATE_TOKEN }}
|
53
55
|
with:
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,35 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## [
|
3
|
+
## [v1.0.0](https://github.com/opus-codium/puffy/tree/v1.0.0) (2024-04-09)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/opus-codium/puffy/compare/v0.3.1...v1.0.0)
|
6
|
+
|
7
|
+
**Implemented enhancements:**
|
8
|
+
|
9
|
+
- Setup dependabot [\#36](https://github.com/opus-codium/puffy/pull/36) ([smortex](https://github.com/smortex))
|
10
|
+
- Add support for Ruby 3.3 [\#33](https://github.com/opus-codium/puffy/pull/33) ([smortex](https://github.com/smortex))
|
11
|
+
|
12
|
+
## [v0.3.1](https://github.com/opus-codium/puffy/tree/v0.3.1) (2023-11-22)
|
13
|
+
|
14
|
+
[Full Changelog](https://github.com/opus-codium/puffy/compare/v0.3.0...v0.3.1)
|
15
|
+
|
16
|
+
**Fixed bugs:**
|
17
|
+
|
18
|
+
- Ensure parser is up-to-date before build [\#31](https://github.com/opus-codium/puffy/pull/31) ([smortex](https://github.com/smortex))
|
19
|
+
|
20
|
+
## [v0.3.0](https://github.com/opus-codium/puffy/tree/v0.3.0) (2023-01-04)
|
21
|
+
|
22
|
+
[Full Changelog](https://github.com/opus-codium/puffy/compare/v0.2.0...v0.3.0)
|
23
|
+
|
24
|
+
**Implemented enhancements:**
|
25
|
+
|
26
|
+
- Add support for nested variables [\#29](https://github.com/opus-codium/puffy/pull/29) ([smortex](https://github.com/smortex))
|
27
|
+
|
28
|
+
**Fixed bugs:**
|
29
|
+
|
30
|
+
- Fix iptables rules without direction [\#28](https://github.com/opus-codium/puffy/pull/28) ([smortex](https://github.com/smortex))
|
31
|
+
|
32
|
+
## [v0.2.0](https://github.com/opus-codium/puffy/tree/v0.2.0) (2022-12-18)
|
4
33
|
|
5
34
|
[Full Changelog](https://github.com/opus-codium/puffy/compare/v0.1.0...v0.2.0)
|
6
35
|
|
data/Gemfile
CHANGED
@@ -4,3 +4,16 @@ source 'https://rubygems.org'
|
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in puffy.gemspec
|
6
6
|
gemspec
|
7
|
+
|
8
|
+
gem 'aruba'
|
9
|
+
gem 'bundler'
|
10
|
+
gem 'cucumber'
|
11
|
+
gem 'github_changelog_generator'
|
12
|
+
gem 'racc'
|
13
|
+
gem 'rake'
|
14
|
+
gem 'rspec'
|
15
|
+
gem 'rubocop'
|
16
|
+
gem 'rubocop-rake'
|
17
|
+
gem 'rubocop-rspec'
|
18
|
+
gem 'simplecov'
|
19
|
+
gem 'timecop'
|
data/Rakefile
CHANGED
@@ -14,7 +14,7 @@ Cucumber::Rake::Task.new(:features)
|
|
14
14
|
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
|
15
15
|
config.user = 'opus-codium'
|
16
16
|
config.project = 'puffy'
|
17
|
-
config.exclude_labels = [
|
17
|
+
config.exclude_labels = %w[dependencies skip-changelog]
|
18
18
|
config.future_release = "v#{Puffy::VERSION}"
|
19
19
|
end
|
20
20
|
|
@@ -22,9 +22,11 @@ task test: %i[spec features]
|
|
22
22
|
|
23
23
|
task default: :test
|
24
24
|
|
25
|
+
task build: :gen_parser
|
26
|
+
|
25
27
|
desc 'Generate the puffy language parser'
|
26
28
|
task gen_parser: 'lib/puffy/parser.tab.rb'
|
27
29
|
|
28
30
|
file 'lib/puffy/parser.tab.rb' => 'lib/puffy/parser.y' do
|
29
|
-
`racc -
|
31
|
+
`racc --embedded --frozen --output-status lib/puffy/parser.y`
|
30
32
|
end
|
data/lib/core_ext.rb
CHANGED
@@ -59,15 +59,13 @@ end
|
|
59
59
|
|
60
60
|
class Array # :nodoc:
|
61
61
|
def deep_dup
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
end
|
62
|
+
map do |value|
|
63
|
+
if value.respond_to?(:deep_dup)
|
64
|
+
value.deep_dup
|
65
|
+
else
|
66
|
+
value.dup
|
67
|
+
end
|
69
68
|
end
|
70
|
-
array
|
71
69
|
end
|
72
70
|
end
|
73
71
|
|
@@ -106,11 +106,19 @@ module Puffy
|
|
106
106
|
end
|
107
107
|
|
108
108
|
def input_filter_rules(rules)
|
109
|
-
rules.select { |r| r.filter? && r.in? }
|
109
|
+
rules.select { |r| r.filter? && r.in? }.map do |rule|
|
110
|
+
dup = rule.dup
|
111
|
+
dup.dir = :in
|
112
|
+
dup
|
113
|
+
end
|
110
114
|
end
|
111
115
|
|
112
116
|
def output_filter_rules(rules)
|
113
|
-
rules.select { |r| r.filter? && r.out? }
|
117
|
+
rules.select { |r| r.filter? && r.out? }.map do |rule|
|
118
|
+
dup = rule.dup
|
119
|
+
dup.dir = :out
|
120
|
+
dup
|
121
|
+
end
|
114
122
|
end
|
115
123
|
end
|
116
124
|
|
data/lib/puffy/formatters/pf.rb
CHANGED
@@ -116,13 +116,21 @@ module Puffy
|
|
116
116
|
def emit_rdr_to(rule)
|
117
117
|
return unless rule.rdr?
|
118
118
|
|
119
|
-
keyword =
|
119
|
+
keyword = rdr_to_keyword(rule)
|
120
120
|
destination = rule.rdr_to_host || loopback_address(rule.af)
|
121
121
|
raise 'Unspecified address family' if destination.nil?
|
122
122
|
|
123
123
|
emit_endpoint_specification(keyword, destination, rule.rdr_to_port)
|
124
124
|
end
|
125
125
|
|
126
|
+
def rdr_to_keyword(rule)
|
127
|
+
if Puffy::Formatters::Base.loopback_addresses.include?(rule.rdr_to_host)
|
128
|
+
'divert-to'
|
129
|
+
else
|
130
|
+
'rdr-to'
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
126
134
|
def emit_nat_to(rule)
|
127
135
|
"nat-to #{emit_address(rule.nat_to)}" if rule.nat_to
|
128
136
|
end
|