fluent-plugin-filter 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 64a2e9dee2d826e3d964fa0d58d3cb33bd9ddef1
4
+ data.tar.gz: 313910f1c212e5c4f35b1146660a7b2056ffedf6
5
+ SHA512:
6
+ metadata.gz: a223df306aedc58dbc2ee178b9acd0dbecc02780a62b4cc9cacbbb3aa56772bf853c6df60c3a5a667c5d4fc50d0131c6b33b6ccfd1cb94f748748d8b0ef811b1
7
+ data.tar.gz: dd3dc2d2184ad4ae9ceb74dd9f155700a631a70b0ead42339d9ca5615ba13a0714b748698fb05eb8cec4a7bbac5f03a6eee5e311c8816613d32e92fdebc3cc1b
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ rvm:
2
+ - 1.9.3
3
+ - 2.0.0
4
+ - 2.1
5
+ gemfile:
6
+ - Gemfile
data/ChangeLog CHANGED
@@ -0,0 +1,7 @@
1
+ 0.0.2 2013-11-25
2
+
3
+ Merge care multiple condition by ainoya
4
+
5
+ 0.0.1 2012-08-30
6
+
7
+ First commit
data/README.rdoc CHANGED
@@ -42,6 +42,25 @@ So you catch "filtered" tag and do next process.
42
42
 
43
43
  You can use int, float, string, regexp in value.
44
44
 
45
+ === Parameters
46
+
47
+ ==== all <allow|deny>
48
+ Specify basic policy.
49
+
50
+ ==== allow field:<Pattern> / deny field:<Pattern>
51
+ Specify each field policies.
52
+ If a value for the field matches the pattern, the allow or deny rule is applied.
53
+
54
+ ===== Pattern := <String|Integer|Float|Regexp>
55
+
56
+ Patten is parsed by following rules.
57
+
58
+ * Integer: a value consisted of degits without ".". e.g. status:200, price:10000
59
+ * Float: a value consisted of degits with "." (if you force the value float, set 200.0). e.g. average:145.0
60
+ * Regexp: a value starting with "/" and end with "/". e.g. path:/\/user\/\d+/
61
+ * thx @mmacvicar !
62
+ * String: a value unmatched below rule or enveloped with \" or \'.
63
+
45
64
  == Contributing
46
65
 
47
66
  1. Fork it
@@ -12,12 +12,13 @@ Gem::Specification.new do |gem|
12
12
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
13
  gem.name = "fluent-plugin-filter"
14
14
  gem.require_paths = ["lib"]
15
- gem.version = "0.0.1"
15
+ gem.version = "0.0.3"
16
16
 
17
17
  gem.extra_rdoc_files = [
18
18
  "ChangeLog",
19
19
  "README.rdoc"
20
- ]
20
+ ]
21
+ gem.add_development_dependency "rake"
21
22
  gem.add_development_dependency "fluentd"
22
23
  gem.add_runtime_dependency "fluentd"
23
24
  end
@@ -6,7 +6,7 @@ class FilterOutput < Output
6
6
  config_param :allow, :string, :default => ''
7
7
  config_param :deny, :string, :default => ''
8
8
  config_param :add_prefix, :string, :default => 'filtered'
9
-
9
+
10
10
  attr_accessor :allows
11
11
  attr_accessor :denies
12
12
 
@@ -23,7 +23,7 @@ class FilterOutput < Output
23
23
  v = v.to_i
24
24
  elsif v =~ /^[\d\.]+(e\d+)?$/
25
25
  v = v.to_f
26
- elsif v =~ /^\/[^\/]+\/$/
26
+ elsif v =~ /^\/(\\\/|[^\/])+\/$/
27
27
  v = Regexp.new(v.gsub(/^\/|\/$/, ''))
28
28
  else
