summaryrefslogtreecommitdiff
path: root/Userland/Services/RequestServer
diff options
context:
space:
mode:
authorAli Mohammad Pur <ali.mpfard@gmail.com>2022-02-09 23:12:56 +0330
committerAndreas Kling <kling@serenityos.org>2022-02-09 21:23:25 +0100
commitcb7becb0671ae2ca435384b0133b484e495a2af2 (patch)
tree8ecc150524a298e46c5dda1cde70e45cddb53477 /Userland/Services/RequestServer
parenta796207b9fb139c85d6350062689d97dd5e98902 (diff)
downloadserenity-cb7becb0671ae2ca435384b0133b484e495a2af2.zip
LibTLS+RequestServer: Add an option to dump TLS keys to a log file
This file allows us to decrypt TLS messages in wireshark, which can help immensely in debugging network stuff :^)
Diffstat (limited to 'Userland/Services/RequestServer')
-rw-r--r--Userland/Services/RequestServer/main.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/Userland/Services/RequestServer/main.cpp b/Userland/Services/RequestServer/main.cpp
index c9b1884b63..cc1f0dabff 100644
--- a/Userland/Services/RequestServer/main.cpp
+++ b/Userland/Services/RequestServer/main.cpp
@@ -19,9 +19,17 @@
ErrorOr<int> serenity_main(Main::Arguments)
{
- TRY(Core::System::pledge("stdio inet accept unix rpath sendfd recvfd sigaction"));
+ if constexpr (TLS_SSL_KEYLOG_DEBUG)
+ TRY(Core::System::pledge("stdio inet accept unix cpath wpath rpath sendfd recvfd sigaction"));
+ else
+ TRY(Core::System::pledge("stdio inet accept unix rpath sendfd recvfd sigaction"));
+
signal(SIGINFO, [](int) { RequestServer::ConnectionCache::dump_jobs(); });
- TRY(Core::System::pledge("stdio inet accept unix rpath sendfd recvfd"));
+
+ if constexpr (TLS_SSL_KEYLOG_DEBUG)
+ TRY(Core::System::pledge("stdio inet accept unix cpath wpath rpath sendfd recvfd"));
+ else
+ TRY(Core::System::pledge("stdio inet accept unix rpath sendfd recvfd"));
// Ensure the certificates are read out here.
[[maybe_unused]] auto& certs = DefaultRootCACertificates::the();
@@ -30,6 +38,8 @@ ErrorOr<int> serenity_main(Main::Arguments)
// FIXME: Establish a connection to LookupServer and then drop "unix"?
TRY(Core::System::unveil("/tmp/portal/lookup", "rw"));
TRY(Core::System::unveil("/etc/timezone", "r"));
+ if constexpr (TLS_SSL_KEYLOG_DEBUG)
+ TRY(Core::System::unveil("/home/anon", "rwc"));
TRY(Core::System::unveil(nullptr, nullptr));
[[maybe_unused]] auto gemini = make<RequestServer::GeminiProtocol>();