From 72c1c923f89a0175ca9325463fe211e303f33ac6 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 8 May 2020 14:50:46 +0100 Subject: [PATCH] SampleMoneyModule: add private xmlrpc methods --- .../Servers/HttpServer/BaseHttpServer.cs | 30 ++++++++++++++++--- .../World/MoneyModule/SampleMoneyModule.cs | 14 +++++---- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index 23c04322a6..1b06a2b596 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -1104,7 +1104,7 @@ namespace OpenSim.Framework.Servers.HttpServer /// public void HandleXmlRpcRequests(OSHttpRequest request, OSHttpResponse response) { - String requestBody; + String requestBody = null; Stream requestStream = request.InputStream; Stream innerStream = null; @@ -1119,6 +1119,10 @@ namespace OpenSim.Framework.Servers.HttpServer using (StreamReader reader = new StreamReader(requestStream, Encoding.UTF8)) requestBody = reader.ReadToEnd(); } + catch + { + requestBody = null; + } finally { if (innerStream != null && innerStream.CanRead) @@ -1127,6 +1131,13 @@ namespace OpenSim.Framework.Servers.HttpServer requestStream.Dispose(); } + if (string.IsNullOrWhiteSpace(requestBody)) + { + response.StatusCode = (int)HttpStatusCode.NotFound; + response.KeepAlive = false; + return; + } + //m_log.Debug(requestBody); requestBody = requestBody.Replace("", ""); @@ -1274,9 +1285,9 @@ namespace OpenSim.Framework.Servers.HttpServer response.StatusCode = (int)HttpStatusCode.OK; } - public void HandleXmlRpcRequests(OSHttpRequest request, OSHttpResponse response, Dictionary rpchandlers) + public void HandleXmlRpcRequests(OSHttpRequest request, OSHttpResponse response, Dictionary rpcHandlers) { - String requestBody; + String requestBody = null; Stream requestStream = request.InputStream; Stream innerStream = null; @@ -1291,6 +1302,10 @@ namespace OpenSim.Framework.Servers.HttpServer using (StreamReader reader = new StreamReader(requestStream, Encoding.UTF8)) requestBody = reader.ReadToEnd(); } + catch + { + requestBody = null; + } finally { if (innerStream != null && innerStream.CanRead) @@ -1299,6 +1314,13 @@ namespace OpenSim.Framework.Servers.HttpServer requestStream.Dispose(); } + if (string.IsNullOrWhiteSpace(requestBody)) + { + response.StatusCode = (int)HttpStatusCode.NotFound; + response.KeepAlive = false; + return; + } + //m_log.Debug(requestBody); requestBody = requestBody.Replace("", ""); @@ -1357,7 +1379,7 @@ namespace OpenSim.Framework.Servers.HttpServer XmlRpcMethod method; bool methodWasFound; - methodWasFound = rpchandlers.TryGetValue(methodName, out method); + methodWasFound = rpcHandlers.TryGetValue(methodName, out method); XmlRpcResponse xmlRpcResponse; if (methodWasFound) diff --git a/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs b/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs index 6677ed193c..b93c7585a1 100644 --- a/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs +++ b/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs @@ -65,6 +65,8 @@ namespace OpenSim.Region.OptionalModules.World.MoneyModule /// // private UUID EconomyBaseAccount = UUID.Zero; + private Dictionary m_rpcHandlers; + private float EnergyEfficiency = 1f; // private ObjectPaid handerOnObjectPaid; private bool m_enabled = true; @@ -145,12 +147,12 @@ namespace OpenSim.Region.OptionalModules.World.MoneyModule // to the command line parameters you use to start up your client // This commonly looks like -helperuri http://127.0.0.1:9000/ + m_rpcHandlers = new Dictionary(); - // Local Server.. enables functionality only. - httpServer.AddXmlRPCHandler("getCurrencyQuote", quote_func); - httpServer.AddXmlRPCHandler("buyCurrency", buy_func); - httpServer.AddXmlRPCHandler("preflightBuyLandPrep", preflightBuyLandPrep_func); - httpServer.AddXmlRPCHandler("buyLandPrep", landBuy_func); + m_rpcHandlers.Add("getCurrencyQuote", quote_func); + m_rpcHandlers.Add("buyCurrency", buy_func); + m_rpcHandlers.Add("preflightBuyLandPrep", preflightBuyLandPrep_func); + m_rpcHandlers.Add("buyLandPrep", landBuy_func); // add php MainServer.Instance.AddSimpleStreamHandler(new SimpleStreamHandler("/currency.php", processPHP)); @@ -188,7 +190,7 @@ namespace OpenSim.Region.OptionalModules.World.MoneyModule public void processPHP(IOSHttpRequest request, IOSHttpResponse response) { - MainServer.Instance.HandleXmlRpcRequests((OSHttpRequest)request, (OSHttpResponse)response); + MainServer.Instance.HandleXmlRpcRequests((OSHttpRequest)request, (OSHttpResponse)response, m_rpcHandlers); } // Please do not refactor these to be just one method