Patch #9171
Disallow bulk uploads if money module is present and upload cost is set and the user hasn't got sufficient funds.0.6.0-stable
parent
50bf3618a3
commit
5d6f92fb96
|
@ -34,6 +34,9 @@ using libsecondlife;
|
||||||
using log4net;
|
using log4net;
|
||||||
using OpenSim.Framework.Communications.Cache;
|
using OpenSim.Framework.Communications.Cache;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
|
using OpenSim.Framework;
|
||||||
|
using OpenSim.Region.Environment.Interfaces;
|
||||||
|
using OpenSim.Region.Environment.Scenes;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications.Capabilities
|
namespace OpenSim.Framework.Communications.Capabilities
|
||||||
{
|
{
|
||||||
|
@ -606,6 +609,29 @@ namespace OpenSim.Framework.Communications.Capabilities
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public LLSDAssetUploadResponse NewAgentInventoryRequest(LLSDAssetUploadRequest llsdRequest)
|
public LLSDAssetUploadResponse NewAgentInventoryRequest(LLSDAssetUploadRequest llsdRequest)
|
||||||
{
|
{
|
||||||
|
if (llsdRequest.asset_type == "texture" ||
|
||||||
|
llsdRequest.asset_type == "animation" ||
|
||||||
|
llsdRequest.asset_type == "sound")
|
||||||
|
{
|
||||||
|
IClientAPI client = GetClient(m_agentID);
|
||||||
|
Scene scene = (Scene)client.Scene;
|
||||||
|
|
||||||
|
IMoneyModule mm = scene.RequestModuleInterface<IMoneyModule>();
|
||||||
|
|
||||||
|
if(mm != null)
|
||||||
|
{
|
||||||
|
if(!mm.UploadCovered(client))
|
||||||
|
{
|
||||||
|
client.SendAgentAlertMessage("Unable to upload asset. Insufficient funds.", false);
|
||||||
|
|
||||||
|
LLSDAssetUploadResponse errorResponse = new LLSDAssetUploadResponse();
|
||||||
|
errorResponse.uploader = "";
|
||||||
|
errorResponse.state = "error";
|
||||||
|
return errorResponse;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Console.WriteLine("asset upload request via CAPS" + llsdRequest.inventory_type +" , "+ llsdRequest.asset_type);
|
//Console.WriteLine("asset upload request via CAPS" + llsdRequest.inventory_type +" , "+ llsdRequest.asset_type);
|
||||||
|
|
||||||
string assetName = llsdRequest.name;
|
string assetName = llsdRequest.name;
|
||||||
|
|
|
@ -36,7 +36,10 @@ namespace OpenSim.Region.Environment.Interfaces
|
||||||
{
|
{
|
||||||
bool ObjectGiveMoney(LLUUID objectID, LLUUID fromID, LLUUID toID,
|
bool ObjectGiveMoney(LLUUID objectID, LLUUID fromID, LLUUID toID,
|
||||||
int amount);
|
int amount);
|
||||||
|
|
||||||
|
int GetBalance(IClientAPI client);
|
||||||
void ApplyUploadCharge(LLUUID agentID);
|
void ApplyUploadCharge(LLUUID agentID);
|
||||||
|
bool UploadCovered(IClientAPI client);
|
||||||
|
|
||||||
event ObjectPaid OnObjectPaid;
|
event ObjectPaid OnObjectPaid;
|
||||||
}
|
}
|
||||||
|
|
|
@ -261,6 +261,23 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
|
||||||
public void HandleUDPUploadRequest(IClientAPI remoteClient, LLUUID assetID, LLUUID transaction, sbyte type,
|
public void HandleUDPUploadRequest(IClientAPI remoteClient, LLUUID assetID, LLUUID transaction, sbyte type,
|
||||||
byte[] data, bool storeLocal, bool tempFile)
|
byte[] data, bool storeLocal, bool tempFile)
|
||||||
{
|
{
|
||||||
|
if ((AssetType)type == AssetType.Texture ||
|
||||||
|
(AssetType)type == AssetType.Sound ||
|
||||||
|
(AssetType)type == AssetType.TextureTGA ||
|
||||||
|
(AssetType)type == AssetType.Animation)
|
||||||
|
{
|
||||||
|
Scene scene = (Scene)remoteClient.Scene;
|
||||||
|
IMoneyModule mm = scene.RequestModuleInterface<IMoneyModule>();
|
||||||
|
if (mm != null)
|
||||||
|
{
|
||||||
|
if (!mm.UploadCovered(remoteClient))
|
||||||
|
{
|
||||||
|
remoteClient.SendAgentAlertMessage("Unable to upload asset. Insufficient funds.", false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Console.WriteLine("asset upload of " + assetID);
|
// Console.WriteLine("asset upload of " + assetID);
|
||||||
AgentAssetTransactions transactions = GetUserTransactions(remoteClient.AgentId);
|
AgentAssetTransactions transactions = GetUserTransactions(remoteClient.AgentId);
|
||||||
|
|
||||||
|
@ -288,4 +305,4 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
|
||||||
transactions.HandleXfer(xferID, packetID, data);
|
transactions.HandleXfer(xferID, packetID, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -266,11 +266,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
|
||||||
scene.SetObjectCapacity(ObjectCapacity);
|
scene.SetObjectCapacity(ObjectCapacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
private void GetClientFunds(IClientAPI client)
|
||||||
/// New Client Event Handler
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="client"></param>
|
|
||||||
private void OnNewClient(IClientAPI client)
|
|
||||||
{
|
{
|
||||||
// Here we check if we're in grid mode
|
// Here we check if we're in grid mode
|
||||||
// I imagine that the 'check balance'
|
// I imagine that the 'check balance'
|
||||||
|
@ -343,6 +339,16 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
|
||||||
CheckExistAndRefreshFunds(client.AgentId);
|
CheckExistAndRefreshFunds(client.AgentId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// New Client Event Handler
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="client"></param>
|
||||||
|
private void OnNewClient(IClientAPI client)
|
||||||
|
{
|
||||||
|
GetClientFunds(client);
|
||||||
|
|
||||||
// Subscribe to Money messages
|
// Subscribe to Money messages
|
||||||
client.OnEconomyDataRequest += EconomyDataRequestHandler;
|
client.OnEconomyDataRequest += EconomyDataRequestHandler;
|
||||||
client.OnMoneyBalanceRequest += SendMoneyBalance;
|
client.OnMoneyBalanceRequest += SendMoneyBalance;
|
||||||
|
@ -1525,6 +1531,27 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
|
||||||
DeadAvatar.Scene.TeleportClientHome(DeadAvatar.UUID, DeadAvatar.ControllingClient);
|
DeadAvatar.Scene.TeleportClientHome(DeadAvatar.UUID, DeadAvatar.ControllingClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int GetBalance(IClientAPI client)
|
||||||
|
{
|
||||||
|
GetClientFunds(client);
|
||||||
|
|
||||||
|
lock(m_KnownClientFunds)
|
||||||
|
{
|
||||||
|
if (!m_KnownClientFunds.ContainsKey(client.AgentId))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return m_KnownClientFunds[client.AgentId];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool UploadCovered(IClientAPI client)
|
||||||
|
{
|
||||||
|
if (GetBalance(client) < PriceUpload)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -668,6 +668,7 @@
|
||||||
<Reference name="System.Xml"/>
|
<Reference name="System.Xml"/>
|
||||||
<Reference name="System.Web"/>
|
<Reference name="System.Web"/>
|
||||||
<Reference name="OpenSim.Framework"/>
|
<Reference name="OpenSim.Framework"/>
|
||||||
|
<Reference name="OpenSim.Region.Environment"/>
|
||||||
<Reference name="OpenSim.Framework.AssetLoader.Filesystem"/>
|
<Reference name="OpenSim.Framework.AssetLoader.Filesystem"/>
|
||||||
<Reference name="OpenSim.Data" />
|
<Reference name="OpenSim.Data" />
|
||||||
<Reference name="OpenSim.Framework.Servers"/>
|
<Reference name="OpenSim.Framework.Servers"/>
|
||||||
|
|
Loading…
Reference in New Issue