diff options
author | UbitUmarov | 2012-03-28 17:51:56 +0100 |
---|---|---|
committer | UbitUmarov | 2012-03-28 17:51:56 +0100 |
commit | 1888e174cd9407003d544a8a3fad21ae53e8dcb4 (patch) | |
tree | 80df2ea53b4824e196ddbba835dc8b420f5e99bf /OpenSim/Region/ClientStack/Linden | |
parent | Merge branch 'master' of ssh://3dhosting.de/var/git/careminster into ubitwork (diff) | |
parent | Merge branch 'master' into careminster (diff) | |
download | opensim-SC-1888e174cd9407003d544a8a3fad21ae53e8dcb4.zip opensim-SC-1888e174cd9407003d544a8a3fad21ae53e8dcb4.tar.gz opensim-SC-1888e174cd9407003d544a8a3fad21ae53e8dcb4.tar.bz2 opensim-SC-1888e174cd9407003d544a8a3fad21ae53e8dcb4.tar.xz |
Merge branch 'master' of ssh://3dhosting.de/var/git/careminster into ubitwork
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden')
3 files changed, 184 insertions, 21 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs index 0103761..ef6dedb 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs | |||
@@ -114,6 +114,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
114 | private IAssetService m_assetService; | 114 | private IAssetService m_assetService; |
115 | private bool m_dumpAssetsToFile = false; | 115 | private bool m_dumpAssetsToFile = false; |
116 | private string m_regionName; | 116 | private string m_regionName; |
117 | private int m_levelUpload = 0; | ||
117 | 118 | ||
118 | public BunchOfCaps(Scene scene, Caps caps) | 119 | public BunchOfCaps(Scene scene, Caps caps) |
119 | { | 120 | { |
@@ -124,7 +125,10 @@ namespace OpenSim.Region.ClientStack.Linden | |||
124 | { | 125 | { |
125 | IConfig sconfig = config.Configs["Startup"]; | 126 | IConfig sconfig = config.Configs["Startup"]; |
126 | if (sconfig != null) | 127 | if (sconfig != null) |
128 | { | ||
127 | m_persistBakedTextures = sconfig.GetBoolean("PersistBakedTextures", m_persistBakedTextures); | 129 | m_persistBakedTextures = sconfig.GetBoolean("PersistBakedTextures", m_persistBakedTextures); |
130 | m_levelUpload = sconfig.GetInt("LevelUpload", 0); | ||
131 | } | ||
128 | } | 132 | } |
129 | 133 | ||
130 | m_assetService = m_Scene.AssetService; | 134 | m_assetService = m_Scene.AssetService; |
@@ -367,21 +371,37 @@ namespace OpenSim.Region.ClientStack.Linden | |||
367 | llsdRequest.asset_type == "animation" || | 371 | llsdRequest.asset_type == "animation" || |
368 | llsdRequest.asset_type == "sound") | 372 | llsdRequest.asset_type == "sound") |
369 | { | 373 | { |
374 | ScenePresence avatar = null; | ||
370 | IClientAPI client = null; | 375 | IClientAPI client = null; |
371 | IScene scene = null; | 376 | m_Scene.TryGetScenePresence(m_HostCapsObj.AgentID, out avatar); |
372 | if (GetClient != null) | 377 | |
378 | // check user level | ||
379 | if (avatar != null) | ||
373 | { | 380 | { |
374 | client = GetClient(m_HostCapsObj.AgentID); | 381 | client = avatar.ControllingClient; |
375 | scene = client.Scene; | 382 | |
383 | if (avatar.UserLevel < m_levelUpload) | ||
384 | { | ||
385 | if (client != null) | ||
386 | client.SendAgentAlertMessage("Unable to upload asset. Insufficient permissions.", false); | ||
376 | 387 | ||
377 | IMoneyModule mm = scene.RequestModuleInterface<IMoneyModule>(); | 388 | LLSDAssetUploadResponse errorResponse = new LLSDAssetUploadResponse(); |
389 | errorResponse.uploader = ""; | ||
390 | errorResponse.state = "error"; | ||
391 | return errorResponse; | ||
392 | } | ||
393 | } | ||
394 | |||
395 | // check funds | ||
396 | if (client != null) | ||
397 | { | ||
398 | IMoneyModule mm = m_Scene.RequestModuleInterface<IMoneyModule>(); | ||
378 | 399 | ||
379 | if (mm != null) | 400 | if (mm != null) |
380 | { | 401 | { |
381 | if (!mm.UploadCovered(client.AgentId, mm.UploadCharge)) | 402 | if (!mm.UploadCovered(client.AgentId, mm.UploadCharge)) |
382 | { | 403 | { |
383 | if (client != null) | 404 | client.SendAgentAlertMessage("Unable to upload asset. Insufficient funds.", false); |
384 | client.SendAgentAlertMessage("Unable to upload asset. Insufficient funds.", false); | ||
385 | 405 | ||
386 | LLSDAssetUploadResponse errorResponse = new LLSDAssetUploadResponse(); | 406 | LLSDAssetUploadResponse errorResponse = new LLSDAssetUploadResponse(); |
387 | errorResponse.uploader = ""; | 407 | errorResponse.uploader = ""; |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/NewFileAgentInventoryVariablePriceModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/NewFileAgentInventoryVariablePriceModule.cs index 1117f2a..91872c5 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/NewFileAgentInventoryVariablePriceModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/NewFileAgentInventoryVariablePriceModule.cs | |||
@@ -56,6 +56,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
56 | // private IAssetService m_assetService; | 56 | // private IAssetService m_assetService; |
57 | private bool m_dumpAssetsToFile = false; | 57 | private bool m_dumpAssetsToFile = false; |
58 | private bool m_enabled = true; | 58 | private bool m_enabled = true; |
59 | private int m_levelUpload = 0; | ||
59 | 60 | ||
60 | #region IRegionModuleBase Members | 61 | #region IRegionModuleBase Members |
61 | 62 | ||
@@ -72,6 +73,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
72 | return; | 73 | return; |
73 | 74 | ||
74 | m_enabled = meshConfig.GetBoolean("AllowMeshUpload", true); | 75 | m_enabled = meshConfig.GetBoolean("AllowMeshUpload", true); |
76 | m_levelUpload = meshConfig.GetInt("LevelUpload", 0); | ||
75 | } | 77 | } |
76 | 78 | ||
77 | public void AddRegion(Scene pScene) | 79 | public void AddRegion(Scene pScene) |
@@ -137,25 +139,41 @@ namespace OpenSim.Region.ClientStack.Linden | |||
137 | // llsdRequest.asset_type == "animation" || | 139 | // llsdRequest.asset_type == "animation" || |
138 | // llsdRequest.asset_type == "sound") | 140 | // llsdRequest.asset_type == "sound") |
139 | // { | 141 | // { |
142 | // check user level | ||
143 | ScenePresence avatar = null; | ||
140 | IClientAPI client = null; | 144 | IClientAPI client = null; |
145 | m_scene.TryGetScenePresence(agentID, out avatar); | ||
141 | 146 | ||
142 | 147 | if (avatar != null) | |
148 | { | ||
149 | client = avatar.ControllingClient; | ||
150 | |||
151 | if (avatar.UserLevel < m_levelUpload) | ||
152 | { | ||
153 | if (client != null) | ||
154 | client.SendAgentAlertMessage("Unable to upload asset. Insufficient permissions.", false); | ||
155 | |||
156 | LLSDNewFileAngentInventoryVariablePriceReplyResponse errorResponse = new LLSDNewFileAngentInventoryVariablePriceReplyResponse(); | ||
157 | errorResponse.rsvp = ""; | ||
158 | errorResponse.state = "error"; | ||
159 | return errorResponse; | ||
160 | } | ||
161 | } | ||
162 | |||
163 | // check funds | ||
143 | IMoneyModule mm = m_scene.RequestModuleInterface<IMoneyModule>(); | 164 | IMoneyModule mm = m_scene.RequestModuleInterface<IMoneyModule>(); |
144 | 165 | ||
145 | if (mm != null) | 166 | if (mm != null) |
146 | { | 167 | { |
147 | if (m_scene.TryGetClient(agentID, out client)) | 168 | if (!mm.UploadCovered(agentID, mm.UploadCharge)) |
148 | { | 169 | { |
149 | if (!mm.UploadCovered(client.AgentId, mm.UploadCharge)) | 170 | if (client != null) |
150 | { | 171 | client.SendAgentAlertMessage("Unable to upload asset. Insufficient funds.", false); |
151 | if (client != null) | 172 | |
152 | client.SendAgentAlertMessage("Unable to upload asset. Insufficient funds.", false); | 173 | LLSDNewFileAngentInventoryVariablePriceReplyResponse errorResponse = new LLSDNewFileAngentInventoryVariablePriceReplyResponse(); |
153 | 174 | errorResponse.rsvp = ""; | |
154 | LLSDNewFileAngentInventoryVariablePriceReplyResponse errorResponse = new LLSDNewFileAngentInventoryVariablePriceReplyResponse(); | 175 | errorResponse.state = "error"; |
155 | errorResponse.rsvp = ""; | 176 | return errorResponse; |
156 | errorResponse.state = "error"; | ||
157 | return errorResponse; | ||
158 | } | ||
159 | } | 177 | } |
160 | } | 178 | } |
161 | // } | 179 | // } |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index c40c0ec..d0920d2 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -59,7 +59,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
59 | /// Handles new client connections | 59 | /// Handles new client connections |
60 | /// Constructor takes a single Packet and authenticates everything | 60 | /// Constructor takes a single Packet and authenticates everything |
61 | /// </summary> | 61 | /// </summary> |
62 | public class LLClientView : IClientAPI, IClientCore, IClientIM, IClientChat, IClientIPEndpoint, IStatsCollector | 62 | public class LLClientView : IClientAPI, IClientCore, IClientIM, IClientChat, IClientInventory, IClientIPEndpoint, IStatsCollector |
63 | { | 63 | { |
64 | /// <value> | 64 | /// <value> |
65 | /// Debug packet level. See OpenSim.RegisterConsoleCommands() for more details. | 65 | /// Debug packet level. See OpenSim.RegisterConsoleCommands() for more details. |
@@ -460,6 +460,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
460 | // DebugPacketLevel = 1; | 460 | // DebugPacketLevel = 1; |
461 | 461 | ||
462 | RegisterInterface<IClientIM>(this); | 462 | RegisterInterface<IClientIM>(this); |
463 | RegisterInterface<IClientInventory>(this); | ||
463 | RegisterInterface<IClientChat>(this); | 464 | RegisterInterface<IClientChat>(this); |
464 | RegisterInterface<IClientIPEndpoint>(this); | 465 | RegisterInterface<IClientIPEndpoint>(this); |
465 | 466 | ||
@@ -12421,5 +12422,129 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
12421 | if (reply != null) | 12422 | if (reply != null) |
12422 | OutPacket(reply, ThrottleOutPacketType.Task); | 12423 | OutPacket(reply, ThrottleOutPacketType.Task); |
12423 | } | 12424 | } |
12425 | |||
12426 | public void SendRemoveInventoryItems(UUID[] items) | ||
12427 | { | ||
12428 | IEventQueue eq = Scene.RequestModuleInterface<IEventQueue>(); | ||
12429 | |||
12430 | if (eq == null) | ||
12431 | { | ||
12432 | m_log.DebugFormat("[LLCLIENT]: Null event queue"); | ||
12433 | return; | ||
12434 | } | ||
12435 | |||
12436 | OSDMap llsd = new OSDMap(3); | ||
12437 | |||
12438 | OSDMap AgentDataMap = new OSDMap(1); | ||
12439 | AgentDataMap.Add("AgentID", OSD.FromUUID(AgentId)); | ||
12440 | AgentDataMap.Add("SessionID", OSD.FromUUID(SessionId)); | ||
12441 | |||
12442 | OSDArray AgentData = new OSDArray(1); | ||
12443 | AgentData.Add(AgentDataMap); | ||
12444 | |||
12445 | llsd.Add("AgentData", AgentData); | ||
12446 | |||
12447 | OSDArray ItemData = new OSDArray(); | ||
12448 | |||
12449 | foreach (UUID item in items) | ||
12450 | { | ||
12451 | OSDMap ItemDataMap = new OSDMap(2); | ||
12452 | ItemDataMap.Add("ItemID", OSD.FromUUID(item)); | ||
12453 | ItemDataMap.Add("AgentID", OSD.FromUUID(AgentId)); | ||
12454 | |||
12455 | ItemData.Add(ItemDataMap); | ||
12456 | } | ||
12457 | |||
12458 | llsd.Add("ItemData", ItemData); | ||
12459 | |||
12460 | eq.Enqueue(BuildEvent("RemoveInventoryItem", | ||
12461 | llsd), AgentId); | ||
12462 | } | ||
12463 | |||
12464 | public void SendRemoveInventoryFolders(UUID[] folders) | ||
12465 | { | ||
12466 | IEventQueue eq = Scene.RequestModuleInterface<IEventQueue>(); | ||
12467 | |||
12468 | if (eq == null) | ||
12469 | { | ||
12470 | m_log.DebugFormat("[LLCLIENT]: Null event queue"); | ||
12471 | return; | ||
12472 | } | ||
12473 | |||
12474 | OSDMap llsd = new OSDMap(3); | ||
12475 | |||
12476 | OSDMap AgentDataMap = new OSDMap(1); | ||
12477 | AgentDataMap.Add("AgentID", OSD.FromUUID(AgentId)); | ||
12478 | AgentDataMap.Add("SessionID", OSD.FromUUID(SessionId)); | ||
12479 | |||
12480 | OSDArray AgentData = new OSDArray(1); | ||
12481 | AgentData.Add(AgentDataMap); | ||
12482 | |||
12483 | llsd.Add("AgentData", AgentData); | ||
12484 | |||
12485 | OSDArray FolderData = new OSDArray(); | ||
12486 | |||
12487 | foreach (UUID folder in folders) | ||
12488 | { | ||
12489 | OSDMap FolderDataMap = new OSDMap(2); | ||
12490 | FolderDataMap.Add("FolderID", OSD.FromUUID(folder)); | ||
12491 | FolderDataMap.Add("AgentID", OSD.FromUUID(AgentId)); | ||
12492 | |||
12493 | FolderData.Add(FolderDataMap); | ||
12494 | } | ||
12495 | |||
12496 | llsd.Add("FolderData", FolderData); | ||
12497 | |||
12498 | eq.Enqueue(BuildEvent("RemoveInventoryFolder", | ||
12499 | llsd), AgentId); | ||
12500 | } | ||
12501 | |||
12502 | public void SendBulkUpdateInventory(InventoryFolderBase[] folders, InventoryItemBase[] items) | ||
12503 | { | ||
12504 | IEventQueue eq = Scene.RequestModuleInterface<IEventQueue>(); | ||
12505 | |||
12506 | if (eq == null) | ||
12507 | { | ||
12508 | m_log.DebugFormat("[LLCLIENT]: Null event queue"); | ||
12509 | return; | ||
12510 | } | ||
12511 | |||
12512 | OSDMap llsd = new OSDMap(3); | ||
12513 | |||
12514 | OSDMap AgentDataMap = new OSDMap(1); | ||
12515 | AgentDataMap.Add("AgentID", OSD.FromUUID(AgentId)); | ||
12516 | AgentDataMap.Add("SessionID", OSD.FromUUID(SessionId)); | ||
12517 | |||
12518 | OSDArray AgentData = new OSDArray(1); | ||
12519 | AgentData.Add(AgentDataMap); | ||
12520 | |||
12521 | llsd.Add("AgentData", AgentData); | ||
12522 | |||
12523 | OSDArray FolderData = new OSDArray(); | ||
12524 | |||
12525 | foreach (InventoryFolderBase folder in folders) | ||
12526 | { | ||
12527 | OSDMap FolderDataMap = new OSDMap(5); | ||
12528 | FolderDataMap.Add("FolderID", OSD.FromUUID(folder.ID)); | ||
12529 | FolderDataMap.Add("AgentID", OSD.FromUUID(AgentId)); | ||
12530 | FolderDataMap.Add("ParentID", OSD.FromUUID(folder.ParentID)); | ||
12531 | FolderDataMap.Add("Type", OSD.FromInteger(folder.Type)); | ||
12532 | FolderDataMap.Add("Name", OSD.FromString(folder.Name)); | ||
12533 | |||
12534 | FolderData.Add(FolderDataMap); | ||
12535 | } | ||
12536 | |||
12537 | llsd.Add("FolderData", FolderData); | ||
12538 | |||
12539 | OSDArray ItemData = new OSDArray(); | ||
12540 | |||
12541 | foreach (InventoryItemBase item in items) | ||
12542 | { | ||
12543 | OSDMap ItemDataMap = new OSDMap(); | ||
12544 | ItemData.Add(ItemDataMap); | ||
12545 | } | ||
12546 | |||
12547 | llsd.Add("ItemData", ItemData); | ||
12548 | } | ||
12424 | } | 12549 | } |
12425 | } | 12550 | } |