logstruct 0.1.2 → 0.1.4
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 +4 -4
- data/CHANGELOG.md +16 -1
- data/README.md +4 -6
- data/lib/log_struct/concerns/configuration.rb +2 -2
- data/lib/log_struct/config_struct/integrations.rb +5 -0
- data/lib/log_struct/enums/log_field.rb +12 -1
- data/lib/log_struct/integrations/action_mailer/error_handling.rb +121 -27
- data/lib/log_struct/integrations/action_mailer/event_logging.rb +30 -14
- data/lib/log_struct/integrations/action_mailer/metadata_collection.rb +18 -24
- data/lib/log_struct/integrations/action_mailer.rb +13 -6
- data/lib/log_struct/integrations/active_job/log_subscriber.rb +2 -2
- data/lib/log_struct/integrations/active_storage.rb +8 -8
- data/lib/log_struct/integrations/ahoy.rb +2 -3
- data/lib/log_struct/integrations/carrierwave.rb +8 -10
- data/lib/log_struct/integrations/good_job/log_subscriber.rb +5 -5
- data/lib/log_struct/integrations/good_job/logger.rb +2 -6
- data/lib/log_struct/integrations/good_job.rb +1 -1
- data/lib/log_struct/integrations/host_authorization.rb +27 -36
- data/lib/log_struct/integrations/lograge.rb +1 -1
- data/lib/log_struct/integrations/rack_error_handler/middleware.rb +54 -16
- data/lib/log_struct/integrations/rack_error_handler.rb +3 -3
- data/lib/log_struct/integrations/shrine.rb +21 -24
- data/lib/log_struct/integrations/sidekiq/logger.rb +8 -1
- data/lib/log_struct/integrations.rb +25 -5
- data/lib/log_struct/log/action_mailer/delivered.rb +14 -49
- data/lib/log_struct/log/action_mailer/delivery.rb +14 -49
- data/lib/log_struct/log/action_mailer/error.rb +72 -0
- data/lib/log_struct/log/action_mailer.rb +15 -2
- data/lib/log_struct/log/active_job/enqueue.rb +9 -73
- data/lib/log_struct/log/active_job/finish.rb +9 -76
- data/lib/log_struct/log/active_job/schedule.rb +9 -73
- data/lib/log_struct/log/active_job/start.rb +9 -76
- data/lib/log_struct/log/active_job.rb +2 -2
- data/lib/log_struct/log/active_model_serializers.rb +5 -45
- data/lib/log_struct/log/active_storage/delete.rb +8 -46
- data/lib/log_struct/log/active_storage/download.rb +9 -55
- data/lib/log_struct/log/active_storage/exist.rb +9 -49
- data/lib/log_struct/log/active_storage/metadata.rb +9 -49
- data/lib/log_struct/log/active_storage/stream.rb +9 -49
- data/lib/log_struct/log/active_storage/upload.rb +9 -64
- data/lib/log_struct/log/active_storage/url.rb +9 -49
- data/lib/log_struct/log/active_storage.rb +2 -2
- data/lib/log_struct/log/ahoy.rb +5 -43
- data/lib/log_struct/log/carrierwave/delete.rb +15 -69
- data/lib/log_struct/log/carrierwave/download.rb +15 -77
- data/lib/log_struct/log/carrierwave/upload.rb +15 -83
- data/lib/log_struct/log/carrierwave.rb +13 -4
- data/lib/log_struct/log/dotenv/load.rb +5 -33
- data/lib/log_struct/log/dotenv/restore.rb +5 -33
- data/lib/log_struct/log/dotenv/save.rb +5 -33
- data/lib/log_struct/log/dotenv/update.rb +5 -33
- data/lib/log_struct/log/error.rb +7 -40
- data/lib/log_struct/log/good_job/enqueue.rb +9 -72
- data/lib/log_struct/log/good_job/error.rb +9 -89
- data/lib/log_struct/log/good_job/finish.rb +9 -78
- data/lib/log_struct/log/good_job/log.rb +11 -75
- data/lib/log_struct/log/good_job/schedule.rb +7 -78
- data/lib/log_struct/log/good_job/start.rb +7 -78
- data/lib/log_struct/log/good_job.rb +2 -2
- data/lib/log_struct/log/plain.rb +5 -32
- data/lib/log_struct/log/puma/shutdown.rb +5 -32
- data/lib/log_struct/log/puma/start.rb +5 -56
- data/lib/log_struct/log/request.rb +7 -90
- data/lib/log_struct/log/security/blocked_host.rb +12 -73
- data/lib/log_struct/log/security/csrf_violation.rb +6 -67
- data/lib/log_struct/log/security/ip_spoof.rb +6 -73
- data/lib/log_struct/log/shrine/delete.rb +6 -41
- data/lib/log_struct/log/shrine/download.rb +6 -44
- data/lib/log_struct/log/shrine/exist.rb +6 -44
- data/lib/log_struct/log/shrine/metadata.rb +8 -46
- data/lib/log_struct/log/shrine/upload.rb +6 -53
- data/lib/log_struct/log/sidekiq.rb +5 -42
- data/lib/log_struct/log/sql.rb +5 -65
- data/lib/log_struct/log.rb +2 -2
- data/lib/log_struct/monkey_patches/active_support/tagged_logging/formatter.rb +12 -1
- data/lib/log_struct/railtie.rb +11 -24
- data/lib/log_struct/semantic_logger/concerns/log_methods.rb +100 -0
- data/lib/log_struct/semantic_logger/logger.rb +46 -15
- data/lib/log_struct/semantic_logger/setup.rb +11 -7
- data/lib/log_struct/shared/{shared/add_request_fields.rb → add_request_fields.rb} +2 -2
- data/lib/log_struct/shared/{shared/merge_additional_data_fields.rb → merge_additional_data_fields.rb} +1 -1
- data/lib/log_struct/shared/{shared/serialize_common.rb → serialize_common.rb} +9 -3
- data/lib/log_struct/{log/shared → shared}/serialize_common_public.rb +2 -2
- data/lib/log_struct/version.rb +1 -1
- data/lib/log_struct.rb +4 -1
- data/logstruct.gemspec +1 -1
- metadata +9 -11
- data/lib/log_struct/integrations/action_mailer/callbacks.rb +0 -100
- data/lib/log_struct/log/shared/add_request_fields.rb +0 -4
- data/lib/log_struct/log/shared/merge_additional_data_fields.rb +0 -4
- data/lib/log_struct/log/shared/serialize_common.rb +0 -4
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
require "log_struct/shared/interfaces/common_fields"
|
|
10
10
|
require "log_struct/shared/interfaces/additional_data_field"
|
|
11
11
|
require "log_struct/shared/interfaces/request_fields"
|
|
12
|
-
require "log_struct/shared/
|
|
13
|
-
require "log_struct/shared/
|
|
14
|
-
require "log_struct/shared/
|
|
12
|
+
require "log_struct/shared/serialize_common"
|
|
13
|
+
require "log_struct/shared/merge_additional_data_fields"
|
|
14
|
+
require "log_struct/shared/add_request_fields"
|
|
15
15
|
require_relative "../../enums/source"
|
|
16
16
|
require_relative "../../enums/event"
|
|
17
17
|
require_relative "../../enums/level"
|
|
@@ -21,11 +21,6 @@ module LogStruct
|
|
|
21
21
|
module Log
|
|
22
22
|
class Puma
|
|
23
23
|
class Start < T::Struct
|
|
24
|
-
# typed: strict
|
|
25
|
-
# frozen_string_literal: true
|
|
26
|
-
|
|
27
|
-
extend T::Sig
|
|
28
|
-
|
|
29
24
|
extend T::Sig
|
|
30
25
|
|
|
31
26
|
# Shared/common fields
|
|
@@ -50,42 +45,13 @@ module LogStruct
|
|
|
50
45
|
const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
|
|
51
46
|
include LogStruct::Log::Shared::MergeAdditionalDataFields
|
|
52
47
|
|
|
53
|
-
# Request fields (optional)
|
|
54
|
-
|
|
55
48
|
# Serialize shared fields
|
|
56
49
|
include LogStruct::Log::Interfaces::CommonFields
|
|
57
50
|
include LogStruct::Log::Shared::SerializeCommon
|
|
58
51
|
|
|
59
52
|
sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
|
|
60
|
-
def
|
|
61
|
-
{}
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
sig {
|
|
65
|
-
params(mode: T.untyped,
|
|
66
|
-
puma_version: T.untyped,
|
|
67
|
-
puma_codename: T.untyped,
|
|
68
|
-
ruby_version: T.untyped,
|
|
69
|
-
min_threads: T.untyped,
|
|
70
|
-
max_threads: T.untyped,
|
|
71
|
-
environment: T.untyped,
|
|
72
|
-
process_id: T.untyped,
|
|
73
|
-
listening_addresses: T.untyped,
|
|
74
|
-
additional_data: T.untyped,
|
|
75
|
-
timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
|
|
76
|
-
}
|
|
77
|
-
def self.build(mode: nil,
|
|
78
|
-
puma_version: nil,
|
|
79
|
-
puma_codename: nil,
|
|
80
|
-
ruby_version: nil,
|
|
81
|
-
min_threads: nil,
|
|
82
|
-
max_threads: nil,
|
|
83
|
-
environment: nil,
|
|
84
|
-
process_id: nil,
|
|
85
|
-
listening_addresses: nil,
|
|
86
|
-
additional_data: nil,
|
|
87
|
-
timestamp: Time.now)
|
|
88
|
-
h = base_hash
|
|
53
|
+
def to_h
|
|
54
|
+
h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
|
|
89
55
|
h[LogField::Mode] = mode unless mode.nil?
|
|
90
56
|
h[LogField::PumaVersion] = puma_version unless puma_version.nil?
|
|
91
57
|
h[LogField::PumaCodename] = puma_codename unless puma_codename.nil?
|
|
@@ -97,23 +63,6 @@ module LogStruct
|
|
|
97
63
|
h[LogField::ListeningAddresses] = listening_addresses unless listening_addresses.nil?
|
|
98
64
|
h
|
|
99
65
|
end
|
|
100
|
-
|
|
101
|
-
sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
|
|
102
|
-
def to_h
|
|
103
|
-
self.class.build(
|
|
104
|
-
mode: mode,
|
|
105
|
-
puma_version: puma_version,
|
|
106
|
-
puma_codename: puma_codename,
|
|
107
|
-
ruby_version: ruby_version,
|
|
108
|
-
min_threads: min_threads,
|
|
109
|
-
max_threads: max_threads,
|
|
110
|
-
environment: environment,
|
|
111
|
-
process_id: process_id,
|
|
112
|
-
listening_addresses: listening_addresses,
|
|
113
|
-
additional_data: additional_data,
|
|
114
|
-
timestamp: timestamp
|
|
115
|
-
)
|
|
116
|
-
end
|
|
117
66
|
end
|
|
118
67
|
end
|
|
119
68
|
end
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
require "log_struct/shared/interfaces/common_fields"
|
|
10
10
|
require "log_struct/shared/interfaces/additional_data_field"
|
|
11
11
|
require "log_struct/shared/interfaces/request_fields"
|
|
12
|
-
require "log_struct/shared/
|
|
13
|
-
require "log_struct/shared/
|
|
14
|
-
require "log_struct/shared/
|
|
12
|
+
require "log_struct/shared/serialize_common"
|
|
13
|
+
require "log_struct/shared/merge_additional_data_fields"
|
|
14
|
+
require "log_struct/shared/add_request_fields"
|
|
15
15
|
require_relative "../enums/source"
|
|
16
16
|
require_relative "../enums/event"
|
|
17
17
|
require_relative "../enums/level"
|
|
@@ -20,11 +20,6 @@ require_relative "../enums/log_field"
|
|
|
20
20
|
module LogStruct
|
|
21
21
|
module Log
|
|
22
22
|
class Request < T::Struct
|
|
23
|
-
# typed: strict
|
|
24
|
-
# frozen_string_literal: true
|
|
25
|
-
|
|
26
|
-
extend T::Sig
|
|
27
|
-
|
|
28
23
|
extend T::Sig
|
|
29
24
|
|
|
30
25
|
# Shared/common fields
|
|
@@ -41,7 +36,7 @@ module LogStruct
|
|
|
41
36
|
const :request_id, T.nilable(String), default: nil
|
|
42
37
|
|
|
43
38
|
# Event-specific fields
|
|
44
|
-
const :format, T.nilable(
|
|
39
|
+
const :format, T.nilable(Symbol), default: nil
|
|
45
40
|
const :controller, T.nilable(String), default: nil
|
|
46
41
|
const :action, T.nilable(String), default: nil
|
|
47
42
|
const :status, T.nilable(Integer), default: nil
|
|
@@ -50,8 +45,6 @@ module LogStruct
|
|
|
50
45
|
const :database, T.nilable(Float), default: nil
|
|
51
46
|
const :params, T.nilable(T::Hash[Symbol, T.untyped]), default: nil
|
|
52
47
|
|
|
53
|
-
# Additional data
|
|
54
|
-
|
|
55
48
|
# Request fields (optional)
|
|
56
49
|
include LogStruct::Log::Interfaces::RequestFields
|
|
57
50
|
|
|
@@ -60,70 +53,15 @@ module LogStruct
|
|
|
60
53
|
include LogStruct::Log::Shared::SerializeCommon
|
|
61
54
|
include LogStruct::Log::Shared::AddRequestFields
|
|
62
55
|
|
|
63
|
-
sig {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
source_ip: T.untyped,
|
|
67
|
-
user_agent: T.untyped,
|
|
68
|
-
referer: T.untyped,
|
|
69
|
-
request_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
|
|
70
|
-
}
|
|
71
|
-
def self.base_hash(path: nil,
|
|
72
|
-
http_method: nil,
|
|
73
|
-
source_ip: nil,
|
|
74
|
-
user_agent: nil,
|
|
75
|
-
referer: nil,
|
|
76
|
-
request_id: nil)
|
|
77
|
-
h = {}
|
|
56
|
+
sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
|
|
57
|
+
def to_h
|
|
58
|
+
h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
|
|
78
59
|
h[LogField::Path] = path unless path.nil?
|
|
79
60
|
h[LogField::HttpMethod] = http_method unless http_method.nil?
|
|
80
61
|
h[LogField::SourceIp] = source_ip unless source_ip.nil?
|
|
81
62
|
h[LogField::UserAgent] = user_agent unless user_agent.nil?
|
|
82
63
|
h[LogField::Referer] = referer unless referer.nil?
|
|
83
64
|
h[LogField::RequestId] = request_id unless request_id.nil?
|
|
84
|
-
h
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
sig {
|
|
88
|
-
params(path: T.untyped,
|
|
89
|
-
http_method: T.untyped,
|
|
90
|
-
source_ip: T.untyped,
|
|
91
|
-
user_agent: T.untyped,
|
|
92
|
-
referer: T.untyped,
|
|
93
|
-
request_id: T.untyped,
|
|
94
|
-
format: T.untyped,
|
|
95
|
-
controller: T.untyped,
|
|
96
|
-
action: T.untyped,
|
|
97
|
-
status: T.untyped,
|
|
98
|
-
duration_ms: T.untyped,
|
|
99
|
-
view: T.untyped,
|
|
100
|
-
database: T.untyped,
|
|
101
|
-
params: T.untyped,
|
|
102
|
-
additional_data: T.untyped,
|
|
103
|
-
timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
|
|
104
|
-
}
|
|
105
|
-
def self.build(path: nil,
|
|
106
|
-
http_method: nil,
|
|
107
|
-
source_ip: nil,
|
|
108
|
-
user_agent: nil,
|
|
109
|
-
referer: nil,
|
|
110
|
-
request_id: nil,
|
|
111
|
-
format: nil,
|
|
112
|
-
controller: nil,
|
|
113
|
-
action: nil,
|
|
114
|
-
status: nil,
|
|
115
|
-
duration_ms: nil,
|
|
116
|
-
view: nil,
|
|
117
|
-
database: nil,
|
|
118
|
-
params: nil,
|
|
119
|
-
additional_data: nil,
|
|
120
|
-
timestamp: Time.now)
|
|
121
|
-
h = base_hash(path: path,
|
|
122
|
-
http_method: http_method,
|
|
123
|
-
source_ip: source_ip,
|
|
124
|
-
user_agent: user_agent,
|
|
125
|
-
referer: referer,
|
|
126
|
-
request_id: request_id)
|
|
127
65
|
h[LogField::Format] = format unless format.nil?
|
|
128
66
|
h[LogField::Controller] = controller unless controller.nil?
|
|
129
67
|
h[LogField::Action] = action unless action.nil?
|
|
@@ -134,27 +72,6 @@ module LogStruct
|
|
|
134
72
|
h[LogField::Params] = params unless params.nil?
|
|
135
73
|
h
|
|
136
74
|
end
|
|
137
|
-
|
|
138
|
-
sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
|
|
139
|
-
def to_h
|
|
140
|
-
self.class.build(
|
|
141
|
-
path: path,
|
|
142
|
-
http_method: http_method,
|
|
143
|
-
source_ip: source_ip,
|
|
144
|
-
user_agent: user_agent,
|
|
145
|
-
referer: referer,
|
|
146
|
-
request_id: request_id,
|
|
147
|
-
format: format,
|
|
148
|
-
controller: controller,
|
|
149
|
-
action: action,
|
|
150
|
-
status: status,
|
|
151
|
-
duration_ms: duration_ms,
|
|
152
|
-
view: view,
|
|
153
|
-
database: database,
|
|
154
|
-
params: params,
|
|
155
|
-
timestamp: timestamp
|
|
156
|
-
)
|
|
157
|
-
end
|
|
158
75
|
end
|
|
159
76
|
end
|
|
160
77
|
end
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
require "log_struct/shared/interfaces/common_fields"
|
|
10
10
|
require "log_struct/shared/interfaces/additional_data_field"
|
|
11
11
|
require "log_struct/shared/interfaces/request_fields"
|
|
12
|
-
require "log_struct/shared/
|
|
13
|
-
require "log_struct/shared/
|
|
14
|
-
require "log_struct/shared/
|
|
12
|
+
require "log_struct/shared/serialize_common"
|
|
13
|
+
require "log_struct/shared/merge_additional_data_fields"
|
|
14
|
+
require "log_struct/shared/add_request_fields"
|
|
15
15
|
require_relative "../../enums/source"
|
|
16
16
|
require_relative "../../enums/event"
|
|
17
17
|
require_relative "../../enums/level"
|
|
@@ -21,11 +21,6 @@ module LogStruct
|
|
|
21
21
|
module Log
|
|
22
22
|
class Security
|
|
23
23
|
class BlockedHost < T::Struct
|
|
24
|
-
# typed: strict
|
|
25
|
-
# frozen_string_literal: true
|
|
26
|
-
|
|
27
|
-
extend T::Sig
|
|
28
|
-
|
|
29
24
|
extend T::Sig
|
|
30
25
|
|
|
31
26
|
# Shared/common fields
|
|
@@ -45,6 +40,9 @@ module LogStruct
|
|
|
45
40
|
const :message, T.nilable(String), default: nil
|
|
46
41
|
const :blocked_host, T.nilable(String), default: nil
|
|
47
42
|
const :blocked_hosts, T.nilable(T::Array[String]), default: nil
|
|
43
|
+
const :x_forwarded_for, T.nilable(String), default: nil
|
|
44
|
+
const :allowed_hosts, T.nilable(T::Array[String]), default: nil
|
|
45
|
+
const :allow_ip_hosts, T.nilable(T::Boolean), default: nil
|
|
48
46
|
|
|
49
47
|
# Additional data
|
|
50
48
|
include LogStruct::Log::Interfaces::AdditionalDataField
|
|
@@ -59,82 +57,23 @@ module LogStruct
|
|
|
59
57
|
include LogStruct::Log::Shared::SerializeCommon
|
|
60
58
|
include LogStruct::Log::Shared::AddRequestFields
|
|
61
59
|
|
|
62
|
-
sig {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
source_ip: T.untyped,
|
|
66
|
-
user_agent: T.untyped,
|
|
67
|
-
referer: T.untyped,
|
|
68
|
-
request_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
|
|
69
|
-
}
|
|
70
|
-
def self.base_hash(path: nil,
|
|
71
|
-
http_method: nil,
|
|
72
|
-
source_ip: nil,
|
|
73
|
-
user_agent: nil,
|
|
74
|
-
referer: nil,
|
|
75
|
-
request_id: nil)
|
|
76
|
-
h = {}
|
|
60
|
+
sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
|
|
61
|
+
def to_h
|
|
62
|
+
h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
|
|
77
63
|
h[LogField::Path] = path unless path.nil?
|
|
78
64
|
h[LogField::HttpMethod] = http_method unless http_method.nil?
|
|
79
65
|
h[LogField::SourceIp] = source_ip unless source_ip.nil?
|
|
80
66
|
h[LogField::UserAgent] = user_agent unless user_agent.nil?
|
|
81
67
|
h[LogField::Referer] = referer unless referer.nil?
|
|
82
68
|
h[LogField::RequestId] = request_id unless request_id.nil?
|
|
83
|
-
h
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
sig {
|
|
87
|
-
params(path: T.untyped,
|
|
88
|
-
http_method: T.untyped,
|
|
89
|
-
source_ip: T.untyped,
|
|
90
|
-
user_agent: T.untyped,
|
|
91
|
-
referer: T.untyped,
|
|
92
|
-
request_id: T.untyped,
|
|
93
|
-
message: T.untyped,
|
|
94
|
-
blocked_host: T.untyped,
|
|
95
|
-
blocked_hosts: T.untyped,
|
|
96
|
-
additional_data: T.untyped,
|
|
97
|
-
timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
|
|
98
|
-
}
|
|
99
|
-
def self.build(path: nil,
|
|
100
|
-
http_method: nil,
|
|
101
|
-
source_ip: nil,
|
|
102
|
-
user_agent: nil,
|
|
103
|
-
referer: nil,
|
|
104
|
-
request_id: nil,
|
|
105
|
-
message: nil,
|
|
106
|
-
blocked_host: nil,
|
|
107
|
-
blocked_hosts: nil,
|
|
108
|
-
additional_data: nil,
|
|
109
|
-
timestamp: Time.now)
|
|
110
|
-
h = base_hash(path: path,
|
|
111
|
-
http_method: http_method,
|
|
112
|
-
source_ip: source_ip,
|
|
113
|
-
user_agent: user_agent,
|
|
114
|
-
referer: referer,
|
|
115
|
-
request_id: request_id)
|
|
116
69
|
h[LogField::Message] = message unless message.nil?
|
|
117
70
|
h[LogField::BlockedHost] = blocked_host unless blocked_host.nil?
|
|
118
71
|
h[LogField::BlockedHosts] = blocked_hosts unless blocked_hosts.nil?
|
|
72
|
+
h[LogField::XForwardedFor] = x_forwarded_for unless x_forwarded_for.nil?
|
|
73
|
+
h[LogField::AllowedHosts] = allowed_hosts unless allowed_hosts.nil?
|
|
74
|
+
h[LogField::AllowIpHosts] = allow_ip_hosts unless allow_ip_hosts.nil?
|
|
119
75
|
h
|
|
120
76
|
end
|
|
121
|
-
|
|
122
|
-
sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
|
|
123
|
-
def to_h
|
|
124
|
-
self.class.build(
|
|
125
|
-
path: path,
|
|
126
|
-
http_method: http_method,
|
|
127
|
-
source_ip: source_ip,
|
|
128
|
-
user_agent: user_agent,
|
|
129
|
-
referer: referer,
|
|
130
|
-
request_id: request_id,
|
|
131
|
-
message: message,
|
|
132
|
-
blocked_host: blocked_host,
|
|
133
|
-
blocked_hosts: blocked_hosts,
|
|
134
|
-
additional_data: additional_data,
|
|
135
|
-
timestamp: timestamp
|
|
136
|
-
)
|
|
137
|
-
end
|
|
138
77
|
end
|
|
139
78
|
end
|
|
140
79
|
end
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
require "log_struct/shared/interfaces/common_fields"
|
|
10
10
|
require "log_struct/shared/interfaces/additional_data_field"
|
|
11
11
|
require "log_struct/shared/interfaces/request_fields"
|
|
12
|
-
require "log_struct/shared/
|
|
13
|
-
require "log_struct/shared/
|
|
14
|
-
require "log_struct/shared/
|
|
12
|
+
require "log_struct/shared/serialize_common"
|
|
13
|
+
require "log_struct/shared/merge_additional_data_fields"
|
|
14
|
+
require "log_struct/shared/add_request_fields"
|
|
15
15
|
require_relative "../../enums/source"
|
|
16
16
|
require_relative "../../enums/event"
|
|
17
17
|
require_relative "../../enums/level"
|
|
@@ -21,11 +21,6 @@ module LogStruct
|
|
|
21
21
|
module Log
|
|
22
22
|
class Security
|
|
23
23
|
class CSRFViolation < T::Struct
|
|
24
|
-
# typed: strict
|
|
25
|
-
# frozen_string_literal: true
|
|
26
|
-
|
|
27
|
-
extend T::Sig
|
|
28
|
-
|
|
29
24
|
extend T::Sig
|
|
30
25
|
|
|
31
26
|
# Shared/common fields
|
|
@@ -57,74 +52,18 @@ module LogStruct
|
|
|
57
52
|
include LogStruct::Log::Shared::SerializeCommon
|
|
58
53
|
include LogStruct::Log::Shared::AddRequestFields
|
|
59
54
|
|
|
60
|
-
sig {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
source_ip: T.untyped,
|
|
64
|
-
user_agent: T.untyped,
|
|
65
|
-
referer: T.untyped,
|
|
66
|
-
request_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
|
|
67
|
-
}
|
|
68
|
-
def self.base_hash(path: nil,
|
|
69
|
-
http_method: nil,
|
|
70
|
-
source_ip: nil,
|
|
71
|
-
user_agent: nil,
|
|
72
|
-
referer: nil,
|
|
73
|
-
request_id: nil)
|
|
74
|
-
h = {}
|
|
55
|
+
sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
|
|
56
|
+
def to_h
|
|
57
|
+
h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
|
|
75
58
|
h[LogField::Path] = path unless path.nil?
|
|
76
59
|
h[LogField::HttpMethod] = http_method unless http_method.nil?
|
|
77
60
|
h[LogField::SourceIp] = source_ip unless source_ip.nil?
|
|
78
61
|
h[LogField::UserAgent] = user_agent unless user_agent.nil?
|
|
79
62
|
h[LogField::Referer] = referer unless referer.nil?
|
|
80
63
|
h[LogField::RequestId] = request_id unless request_id.nil?
|
|
81
|
-
h
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
sig {
|
|
85
|
-
params(path: T.untyped,
|
|
86
|
-
http_method: T.untyped,
|
|
87
|
-
source_ip: T.untyped,
|
|
88
|
-
user_agent: T.untyped,
|
|
89
|
-
referer: T.untyped,
|
|
90
|
-
request_id: T.untyped,
|
|
91
|
-
message: T.untyped,
|
|
92
|
-
additional_data: T.untyped,
|
|
93
|
-
timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
|
|
94
|
-
}
|
|
95
|
-
def self.build(path: nil,
|
|
96
|
-
http_method: nil,
|
|
97
|
-
source_ip: nil,
|
|
98
|
-
user_agent: nil,
|
|
99
|
-
referer: nil,
|
|
100
|
-
request_id: nil,
|
|
101
|
-
message: nil,
|
|
102
|
-
additional_data: nil,
|
|
103
|
-
timestamp: Time.now)
|
|
104
|
-
h = base_hash(path: path,
|
|
105
|
-
http_method: http_method,
|
|
106
|
-
source_ip: source_ip,
|
|
107
|
-
user_agent: user_agent,
|
|
108
|
-
referer: referer,
|
|
109
|
-
request_id: request_id)
|
|
110
64
|
h[LogField::Message] = message unless message.nil?
|
|
111
65
|
h
|
|
112
66
|
end
|
|
113
|
-
|
|
114
|
-
sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
|
|
115
|
-
def to_h
|
|
116
|
-
self.class.build(
|
|
117
|
-
path: path,
|
|
118
|
-
http_method: http_method,
|
|
119
|
-
source_ip: source_ip,
|
|
120
|
-
user_agent: user_agent,
|
|
121
|
-
referer: referer,
|
|
122
|
-
request_id: request_id,
|
|
123
|
-
message: message,
|
|
124
|
-
additional_data: additional_data,
|
|
125
|
-
timestamp: timestamp
|
|
126
|
-
)
|
|
127
|
-
end
|
|
128
67
|
end
|
|
129
68
|
end
|
|
130
69
|
end
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
require "log_struct/shared/interfaces/common_fields"
|
|
10
10
|
require "log_struct/shared/interfaces/additional_data_field"
|
|
11
11
|
require "log_struct/shared/interfaces/request_fields"
|
|
12
|
-
require "log_struct/shared/
|
|
13
|
-
require "log_struct/shared/
|
|
14
|
-
require "log_struct/shared/
|
|
12
|
+
require "log_struct/shared/serialize_common"
|
|
13
|
+
require "log_struct/shared/merge_additional_data_fields"
|
|
14
|
+
require "log_struct/shared/add_request_fields"
|
|
15
15
|
require_relative "../../enums/source"
|
|
16
16
|
require_relative "../../enums/event"
|
|
17
17
|
require_relative "../../enums/level"
|
|
@@ -21,11 +21,6 @@ module LogStruct
|
|
|
21
21
|
module Log
|
|
22
22
|
class Security
|
|
23
23
|
class IPSpoof < T::Struct
|
|
24
|
-
# typed: strict
|
|
25
|
-
# frozen_string_literal: true
|
|
26
|
-
|
|
27
|
-
extend T::Sig
|
|
28
|
-
|
|
29
24
|
extend T::Sig
|
|
30
25
|
|
|
31
26
|
# Shared/common fields
|
|
@@ -59,82 +54,20 @@ module LogStruct
|
|
|
59
54
|
include LogStruct::Log::Shared::SerializeCommon
|
|
60
55
|
include LogStruct::Log::Shared::AddRequestFields
|
|
61
56
|
|
|
62
|
-
sig {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
source_ip: T.untyped,
|
|
66
|
-
user_agent: T.untyped,
|
|
67
|
-
referer: T.untyped,
|
|
68
|
-
request_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
|
|
69
|
-
}
|
|
70
|
-
def self.base_hash(path: nil,
|
|
71
|
-
http_method: nil,
|
|
72
|
-
source_ip: nil,
|
|
73
|
-
user_agent: nil,
|
|
74
|
-
referer: nil,
|
|
75
|
-
request_id: nil)
|
|
76
|
-
h = {}
|
|
57
|
+
sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
|
|
58
|
+
def to_h
|
|
59
|
+
h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
|
|
77
60
|
h[LogField::Path] = path unless path.nil?
|
|
78
61
|
h[LogField::HttpMethod] = http_method unless http_method.nil?
|
|
79
62
|
h[LogField::SourceIp] = source_ip unless source_ip.nil?
|
|
80
63
|
h[LogField::UserAgent] = user_agent unless user_agent.nil?
|
|
81
64
|
h[LogField::Referer] = referer unless referer.nil?
|
|
82
65
|
h[LogField::RequestId] = request_id unless request_id.nil?
|
|
83
|
-
h
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
sig {
|
|
87
|
-
params(path: T.untyped,
|
|
88
|
-
http_method: T.untyped,
|
|
89
|
-
source_ip: T.untyped,
|
|
90
|
-
user_agent: T.untyped,
|
|
91
|
-
referer: T.untyped,
|
|
92
|
-
request_id: T.untyped,
|
|
93
|
-
message: T.untyped,
|
|
94
|
-
client_ip: T.untyped,
|
|
95
|
-
x_forwarded_for: T.untyped,
|
|
96
|
-
additional_data: T.untyped,
|
|
97
|
-
timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
|
|
98
|
-
}
|
|
99
|
-
def self.build(path: nil,
|
|
100
|
-
http_method: nil,
|
|
101
|
-
source_ip: nil,
|
|
102
|
-
user_agent: nil,
|
|
103
|
-
referer: nil,
|
|
104
|
-
request_id: nil,
|
|
105
|
-
message: nil,
|
|
106
|
-
client_ip: nil,
|
|
107
|
-
x_forwarded_for: nil,
|
|
108
|
-
additional_data: nil,
|
|
109
|
-
timestamp: Time.now)
|
|
110
|
-
h = base_hash(path: path,
|
|
111
|
-
http_method: http_method,
|
|
112
|
-
source_ip: source_ip,
|
|
113
|
-
user_agent: user_agent,
|
|
114
|
-
referer: referer,
|
|
115
|
-
request_id: request_id)
|
|
116
66
|
h[LogField::Message] = message unless message.nil?
|
|
117
67
|
h[LogField::ClientIp] = client_ip unless client_ip.nil?
|
|
118
68
|
h[LogField::XForwardedFor] = x_forwarded_for unless x_forwarded_for.nil?
|
|
119
69
|
h
|
|
120
70
|
end
|
|
121
|
-
|
|
122
|
-
sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
|
|
123
|
-
def to_h
|
|
124
|
-
self.class.build(
|
|
125
|
-
path: path,
|
|
126
|
-
http_method: http_method,
|
|
127
|
-
source_ip: source_ip,
|
|
128
|
-
user_agent: user_agent,
|
|
129
|
-
referer: referer,
|
|
130
|
-
request_id: request_id,
|
|
131
|
-
message: message,
|
|
132
|
-
client_ip: client_ip,
|
|
133
|
-
x_forwarded_for: x_forwarded_for,
|
|
134
|
-
additional_data: additional_data,
|
|
135
|
-
timestamp: timestamp
|
|
136
|
-
)
|
|
137
|
-
end
|
|
138
71
|
end
|
|
139
72
|
end
|
|
140
73
|
end
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
require "log_struct/shared/interfaces/common_fields"
|
|
10
10
|
require "log_struct/shared/interfaces/additional_data_field"
|
|
11
11
|
require "log_struct/shared/interfaces/request_fields"
|
|
12
|
-
require "log_struct/shared/
|
|
13
|
-
require "log_struct/shared/
|
|
14
|
-
require "log_struct/shared/
|
|
12
|
+
require "log_struct/shared/serialize_common"
|
|
13
|
+
require "log_struct/shared/merge_additional_data_fields"
|
|
14
|
+
require "log_struct/shared/add_request_fields"
|
|
15
15
|
require_relative "../../enums/source"
|
|
16
16
|
require_relative "../../enums/event"
|
|
17
17
|
require_relative "../../enums/level"
|
|
@@ -21,11 +21,6 @@ module LogStruct
|
|
|
21
21
|
module Log
|
|
22
22
|
class Shrine
|
|
23
23
|
class Delete < T::Struct
|
|
24
|
-
# typed: strict
|
|
25
|
-
# frozen_string_literal: true
|
|
26
|
-
|
|
27
|
-
extend T::Sig
|
|
28
|
-
|
|
29
24
|
extend T::Sig
|
|
30
25
|
|
|
31
26
|
# Shared/common fields
|
|
@@ -35,50 +30,20 @@ module LogStruct
|
|
|
35
30
|
const :level, Level, default: Level::Info
|
|
36
31
|
|
|
37
32
|
# Event-specific fields
|
|
38
|
-
const :storage,
|
|
33
|
+
const :storage, Symbol
|
|
39
34
|
const :location, String
|
|
40
35
|
|
|
41
|
-
# Additional data
|
|
42
|
-
include LogStruct::Log::Interfaces::AdditionalDataField
|
|
43
|
-
const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
|
|
44
|
-
include LogStruct::Log::Shared::MergeAdditionalDataFields
|
|
45
|
-
|
|
46
|
-
# Request fields (optional)
|
|
47
|
-
|
|
48
36
|
# Serialize shared fields
|
|
49
37
|
include LogStruct::Log::Interfaces::CommonFields
|
|
50
38
|
include LogStruct::Log::Shared::SerializeCommon
|
|
51
39
|
|
|
52
40
|
sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
|
|
53
|
-
def
|
|
54
|
-
{}
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
sig {
|
|
58
|
-
params(storage: T.untyped,
|
|
59
|
-
location: T.untyped,
|
|
60
|
-
additional_data: T.untyped,
|
|
61
|
-
timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
|
|
62
|
-
}
|
|
63
|
-
def self.build(storage:,
|
|
64
|
-
location:,
|
|
65
|
-
additional_data: nil,
|
|
66
|
-
timestamp: Time.now)
|
|
67
|
-
h = base_hash
|
|
41
|
+
def to_h
|
|
42
|
+
h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
|
|
68
43
|
h[LogField::Storage] = storage
|
|
69
44
|
h[LogField::Location] = location
|
|
70
45
|
h
|
|
71
46
|
end
|
|
72
|
-
|
|
73
|
-
sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
|
|
74
|
-
def to_h
|
|
75
|
-
self.class.build(
|
|
76
|
-
storage: storage,
|
|
77
|
-
location: location,
|
|
78
|
-
additional_data: additional_data,
|
|
79
|
-
timestamp: timestamp
|
|
80
|
-
)
|
|
81
|
-
end
|
|
82
47
|
end
|
|
83
48
|
end
|
|
84
49
|
end
|