fluentd 1.20.0-aarch64-mingw-ucrt

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.
Files changed (341) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +116 -0
  3. data/ADOPTERS.md +5 -0
  4. data/AGENTS.md +46 -0
  5. data/AUTHORS +2 -0
  6. data/CHANGELOG.md +3324 -0
  7. data/CONTRIBUTING.md +45 -0
  8. data/GOVERNANCE.md +55 -0
  9. data/GithubWorkflow.md +78 -0
  10. data/LICENSE +202 -0
  11. data/MAINTAINERS.md +19 -0
  12. data/README.md +73 -0
  13. data/Rakefile +89 -0
  14. data/SECURITY.md +47 -0
  15. data/bin/fluent-binlog-reader +7 -0
  16. data/bin/fluent-ca-generate +6 -0
  17. data/bin/fluent-cap-ctl +7 -0
  18. data/bin/fluent-cat +5 -0
  19. data/bin/fluent-ctl +7 -0
  20. data/bin/fluent-debug +5 -0
  21. data/bin/fluent-gem +9 -0
  22. data/bin/fluent-plugin-config-format +5 -0
  23. data/bin/fluent-plugin-generate +5 -0
  24. data/bin/fluentd +15 -0
  25. data/code-of-conduct.md +3 -0
  26. data/docs/SECURITY_AUDIT.pdf +0 -0
  27. data/example/copy_roundrobin.conf +39 -0
  28. data/example/counter.conf +18 -0
  29. data/example/filter_stdout.conf +22 -0
  30. data/example/in_forward.conf +14 -0
  31. data/example/in_forward_client.conf +37 -0
  32. data/example/in_forward_shared_key.conf +15 -0
  33. data/example/in_forward_tls.conf +14 -0
  34. data/example/in_forward_users.conf +24 -0
  35. data/example/in_forward_workers.conf +21 -0
  36. data/example/in_http.conf +16 -0
  37. data/example/in_out_forward.conf +17 -0
  38. data/example/in_sample_blocks.conf +17 -0
  39. data/example/in_sample_with_compression.conf +23 -0
  40. data/example/in_syslog.conf +15 -0
  41. data/example/in_tail.conf +14 -0
  42. data/example/in_tcp.conf +13 -0
  43. data/example/in_udp.conf +13 -0
  44. data/example/logevents.conf +25 -0
  45. data/example/multi_filters.conf +61 -0
  46. data/example/out_copy.conf +20 -0
  47. data/example/out_exec_filter.conf +42 -0
  48. data/example/out_file.conf +13 -0
  49. data/example/out_forward.conf +35 -0
  50. data/example/out_forward_buf_file.conf +23 -0
  51. data/example/out_forward_client.conf +109 -0
  52. data/example/out_forward_heartbeat_none.conf +16 -0
  53. data/example/out_forward_sd.conf +17 -0
  54. data/example/out_forward_shared_key.conf +36 -0
  55. data/example/out_forward_tls.conf +18 -0
  56. data/example/out_forward_users.conf +65 -0
  57. data/example/out_null.conf +36 -0
  58. data/example/sd.yaml +8 -0
  59. data/example/secondary_file.conf +42 -0
  60. data/example/suppress_config_dump.conf +7 -0
  61. data/example/v0_12_filter.conf +78 -0
  62. data/example/v1_literal_example.conf +36 -0
  63. data/example/worker_section.conf +36 -0
  64. data/fluent.conf +139 -0
  65. data/lib/fluent/agent.rb +168 -0
  66. data/lib/fluent/capability.rb +87 -0
  67. data/lib/fluent/clock.rb +66 -0
  68. data/lib/fluent/command/binlog_reader.rb +244 -0
  69. data/lib/fluent/command/bundler_injection.rb +45 -0
  70. data/lib/fluent/command/ca_generate.rb +184 -0
  71. data/lib/fluent/command/cap_ctl.rb +174 -0
  72. data/lib/fluent/command/cat.rb +365 -0
  73. data/lib/fluent/command/ctl.rb +180 -0
  74. data/lib/fluent/command/debug.rb +103 -0
  75. data/lib/fluent/command/fluentd.rb +385 -0
  76. data/lib/fluent/command/plugin_config_formatter.rb +308 -0
  77. data/lib/fluent/command/plugin_generator.rb +365 -0
  78. data/lib/fluent/compat/call_super_mixin.rb +76 -0
  79. data/lib/fluent/compat/detach_process_mixin.rb +33 -0
  80. data/lib/fluent/compat/exec_util.rb +144 -0
  81. data/lib/fluent/compat/file_util.rb +54 -0
  82. data/lib/fluent/compat/filter.rb +68 -0
  83. data/lib/fluent/compat/formatter.rb +117 -0
  84. data/lib/fluent/compat/formatter_utils.rb +85 -0
  85. data/lib/fluent/compat/handle_tag_and_time_mixin.rb +62 -0
  86. data/lib/fluent/compat/handle_tag_name_mixin.rb +53 -0
  87. data/lib/fluent/compat/input.rb +49 -0
  88. data/lib/fluent/compat/output.rb +721 -0
  89. data/lib/fluent/compat/output_chain.rb +60 -0
  90. data/lib/fluent/compat/parser.rb +310 -0
  91. data/lib/fluent/compat/parser_utils.rb +40 -0
  92. data/lib/fluent/compat/propagate_default.rb +62 -0
  93. data/lib/fluent/compat/record_filter_mixin.rb +34 -0
  94. data/lib/fluent/compat/set_tag_key_mixin.rb +50 -0
  95. data/lib/fluent/compat/set_time_key_mixin.rb +69 -0
  96. data/lib/fluent/compat/socket_util.rb +165 -0
  97. data/lib/fluent/compat/string_util.rb +34 -0
  98. data/lib/fluent/compat/structured_format_mixin.rb +26 -0
  99. data/lib/fluent/compat/type_converter.rb +90 -0
  100. data/lib/fluent/config/basic_parser.rb +122 -0
  101. data/lib/fluent/config/configure_proxy.rb +424 -0
  102. data/lib/fluent/config/dsl.rb +152 -0
  103. data/lib/fluent/config/element.rb +265 -0
  104. data/lib/fluent/config/error.rb +44 -0
  105. data/lib/fluent/config/literal_parser.rb +305 -0
  106. data/lib/fluent/config/parser.rb +119 -0
  107. data/lib/fluent/config/section.rb +272 -0
  108. data/lib/fluent/config/types.rb +257 -0
  109. data/lib/fluent/config/v1_parser.rb +200 -0
  110. data/lib/fluent/config/yaml_parser/fluent_value.rb +47 -0
  111. data/lib/fluent/config/yaml_parser/loader.rb +124 -0
  112. data/lib/fluent/config/yaml_parser/parser.rb +179 -0
  113. data/lib/fluent/config/yaml_parser/section_builder.rb +107 -0
  114. data/lib/fluent/config/yaml_parser.rb +56 -0
  115. data/lib/fluent/config.rb +89 -0
  116. data/lib/fluent/configurable.rb +202 -0
  117. data/lib/fluent/counter/base_socket.rb +44 -0
  118. data/lib/fluent/counter/client.rb +297 -0
  119. data/lib/fluent/counter/error.rb +86 -0
  120. data/lib/fluent/counter/mutex_hash.rb +163 -0
  121. data/lib/fluent/counter/server.rb +273 -0
  122. data/lib/fluent/counter/store.rb +205 -0
  123. data/lib/fluent/counter/validator.rb +145 -0
  124. data/lib/fluent/counter.rb +23 -0
  125. data/lib/fluent/daemon.rb +14 -0
  126. data/lib/fluent/daemonizer.rb +88 -0
  127. data/lib/fluent/engine.rb +269 -0
  128. data/lib/fluent/env.rb +45 -0
  129. data/lib/fluent/error.rb +37 -0
  130. data/lib/fluent/event.rb +369 -0
  131. data/lib/fluent/event_router.rb +315 -0
  132. data/lib/fluent/ext_monitor_require.rb +28 -0
  133. data/lib/fluent/file_wrapper.rb +137 -0
  134. data/lib/fluent/filter.rb +21 -0
  135. data/lib/fluent/fluent_log_event_router.rb +139 -0
  136. data/lib/fluent/formatter.rb +23 -0
  137. data/lib/fluent/input.rb +21 -0
  138. data/lib/fluent/label.rb +46 -0
  139. data/lib/fluent/load.rb +33 -0
  140. data/lib/fluent/log/console_adapter.rb +66 -0
  141. data/lib/fluent/log.rb +775 -0
  142. data/lib/fluent/match.rb +187 -0
  143. data/lib/fluent/mixin.rb +31 -0
  144. data/lib/fluent/msgpack_factory.rb +111 -0
  145. data/lib/fluent/oj_options.rb +61 -0
  146. data/lib/fluent/output.rb +29 -0
  147. data/lib/fluent/output_chain.rb +23 -0
  148. data/lib/fluent/parser.rb +23 -0
  149. data/lib/fluent/plugin/bare_output.rb +88 -0
  150. data/lib/fluent/plugin/base.rb +219 -0
  151. data/lib/fluent/plugin/buf_file.rb +256 -0
  152. data/lib/fluent/plugin/buf_file_single.rb +272 -0
  153. data/lib/fluent/plugin/buf_memory.rb +34 -0
  154. data/lib/fluent/plugin/buffer/chunk.rb +313 -0
  155. data/lib/fluent/plugin/buffer/file_chunk.rb +432 -0
  156. data/lib/fluent/plugin/buffer/file_single_chunk.rb +325 -0
  157. data/lib/fluent/plugin/buffer/memory_chunk.rb +91 -0
  158. data/lib/fluent/plugin/buffer.rb +1063 -0
  159. data/lib/fluent/plugin/compressable.rb +87 -0
  160. data/lib/fluent/plugin/exec_util.rb +22 -0
  161. data/lib/fluent/plugin/extractor.rb +132 -0
  162. data/lib/fluent/plugin/file_util.rb +22 -0
  163. data/lib/fluent/plugin/filter.rb +119 -0
  164. data/lib/fluent/plugin/filter_grep.rb +189 -0
  165. data/lib/fluent/plugin/filter_parser.rb +124 -0
  166. data/lib/fluent/plugin/filter_record_transformer.rb +325 -0
  167. data/lib/fluent/plugin/filter_stdout.rb +53 -0
  168. data/lib/fluent/plugin/formatter.rb +75 -0
  169. data/lib/fluent/plugin/formatter_csv.rb +92 -0
  170. data/lib/fluent/plugin/formatter_hash.rb +35 -0
  171. data/lib/fluent/plugin/formatter_json.rb +62 -0
  172. data/lib/fluent/plugin/formatter_ltsv.rb +44 -0
  173. data/lib/fluent/plugin/formatter_msgpack.rb +33 -0
  174. data/lib/fluent/plugin/formatter_out_file.rb +55 -0
  175. data/lib/fluent/plugin/formatter_single_value.rb +36 -0
  176. data/lib/fluent/plugin/formatter_stdout.rb +76 -0
  177. data/lib/fluent/plugin/formatter_tsv.rb +40 -0
  178. data/lib/fluent/plugin/in_debug_agent.rb +71 -0
  179. data/lib/fluent/plugin/in_dummy.rb +18 -0
  180. data/lib/fluent/plugin/in_exec.rb +124 -0
  181. data/lib/fluent/plugin/in_forward.rb +489 -0
  182. data/lib/fluent/plugin/in_gc_stat.rb +72 -0
  183. data/lib/fluent/plugin/in_http.rb +737 -0
  184. data/lib/fluent/plugin/in_monitor_agent.rb +406 -0
  185. data/lib/fluent/plugin/in_object_space.rb +93 -0
  186. data/lib/fluent/plugin/in_sample.rb +148 -0
  187. data/lib/fluent/plugin/in_syslog.rb +346 -0
  188. data/lib/fluent/plugin/in_tail/compatibility.rb +111 -0
  189. data/lib/fluent/plugin/in_tail/dir_watcher.rb +713 -0
  190. data/lib/fluent/plugin/in_tail/group_watch.rb +204 -0
  191. data/lib/fluent/plugin/in_tail/io_handler.rb +391 -0
  192. data/lib/fluent/plugin/in_tail/line_feeder.rb +230 -0
  193. data/lib/fluent/plugin/in_tail/position_file.rb +269 -0
  194. data/lib/fluent/plugin/in_tail/stat_watcher.rb +52 -0
  195. data/lib/fluent/plugin/in_tail/tail_watcher.rb +276 -0
  196. data/lib/fluent/plugin/in_tail/worker_pool.rb +298 -0
  197. data/lib/fluent/plugin/in_tail.rb +917 -0
  198. data/lib/fluent/plugin/in_tcp.rb +230 -0
  199. data/lib/fluent/plugin/in_udp.rb +101 -0
  200. data/lib/fluent/plugin/in_unix.rb +197 -0
  201. data/lib/fluent/plugin/input.rb +71 -0
  202. data/lib/fluent/plugin/metrics.rb +119 -0
  203. data/lib/fluent/plugin/metrics_local.rb +96 -0
  204. data/lib/fluent/plugin/multi_output.rb +179 -0
  205. data/lib/fluent/plugin/out_buffer.rb +40 -0
  206. data/lib/fluent/plugin/out_copy.rb +120 -0
  207. data/lib/fluent/plugin/out_exec.rb +105 -0
  208. data/lib/fluent/plugin/out_exec_filter.rb +319 -0
  209. data/lib/fluent/plugin/out_file.rb +371 -0
  210. data/lib/fluent/plugin/out_forward/ack_handler.rb +176 -0
  211. data/lib/fluent/plugin/out_forward/connection_manager.rb +131 -0
  212. data/lib/fluent/plugin/out_forward/error.rb +28 -0
  213. data/lib/fluent/plugin/out_forward/failure_detector.rb +84 -0
  214. data/lib/fluent/plugin/out_forward/handshake_protocol.rb +125 -0
  215. data/lib/fluent/plugin/out_forward/load_balancer.rb +114 -0
  216. data/lib/fluent/plugin/out_forward/socket_cache.rb +177 -0
  217. data/lib/fluent/plugin/out_forward.rb +865 -0
  218. data/lib/fluent/plugin/out_http.rb +419 -0
  219. data/lib/fluent/plugin/out_null.rb +74 -0
  220. data/lib/fluent/plugin/out_relabel.rb +32 -0
  221. data/lib/fluent/plugin/out_roundrobin.rb +84 -0
  222. data/lib/fluent/plugin/out_secondary_file.rb +148 -0
  223. data/lib/fluent/plugin/out_stdout.rb +81 -0
  224. data/lib/fluent/plugin/out_stream.rb +130 -0
  225. data/lib/fluent/plugin/output.rb +1688 -0
  226. data/lib/fluent/plugin/owned_by_mixin.rb +41 -0
  227. data/lib/fluent/plugin/parser.rb +274 -0
  228. data/lib/fluent/plugin/parser_apache.rb +28 -0
  229. data/lib/fluent/plugin/parser_apache2.rb +88 -0
  230. data/lib/fluent/plugin/parser_apache_error.rb +26 -0
  231. data/lib/fluent/plugin/parser_csv.rb +124 -0
  232. data/lib/fluent/plugin/parser_json.rb +118 -0
  233. data/lib/fluent/plugin/parser_ltsv.rb +49 -0
  234. data/lib/fluent/plugin/parser_msgpack.rb +72 -0
  235. data/lib/fluent/plugin/parser_multiline.rb +152 -0
  236. data/lib/fluent/plugin/parser_nginx.rb +28 -0
  237. data/lib/fluent/plugin/parser_none.rb +36 -0
  238. data/lib/fluent/plugin/parser_regexp.rb +68 -0
  239. data/lib/fluent/plugin/parser_syslog.rb +543 -0
  240. data/lib/fluent/plugin/parser_tsv.rb +47 -0
  241. data/lib/fluent/plugin/sd_file.rb +157 -0
  242. data/lib/fluent/plugin/sd_srv.rb +135 -0
  243. data/lib/fluent/plugin/sd_static.rb +58 -0
  244. data/lib/fluent/plugin/service_discovery.rb +65 -0
  245. data/lib/fluent/plugin/socket_util.rb +22 -0
  246. data/lib/fluent/plugin/storage.rb +84 -0
  247. data/lib/fluent/plugin/storage_local.rb +166 -0
  248. data/lib/fluent/plugin/string_util.rb +22 -0
  249. data/lib/fluent/plugin.rb +206 -0
  250. data/lib/fluent/plugin_helper/cert_option.rb +199 -0
  251. data/lib/fluent/plugin_helper/child_process.rb +369 -0
  252. data/lib/fluent/plugin_helper/compat_parameters.rb +343 -0
  253. data/lib/fluent/plugin_helper/counter.rb +51 -0
  254. data/lib/fluent/plugin_helper/event_emitter.rb +112 -0
  255. data/lib/fluent/plugin_helper/event_loop.rb +170 -0
  256. data/lib/fluent/plugin_helper/extract.rb +104 -0
  257. data/lib/fluent/plugin_helper/formatter.rb +147 -0
  258. data/lib/fluent/plugin_helper/http_server/app.rb +81 -0
  259. data/lib/fluent/plugin_helper/http_server/methods.rb +35 -0
  260. data/lib/fluent/plugin_helper/http_server/request.rb +53 -0
  261. data/lib/fluent/plugin_helper/http_server/router.rb +54 -0
  262. data/lib/fluent/plugin_helper/http_server/server.rb +116 -0
  263. data/lib/fluent/plugin_helper/http_server/ssl_context_builder.rb +41 -0
  264. data/lib/fluent/plugin_helper/http_server.rb +129 -0
  265. data/lib/fluent/plugin_helper/inject.rb +154 -0
  266. data/lib/fluent/plugin_helper/metrics.rb +136 -0
  267. data/lib/fluent/plugin_helper/parser.rb +147 -0
  268. data/lib/fluent/plugin_helper/record_accessor.rb +207 -0
  269. data/lib/fluent/plugin_helper/retry_state.rb +219 -0
  270. data/lib/fluent/plugin_helper/server.rb +840 -0
  271. data/lib/fluent/plugin_helper/service_discovery/manager.rb +146 -0
  272. data/lib/fluent/plugin_helper/service_discovery/round_robin_balancer.rb +43 -0
  273. data/lib/fluent/plugin_helper/service_discovery.rb +125 -0
  274. data/lib/fluent/plugin_helper/socket.rb +288 -0
  275. data/lib/fluent/plugin_helper/socket_option.rb +98 -0
  276. data/lib/fluent/plugin_helper/storage.rb +349 -0
  277. data/lib/fluent/plugin_helper/thread.rb +180 -0
  278. data/lib/fluent/plugin_helper/timer.rb +92 -0
  279. data/lib/fluent/plugin_helper.rb +75 -0
  280. data/lib/fluent/plugin_id.rb +93 -0
  281. data/lib/fluent/process.rb +22 -0
  282. data/lib/fluent/registry.rb +117 -0
  283. data/lib/fluent/root_agent.rb +468 -0
  284. data/lib/fluent/rpc.rb +95 -0
  285. data/lib/fluent/source_only_buffer_agent.rb +102 -0
  286. data/lib/fluent/static_config_analysis.rb +195 -0
  287. data/lib/fluent/supervisor.rb +1347 -0
  288. data/lib/fluent/system_config.rb +213 -0
  289. data/lib/fluent/test/base.rb +83 -0
  290. data/lib/fluent/test/driver/base.rb +231 -0
  291. data/lib/fluent/test/driver/base_owned.rb +83 -0
  292. data/lib/fluent/test/driver/base_owner.rb +135 -0
  293. data/lib/fluent/test/driver/event_feeder.rb +98 -0
  294. data/lib/fluent/test/driver/filter.rb +61 -0
  295. data/lib/fluent/test/driver/formatter.rb +30 -0
  296. data/lib/fluent/test/driver/input.rb +31 -0
  297. data/lib/fluent/test/driver/multi_output.rb +53 -0
  298. data/lib/fluent/test/driver/output.rb +102 -0
  299. data/lib/fluent/test/driver/parser.rb +30 -0
  300. data/lib/fluent/test/driver/storage.rb +30 -0
  301. data/lib/fluent/test/driver/test_event_router.rb +45 -0
  302. data/lib/fluent/test/filter_test.rb +77 -0
  303. data/lib/fluent/test/formatter_test.rb +65 -0
  304. data/lib/fluent/test/helpers.rb +138 -0
  305. data/lib/fluent/test/input_test.rb +174 -0
  306. data/lib/fluent/test/log.rb +79 -0
  307. data/lib/fluent/test/output_test.rb +156 -0
  308. data/lib/fluent/test/parser_test.rb +70 -0
  309. data/lib/fluent/test/startup_shutdown.rb +44 -0
  310. data/lib/fluent/test.rb +61 -0
  311. data/lib/fluent/time.rb +513 -0
  312. data/lib/fluent/timezone.rb +171 -0
  313. data/lib/fluent/tls.rb +105 -0
  314. data/lib/fluent/unique_id.rb +39 -0
  315. data/lib/fluent/variable_store.rb +40 -0
  316. data/lib/fluent/version.rb +21 -0
  317. data/lib/fluent/win32api.rb +38 -0
  318. data/lib/fluent/winsvc.rb +130 -0
  319. data/templates/new_gem/.gitignore +8 -0
  320. data/templates/new_gem/Gemfile +3 -0
  321. data/templates/new_gem/README.md.erb +43 -0
  322. data/templates/new_gem/Rakefile +13 -0
  323. data/templates/new_gem/fluent-plugin.gemspec.erb +28 -0
  324. data/templates/new_gem/lib/fluent/plugin/filter.rb.erb +14 -0
  325. data/templates/new_gem/lib/fluent/plugin/formatter.rb.erb +14 -0
  326. data/templates/new_gem/lib/fluent/plugin/input.rb.erb +11 -0
  327. data/templates/new_gem/lib/fluent/plugin/output.rb.erb +11 -0
  328. data/templates/new_gem/lib/fluent/plugin/parser.rb.erb +15 -0
  329. data/templates/new_gem/lib/fluent/plugin/storage.rb.erb +40 -0
  330. data/templates/new_gem/test/helper.rb.erb +7 -0
  331. data/templates/new_gem/test/plugin/test_filter.rb.erb +18 -0
  332. data/templates/new_gem/test/plugin/test_formatter.rb.erb +18 -0
  333. data/templates/new_gem/test/plugin/test_input.rb.erb +18 -0
  334. data/templates/new_gem/test/plugin/test_output.rb.erb +18 -0
  335. data/templates/new_gem/test/plugin/test_parser.rb.erb +18 -0
  336. data/templates/new_gem/test/plugin/test_storage.rb.erb +18 -0
  337. data/templates/plugin_config_formatter/param.md-compact.erb +25 -0
  338. data/templates/plugin_config_formatter/param.md-table.erb +10 -0
  339. data/templates/plugin_config_formatter/param.md.erb +34 -0
  340. data/templates/plugin_config_formatter/section.md.erb +12 -0
  341. metadata +996 -0
@@ -0,0 +1,171 @@
1
+ #
2
+ # Fluentd
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'tzinfo'
18
+
19
+ require 'fluent/config/error'
20
+
21
+ # For v0.12. Will be removed after v2
22
+ module IntegerExt
23
+ refine Integer do
24
+ def to_time
25
+ Time.at(self)
26
+ end
27
+ end
28
+ end
29
+
30
+ module Fluent
31
+ class Timezone
32
+ # [+-]HH:MM, [+-]HHMM, [+-]HH
33
+ NUMERIC_PATTERN = %r{\A[+-]\d\d(:?\d\d)?\z}
34
+
35
+ # Region/Zone, Region/Zone/Zone
36
+ NAME_PATTERN = %r{\A[^/]+/[^/]+(/[^/]+)?\z}
37
+
38
+ # Validate the format of the specified timezone.
39
+ #
40
+ # Valid formats are as follows. Note that timezone abbreviations
41
+ # such as PST and JST are not supported intentionally.
42
+ #
43
+ # 1. [+-]HH:MM (e.g. "+09:00")
44
+ # 2. [+-]HHMM (e.g. "+0900")
45
+ # 3. [+-]HH (e.g. "+09")
46
+ # 4. Region/Zone (e.g. "Asia/Tokyo")
47
+ # 5. Region/Zone/Zone (e.g. "America/Argentina/Buenos_Aires")
48
+ #
49
+ # In the 4th and 5th cases, it is checked whether the specified
50
+ # timezone exists in the timezone database.
51
+ #
52
+ # When the given timezone is valid, true is returned. Otherwise,
53
+ # false is returned. When nil is given, false is returned.
54
+ def self.validate(timezone)
55
+ # If the specified timezone is nil.
56
+ if timezone.nil?
57
+ # Invalid.
58
+ return false
59
+ end
60
+
61
+ # [+-]HH:MM, [+-]HHMM, [+-]HH
62
+ if NUMERIC_PATTERN === timezone
63
+ # Valid. It can be parsed by Time.zone_offset method.
64
+ return true
65
+ end
66
+
67
+ # Region/Zone, Region/Zone/Zone
68
+ if NAME_PATTERN === timezone
69
+ begin
70
+ # Get a Timezone instance for the specified timezone.
71
+ TZInfo::Timezone.get(timezone)
72
+ rescue
73
+ # Invalid. The string does not exist in the timezone database.
74
+ return false
75
+ else
76
+ # Valid. The string was found in the timezone database.
77
+ return true
78
+ end
79
+ else
80
+ # Invalid. Timezone abbreviations are not supported.
81
+ return false
82
+ end
83
+ end
84
+
85
+ # Validate the format of the specified timezone.
86
+ #
87
+ # The implementation of this method calls validate(timezone) method
88
+ # to check whether the given timezone is valid. When invalid, this
89
+ # method raises a ConfigError.
90
+ def self.validate!(timezone)
91
+ unless validate(timezone)
92
+ raise ConfigError, "Unsupported timezone '#{timezone}'"
93
+ end
94
+ end
95
+
96
+ using IntegerExt
97
+
98
+ # Create a formatter for a timezone and optionally a format.
99
+ #
100
+ # An Proc object is returned. If the given timezone is invalid,
101
+ # nil is returned.
102
+ def self.formatter(timezone = nil, format = nil)
103
+ if timezone.nil?
104
+ return nil
105
+ end
106
+
107
+ # [+-]HH:MM, [+-]HHMM, [+-]HH
108
+ if NUMERIC_PATTERN === timezone
109
+ offset = Time.zone_offset(timezone)
110
+
111
+ case
112
+ when format.is_a?(String)
113
+ return Proc.new {|time|
114
+ time.to_time.localtime(offset).strftime(format)
115
+ }
116
+ when format.is_a?(Strftime)
117
+ return Proc.new {|time|
118
+ format.exec(time.to_time.localtime(offset))
119
+ }
120
+ else
121
+ return Proc.new {|time|
122
+ time.to_time.localtime(offset).iso8601
123
+ }
124
+ end
125
+ end
126
+
127
+ # Region/Zone, Region/Zone/Zone
128
+ if NAME_PATTERN === timezone
129
+ begin
130
+ tz = TZInfo::Timezone.get(timezone)
131
+ rescue
132
+ return nil
133
+ end
134
+
135
+ case
136
+ when format.is_a?(String)
137
+ return Proc.new {|time|
138
+ time = time.to_time
139
+ time.localtime(tz.period_for_utc(time).utc_total_offset).strftime(format)
140
+ }
141
+ when format.is_a?(Strftime)
142
+ return Proc.new {|time|
143
+ time = time.to_time
144
+ format.exec(time.localtime(tz.period_for_utc(time).utc_total_offset))
145
+ }
146
+ else
147
+ return Proc.new {|time|
148
+ time = time.to_time
149
+ time.localtime(tz.period_for_utc(time).utc_total_offset).iso8601
150
+ }
151
+ end
152
+ end
153
+
154
+ return nil
155
+ end
156
+
157
+ def self.utc_offset(timezone)
158
+ return 0 if timezone.nil?
159
+
160
+ case timezone
161
+ when NUMERIC_PATTERN
162
+ Time.zone_offset(timezone)
163
+ when NAME_PATTERN
164
+ tz = TZInfo::Timezone.get(timezone)
165
+ ->(time) {
166
+ tz.period_for_utc(time.to_time).utc_total_offset
167
+ }
168
+ end
169
+ end
170
+ end
171
+ end
data/lib/fluent/tls.rb ADDED
@@ -0,0 +1,105 @@
1
+ #
2
+ # Fluentd
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'openssl'
18
+ require 'fluent/config/error'
19
+
20
+ module Fluent
21
+ module TLS
22
+ DEFAULT_VERSION = :'TLSv1_2'
23
+ SUPPORTED_VERSIONS = if defined?(OpenSSL::SSL::TLS1_3_VERSION)
24
+ [:'TLSv1_1', :'TLSv1_2', :'TLSv1_3', :'TLS1_1', :'TLS1_2', :'TLS1_3'].freeze
25
+ else
26
+ [:'TLSv1_1', :'TLSv1_2', :'TLS1_1', :'TLS1_2'].freeze
27
+ end
28
+ ### follow httpclient configuration by nahi
29
+ # OpenSSL 0.9.8 default: "ALL:!ADH:!LOW:!EXP:!MD5:+SSLv2:@STRENGTH"
30
+ CIPHERS_DEFAULT = "ALL:!aNULL:!eNULL:!SSLv2".freeze # OpenSSL >1.0.0 default
31
+
32
+ METHODS_MAP = begin
33
+ map = {
34
+ TLSv1: OpenSSL::SSL::TLS1_VERSION,
35
+ TLSv1_1: OpenSSL::SSL::TLS1_1_VERSION,
36
+ TLSv1_2: OpenSSL::SSL::TLS1_2_VERSION
37
+ }
38
+ map[:'TLSv1_3'] = OpenSSL::SSL::TLS1_3_VERSION if defined?(OpenSSL::SSL::TLS1_3_VERSION)
39
+ MIN_MAX_AVAILABLE = true
40
+ map.freeze
41
+ rescue NameError
42
+ # ruby 2.4 doesn't have OpenSSL::SSL::TLSXXX constants and min_version=/max_version= methods
43
+ map = {
44
+ TLS1: :'TLSv1',
45
+ TLS1_1: :'TLSv1_1',
46
+ TLS1_2: :'TLSv1_2',
47
+ }.freeze
48
+ MIN_MAX_AVAILABLE = false
49
+ map
50
+ end
51
+ private_constant :METHODS_MAP
52
+
53
+ # Helper for old syntax/method support:
54
+ # ruby 2.4 uses ssl_version= but this method is now deprecated.
55
+ # min_version=/max_version= use 'TLS1_2' but ssl_version= uses 'TLSv1_2'
56
+ def set_version_to_context(ctx, version, min_version, max_version)
57
+ if MIN_MAX_AVAILABLE
58
+ case
59
+ when min_version.nil? && max_version.nil?
60
+ min_version = METHODS_MAP[version] || version
61
+ max_version = METHODS_MAP[version] || version
62
+ when min_version.nil? && max_version
63
+ raise Fluent::ConfigError, "When you set max_version, must set min_version together"
64
+ when min_version && max_version.nil?
65
+ raise Fluent::ConfigError, "When you set min_version, must set max_version together"
66
+ else
67
+ min_version = METHODS_MAP[min_version] || min_version
68
+ max_version = METHODS_MAP[max_version] || max_version
69
+ end
70
+ ctx.min_version = min_version
71
+ ctx.max_version = max_version
72
+ else
73
+ ctx.ssl_version = METHODS_MAP[version] || version
74
+ end
75
+
76
+ ctx
77
+ end
78
+ module_function :set_version_to_context
79
+
80
+ def set_version_to_options(opt, version, min_version, max_version)
81
+ if MIN_MAX_AVAILABLE
82
+ case
83
+ when min_version.nil? && max_version.nil?
84
+ min_version = METHODS_MAP[version] || version
85
+ max_version = METHODS_MAP[version] || version
86
+ when min_version.nil? && max_version
87
+ raise Fluent::ConfigError, "When you set max_version, must set min_version together"
88
+ when min_version && max_version.nil?
89
+ raise Fluent::ConfigError, "When you set min_version, must set max_version together"
90
+ else
91
+ min_version = METHODS_MAP[min_version] || min_version
92
+ max_version = METHODS_MAP[max_version] || max_version
93
+ end
94
+ opt[:min_version] = min_version
95
+ opt[:max_version] = max_version
96
+ else
97
+ opt[:ssl_version] = METHODS_MAP[version] || version
98
+ end
99
+
100
+ opt
101
+ end
102
+ module_function :set_version_to_options
103
+ end
104
+ end
105
+
@@ -0,0 +1,39 @@
1
+ #
2
+ # Fluentd
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ module Fluent
18
+ module UniqueId
19
+ def self.generate
20
+ now = Time.now.utc
21
+ u1 = ((now.to_i * 1000 * 1000 + now.usec) << 12 | rand(0xfff))
22
+ [u1 >> 32, u1 & 0xffffffff, rand(0xffffffff), rand(0xffffffff)].pack('NNNN')
23
+ end
24
+
25
+ def self.hex(unique_id)
26
+ unique_id.unpack1('H*')
27
+ end
28
+
29
+ module Mixin
30
+ def generate_unique_id
31
+ Fluent::UniqueId.generate
32
+ end
33
+
34
+ def dump_unique_id_hex(unique_id)
35
+ Fluent::UniqueId.hex(unique_id)
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,40 @@
1
+ #
2
+ # Fluentd
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ module Fluent
18
+ # VariableStore provides all plugins with the way to shared variable without using class variable
19
+ # it's for safe reloading mechanism
20
+ class VariableStore
21
+ @data = {}
22
+
23
+ class << self
24
+ def fetch_or_build(namespace, default_value: {})
25
+ @data[namespace] ||= default_value
26
+ end
27
+
28
+ def try_to_reset
29
+ @data, old = {}, @data
30
+
31
+ begin
32
+ yield
33
+ rescue
34
+ @data = old
35
+ raise
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,21 @@
1
+ #
2
+ # Fluentd
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ module Fluent
18
+
19
+ VERSION = '1.20.0'
20
+
21
+ end
@@ -0,0 +1,38 @@
1
+ #
2
+ # Fluentd
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'fluent/env'
18
+
19
+ module Fluent
20
+ module Win32API
21
+ require 'fiddle/import'
22
+ require 'fiddle/types'
23
+ extend Fiddle::Importer
24
+
25
+ if RUBY_PLATFORM.split('-')[-1] == "ucrt"
26
+ MSVCRT_DLL = 'ucrtbase.dll'
27
+ else
28
+ MSVCRT_DLL = 'msvcrt.dll'
29
+ end
30
+
31
+ dlload MSVCRT_DLL, "kernel32.dll"
32
+ include Fiddle::Win32Types
33
+
34
+ extern "intptr_t _get_osfhandle(int)"
35
+ extern "BOOL GetFileInformationByHandle(HANDLE, void *)"
36
+ extern "BOOL GetFileInformationByHandleEx(HANDLE, int, void *, DWORD)"
37
+ end if Fluent.windows?
38
+ end
@@ -0,0 +1,130 @@
1
+ #
2
+ # Fluentd
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ begin
18
+
19
+ require 'optparse'
20
+ require 'win32/daemon'
21
+ require 'win32/event'
22
+ require 'win32/registry'
23
+ require 'serverengine'
24
+
25
+ include Win32
26
+
27
+ op = OptionParser.new
28
+ opts = {service_name: nil}
29
+ op.on('--service-name NAME', "The name of the Windows Service") {|name|
30
+ opts[:service_name] = name
31
+ }
32
+ op.parse(ARGV)
33
+ if opts[:service_name] == nil
34
+ raise "Error: No Windows Service name set. Use '--service-name'"
35
+ end
36
+
37
+ def read_fluentdopt(service_name)
38
+ Win32::Registry::HKEY_LOCAL_MACHINE.open("SYSTEM\\CurrentControlSet\\Services\\#{service_name}") do |reg|
39
+ reg.read("fluentdopt")[1] rescue ""
40
+ end
41
+ end
42
+
43
+ def service_main_start(service_name)
44
+ ruby_path = ServerEngine.ruby_bin_path
45
+ rubybin_dir = ruby_path[0, ruby_path.rindex("/")]
46
+ opt = read_fluentdopt(service_name)
47
+ Process.spawn("\"#{rubybin_dir}/ruby.exe\" \"#{rubybin_dir}/fluentd\" #{opt} -x #{service_name}")
48
+ end
49
+
50
+ class FluentdService < Daemon
51
+ ERROR_WAIT_NO_CHILDREN = 128
52
+
53
+ @pid = 0
54
+ @service_name = ''
55
+
56
+ def initialize(service_name)
57
+ @service_name = service_name
58
+ end
59
+
60
+ def service_main
61
+ @pid = service_main_start(@service_name)
62
+ begin
63
+ loop do
64
+ sleep 5
65
+ break unless running?
66
+ raise Errno::ECHILD if Process.waitpid(@pid, Process::WNOHANG)
67
+ end
68
+ rescue Errno::ECHILD
69
+ @pid = 0
70
+ SetEvent(@@hStopEvent)
71
+ SetTheServiceStatus.call(SERVICE_STOPPED, ERROR_WAIT_NO_CHILDREN, 0, 0)
72
+ end
73
+ end
74
+
75
+ def service_stop
76
+ wait_supervisor_finished if @pid > 0
77
+ end
78
+
79
+ def service_paramchange
80
+ set_event("#{@service_name}_USR2")
81
+ end
82
+
83
+ def service_user_defined_control(code)
84
+ case code
85
+ when 128
86
+ set_event("#{@service_name}_HUP")
87
+ when 129
88
+ set_event("#{@service_name}_USR1")
89
+ when 130
90
+ set_event("#{@service_name}_CONT")
91
+ end
92
+ end
93
+
94
+ private
95
+
96
+ def set_event(event_name)
97
+ ev = Win32::Event.open(event_name)
98
+ ev.set
99
+ ev.close
100
+ end
101
+
102
+ def repeat_set_event_several_times_until_success(event_name)
103
+ retries = 0
104
+ max_retries = 10
105
+ delay_sec = 3
106
+
107
+ begin
108
+ set_event(event_name)
109
+ rescue Errno::ENOENT
110
+ # This error occurs when the supervisor process has not yet created the event.
111
+ # If STOP is immediately executed, this state will occur.
112
+ # Retry `set_event' to wait for the initialization of the supervisor.
113
+ retries += 1
114
+ raise if max_retries < retries
115
+ sleep(delay_sec)
116
+ retry
117
+ end
118
+ end
119
+
120
+ def wait_supervisor_finished
121
+ repeat_set_event_several_times_until_success(@service_name)
122
+ Process.waitpid(@pid)
123
+ end
124
+ end
125
+
126
+ FluentdService.new(opts[:service_name]).mainloop
127
+
128
+ rescue Exception => err
129
+ raise
130
+ end
@@ -0,0 +1,8 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
@@ -0,0 +1,43 @@
1
+ # <%= gem_name %>
2
+
3
+ [Fluentd](https://fluentd.org/) <%= type %> plugin to do something.
4
+
5
+ TODO: write description for you plugin.
6
+
7
+ ## Installation
8
+
9
+ ### RubyGems
10
+
11
+ ```
12
+ $ gem install <%= gem_name %>
13
+ ```
14
+
15
+ ### Bundler
16
+
17
+ Add following line to your Gemfile:
18
+
19
+ ```ruby
20
+ gem "<%= gem_name %>"
21
+ ```
22
+
23
+ And then execute:
24
+
25
+ ```
26
+ $ bundle
27
+ ```
28
+
29
+ ## Configuration
30
+
31
+ You can generate configuration template:
32
+
33
+ ```
34
+ $ fluent-plugin-config-format <%= type %> <%= name %>
35
+ ```
36
+
37
+ You can copy and paste generated documents here.
38
+
39
+ ## Copyright
40
+
41
+ * Copyright(c) <%= Date.today.year %>- <%= user_name %>
42
+ * License
43
+ * <%= @license.full_name %>
@@ -0,0 +1,13 @@
1
+ require "bundler"
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require "rake/testtask"
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs.push("lib", "test")
8
+ t.test_files = FileList["test/**/test_*.rb"]
9
+ t.verbose = true
10
+ t.warning = true
11
+ end
12
+
13
+ task default: [:test]
@@ -0,0 +1,28 @@
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ Gem::Specification.new do |spec|
5
+ spec.name = "<%= gem_name %>"
6
+ spec.version = "0.1.0"
7
+ spec.authors = ["<%= user_name %>"]
8
+ spec.email = ["<%= user_email %>"]
9
+
10
+ spec.summary = %q{TODO: Write a short summary, because Rubygems requires one.}
11
+ spec.description = %q{TODO: Write a longer description or delete this line.}
12
+ spec.homepage = "TODO: Put your gem's website or public repo URL here."
13
+ spec.license = "<%= @license.name %>"
14
+
15
+ spec.files = Dir.chdir(__dir__) do
16
+ `git ls-files -z`.split("\x0").reject do |f|
17
+ (File.expand_path(f) == __FILE__) ||
18
+ f.start_with?(*%w[test/ spec/ features/ .git .circleci appveyor Gemfile])
19
+ end
20
+ end
21
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
22
+ spec.require_paths = ["lib"]
23
+
24
+ spec.add_development_dependency "bundler", "~> <%= bundler_version %>"
25
+ spec.add_development_dependency "rake", "~> <%= rake_version %>"
26
+ spec.add_development_dependency "test-unit", "~> <%= test_unit_version %>"
27
+ spec.add_runtime_dependency "fluentd", [">= 0.14.10", "< 2"]
28
+ end
@@ -0,0 +1,14 @@
1
+ <%= preamble %>
2
+
3
+ require "fluent/plugin/filter"
4
+
5
+ module Fluent
6
+ module Plugin
7
+ class <%= class_name %> < Fluent::Plugin::Filter
8
+ Fluent::Plugin.register_filter("<%= plugin_name %>", self)
9
+
10
+ def filter(tag, time, record)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ <%= preamble %>
2
+
3
+ require "fluent/plugin/formatter"
4
+
5
+ module Fluent
6
+ module Plugin
7
+ class <%= class_name %> < Fluent::Plugin::Formatter
8
+ Fluent::Plugin.register_formatter("<%= name %>", self)
9
+
10
+ def format(tag, time, record)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ <%= preamble %>
2
+
3
+ require "fluent/plugin/input"
4
+
5
+ module Fluent
6
+ module Plugin
7
+ class <%= class_name %> < Fluent::Plugin::Input
8
+ Fluent::Plugin.register_input("<%= plugin_name %>", self)
9
+ end
10
+ end
11
+ end