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.
@@ -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