diff options
| author | Andrey Lihatskiy <alihatskiy@productengine.com> | 2024-05-22 20:51:58 +0300 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-22 20:51:58 +0300 | 
| commit | 6cc7dd09d5e69cf57e6de7fb568a0ad2693f9c9a (patch) | |
| tree | fab23811a5cedc1ebf01479c852ee92ff62b636c /indra/llmessage/lltrustedmessageservice.cpp | |
| parent | ef8f4819822288e044ea719feb6af7a1f4df4c4e (diff) | |
| parent | 7bb5afc11ee5a6af78302a8d76a9a619e2baaab2 (diff) | |
Merge pull request #1545 from Ansariel/DRTVWR-600-maint-A
Merge main into DRTVWR-600-maint-a
Diffstat (limited to 'indra/llmessage/lltrustedmessageservice.cpp')
| -rw-r--r-- | indra/llmessage/lltrustedmessageservice.cpp | 90 | 
1 files changed, 45 insertions, 45 deletions
diff --git a/indra/llmessage/lltrustedmessageservice.cpp b/indra/llmessage/lltrustedmessageservice.cpp index 33944f7883..4591a49dce 100644 --- a/indra/llmessage/lltrustedmessageservice.cpp +++ b/indra/llmessage/lltrustedmessageservice.cpp @@ -5,21 +5,21 @@   * $LicenseInfo:firstyear=2009&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2010, Linden Research, Inc. - *  + *   * This library is free software; you can redistribute it and/or   * modify it under the terms of the GNU Lesser General Public   * License as published by the Free Software Foundation;   * version 2.1 of the License only. - *  + *   * This library is distributed in the hope that it will be useful,   * but WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   * Lesser General Public License for more details. - *  + *   * You should have received a copy of the GNU Lesser General Public   * License along with this library; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  + *   * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ @@ -36,50 +36,50 @@  bool LLTrustedMessageService::validate(const std::string& name, LLSD& context)  const  { -	return true; +    return true;  }  void LLTrustedMessageService::post(LLHTTPNode::ResponsePtr response, -								   const LLSD& context, -								   const LLSD& input) const +                                   const LLSD& context, +                                   const LLSD& input) const  { -	std::string name = context[CONTEXT_REQUEST][CONTEXT_WILDCARD]["message-name"]; -	std::string senderIP = context[CONTEXT_REQUEST][CONTEXT_REMOTE_HOST]; -	std::string senderPort = context[CONTEXT_REQUEST][CONTEXT_HEADERS] -		["x-secondlife-udp-listen-port"]; +    std::string name = context[CONTEXT_REQUEST][CONTEXT_WILDCARD]["message-name"]; +    std::string senderIP = context[CONTEXT_REQUEST][CONTEXT_REMOTE_HOST]; +    std::string senderPort = context[CONTEXT_REQUEST][CONTEXT_HEADERS] +        ["x-secondlife-udp-listen-port"]; + +    LLSD message_data; +    std::string sender = senderIP + ":" + senderPort; +    message_data["sender"] = sender; +    message_data["body"] = input; -	LLSD message_data; -	std::string sender = senderIP + ":" + senderPort; -	message_data["sender"] = sender; -	message_data["body"] = input; -	 -	// untrusted senders should not have access to the trusted message -	// service, but this can happen in development, so check and warn -	LLMessageConfig::SenderTrust trust = -		LLMessageConfig::getSenderTrustedness(name); -	if ((trust == LLMessageConfig::TRUSTED || -		 (trust == LLMessageConfig::NOT_SET && -		  gMessageSystem->isTrustedMessage(name))) -		 && !gMessageSystem->isTrustedSender(LLHost(sender))) -	{ -		LL_WARNS("Messaging") << "trusted message POST to /trusted-message/"  -				<< name << " from unknown or untrusted sender " -				<< sender << LL_ENDL; -		response->status(HTTP_FORBIDDEN, "Unknown or untrusted sender"); -	} -	else -	{ -		gMessageSystem->receivedMessageFromTrustedSender(); -		if (input.has("binary-template-data")) -		{ -			LL_INFOS() << "Dispatching template: " << input << LL_ENDL; -			// try and send this message using udp dispatch -			LLMessageSystem::dispatchTemplate(name, message_data, response); -		} -		else -		{ -			LL_INFOS() << "Dispatching without template: " << input << LL_ENDL; -			LLMessageSystem::dispatch(name, message_data, response); -		} -	} +    // untrusted senders should not have access to the trusted message +    // service, but this can happen in development, so check and warn +    LLMessageConfig::SenderTrust trust = +        LLMessageConfig::getSenderTrustedness(name); +    if ((trust == LLMessageConfig::TRUSTED || +         (trust == LLMessageConfig::NOT_SET && +          gMessageSystem->isTrustedMessage(name))) +         && !gMessageSystem->isTrustedSender(LLHost(sender))) +    { +        LL_WARNS("Messaging") << "trusted message POST to /trusted-message/" +                << name << " from unknown or untrusted sender " +                << sender << LL_ENDL; +        response->status(HTTP_FORBIDDEN, "Unknown or untrusted sender"); +    } +    else +    { +        gMessageSystem->receivedMessageFromTrustedSender(); +        if (input.has("binary-template-data")) +        { +            LL_INFOS() << "Dispatching template: " << input << LL_ENDL; +            // try and send this message using udp dispatch +            LLMessageSystem::dispatchTemplate(name, message_data, response); +        } +        else +        { +            LL_INFOS() << "Dispatching without template: " << input << LL_ENDL; +            LLMessageSystem::dispatch(name, message_data, response); +        } +    }  }  | 
