Skip to content

Commit 33a4d76

Browse files
committed
[gateway] log tls context in gateway logs
1 parent 9f3527f commit 33a4d76

4 files changed

Lines changed: 45 additions & 13 deletions

File tree

‎apps/boruta_gateway/lib/boruta_gateway/http_gateway.ex‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,8 @@ defmodule BorutaGateway.HttpGateway do
606606
method: method,
607607
path: path,
608608
status: status,
609-
remote_ip: state.remote_ip || remote_ip(state.socket)
609+
remote_ip: state.remote_ip || remote_ip(state.socket),
610+
tls: "http"
610611
}
611612
)
612613

@@ -619,14 +620,20 @@ defmodule BorutaGateway.HttpGateway do
619620
},
620621
%{
621622
request_id: request_id,
622-
upstream: upstream
623+
upstream: upstream,
624+
upstream_tls: upstream_tls(upstream)
623625
}
624626
)
625627
end
626628

627629
defp upstream_time(%State{upstream_start: nil}, _stop), do: 0
628630
defp upstream_time(%State{upstream_start: upstream_start}, stop), do: stop - upstream_start
629631

632+
defp upstream_tls(%Upstream{scheme: "https", mtls_enabled: true}), do: "mtls"
633+
defp upstream_tls(%Upstream{scheme: "https"}), do: "tls"
634+
defp upstream_tls(%Upstream{}), do: "http"
635+
defp upstream_tls(nil), do: nil
636+
630637
defp transform_header(payload, upstream, nil) do
631638
transform_header(payload, upstream, false)
632639
end

‎apps/boruta_gateway/lib/boruta_gateway/https_gateway.ex‎

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,8 @@ defmodule BorutaGateway.HttpsGateway do
640640
method: method,
641641
path: path,
642642
status: status,
643-
remote_ip: state.remote_ip || remote_ip(state.socket)
643+
remote_ip: state.remote_ip || remote_ip(state.socket),
644+
tls: downstream_tls(state.socket)
644645
}
645646
)
646647

@@ -653,14 +654,29 @@ defmodule BorutaGateway.HttpsGateway do
653654
},
654655
%{
655656
request_id: request_id,
656-
upstream: upstream
657+
upstream: upstream,
658+
upstream_tls: upstream_tls(upstream)
657659
}
658660
)
659661
end
660662

661663
defp upstream_time(%State{upstream_start: nil}, _stop), do: 0
662664
defp upstream_time(%State{upstream_start: upstream_start}, stop), do: stop - upstream_start
663665

666+
defp downstream_tls(nil), do: nil
667+
668+
defp downstream_tls(socket) do
669+
case :ssl.peercert(socket) do
670+
{:ok, _certificate} -> "mtls"
671+
{:error, _reason} -> "tls"
672+
end
673+
end
674+
675+
defp upstream_tls(%Upstream{scheme: "https", mtls_enabled: true}), do: "mtls"
676+
defp upstream_tls(%Upstream{scheme: "https"}), do: "tls"
677+
defp upstream_tls(%Upstream{}), do: "http"
678+
defp upstream_tls(nil), do: nil
679+
664680
defp transform_header(payload, upstream, nil) do
665681
transform_header(payload, upstream, false)
666682
end

‎apps/boruta_gateway/lib/boruta_gateway/logger.ex‎

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ defmodule BorutaGateway.Logger do
3636
path: path,
3737
status: status,
3838
remote_ip: remote_ip
39-
},
39+
} = metadata,
4040
_config
4141
) do
4242
request(%{
@@ -45,7 +45,8 @@ defmodule BorutaGateway.Logger do
4545
path: path,
4646
status: status,
4747
remote_ip: remote_ip,
48-
duration: duration
48+
duration: duration,
49+
tls: Map.get(metadata, :tls)
4950
})
5051
end
5152

@@ -59,7 +60,7 @@ defmodule BorutaGateway.Logger do
5960
%{
6061
request_id: request_id,
6162
upstream: upstream
62-
},
63+
} = metadata,
6364
_config
6465
) do
6566
business(%{
@@ -68,7 +69,8 @@ defmodule BorutaGateway.Logger do
6869
upstream: upstream,
6970
request_time: request_time,
7071
gateway_time: gateway_time,
71-
upstream_time: upstream_time
72+
upstream_time: upstream_time,
73+
upstream_tls: Map.get(metadata, :upstream_tls)
7274
})
7375
end
7476

@@ -78,7 +80,8 @@ defmodule BorutaGateway.Logger do
7880
path: path,
7981
status: status,
8082
remote_ip: remote_ip,
81-
duration: duration
83+
duration: duration,
84+
tls: tls
8285
}) do
8386
Logger.log(
8487
:info,
@@ -95,6 +98,7 @@ defmodule BorutaGateway.Logger do
9598
Integer.to_string(status),
9699
" from ",
97100
remote_ip,
101+
log_attribute("tls", tls),
98102
" in ",
99103
duration(duration)
100104
]
@@ -111,7 +115,8 @@ defmodule BorutaGateway.Logger do
111115
upstream: upstream,
112116
request_time: request_time,
113117
gateway_time: gateway_time,
114-
upstream_time: upstream_time
118+
upstream_time: upstream_time,
119+
upstream_tls: upstream_tls
115120
}) do
116121
Logger.log(
117122
:info,
@@ -127,6 +132,7 @@ defmodule BorutaGateway.Logger do
127132
log_attribute("upstream_id", upstream && upstream.id),
128133
log_attribute("upstream_host", upstream && upstream.host),
129134
log_attribute("upstream_port", upstream && upstream.port),
135+
log_attribute("upstream_tls", upstream_tls),
130136
log_attribute("request_time", request_time),
131137
log_attribute("gateway_time", gateway_time),
132138
log_attribute("upstream_time", upstream_time)

‎apps/boruta_gateway/test/boruta_gateway/logger_test.exs‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,15 @@ defmodule BorutaGateway.LoggerTest do
2424
method: "GET",
2525
path: "/upstream",
2626
status: 200,
27-
remote_ip: ~c"127.0.0.1"
27+
remote_ip: ~c"127.0.0.1",
28+
tls: "mtls"
2829
},
2930
:ok
3031
)
3132
end)
3233

3334
assert log =~ "request_id=request-id"
34-
assert log =~ "boruta_gateway GET /upstream - sent 200 from 127.0.0.1 in 1ms"
35+
assert log =~ "boruta_gateway GET /upstream - sent 200 from 127.0.0.1 tls=mtls in 1ms"
3536
end
3637
end
3738

@@ -48,7 +49,8 @@ defmodule BorutaGateway.LoggerTest do
4849
},
4950
%{
5051
request_id: "request-id",
51-
upstream: %Upstream{id: "upstream-id", host: "example.com", port: 443}
52+
upstream: %Upstream{id: "upstream-id", host: "example.com", port: 443},
53+
upstream_tls: "mtls"
5254
},
5355
:ok
5456
)
@@ -59,6 +61,7 @@ defmodule BorutaGateway.LoggerTest do
5961
assert log =~ "upstream_id=upstream-id"
6062
assert log =~ "upstream_host=example.com"
6163
assert log =~ "upstream_port=443"
64+
assert log =~ "upstream_tls=mtls"
6265
assert log =~ "request_time=1500"
6366
assert log =~ "gateway_time=500"
6467
assert log =~ "upstream_time=1000"

0 commit comments

Comments
 (0)