metlo 0.0.4-aarch64-linux-musl → 0.0.6-aarch64-linux-musl

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 (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/metlo/version.rb +1 -1
  3. data/lib/metlo.rb +36 -17
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a358d40ff4a90b72cd83eb63a9c1646e8ef881c55960c1cd6ca1d5c231e8335d
4
- data.tar.gz: 5570347e2600caf2487461c18ad47caf23135de7973dab6a112bfdd09bffdc26
3
+ metadata.gz: b7c19c851f0f0750698ae8ec300414b5422d659ce87e49997f145109504299c5
4
+ data.tar.gz: 3e4fcb76c9f527028bf157e148c70b12fc3271f377332e12fb3665ed688d1c7d
5
5
  SHA512:
6
- metadata.gz: 188ea01128108dd29f52c06f8a0409e4f147170e4c9b502808a087540e149853af0ad10a76b68dd9c96eb93a6d6ea83f87393d711456507486a8559af94d98aa
7
- data.tar.gz: 61558582ab59375890a7133d02d08b140c5c10ec5d16902f939fbf358f112ccbd3c2b7ca25daaf6ed9b48022de27eb77734d7f1e3b04356dbf651c2d836c707d
6
+ metadata.gz: 48ca5dfd378827bafbe7f33387ce96222a2c3cd4978acef8cff256bb7d2ebbb3fab9150efd4b61f2311de212021fd5b1d01c676fddae6d3d184b0b143de7956b
7
+ data.tar.gz: b9891fd86e08e8200c217a29621f45bf248da4a53d426480362a9c766f624875aecae140948f0d545ebcf0a7755d0c4f4a95a53ecb11fd83b461a8006770db6b
data/lib/metlo/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Metlo
4
- VERSION = "0.0.4"
4
+ VERSION = "0.0.6"
5
5
  end
data/lib/metlo.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require_relative "metlo/version"
2
2
  require "json"
3
+ require "logger"
3
4
  require_relative "./libmetlo"
4
5
 
5
6
  module Metlo
@@ -28,16 +29,18 @@ module Metlo
28
29
  if not (log_level.nil?)
29
30
  if not (log_level.is_a? String)
30
31
  log_level = "info"
31
- @logger = Logger.new($stdout,convert_log_level(log_level))
32
+ @logger = Logger.new($stdout, convert_log_level(log_level))
32
33
  @logger.warn("log_level is not a string. log_level is expected to be one of trace, debug, info, warn, error.\nDefaulting log level to info.")
33
34
  elsif not (@@LOG_LEVELS.include? log_level)
34
35
  log_level = "info"
35
- @logger = Logger.new($stdout,convert_log_level(log_level))
36
+ @logger = Logger.new($stdout, convert_log_level(log_level))
36
37
  @logger.warn("log_level is not one of trace, debug, info, warn, error.\nDefaulting log level to info")
38
+ else
39
+ @logger = Logger.new($stdout, convert_log_level(log_level))
37
40
  end
38
41
  else
39
42
  log_level = "info"
40
- @logger = Logger.new($stdout,convert_log_level(log_level))
43
+ @logger = Logger.new($stdout, convert_log_level(log_level))
41
44
  end
42
45
 
43
46
  setup_log(@logger)
@@ -63,7 +66,7 @@ module Metlo
63
66
  end
64
67
  else
65
68
  # Value missing.
66
- if metlo_url.include? "app.metlo.com"
69
+ if metlo_url.is_a? String and metlo_url.include? "app.metlo.com"
67
70
  backend_port = 443
68
71
  else
69
72
  backend_port = 8000
@@ -120,6 +123,8 @@ module Metlo
120
123
  log_level,
121
124
  encryption_key
122
125
  )
126
+ else
127
+ @logger.warn("Metlo is currently disabled due to a configuration issue which can be found above. Metlo will not block requests or record traces.")
123
128
  end
124
129
  end
125
130
 
@@ -134,21 +139,35 @@ module Metlo
134
139
  meta_raw = create_meta(env)
135
140
  meta = JSON.generate(meta_raw)
136
141
  rescue StandardError => e
142
+ @logger.warn(e)
137
143
  status, headers, response = @app.call(env)
138
144
  [status, headers, response]
139
145
  else
140
- block = block_trace(req,meta)
146
+ block = false
147
+
148
+ begin
149
+ block = block_trace(req,meta)
150
+ rescue StandardError => e
151
+ @logger.debug("Metlo encountered an error while checking for trace blocking.")
152
+ @logger.debug(e)
153
+ end
154
+
141
155
  if block
142
156
  status, headers, response = (@block_fn).call env
143
157
  else
144
158
  status, headers, response = @app.call(env)
145
159
  end
146
- res_raw = create_res(status,headers,response)
147
- res = JSON.generate(res_raw)
148
-
149
- ingest_trace(req,res,meta)
160
+
161
+ begin
162
+ res_raw = create_res(status,headers,response)
163
+ res = JSON.generate(res_raw)
164
+ ingest_trace(req,res,meta)
165
+ rescue StandardError => e
166
+ @logger.debug("Metlo encountered an error while sending trace.")
167
+ @logger.debug(e)
168
+ end
150
169
 
151
- [status, headers, response]
170
+ return [status, headers, response]
152
171
  end
153
172
  else
154
173
  @app.call(env)
@@ -243,16 +262,16 @@ module Metlo
243
262
  }
244
263
  end
245
264
 
246
- def create_meta(env)
247
- server = env['rack.hijack'].io.addr
248
- client = env['rack.hijack'].io.peeraddr
265
+ def create_meta(env)
266
+ server = env.has_key?('rack.hijack') ? env['rack.hijack'].io.addr : nil
267
+ client = env.has_key?('rack.hijack') ? env['rack.hijack'].io.peeraddr : nil
249
268
  return {
250
269
  "environment": "production",
251
270
  "incoming": true,
252
- "source": client[2],
253
- "sourcePort": client[1],
254
- "destination": server[2],
255
- "destinationPort": server[1]
271
+ "source": client.nil? ? env["REMOTE_ADDR"] : client[2],
272
+ "sourcePort": client.nil? ? 0 : client[1],
273
+ "destination": server.nil? ? env["SERVER_NAME"] : server[2],
274
+ "destinationPort": server.nil? ? env["SERVER_PORT"].to_i : server[1]
256
275
  }
257
276
  end
258
277
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metlo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  platform: aarch64-linux-musl
6
6
  authors:
7
7
  - Metlo