fluent-plugin-cloudfront-log-optimized 0.2.0 → 0.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 41c311f36c1f68872f1ad935ea398c3f21b0eb2154ed2ded25934f2e70966ab6
4
- data.tar.gz: 0a6997034d17b4b5c02c66ac3dd8017cc842b40b3025bdcbb18c68719641536c
3
+ metadata.gz: cbbdcfd3c3c07b1d9d8f8f6dd0a16d13a788e6b87210f91b33e48536e5cf5ee9
4
+ data.tar.gz: 4418c4f338ca6bcd5718728ce79a6293263dece6e20d12472e65e0548601ad71
5
5
  SHA512:
6
- metadata.gz: 87aec8f7754aefe0a81b47a7beb255d6b1598213a73623117cad56206e5f7b263ac3118963db64e65b1906f947ab448fe2d3e70448d14a74f5aeb6e155b8fd13
7
- data.tar.gz: f77b92a998259fbf4b3c778b4032c87e3860b37355e10631cc01dce3c099f89bf094cab113c7e9f62875d8701b1910c17b289236addd726245eed3b6c7c7c905
6
+ metadata.gz: 9e44f3a6d3a2cf65a45a2cf5c106bbbec9c62376cc03477541c168f82b649698e1f9480ae03410528fe351481b91bde9ebf42880ef07191a1bedf3197d34e8a7
7
+ data.tar.gz: ce1791412ff7169171be180d79e350bddf336e06fa3801c9ed5138513d656ccdb06f0c621a589e445ae59fda1f6262d0cd53e7fe9309678981580ae8822f2cc3
@@ -0,0 +1,42 @@
1
+ ARG RUBY_VERSION=2.7.6
2
+ ARG RUBYGEMS_UPDATE_VERSION=1.8.30
3
+ ARG BUNDLER_VERSION=1.7.15
4
+
5
+ FROM ruby:$RUBY_VERSION-slim
6
+ LABEL maintainer="k.j.wierenga@kerkdienstgemist.nl"
7
+
8
+ # Common dependencies
9
+ # Install apt based dependencies required to run Rails as
10
+ # well as RubyGems. As the Ruby image itself is based on a
11
+ # Debian image, we use apt-get to install those.
12
+ RUN apt-get update -qq \
13
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
14
+ build-essential \
15
+ git \
16
+ && apt-get clean \
17
+ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
18
+ && truncate -s 0 /var/log/*log
19
+
20
+ # Configure bundler
21
+ ENV LANG=C.UTF-8 \
22
+ BUNDLE_JOBS=4 \
23
+ BUNDLE_RETRY=3
24
+
25
+ # Uncomment this line if you store Bundler settings in the project's root
26
+ # ENV BUNDLE_APP_CONFIG=.bundle
27
+
28
+ # Uncomment this line if you want to run binstubs without prefixing with `bin/` or `bundle exec`
29
+ # ENV PATH /app/bin:$PATH
30
+
31
+ # Upgrade RubyGems and install required Bundler version
32
+ # ARG BUNDLER_VERSION
33
+ # ARG RUBYGEMS_UPDATE_VERSION
34
+ # RUN gem uninstall bundler && \
35
+ # gem update --system $RUBYGEMS_UPDATE_VERSION && \
36
+ # gem install bundler:$BUNDLER_VERSION
37
+
38
+ # Configure the main working directory. This is the base
39
+ # directory used in any further RUN, COPY, and ENTRYPOINT commands.
40
+ ENV WORKDIR=/app
41
+ RUN mkdir -p $WORKDIR
42
+ WORKDIR $WORKDIR
@@ -0,0 +1,21 @@
1
+ // For format details, see https://aka.ms/devcontainer.json. For config options, see the
2
+ // README at: https://github.com/devcontainers/templates/tree/main/src/ruby
3
+ {
4
+ "name": "Ruby",
5
+ // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6
+ // "image": "ruby:2.7.6-slim"
7
+ "build": {
8
+ // Path is relative to the devcontainer.json file.
9
+ "dockerfile": "Dockerfile"
10
+ }
11
+ // Features to add to the dev container. More info: https://containers.dev/features.
12
+ // "features": {},
13
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
14
+ // "forwardPorts": [],
15
+ // Use 'postCreateCommand' to run commands after the container is created.
16
+ // "postCreateCommand": "ruby --version",
17
+ // Configure tool-specific properties.
18
+ // "customizations": {},
19
+ // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
20
+ // "remoteUser": "root"
21
+ }
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## Release 0.2.1
2
+ Merge pull request #1 from kdgm/feature/fix/escaped-tab-handling
3
+
1
4
  ## Release 0.2.0 (kjwierenga)
2
5
  Merge branch 'feature/enh/rename-to-optimized' into develop
3
6
  Merge branch 'feature/fix/process-log-files-in-last-modified-order' into develop
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "fluent-plugin-cloudfront-log-optimized"
7
- spec.version = "0.2.0"
7
+ spec.version = "0.2.1"
8
8
  spec.authors = ["kubihee", "lenfree", "kjwierenga"]
9
9
  spec.email = ["kubihie@gmail.com", "lenfree.yeung@gmail.com", "k.j.wierenga@gmail.com"]
10
10
 
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.add_dependency "fluentd", ">= 0.14.0", "< 2"
21
21
  spec.add_dependency "aws-sdk-s3", "~> 1"
22
22
  spec.add_dependency "aws-sdk-sqs", "~> 1"
23
- spec.add_development_dependency "bundler", "~> 1.7"
23
+ spec.add_development_dependency "bundler", "~> 2.0"
24
24
  spec.add_development_dependency "rake", "~> 12"
25
25
  spec.add_development_dependency 'test-unit', "~> 2"
26
26
  end
@@ -134,16 +134,18 @@ class Fluent::Cloudfront_LogInput < Fluent::Input
134
134
 
135
135
  record = [
136
136
  @fields,
137
- CGI.unescape(line).strip.split("\t") # hoge%2520fuga -> hoge%20fuga
137
+ CGI.unescape(line.gsub('%09', ' ')).strip.split("\t") # don't unescape tab (%09)
138
138
  ].transpose.to_h
139
139
 
140
140
  timestamp = if @parse_date_time
141
- Time.iso8601("#{record['date']}T#{record['time']}+00:00").to_i
142
- else
143
- Time.now.to_i
144
- end
141
+ Time.iso8601("#{record['date']}T#{record['time']}+00:00").to_i
142
+ else
143
+ Time.now.to_i
144
+ end
145
145
 
146
146
  router.emit(@tag, timestamp, record)
147
+
148
+ record # for testing purposes
147
149
  end
148
150
 
149
151
  def process_content(content)
@@ -105,4 +105,22 @@ class Cloudfront_LogInputTest < Test::Unit::TestCase
105
105
  end
106
106
  end
107
107
 
108
+ sub_test_case "regression test for %09 (tab) in log lines" do
109
+ test "log line with %09 in user-agent is parsed correctly" do
110
+ driver = create_driver(MINIMAL_CONFIG)
111
+ instance = driver.instance
112
+
113
+ version_line = "#Version: 1.0"
114
+ fields_line = "#Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-result-type x-edge-request-id x-host-header cs-protocol cs-bytes time-taken x-forwarded-for ssl-protocol ssl-cipher x-edge-response-result-type cs-protocol-version fle-status fle-encrypted-fields c-port time-to-first-byte x-edge-detailed-result-type sc-content-type sc-content-len sc-range-start sc-range-end"
115
+ regression_line_with_excaped_tab = "2025-10-12 09:52:59 MRS53-P3 1400 150.107.232.112 POST d2p1j3y3mcauy0.cloudfront.net /plugin/add 403 - Mozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_15_7)%20AppleWebKit/605.1.15%20(KHTML,%20like%20Gecko)%20Version/17.3.1%20Safari/605.1.1%0920.51 - - Error WcPCNG0WyL4BbXhEXq4AQulhrqte2TPUHt1Uz-iqcSwtx1L6ORdTOA== livecdn.kerkdienstgemist.nl https 9760 0.124 - TLSv1.3 TLS_AES_128_GCM_SHA256 Error HTTP/1.1 - - 50294 0.000 InvalidRequestMethod text/html 1053 - -"
116
+
117
+ # Prime the processor with version and fields lines
118
+ instance.process_line(version_line)
119
+ instance.process_line(fields_line)
120
+ emitted_event = instance.process_line(regression_line_with_excaped_tab)
121
+
122
+ assert_equal(emitted_event['cs(User-Agent)'], "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.3.1 Safari/605.1.1 20.51")
123
+ end
124
+ end
125
+
108
126
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-cloudfront-log-optimized
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - kubihee
8
8
  - lenfree
9
9
  - kjwierenga
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-02-06 00:00:00.000000000 Z
13
+ date: 2025-10-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: fluentd
@@ -66,14 +66,14 @@ dependencies:
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '1.7'
69
+ version: '2.0'
70
70
  type: :development
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '1.7'
76
+ version: '2.0'
77
77
  - !ruby/object:Gem::Dependency
78
78
  name: rake
79
79
  requirement: !ruby/object:Gem::Requirement
@@ -111,6 +111,8 @@ executables: []
111
111
  extensions: []
112
112
  extra_rdoc_files: []
113
113
  files:
114
+ - ".devcontainer/Dockerfile"
115
+ - ".devcontainer/devcontainer.json"
114
116
  - ".gitignore"
115
117
  - CHANGELOG.md
116
118
  - Gemfile
@@ -124,7 +126,7 @@ files:
124
126
  homepage: https://github.com/kjwierenga/fluent-plugin-cloudfront-log-optimized
125
127
  licenses: []
126
128
  metadata: {}
127
- post_install_message:
129
+ post_install_message:
128
130
  rdoc_options: []
129
131
  require_paths:
130
132
  - lib
@@ -139,8 +141,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
141
  - !ruby/object:Gem::Version
140
142
  version: '0'
141
143
  requirements: []
142
- rubygems_version: 3.0.8
143
- signing_key:
144
+ rubygems_version: 3.1.6
145
+ signing_key:
144
146
  specification_version: 4
145
147
  summary: AWS CloudFront log input plugin optimized for large log files. Credit to
146
148
  kubihie and lenfree.