29
29
  v = v.gsub(/^[\"\']|[\"\']$/, '')
@@ -35,9 +35,9 @@ class FilterOutput < Output
35
35
  def passRules (record)
36
36
  if @all == 'allow'
37
37
  @denies.each do |deny|
38
- if (deny[1].is_a? Regexp and record[deny[0]].match(deny[1])) or record[deny[0]] == deny[1]
38
+ if (deny[1].is_a? Regexp and record.has_key?(deny[0]) and record[deny[0]].match(deny[1])) or record[deny[0]] == deny[1]
39
39
  @allows.each do |allow|
40
- if (allow[1].is_a? Regexp and record[allow[0]].match(allow[1])) or record[allow[0]] == allow[1]
40
+ if (allow[1].is_a? Regexp and record.has_key?(allow[0]) and record[allow[0]].match(allow[1])) or record[allow[0]] == allow[1]
41
41
  return true
42
42
  end
43
43
  end
@@ -47,9 +47,9 @@ class FilterOutput < Output
47
47
  return true
48
48
  else
49
49
  @allows.each do |allow|
50
- if (allow[1].is_a? Regexp and record[allow[0]].match(allow[1])) or record[allow[0]] == allow[1]
50
+ if (allow[1].is_a? Regexp and record.has_key?(allow[0]) and record[allow[0]].match(allow[1])) or record[allow[0]] == allow[1]
51
51
  @denies.each do |deny|
52
- if (deny[1].is_a? Regexp and record[deny[0]].match(deny[1])) or record[deny[0]] == deny[1]
52
+ if (deny[1].is_a? Regexp and record.has_key?(deny[0]) and record[deny[0]].match(deny[1])) or record[deny[0]] == deny[1]
53
53
  return false
54
54
  end
55
55
  end
@@ -65,16 +65,24 @@ class Filter < Test::Unit::TestCase
65
65
  ]
66
66
  assert_equal [['url', /hoge/]], d.instance.allows
67
67
  assert_equal [], d.instance.denies
68
-
68
+
69
+ # regexp value with forward slashes
70
+ d = create_driver %[
71
+ all deny
72
+ allow url: /\\/users\\/\\d+/
73
+ ]
74
+ assert_equal [['url', Regexp.new("\\/users\\/\\d+")]], d.instance.allows
75
+ assert_equal [], d.instance.denies
76
+
69
77
  end
70
78
  def test_emit
71
79
  data = [
72
- {'status' => 200, 'agent' => 'IE'},
80
+ {'status' => 200, 'agent' => 'IE', 'path' => '/users/1'},
73
81
  {'status' => 303, 'agent' => 'Gecko'},
74
- {'status' => 200, 'agent' => 'IE'},
82
+ {'status' => 200, 'agent' => 'IE', 'path' => '/users/2'},
75
83
  {'status' => 401, 'agent' => 'Gecko'},
76
- {'status' => 200, 'agent' => 'Gecka'},
77
- {'status' => 404, 'agent' => 'Gecko'},
84
+ {'status' => 200, 'agent' => 'Gecka', 'path' => '/users/3'},
85
+ {'status' => 404, 'agent' => 'Gecko', 'path' => '/wrong'},
78
86
  ]
79
87
 
80
88
  d = create_driver(CONFIG, 'test.input')
@@ -164,5 +172,46 @@ class Filter < Test::Unit::TestCase
164
172
  end
165
173
  assert_equal "hoge.test.input", d.emits[0][0]
166
174
 
175
+ d = create_driver(%[
176
+ all deny
177
+ allow path: /\\/users\\/\\d+/
178
+ ], 'test.input')
179
+
180
+ d.run do
181
+ data.each do |dat|
182
+ d.emit dat
183
+ end
184
+ end
185
+ assert_equal 3, d.emits.length
186
+
187
+ data = [
188
+ {'message' => 'hoge', 'message2' => 'hoge2'},
189
+ {'message' => 'hoge3'},
190
+ ]
191
+
192
+ d = create_driver(%[
193
+ all deny
194
+ allow message2: /hoge2/
195
+ ], 'test.input')
196
+
197
+ d.run do
198
+ data.each do |dat|
199
+ d.emit dat
200
+ end
201
+ end
202
+ assert_equal 1, d.emits.length
203
+
204
+ d = create_driver(%[
205
+ all allow
206
+ deny message2: /hoge2/
207
+ ], 'test.input')
208
+
209
+ d.run do
210
+ data.each do |dat|
211
+ d.emit dat
212
+ end
213
+ end
214
+ assert_equal 1, d.emits.length
215
+
167
216
  end
168
217
  end
metadata CHANGED
@@ -1,38 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.0.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Muddy Dixon
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-07-17 00:00:00.000000000 Z
11
+ date: 2014-12-24 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
14
27
  - !ruby/object:Gem::Dependency
15
28
  name: fluentd
16
- requirement: &2160456580 !ruby/object:Gem::Requirement
17
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
18
30
  requirements:
19
- - - ! '>='
31
+ - - '>='
20
32
  - !ruby/object:Gem::Version
21
33
  version: '0'
22
34
  type: :development
23
35
  prerelease: false
24
- version_requirements: *2160456580
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
25
41
  - !ruby/object:Gem::Dependency
26
42
  name: fluentd
27
- requirement: &2160456040 !ruby/object:Gem::Requirement
28
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
29
44
  requirements:
30
- - - ! '>='
45
+ - - '>='
31
46
  - !ruby/object:Gem::Version
32
47
  version: '0'
33
48
  type: :runtime
34
49
  prerelease: false
35
- version_requirements: *2160456040
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
36
55
  description: Simple output filter
37
56
  email:
38
57
  - muddydixon@gmail.com
@@ -43,6 +62,7 @@ extra_rdoc_files:
43
62
  - README.rdoc
44
63
  files:
45
64
  - .gitignore
65
+ - .travis.yml
46
66
  - ChangeLog
47
67
  - Gemfile
48
68
  - LICENSE
@@ -55,28 +75,28 @@ files:
55
75
  - test/plugin/test_out_filter.rb
56
76
  homepage: https://github.com/muddydixon/fluent-plugin-filter
57
77
  licenses: []
78
+ metadata: {}
58
79
  post_install_message:
59
80
  rdoc_options: []
60
81
  require_paths:
61
82
  - lib
62
83
  required_ruby_version: !ruby/object:Gem::Requirement
63
- none: false
64
84
  requirements:
65
- - - ! '>='
85
+ - - '>='
66
86
  - !ruby/object:Gem::Version
67
87
  version: '0'
68
88
  required_rubygems_version: !ruby/object:Gem::Requirement
69
- none: false
70
89
  requirements:
71
- - - ! '>='
90
+ - - '>='
72
91
  - !ruby/object:Gem::Version
73
92
  version: '0'
74
93
  requirements: []
75
94
  rubyforge_project: fluent-plugin-filter
76
- rubygems_version: 1.8.11
95
+ rubygems_version: 2.0.3
77
96
  signing_key:
78
- specification_version: 3
97
+ specification_version: 4
79
98
  summary: Simple output filter
80
99
  test_files:
81
100
  - test/helper.rb
82
101
  - test/plugin/test_out_filter.rb
102
+ has_rdoc: