fluent-plugin-netflowipfix 1.0.0
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 +7 -0
- data/Gemfile +3 -0
- data/LICENSE +202 -0
- data/README.md +83 -0
- data/Rakefile +13 -0
- data/fluent-plugin-netflowipfix.gemspec +28 -0
- data/lib/.DS_Store +0 -0
- data/lib/fluent/.DS_Store +0 -0
- data/lib/fluent/plugin/in_netflowipfix.rb +161 -0
- data/lib/fluent/plugin/ipfix_fields.yaml +1155 -0
- data/lib/fluent/plugin/netflow_fields.yaml +346 -0
- data/lib/fluent/plugin/netflowipfix_records.rb +243 -0
- data/lib/fluent/plugin/parser_netflow_v5.rb +129 -0
- data/lib/fluent/plugin/parser_netflow_v9.rb +346 -0
- data/lib/fluent/plugin/vash.rb +76 -0
- data/test/helper.rb +8 -0
- data/test/plugin/test_in_netflowipfix.rb +18 -0
- metadata +125 -0
@@ -0,0 +1,76 @@
|
|
1
|
+
module Fluent
|
2
|
+
module Plugin
|
3
|
+
# class TextParser
|
4
|
+
# class NetflowIPFixParser < Parser
|
5
|
+
# https://gist.github.com/joshaven/184837
|
6
|
+
class Vash < Hash
|
7
|
+
def initialize(constructor = {})
|
8
|
+
@register ||= {}
|
9
|
+
if constructor.is_a?(Hash)
|
10
|
+
super()
|
11
|
+
merge(constructor)
|
12
|
+
else
|
13
|
+
super(constructor)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
alias_method :regular_writer, :[]= unless method_defined?(:regular_writer)
|
18
|
+
alias_method :regular_reader, :[] unless method_defined?(:regular_reader)
|
19
|
+
|
20
|
+
def [](key)
|
21
|
+
sterilize(key)
|
22
|
+
clear(key) if expired?(key)
|
23
|
+
regular_reader(key)
|
24
|
+
end
|
25
|
+
|
26
|
+
def []=(key, *args)
|
27
|
+
if args.length == 2
|
28
|
+
value, ttl = args[1], args[0]
|
29
|
+
elsif args.length == 1
|
30
|
+
value, ttl = args[0], 60
|
31
|
+
else
|
32
|
+
raise ArgumentError, "Wrong number of arguments, expected 2 or 3, received: #{args.length+1}\n"+
|
33
|
+
"Example Usage: volatile_hash[:key]=value OR volatile_hash[:key, ttl]=value"
|
34
|
+
end
|
35
|
+
sterilize(key)
|
36
|
+
ttl(key, ttl)
|
37
|
+
regular_writer(key, value)
|
38
|
+
end
|
39
|
+
|
40
|
+
def merge(hsh)
|
41
|
+
hsh.map {|key,value| self[sterile(key)] = hsh[key]}
|
42
|
+
self
|
43
|
+
end
|
44
|
+
|
45
|
+
def cleanup!
|
46
|
+
now = Time.now.to_i
|
47
|
+
@register.map {|k,v| clear(k) if v < now}
|
48
|
+
end
|
49
|
+
|
50
|
+
def clear(key)
|
51
|
+
sterilize(key)
|
52
|
+
@register.delete key
|
53
|
+
self.delete key
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def expired?(key)
|
59
|
+
Time.now.to_i > @register[key].to_i
|
60
|
+
end
|
61
|
+
|
62
|
+
def ttl(key, secs=60)
|
63
|
+
@register[key] = Time.now.to_i + secs.to_i
|
64
|
+
end
|
65
|
+
|
66
|
+
def sterile(key)
|
67
|
+
String === key ? key.chomp('!').chomp('=') : key.to_s.chomp('!').chomp('=').to_sym
|
68
|
+
end
|
69
|
+
|
70
|
+
def sterilize(key)
|
71
|
+
key = sterile(key)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
# end
|
75
|
+
end
|
76
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.expand_path("../../", __FILE__))
|
2
|
+
require "test-unit"
|
3
|
+
require "fluent/test"
|
4
|
+
require "fluent/test/driver/input"
|
5
|
+
require "fluent/test/helpers"
|
6
|
+
|
7
|
+
Test::Unit::TestCase.include(Fluent::Test::Helpers)
|
8
|
+
Test::Unit::TestCase.extend(Fluent::Test::Helpers)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "helper"
|
2
|
+
require "fluent/plugin/in_netflowipfix.rb"
|
3
|
+
|
4
|
+
class NetflowipfixInputTest < Test::Unit::TestCase
|
5
|
+
setup do
|
6
|
+
Fluent::Test.setup
|
7
|
+
end
|
8
|
+
|
9
|
+
test "failure" do
|
10
|
+
flunk
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def create_driver(conf)
|
16
|
+
Fluent::Test::Driver::Input.new(Fluent::Plugin::NetflowipfixInput).configure(conf)
|
17
|
+
end
|
18
|
+
end
|
metadata
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fluent-plugin-netflowipfix
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Yves Desharnaus
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-11-09 00:00:00.000000000 Z
|
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: '12.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '12.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: test-unit
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: fluentd
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.14.10
|
48
|
+
- - "<"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '2'
|
51
|
+
type: :runtime
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: 0.14.10
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '2'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: bindata
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '2.1'
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '2.1'
|
75
|
+
description: Created to replace and add missing functionality to the fluent-plugin-netflow
|
76
|
+
fluentd plugin.
|
77
|
+
email:
|
78
|
+
- yvesbd@gmail.com
|
79
|
+
executables: []
|
80
|
+
extensions: []
|
81
|
+
extra_rdoc_files: []
|
82
|
+
files:
|
83
|
+
- Gemfile
|
84
|
+
- LICENSE
|
85
|
+
- README.md
|
86
|
+
- Rakefile
|
87
|
+
- fluent-plugin-netflowipfix.gemspec
|
88
|
+
- lib/.DS_Store
|
89
|
+
- lib/fluent/.DS_Store
|
90
|
+
- lib/fluent/plugin/in_netflowipfix.rb
|
91
|
+
- lib/fluent/plugin/ipfix_fields.yaml
|
92
|
+
- lib/fluent/plugin/netflow_fields.yaml
|
93
|
+
- lib/fluent/plugin/netflowipfix_records.rb
|
94
|
+
- lib/fluent/plugin/parser_netflow_v5.rb
|
95
|
+
- lib/fluent/plugin/parser_netflow_v9.rb
|
96
|
+
- lib/fluent/plugin/vash.rb
|
97
|
+
- test/helper.rb
|
98
|
+
- test/plugin/test_in_netflowipfix.rb
|
99
|
+
homepage: https://github.com/yvesbd/fluent-plugin-netflowipfix
|
100
|
+
licenses:
|
101
|
+
- Apache-2.0
|
102
|
+
metadata: {}
|
103
|
+
post_install_message:
|
104
|
+
rdoc_options: []
|
105
|
+
require_paths:
|
106
|
+
- lib
|
107
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
requirements: []
|
118
|
+
rubyforge_project:
|
119
|
+
rubygems_version: 2.5.2.3
|
120
|
+
signing_key:
|
121
|
+
specification_version: 4
|
122
|
+
summary: Fluentd Netflow (v5, v9) and IpFix (v10) Input plugin.
|
123
|
+
test_files:
|
124
|
+
- test/helper.rb
|
125
|
+
- test/plugin/test_in_netflowipfix.rb
|