From: sofar Date: Tue, 5 Mar 2019 07:12:02 +0000 (-0800) Subject: Add referer to remote media requests. (#8135) X-Git-Tag: 5.1.0~299 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=b5defcffba12dbbcd70676ed4626929761e25620;p=oweals%2Fminetest.git Add referer to remote media requests. (#8135) This sends the following header to a remote media server: Referer: minetest://:port This was verified with CTF and the Minetest Public Remove Media server. If the servername was a plain IPv6 address it will contain `:` characters and will be encapsulated in `[]` to be a valid URI. --- diff --git a/src/client/clientmedia.cpp b/src/client/clientmedia.cpp index e3ad92dbc..e52ebcab3 100644 --- a/src/client/clientmedia.cpp +++ b/src/client/clientmedia.cpp @@ -254,6 +254,16 @@ void ClientMediaDownloader::initialStep(Client *client) fetch_request.post_data = required_hash_set; fetch_request.extra_headers.emplace_back( "Content-Type: application/octet-stream"); + + // Encapsulate possible IPv6 plain address in [] + std::string addr = client->getAddressName(); + if (addr.find(":", 0) != std::string::npos) + addr = '[' + addr + ']'; + fetch_request.extra_headers.emplace_back( + std::string("Referer: minetest://") + + addr + ":" + + std::to_string(client->getServerAddress().getPort())); + httpfetch_async(fetch_request); m_httpfetch_active++;