From 999d77a9bcfa90f002b0107ea5fc7e6abc51dd9c Mon Sep 17 00:00:00 2001 From: Rutger Broekhoff Date: Sat, 29 Aug 2026 14:36:36 +0200 Subject: Deployment preparations --- server/src/http_server.cppm | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) (limited to 'server/src/http_server.cppm') diff --git a/server/src/http_server.cppm b/server/src/http_server.cppm index dc8c183..b16f3a8 100644 --- a/server/src/http_server.cppm +++ b/server/src/http_server.cppm @@ -15,7 +15,7 @@ export module routemon:http.server; import std; import :config; import :trace; -export import :http.common; +import :http.common; import :problem; namespace net = boost::asio; @@ -157,14 +157,33 @@ using middleware_t = ->net::awaitable>; template -auto lax_cors_middleware( - Ctx ctx, bhttp::request_header& req_hdr, - next_handler_t next) -> net::awaitable +auto id_middleware( + Ctx ctx, bhttp::request_header&, next_handler_t next) + -> net::awaitable { - std::ignore = req_hdr; - auto prersp = co_await next(ctx); - prersp.header().set(bhttp::field::access_control_allow_origin, "*"); - co_return std::move(prersp); + co_return co_await next(std::move(ctx)); +} + +template +auto cors_middleware(std::vector const& allow_origins) + -> middleware_t +{ + if (allow_origins.empty()) + return id_middleware; + + auto header_str = allow_origins + | std::views::join_with(std::string_view{", "}) + | std::ranges::to(); + + return [header_str = std::move(header_str)]( + Ctx ctx, bhttp::request_header& req_hdr, + next_handler_t next) -> net::awaitable + { + std::ignore = req_hdr; + auto prersp = co_await next(ctx); + prersp.header().set(bhttp::field::access_control_allow_origin, header_str); + co_return std::move(prersp); + }; } template @@ -310,14 +329,6 @@ auto default_options_handler( auto global_options_handler(base_ctx const& ctx, readable_request r) -> net::awaitable; -template -auto id_middleware( - Ctx ctx, bhttp::request_header&, next_handler_t next) - -> net::awaitable -{ - co_return co_await next(std::move(ctx)); -} - template auto middleware_compose(middleware_t ab, middleware_t bc) -> middleware_t -- cgit v1.3