aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs2076
1 files changed, 2055 insertions, 21 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 7f7b820..222fb1b 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -4363,11 +4363,71 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4363 AddLocalPacketHandler(PacketType.ScriptAnswerYes, HandleScriptAnswerYes); 4363 AddLocalPacketHandler(PacketType.ScriptAnswerYes, HandleScriptAnswerYes);
4364 AddLocalPacketHandler(PacketType.ObjectClickAction, HandleObjectClickAction); 4364 AddLocalPacketHandler(PacketType.ObjectClickAction, HandleObjectClickAction);
4365 AddLocalPacketHandler(PacketType.ObjectMaterial, HandleObjectMaterial); 4365 AddLocalPacketHandler(PacketType.ObjectMaterial, HandleObjectMaterial);
4366 AddLocalPacketHandler(PacketType.RequestImage, HandleRequestImage);
4367 AddLocalPacketHandler(PacketType.TransferRequest, HandleTransferRequest);
4368 AddLocalPacketHandler(PacketType.AssetUploadRequest, HandleAssetUploadRequest);
4369 AddLocalPacketHandler(PacketType.RequestXfer, HandleRequestXfer);
4370 AddLocalPacketHandler(PacketType.SendXferPacket, HandleSendXferPacket);
4371 AddLocalPacketHandler(PacketType.ConfirmXferPacket, HandleConfirmXferPacket);
4372 AddLocalPacketHandler(PacketType.AbortXfer, HandleAbortXfer);
4373 AddLocalPacketHandler(PacketType.CreateInventoryFolder, HandleCreateInventoryFolder);
4374 AddLocalPacketHandler(PacketType.UpdateInventoryFolder, HandleUpdateInventoryFolder);
4375 AddLocalPacketHandler(PacketType.MoveInventoryFolder, HandleMoveInventoryFolder);
4376 AddLocalPacketHandler(PacketType.CreateInventoryItem, HandleCreateInventoryItem);
4377 AddLocalPacketHandler(PacketType.FetchInventory, HandleFetchInventory);
4378 AddLocalPacketHandler(PacketType.FetchInventoryDescendents, HandleFetchInventoryDescendents);
4379 AddLocalPacketHandler(PacketType.PurgeInventoryDescendents, HandlePurgeInventoryDescendents);
4380 AddLocalPacketHandler(PacketType.UpdateInventoryItem, HandleUpdateInventoryItem);
4381 AddLocalPacketHandler(PacketType.CopyInventoryItem, HandleCopyInventoryItem);
4382 AddLocalPacketHandler(PacketType.MoveInventoryItem, HandleMoveInventoryItem);
4383 AddLocalPacketHandler(PacketType.RemoveInventoryItem, HandleRemoveInventoryItem);
4384 AddLocalPacketHandler(PacketType.RemoveInventoryFolder, HandleRemoveInventoryFolder);
4385 AddLocalPacketHandler(PacketType.RemoveInventoryObjects, HandleRemoveInventoryObjects);
4386 AddLocalPacketHandler(PacketType.RequestTaskInventory, HandleRequestTaskInventory);
4387 AddLocalPacketHandler(PacketType.UpdateTaskInventory, HandleUpdateTaskInventory);
4388 AddLocalPacketHandler(PacketType.RemoveTaskInventory, HandleRemoveTaskInventory);
4389 AddLocalPacketHandler(PacketType.MoveTaskInventory, HandleMoveTaskInventory);
4390 AddLocalPacketHandler(PacketType.RezScript, HandleRezScript);
4391 AddLocalPacketHandler(PacketType.MapLayerRequest, HandleMapLayerRequest);
4392 AddLocalPacketHandler(PacketType.MapBlockRequest, HandleMapBlockRequest);
4393 AddLocalPacketHandler(PacketType.MapNameRequest, HandleMapNameRequest);
4394 AddLocalPacketHandler(PacketType.TeleportLandmarkRequest, HandleTeleportLandmarkRequest);
4395 AddLocalPacketHandler(PacketType.TeleportLocationRequest, HandleTeleportLocationRequest);
4396 AddLocalPacketHandler(PacketType.UUIDNameRequest, HandleUUIDNameRequest);
4397 AddLocalPacketHandler(PacketType.RegionHandleRequest, HandleRegionHandleRequest);
4398 AddLocalPacketHandler(PacketType.ParcelInfoRequest, HandleParcelInfoRequest);
4399 AddLocalPacketHandler(PacketType.ParcelAccessListRequest, HandleParcelAccessListRequest);
4400 AddLocalPacketHandler(PacketType.ParcelAccessListUpdate, HandleParcelAccessListUpdate);
4401 AddLocalPacketHandler(PacketType.ParcelPropertiesRequest, HandleParcelPropertiesRequest);
4402 AddLocalPacketHandler(PacketType.ParcelDivide, HandleParcelDivide);
4403 AddLocalPacketHandler(PacketType.ParcelJoin, HandleParcelJoin);
4404 AddLocalPacketHandler(PacketType.ParcelPropertiesUpdate, HandleParcelPropertiesUpdate);
4405 AddLocalPacketHandler(PacketType.ParcelSelectObjects, HandleParcelSelectObjects);
4406 AddLocalPacketHandler(PacketType.ParcelObjectOwnersRequest, HandleParcelObjectOwnersRequest);
4407 AddLocalPacketHandler(PacketType.ParcelGodForceOwner, HandleParcelGodForceOwner);
4408 AddLocalPacketHandler(PacketType.ParcelRelease, HandleParcelRelease);
4409 AddLocalPacketHandler(PacketType.ParcelReclaim, HandleParcelReclaim);
4410 AddLocalPacketHandler(PacketType.ParcelReturnObjects, HandleParcelReturnObjects);
4411 AddLocalPacketHandler(PacketType.ParcelSetOtherCleanTime, HandleParcelSetOtherCleanTime);
4412 AddLocalPacketHandler(PacketType.LandStatRequest, HandleLandStatRequest);
4413 AddLocalPacketHandler(PacketType.ParcelDwellRequest, HandleParcelDwellRequest);
4414 AddLocalPacketHandler(PacketType.EstateOwnerMessage, HandleEstateOwnerMessage);
4415 AddLocalPacketHandler(PacketType.RequestRegionInfo, HandleRequestRegionInfo);
4416 AddLocalPacketHandler(PacketType.EstateCovenantRequest, HandleEstateCovenantRequest);
4417 AddLocalPacketHandler(PacketType.RequestGodlikePowers, HandleRequestGodlikePowers);
4418 AddLocalPacketHandler(PacketType.GodKickUser, HandleGodKickUser);
4419 AddLocalPacketHandler(PacketType.MoneyBalanceRequest, HandleMoneyBalanceRequest);
4420 AddLocalPacketHandler(PacketType.EconomyDataRequest, HandleEconomyDataRequest);
4421 AddLocalPacketHandler(PacketType.RequestPayPrice, HandleRequestPayPrice);
4422 AddLocalPacketHandler(PacketType.ObjectSaleInfo, HandleObjectSaleInfo);
4423 AddLocalPacketHandler(PacketType.ObjectBuy, HandleObjectBuy);
4424 AddLocalPacketHandler(PacketType.GetScriptRunning, HandleGetScriptRunning);
4425 AddLocalPacketHandler(PacketType.SetScriptRunning, HandleSetScriptRunning);
4426 AddLocalPacketHandler(PacketType.ScriptReset, HandleScriptReset);
4366 //AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer); 4427 //AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer);
4367 //AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer); 4428 //AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer);
4368 //AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer); 4429 //AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer);
4369 //AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer); 4430 //AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer);
4370
4371 4431
4372 } 4432 }
4373 4433
@@ -6338,6 +6398,1943 @@ namespace OpenSim.Region.ClientStack.LindenUDP
6338 6398
6339 #endregion Objects/m_sceneObjects 6399 #endregion Objects/m_sceneObjects
6340 6400
6401 #region Inventory/Asset/Other related packets
6402
6403 private bool HandleRequestImage(IClientAPI sender, Packet Pack)
6404 {
6405 RequestImagePacket imageRequest = (RequestImagePacket)Pack;
6406 //m_log.Debug("image request: " + Pack.ToString());
6407
6408 #region Packet Session and User Check
6409 if (m_checkPackets)
6410 {
6411 if (imageRequest.AgentData.SessionID != SessionId ||
6412 imageRequest.AgentData.AgentID != AgentId)
6413 return true;
6414 }
6415 #endregion
6416
6417 //handlerTextureRequest = null;
6418 for (int i = 0; i < imageRequest.RequestImage.Length; i++)
6419 {
6420 if (OnRequestTexture != null)
6421 {
6422 TextureRequestArgs args = new TextureRequestArgs();
6423
6424 RequestImagePacket.RequestImageBlock block = imageRequest.RequestImage[i];
6425
6426 args.RequestedAssetID = block.Image;
6427 args.DiscardLevel = block.DiscardLevel;
6428 args.PacketNumber = block.Packet;
6429 args.Priority = block.DownloadPriority;
6430 args.requestSequence = imageRequest.Header.Sequence;
6431
6432 // NOTE: This is not a built in part of the LLUDP protocol, but we double the
6433 // priority of avatar textures to get avatars rezzing in faster than the
6434 // surrounding scene
6435 if ((ImageType)block.Type == ImageType.Baked)
6436 args.Priority *= 2.0f;
6437
6438 //handlerTextureRequest = OnRequestTexture;
6439
6440 //if (handlerTextureRequest != null)
6441 //OnRequestTexture(this, args);
6442
6443 // in the end, we null this, so we have to check if it's null
6444 if (m_imageManager != null)
6445 {
6446 m_imageManager.EnqueueReq(args);
6447 }
6448 }
6449 }
6450 return true;
6451 }
6452
6453 private bool HandleTransferRequest(IClientAPI sender, Packet Pack)
6454 {
6455 //m_log.Debug("ClientView.ProcessPackets.cs:ProcessInPacket() - Got transfer request");
6456
6457 TransferRequestPacket transfer = (TransferRequestPacket)Pack;
6458 //m_log.Debug("Transfer Request: " + transfer.ToString());
6459 // Validate inventory transfers
6460 // Has to be done here, because AssetCache can't do it
6461 //
6462 UUID taskID = UUID.Zero;
6463 if (transfer.TransferInfo.SourceType == 3)
6464 {
6465 taskID = new UUID(transfer.TransferInfo.Params, 48);
6466 UUID itemID = new UUID(transfer.TransferInfo.Params, 64);
6467 UUID requestID = new UUID(transfer.TransferInfo.Params, 80);
6468 if (!(((Scene)m_scene).Permissions.BypassPermissions()))
6469 {
6470 if (taskID != UUID.Zero) // Prim
6471 {
6472 SceneObjectPart part = ((Scene)m_scene).GetSceneObjectPart(taskID);
6473 if (part == null)
6474 return true;
6475
6476 if (part.OwnerID != AgentId)
6477 return true;
6478
6479 if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
6480 return true;
6481
6482 TaskInventoryItem ti = part.Inventory.GetInventoryItem(itemID);
6483 if (ti == null)
6484 return true;
6485
6486 if (ti.OwnerID != AgentId)
6487 return true;
6488
6489 if ((ti.CurrentPermissions & ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer)) != ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer))
6490 return true;
6491
6492 if (ti.AssetID != requestID)
6493 return true;
6494 }
6495 else // Agent
6496 {
6497 IInventoryService invService = m_scene.RequestModuleInterface<IInventoryService>();
6498 InventoryItemBase assetRequestItem = new InventoryItemBase(itemID, AgentId);
6499 assetRequestItem = invService.GetItem(assetRequestItem);
6500 if (assetRequestItem == null)
6501 {
6502 assetRequestItem = ((Scene)m_scene).CommsManager.UserProfileCacheService.LibraryRoot.FindItem(itemID);
6503 if (assetRequestItem == null)
6504 return true;
6505 }
6506
6507 // At this point, we need to apply perms
6508 // only to notecards and scripts. All
6509 // other asset types are always available
6510 //
6511 if (assetRequestItem.AssetType == 10)
6512 {
6513 if (!((Scene)m_scene).Permissions.CanViewScript(itemID, UUID.Zero, AgentId))
6514 {
6515 SendAgentAlertMessage("Insufficient permissions to view script", false);
6516 return true;
6517 }
6518 }
6519 else if (assetRequestItem.AssetType == 7)
6520 {
6521 if (!((Scene)m_scene).Permissions.CanViewNotecard(itemID, UUID.Zero, AgentId))
6522 {
6523 SendAgentAlertMessage("Insufficient permissions to view notecard", false);
6524 return true;
6525 }
6526 }
6527
6528 if (assetRequestItem.AssetID != requestID)
6529 return true;
6530 }
6531 }
6532 }
6533
6534 //m_assetCache.AddAssetRequest(this, transfer);
6535
6536 MakeAssetRequest(transfer, taskID);
6537
6538 /* RequestAsset = OnRequestAsset;
6539 if (RequestAsset != null)
6540 {
6541 RequestAsset(this, transfer);
6542 }*/
6543 return true;
6544 }
6545
6546 private bool HandleAssetUploadRequest(IClientAPI sender, Packet Pack)
6547 {
6548 AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack;
6549
6550
6551 // m_log.Debug("upload request " + request.ToString());
6552 // m_log.Debug("upload request was for assetid: " + request.AssetBlock.TransactionID.Combine(this.SecureSessionId).ToString());
6553 UUID temp = UUID.Combine(request.AssetBlock.TransactionID, SecureSessionId);
6554
6555 UDPAssetUploadRequest handlerAssetUploadRequest = OnAssetUploadRequest;
6556
6557 if (handlerAssetUploadRequest != null)
6558 {
6559 handlerAssetUploadRequest(this, temp,
6560 request.AssetBlock.TransactionID, request.AssetBlock.Type,
6561 request.AssetBlock.AssetData, request.AssetBlock.StoreLocal,
6562 request.AssetBlock.Tempfile);
6563 }
6564 return true;
6565 }
6566
6567 private bool HandleRequestXfer(IClientAPI sender, Packet Pack)
6568 {
6569 RequestXferPacket xferReq = (RequestXferPacket)Pack;
6570
6571 RequestXfer handlerRequestXfer = OnRequestXfer;
6572
6573 if (handlerRequestXfer != null)
6574 {
6575 handlerRequestXfer(this, xferReq.XferID.ID, Util.FieldToString(xferReq.XferID.Filename));
6576 }
6577 return true;
6578 }
6579
6580 private bool HandleSendXferPacket(IClientAPI sender, Packet Pack)
6581 {
6582 SendXferPacketPacket xferRec = (SendXferPacketPacket)Pack;
6583
6584 XferReceive handlerXferReceive = OnXferReceive;
6585 if (handlerXferReceive != null)
6586 {
6587 handlerXferReceive(this, xferRec.XferID.ID, xferRec.XferID.Packet, xferRec.DataPacket.Data);
6588 }
6589 return true;
6590 }
6591
6592 private bool HandleConfirmXferPacket(IClientAPI sender, Packet Pack)
6593 {
6594 ConfirmXferPacketPacket confirmXfer = (ConfirmXferPacketPacket)Pack;
6595
6596 ConfirmXfer handlerConfirmXfer = OnConfirmXfer;
6597 if (handlerConfirmXfer != null)
6598 {
6599 handlerConfirmXfer(this, confirmXfer.XferID.ID, confirmXfer.XferID.Packet);
6600 }
6601 return true;
6602 }
6603
6604 private bool HandleAbortXfer(IClientAPI sender, Packet Pack)
6605 {
6606 AbortXferPacket abortXfer = (AbortXferPacket)Pack;
6607 AbortXfer handlerAbortXfer = OnAbortXfer;
6608 if (handlerAbortXfer != null)
6609 {
6610 handlerAbortXfer(this, abortXfer.XferID.ID);
6611 }
6612
6613 return true;
6614 }
6615
6616 private bool HandleCreateInventoryFolder(IClientAPI sender, Packet Pack)
6617 {
6618 CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack;
6619
6620 #region Packet Session and User Check
6621 if (m_checkPackets)
6622 {
6623 if (invFolder.AgentData.SessionID != SessionId ||
6624 invFolder.AgentData.AgentID != AgentId)
6625 return true;
6626 }
6627 #endregion
6628
6629 CreateInventoryFolder handlerCreateInventoryFolder = OnCreateNewInventoryFolder;
6630 if (handlerCreateInventoryFolder != null)
6631 {
6632 handlerCreateInventoryFolder(this, invFolder.FolderData.FolderID,
6633 (ushort)invFolder.FolderData.Type,
6634 Util.FieldToString(invFolder.FolderData.Name),
6635 invFolder.FolderData.ParentID);
6636 }
6637 return true;
6638 }
6639
6640 private bool HandleUpdateInventoryFolder(IClientAPI sender, Packet Pack)
6641 {
6642 if (OnUpdateInventoryFolder != null)
6643 {
6644 UpdateInventoryFolderPacket invFolderx = (UpdateInventoryFolderPacket)Pack;
6645
6646 #region Packet Session and User Check
6647 if (m_checkPackets)
6648 {
6649 if (invFolderx.AgentData.SessionID != SessionId ||
6650 invFolderx.AgentData.AgentID != AgentId)
6651 return true;
6652 }
6653 #endregion
6654
6655 UpdateInventoryFolder handlerUpdateInventoryFolder = null;
6656
6657 for (int i = 0; i < invFolderx.FolderData.Length; i++)
6658 {
6659 handlerUpdateInventoryFolder = OnUpdateInventoryFolder;
6660 if (handlerUpdateInventoryFolder != null)
6661 {
6662 OnUpdateInventoryFolder(this, invFolderx.FolderData[i].FolderID,
6663 (ushort)invFolderx.FolderData[i].Type,
6664 Util.FieldToString(invFolderx.FolderData[i].Name),
6665 invFolderx.FolderData[i].ParentID);
6666 }
6667 }
6668 }
6669 return true;
6670 }
6671
6672 private bool HandleMoveInventoryFolder(IClientAPI sender, Packet Pack)
6673 {
6674 if (OnMoveInventoryFolder != null)
6675 {
6676 MoveInventoryFolderPacket invFoldery = (MoveInventoryFolderPacket)Pack;
6677
6678 #region Packet Session and User Check
6679 if (m_checkPackets)
6680 {
6681 if (invFoldery.AgentData.SessionID != SessionId ||
6682 invFoldery.AgentData.AgentID != AgentId)
6683 return true;
6684 }
6685 #endregion
6686
6687 MoveInventoryFolder handlerMoveInventoryFolder = null;
6688
6689 for (int i = 0; i < invFoldery.InventoryData.Length; i++)
6690 {
6691 handlerMoveInventoryFolder = OnMoveInventoryFolder;
6692 if (handlerMoveInventoryFolder != null)
6693 {
6694 OnMoveInventoryFolder(this, invFoldery.InventoryData[i].FolderID,
6695 invFoldery.InventoryData[i].ParentID);
6696 }
6697 }
6698 }
6699 return true;
6700 }
6701
6702 private bool HandleCreateInventoryItem(IClientAPI sender, Packet Pack)
6703 {
6704 CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack;
6705
6706 #region Packet Session and User Check
6707 if (m_checkPackets)
6708 {
6709 if (createItem.AgentData.SessionID != SessionId ||
6710 createItem.AgentData.AgentID != AgentId)
6711 return true;
6712 }
6713 #endregion
6714
6715 CreateNewInventoryItem handlerCreateNewInventoryItem = OnCreateNewInventoryItem;
6716 if (handlerCreateNewInventoryItem != null)
6717 {
6718 handlerCreateNewInventoryItem(this, createItem.InventoryBlock.TransactionID,
6719 createItem.InventoryBlock.FolderID,
6720 createItem.InventoryBlock.CallbackID,
6721 Util.FieldToString(createItem.InventoryBlock.Description),
6722 Util.FieldToString(createItem.InventoryBlock.Name),
6723 createItem.InventoryBlock.InvType,
6724 createItem.InventoryBlock.Type,
6725 createItem.InventoryBlock.WearableType,
6726 createItem.InventoryBlock.NextOwnerMask,
6727 Util.UnixTimeSinceEpoch());
6728 }
6729 return true;
6730 }
6731
6732 private bool HandleFetchInventory(IClientAPI sender, Packet Pack)
6733 {
6734 if (OnFetchInventory != null)
6735 {
6736 FetchInventoryPacket FetchInventoryx = (FetchInventoryPacket)Pack;
6737
6738 #region Packet Session and User Check
6739 if (m_checkPackets)
6740 {
6741 if (FetchInventoryx.AgentData.SessionID != SessionId ||
6742 FetchInventoryx.AgentData.AgentID != AgentId)
6743 return true;
6744 }
6745 #endregion
6746
6747 FetchInventory handlerFetchInventory = null;
6748
6749 for (int i = 0; i < FetchInventoryx.InventoryData.Length; i++)
6750 {
6751 handlerFetchInventory = OnFetchInventory;
6752
6753 if (handlerFetchInventory != null)
6754 {
6755 OnFetchInventory(this, FetchInventoryx.InventoryData[i].ItemID,
6756 FetchInventoryx.InventoryData[i].OwnerID);
6757 }
6758 }
6759 }
6760 return true;
6761 }
6762
6763 private bool HandleFetchInventoryDescendents(IClientAPI sender, Packet Pack)
6764 {
6765 FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack;
6766
6767 #region Packet Session and User Check
6768 if (m_checkPackets)
6769 {
6770 if (Fetch.AgentData.SessionID != SessionId ||
6771 Fetch.AgentData.AgentID != AgentId)
6772 return true;
6773 }
6774 #endregion
6775
6776 FetchInventoryDescendents handlerFetchInventoryDescendents = OnFetchInventoryDescendents;
6777 if (handlerFetchInventoryDescendents != null)
6778 {
6779 handlerFetchInventoryDescendents(this, Fetch.InventoryData.FolderID, Fetch.InventoryData.OwnerID,
6780 Fetch.InventoryData.FetchFolders, Fetch.InventoryData.FetchItems,
6781 Fetch.InventoryData.SortOrder);
6782 }
6783 return true;
6784 }
6785
6786 private bool HandlePurgeInventoryDescendents(IClientAPI sender, Packet Pack)
6787 {
6788 PurgeInventoryDescendentsPacket Purge = (PurgeInventoryDescendentsPacket)Pack;
6789
6790 #region Packet Session and User Check
6791 if (m_checkPackets)
6792 {
6793 if (Purge.AgentData.SessionID != SessionId ||
6794 Purge.AgentData.AgentID != AgentId)
6795 return true;
6796 }
6797 #endregion
6798
6799 PurgeInventoryDescendents handlerPurgeInventoryDescendents = OnPurgeInventoryDescendents;
6800 if (handlerPurgeInventoryDescendents != null)
6801 {
6802 handlerPurgeInventoryDescendents(this, Purge.InventoryData.FolderID);
6803 }
6804 return true;
6805 }
6806
6807 private bool HandleUpdateInventoryItem(IClientAPI sender, Packet Pack)
6808 {
6809 UpdateInventoryItemPacket inventoryItemUpdate = (UpdateInventoryItemPacket)Pack;
6810
6811 #region Packet Session and User Check
6812 if (m_checkPackets)
6813 {
6814 if (inventoryItemUpdate.AgentData.SessionID != SessionId ||
6815 inventoryItemUpdate.AgentData.AgentID != AgentId)
6816 return true;
6817 }
6818 #endregion
6819
6820 if (OnUpdateInventoryItem != null)
6821 {
6822 UpdateInventoryItem handlerUpdateInventoryItem = null;
6823 for (int i = 0; i < inventoryItemUpdate.InventoryData.Length; i++)
6824 {
6825 handlerUpdateInventoryItem = OnUpdateInventoryItem;
6826
6827 if (handlerUpdateInventoryItem != null)
6828 {
6829 InventoryItemBase itemUpd = new InventoryItemBase();
6830 itemUpd.ID = inventoryItemUpdate.InventoryData[i].ItemID;
6831 itemUpd.Name = Util.FieldToString(inventoryItemUpdate.InventoryData[i].Name);
6832 itemUpd.Description = Util.FieldToString(inventoryItemUpdate.InventoryData[i].Description);
6833 itemUpd.GroupID = inventoryItemUpdate.InventoryData[i].GroupID;
6834 itemUpd.GroupOwned = inventoryItemUpdate.InventoryData[i].GroupOwned;
6835 itemUpd.GroupPermissions = inventoryItemUpdate.InventoryData[i].GroupMask;
6836 itemUpd.NextPermissions = inventoryItemUpdate.InventoryData[i].NextOwnerMask;
6837 itemUpd.EveryOnePermissions = inventoryItemUpdate.InventoryData[i].EveryoneMask;
6838 itemUpd.CreationDate = inventoryItemUpdate.InventoryData[i].CreationDate;
6839 itemUpd.Folder = inventoryItemUpdate.InventoryData[i].FolderID;
6840 itemUpd.InvType = inventoryItemUpdate.InventoryData[i].InvType;
6841 itemUpd.SalePrice = inventoryItemUpdate.InventoryData[i].SalePrice;
6842 itemUpd.SaleType = inventoryItemUpdate.InventoryData[i].SaleType;
6843 itemUpd.Flags = inventoryItemUpdate.InventoryData[i].Flags;
6844
6845 OnUpdateInventoryItem(this, inventoryItemUpdate.InventoryData[i].TransactionID,
6846 inventoryItemUpdate.InventoryData[i].ItemID,
6847 itemUpd);
6848 }
6849 }
6850 }
6851 return true;
6852 }
6853
6854 private bool HandleCopyInventoryItem(IClientAPI sender, Packet Pack)
6855 {
6856 CopyInventoryItemPacket copyitem = (CopyInventoryItemPacket)Pack;
6857
6858 #region Packet Session and User Check
6859 if (m_checkPackets)
6860 {
6861 if (copyitem.AgentData.SessionID != SessionId ||
6862 copyitem.AgentData.AgentID != AgentId)
6863 return true;
6864 }
6865 #endregion
6866
6867 CopyInventoryItem handlerCopyInventoryItem = null;
6868 if (OnCopyInventoryItem != null)
6869 {
6870 foreach (CopyInventoryItemPacket.InventoryDataBlock datablock in copyitem.InventoryData)
6871 {
6872 handlerCopyInventoryItem = OnCopyInventoryItem;
6873 if (handlerCopyInventoryItem != null)
6874 {
6875 handlerCopyInventoryItem(this, datablock.CallbackID, datablock.OldAgentID,
6876 datablock.OldItemID, datablock.NewFolderID,
6877 Util.FieldToString(datablock.NewName));
6878 }
6879 }
6880 }
6881 return true;
6882 }
6883
6884 private bool HandleMoveInventoryItem(IClientAPI sender, Packet Pack)
6885 {
6886 MoveInventoryItemPacket moveitem = (MoveInventoryItemPacket)Pack;
6887
6888 #region Packet Session and User Check
6889 if (m_checkPackets)
6890 {
6891 if (moveitem.AgentData.SessionID != SessionId ||
6892 moveitem.AgentData.AgentID != AgentId)
6893 return true;
6894 }
6895 #endregion
6896
6897 if (OnMoveInventoryItem != null)
6898 {
6899 MoveInventoryItem handlerMoveInventoryItem = null;
6900 InventoryItemBase itm = null;
6901 List<InventoryItemBase> items = new List<InventoryItemBase>();
6902 foreach (MoveInventoryItemPacket.InventoryDataBlock datablock in moveitem.InventoryData)
6903 {
6904 itm = new InventoryItemBase(datablock.ItemID, AgentId);
6905 itm.Folder = datablock.FolderID;
6906 itm.Name = Util.FieldToString(datablock.NewName);
6907 // weird, comes out as empty string
6908 //m_log.DebugFormat("[XXX] new name: {0}", itm.Name);
6909 items.Add(itm);
6910 }
6911 handlerMoveInventoryItem = OnMoveInventoryItem;
6912 if (handlerMoveInventoryItem != null)
6913 {
6914 handlerMoveInventoryItem(this, items);
6915 }
6916 }
6917 return true;
6918 }
6919
6920 private bool HandleRemoveInventoryItem(IClientAPI sender, Packet Pack)
6921 {
6922 RemoveInventoryItemPacket removeItem = (RemoveInventoryItemPacket)Pack;
6923
6924 #region Packet Session and User Check
6925 if (m_checkPackets)
6926 {
6927 if (removeItem.AgentData.SessionID != SessionId ||
6928 removeItem.AgentData.AgentID != AgentId)
6929 return true;
6930 }
6931 #endregion
6932
6933 if (OnRemoveInventoryItem != null)
6934 {
6935 RemoveInventoryItem handlerRemoveInventoryItem = null;
6936 List<UUID> uuids = new List<UUID>();
6937 foreach (RemoveInventoryItemPacket.InventoryDataBlock datablock in removeItem.InventoryData)
6938 {
6939 uuids.Add(datablock.ItemID);
6940 }
6941 handlerRemoveInventoryItem = OnRemoveInventoryItem;
6942 if (handlerRemoveInventoryItem != null)
6943 {
6944 handlerRemoveInventoryItem(this, uuids);
6945 }
6946
6947 }
6948 return true;
6949 }
6950
6951 private bool HandleRemoveInventoryFolder(IClientAPI sender, Packet Pack)
6952 {
6953 RemoveInventoryFolderPacket removeFolder = (RemoveInventoryFolderPacket)Pack;
6954
6955 #region Packet Session and User Check
6956 if (m_checkPackets)
6957 {
6958 if (removeFolder.AgentData.SessionID != SessionId ||
6959 removeFolder.AgentData.AgentID != AgentId)
6960 return true;
6961 }
6962 #endregion
6963
6964 if (OnRemoveInventoryFolder != null)
6965 {
6966 RemoveInventoryFolder handlerRemoveInventoryFolder = null;
6967 List<UUID> uuids = new List<UUID>();
6968 foreach (RemoveInventoryFolderPacket.FolderDataBlock datablock in removeFolder.FolderData)
6969 {
6970 uuids.Add(datablock.FolderID);
6971 }
6972 handlerRemoveInventoryFolder = OnRemoveInventoryFolder;
6973 if (handlerRemoveInventoryFolder != null)
6974 {
6975 handlerRemoveInventoryFolder(this, uuids);
6976 }
6977 }
6978 return true;
6979 }
6980
6981 private bool HandleRemoveInventoryObjects(IClientAPI sender, Packet Pack)
6982 {
6983 RemoveInventoryObjectsPacket removeObject = (RemoveInventoryObjectsPacket)Pack;
6984 #region Packet Session and User Check
6985 if (m_checkPackets)
6986 {
6987 if (removeObject.AgentData.SessionID != SessionId ||
6988 removeObject.AgentData.AgentID != AgentId)
6989 return true;
6990 }
6991 #endregion
6992 if (OnRemoveInventoryFolder != null)
6993 {
6994 RemoveInventoryFolder handlerRemoveInventoryFolder = null;
6995 List<UUID> uuids = new List<UUID>();
6996 foreach (RemoveInventoryObjectsPacket.FolderDataBlock datablock in removeObject.FolderData)
6997 {
6998 uuids.Add(datablock.FolderID);
6999 }
7000 handlerRemoveInventoryFolder = OnRemoveInventoryFolder;
7001 if (handlerRemoveInventoryFolder != null)
7002 {
7003 handlerRemoveInventoryFolder(this, uuids);
7004 }
7005 }
7006
7007 if (OnRemoveInventoryItem != null)
7008 {
7009 RemoveInventoryItem handlerRemoveInventoryItem = null;
7010 List<UUID> uuids = new List<UUID>();
7011 foreach (RemoveInventoryObjectsPacket.ItemDataBlock datablock in removeObject.ItemData)
7012 {
7013 uuids.Add(datablock.ItemID);
7014 }
7015 handlerRemoveInventoryItem = OnRemoveInventoryItem;
7016 if (handlerRemoveInventoryItem != null)
7017 {
7018 handlerRemoveInventoryItem(this, uuids);
7019 }
7020 }
7021 return true;
7022 }
7023
7024 private bool HandleRequestTaskInventory(IClientAPI sender, Packet Pack)
7025 {
7026 RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket)Pack;
7027
7028 #region Packet Session and User Check
7029 if (m_checkPackets)
7030 {
7031 if (requesttask.AgentData.SessionID != SessionId ||
7032 requesttask.AgentData.AgentID != AgentId)
7033 return true;
7034 }
7035 #endregion
7036
7037 RequestTaskInventory handlerRequestTaskInventory = OnRequestTaskInventory;
7038 if (handlerRequestTaskInventory != null)
7039 {
7040 handlerRequestTaskInventory(this, requesttask.InventoryData.LocalID);
7041 }
7042 return true;
7043 }
7044
7045 private bool HandleUpdateTaskInventory(IClientAPI sender, Packet Pack)
7046 {
7047 UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket)Pack;
7048
7049 #region Packet Session and User Check
7050 if (m_checkPackets)
7051 {
7052 if (updatetask.AgentData.SessionID != SessionId ||
7053 updatetask.AgentData.AgentID != AgentId)
7054 return true;
7055 }
7056 #endregion
7057
7058 if (OnUpdateTaskInventory != null)
7059 {
7060 if (updatetask.UpdateData.Key == 0)
7061 {
7062 UpdateTaskInventory handlerUpdateTaskInventory = OnUpdateTaskInventory;
7063 if (handlerUpdateTaskInventory != null)
7064 {
7065 TaskInventoryItem newTaskItem = new TaskInventoryItem();
7066 newTaskItem.ItemID = updatetask.InventoryData.ItemID;
7067 newTaskItem.ParentID = updatetask.InventoryData.FolderID;
7068 newTaskItem.CreatorID = updatetask.InventoryData.CreatorID;
7069 newTaskItem.OwnerID = updatetask.InventoryData.OwnerID;
7070 newTaskItem.GroupID = updatetask.InventoryData.GroupID;
7071 newTaskItem.BasePermissions = updatetask.InventoryData.BaseMask;
7072 newTaskItem.CurrentPermissions = updatetask.InventoryData.OwnerMask;
7073 newTaskItem.GroupPermissions = updatetask.InventoryData.GroupMask;
7074 newTaskItem.EveryonePermissions = updatetask.InventoryData.EveryoneMask;
7075 newTaskItem.NextPermissions = updatetask.InventoryData.NextOwnerMask;
7076 //newTaskItem.GroupOwned=updatetask.InventoryData.GroupOwned;
7077 newTaskItem.Type = updatetask.InventoryData.Type;
7078 newTaskItem.InvType = updatetask.InventoryData.InvType;
7079 newTaskItem.Flags = updatetask.InventoryData.Flags;
7080 //newTaskItem.SaleType=updatetask.InventoryData.SaleType;
7081 //newTaskItem.SalePrice=updatetask.InventoryData.SalePrice;;
7082 newTaskItem.Name = Util.FieldToString(updatetask.InventoryData.Name);
7083 newTaskItem.Description = Util.FieldToString(updatetask.InventoryData.Description);
7084 newTaskItem.CreationDate = (uint)updatetask.InventoryData.CreationDate;
7085 handlerUpdateTaskInventory(this, updatetask.InventoryData.TransactionID,
7086 newTaskItem, updatetask.UpdateData.LocalID);
7087 }
7088 }
7089 }
7090
7091 return true;
7092 }
7093
7094 private bool HandleRemoveTaskInventory(IClientAPI sender, Packet Pack)
7095 {
7096 RemoveTaskInventoryPacket removeTask = (RemoveTaskInventoryPacket)Pack;
7097
7098 #region Packet Session and User Check
7099 if (m_checkPackets)
7100 {
7101 if (removeTask.AgentData.SessionID != SessionId ||
7102 removeTask.AgentData.AgentID != AgentId)
7103 return true;
7104 }
7105 #endregion
7106
7107 RemoveTaskInventory handlerRemoveTaskItem = OnRemoveTaskItem;
7108
7109 if (handlerRemoveTaskItem != null)
7110 {
7111 handlerRemoveTaskItem(this, removeTask.InventoryData.ItemID, removeTask.InventoryData.LocalID);
7112 }
7113
7114 return true;
7115 }
7116
7117 private bool HandleMoveTaskInventory(IClientAPI sender, Packet Pack)
7118 {
7119 MoveTaskInventoryPacket moveTaskInventoryPacket = (MoveTaskInventoryPacket)Pack;
7120
7121 #region Packet Session and User Check
7122 if (m_checkPackets)
7123 {
7124 if (moveTaskInventoryPacket.AgentData.SessionID != SessionId ||
7125 moveTaskInventoryPacket.AgentData.AgentID != AgentId)
7126 return true;
7127 }
7128 #endregion
7129
7130 MoveTaskInventory handlerMoveTaskItem = OnMoveTaskItem;
7131
7132 if (handlerMoveTaskItem != null)
7133 {
7134 handlerMoveTaskItem(
7135 this, moveTaskInventoryPacket.AgentData.FolderID,
7136 moveTaskInventoryPacket.InventoryData.LocalID,
7137 moveTaskInventoryPacket.InventoryData.ItemID);
7138 }
7139
7140 return true;
7141 }
7142
7143 private bool HandleRezScript(IClientAPI sender, Packet Pack)
7144 {
7145 //m_log.Debug(Pack.ToString());
7146 RezScriptPacket rezScriptx = (RezScriptPacket)Pack;
7147
7148 #region Packet Session and User Check
7149 if (m_checkPackets)
7150 {
7151 if (rezScriptx.AgentData.SessionID != SessionId ||
7152 rezScriptx.AgentData.AgentID != AgentId)
7153 return true;
7154 }
7155 #endregion
7156
7157 RezScript handlerRezScript = OnRezScript;
7158 InventoryItemBase item = new InventoryItemBase();
7159 item.ID = rezScriptx.InventoryBlock.ItemID;
7160 item.Folder = rezScriptx.InventoryBlock.FolderID;
7161 item.CreatorId = rezScriptx.InventoryBlock.CreatorID.ToString();
7162 item.Owner = rezScriptx.InventoryBlock.OwnerID;
7163 item.BasePermissions = rezScriptx.InventoryBlock.BaseMask;
7164 item.CurrentPermissions = rezScriptx.InventoryBlock.OwnerMask;
7165 item.EveryOnePermissions = rezScriptx.InventoryBlock.EveryoneMask;
7166 item.NextPermissions = rezScriptx.InventoryBlock.NextOwnerMask;
7167 item.GroupPermissions = rezScriptx.InventoryBlock.GroupMask;
7168 item.GroupOwned = rezScriptx.InventoryBlock.GroupOwned;
7169 item.GroupID = rezScriptx.InventoryBlock.GroupID;
7170 item.AssetType = rezScriptx.InventoryBlock.Type;
7171 item.InvType = rezScriptx.InventoryBlock.InvType;
7172 item.Flags = rezScriptx.InventoryBlock.Flags;
7173 item.SaleType = rezScriptx.InventoryBlock.SaleType;
7174 item.SalePrice = rezScriptx.InventoryBlock.SalePrice;
7175 item.Name = Util.FieldToString(rezScriptx.InventoryBlock.Name);
7176 item.Description = Util.FieldToString(rezScriptx.InventoryBlock.Description);
7177 item.CreationDate = rezScriptx.InventoryBlock.CreationDate;
7178
7179 if (handlerRezScript != null)
7180 {
7181 handlerRezScript(this, item, rezScriptx.InventoryBlock.TransactionID, rezScriptx.UpdateBlock.ObjectLocalID);
7182 }
7183 return true;
7184 }
7185
7186 private bool HandleMapLayerRequest(IClientAPI sender, Packet Pack)
7187 {
7188 RequestMapLayer();
7189 return true;
7190 }
7191
7192 private bool HandleMapBlockRequest(IClientAPI sender, Packet Pack)
7193 {
7194 MapBlockRequestPacket MapRequest = (MapBlockRequestPacket)Pack;
7195
7196 #region Packet Session and User Check
7197 if (m_checkPackets)
7198 {
7199 if (MapRequest.AgentData.SessionID != SessionId ||
7200 MapRequest.AgentData.AgentID != AgentId)
7201 return true;
7202 }
7203 #endregion
7204
7205 RequestMapBlocks handlerRequestMapBlocks = OnRequestMapBlocks;
7206 if (handlerRequestMapBlocks != null)
7207 {
7208 handlerRequestMapBlocks(this, MapRequest.PositionData.MinX, MapRequest.PositionData.MinY,
7209 MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY, MapRequest.AgentData.Flags);
7210 }
7211 return true;
7212 }
7213
7214 private bool HandleMapNameRequest(IClientAPI sender, Packet Pack)
7215 {
7216 MapNameRequestPacket map = (MapNameRequestPacket)Pack;
7217
7218 #region Packet Session and User Check
7219 if (m_checkPackets)
7220 {
7221 if (map.AgentData.SessionID != SessionId ||
7222 map.AgentData.AgentID != AgentId)
7223 return true;
7224 }
7225 #endregion
7226
7227 string mapName = Util.UTF8.GetString(map.NameData.Name, 0,
7228 map.NameData.Name.Length - 1);
7229 RequestMapName handlerMapNameRequest = OnMapNameRequest;
7230 if (handlerMapNameRequest != null)
7231 {
7232 handlerMapNameRequest(this, mapName);
7233 }
7234 return true;
7235 }
7236
7237 private bool HandleTeleportLandmarkRequest(IClientAPI sender, Packet Pack)
7238 {
7239 TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket)Pack;
7240
7241 #region Packet Session and User Check
7242 if (m_checkPackets)
7243 {
7244 if (tpReq.Info.SessionID != SessionId ||
7245 tpReq.Info.AgentID != AgentId)
7246 return true;
7247 }
7248 #endregion
7249
7250 UUID lmid = tpReq.Info.LandmarkID;
7251 AssetLandmark lm;
7252 if (lmid != UUID.Zero)
7253 {
7254 //AssetBase lma = m_assetCache.GetAsset(lmid, false);
7255 AssetBase lma = m_assetService.Get(lmid.ToString());
7256
7257 if (lma == null)
7258 {
7259 // Failed to find landmark
7260 TeleportCancelPacket tpCancel = (TeleportCancelPacket)PacketPool.Instance.GetPacket(PacketType.TeleportCancel);
7261 tpCancel.Info.SessionID = tpReq.Info.SessionID;
7262 tpCancel.Info.AgentID = tpReq.Info.AgentID;
7263 OutPacket(tpCancel, ThrottleOutPacketType.Task);
7264 }
7265
7266 try
7267 {
7268 lm = new AssetLandmark(lma);
7269 }
7270 catch (NullReferenceException)
7271 {
7272 // asset not found generates null ref inside the assetlandmark constructor.
7273 TeleportCancelPacket tpCancel = (TeleportCancelPacket)PacketPool.Instance.GetPacket(PacketType.TeleportCancel);
7274 tpCancel.Info.SessionID = tpReq.Info.SessionID;
7275 tpCancel.Info.AgentID = tpReq.Info.AgentID;
7276 OutPacket(tpCancel, ThrottleOutPacketType.Task);
7277 return true;
7278 }
7279 }
7280 else
7281 {
7282 // Teleport home request
7283 UUIDNameRequest handlerTeleportHomeRequest = OnTeleportHomeRequest;
7284 if (handlerTeleportHomeRequest != null)
7285 {
7286 handlerTeleportHomeRequest(AgentId, this);
7287 }
7288 return true;
7289 }
7290
7291 TeleportLandmarkRequest handlerTeleportLandmarkRequest = OnTeleportLandmarkRequest;
7292 if (handlerTeleportLandmarkRequest != null)
7293 {
7294 handlerTeleportLandmarkRequest(this, lm.RegionID, lm.Position);
7295 }
7296 else
7297 {
7298 //no event handler so cancel request
7299
7300
7301 TeleportCancelPacket tpCancel = (TeleportCancelPacket)PacketPool.Instance.GetPacket(PacketType.TeleportCancel);
7302 tpCancel.Info.AgentID = tpReq.Info.AgentID;
7303 tpCancel.Info.SessionID = tpReq.Info.SessionID;
7304 OutPacket(tpCancel, ThrottleOutPacketType.Task);
7305
7306 }
7307 return true;
7308 }
7309
7310 private bool HandleTeleportLocationRequest(IClientAPI sender, Packet Pack)
7311 {
7312 TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack;
7313 // m_log.Debug(tpLocReq.ToString());
7314
7315 #region Packet Session and User Check
7316 if (m_checkPackets)
7317 {
7318 if (tpLocReq.AgentData.SessionID != SessionId ||
7319 tpLocReq.AgentData.AgentID != AgentId)
7320 return true;
7321 }
7322 #endregion
7323
7324 TeleportLocationRequest handlerTeleportLocationRequest = OnTeleportLocationRequest;
7325 if (handlerTeleportLocationRequest != null)
7326 {
7327 handlerTeleportLocationRequest(this, tpLocReq.Info.RegionHandle, tpLocReq.Info.Position,
7328 tpLocReq.Info.LookAt, 16);
7329 }
7330 else
7331 {
7332 //no event handler so cancel request
7333 TeleportCancelPacket tpCancel = (TeleportCancelPacket)PacketPool.Instance.GetPacket(PacketType.TeleportCancel);
7334 tpCancel.Info.SessionID = tpLocReq.AgentData.SessionID;
7335 tpCancel.Info.AgentID = tpLocReq.AgentData.AgentID;
7336 OutPacket(tpCancel, ThrottleOutPacketType.Task);
7337 }
7338 return true;
7339 }
7340
7341 #endregion Inventory/Asset/Other related packets
7342
7343 private bool HandleUUIDNameRequest(IClientAPI sender, Packet Pack)
7344 {
7345 UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack;
7346
7347 foreach (UUIDNameRequestPacket.UUIDNameBlockBlock UUIDBlock in incoming.UUIDNameBlock)
7348 {
7349 UUIDNameRequest handlerNameRequest = OnNameFromUUIDRequest;
7350 if (handlerNameRequest != null)
7351 {
7352 handlerNameRequest(UUIDBlock.ID, this);
7353 }
7354 }
7355 return true;
7356 }
7357
7358 #region Parcel related packets
7359
7360 private bool HandleRegionHandleRequest(IClientAPI sender, Packet Pack)
7361 {
7362 RegionHandleRequestPacket rhrPack = (RegionHandleRequestPacket)Pack;
7363
7364 RegionHandleRequest handlerRegionHandleRequest = OnRegionHandleRequest;
7365 if (handlerRegionHandleRequest != null)
7366 {
7367 handlerRegionHandleRequest(this, rhrPack.RequestBlock.RegionID);
7368 }
7369 return true;
7370 }
7371
7372 private bool HandleParcelInfoRequest(IClientAPI sender, Packet Pack)
7373 {
7374 ParcelInfoRequestPacket pirPack = (ParcelInfoRequestPacket)Pack;
7375
7376 #region Packet Session and User Check
7377 if (m_checkPackets)
7378 {
7379 if (pirPack.AgentData.SessionID != SessionId ||
7380 pirPack.AgentData.AgentID != AgentId)
7381 return true;
7382 }
7383 #endregion
7384
7385 ParcelInfoRequest handlerParcelInfoRequest = OnParcelInfoRequest;
7386 if (handlerParcelInfoRequest != null)
7387 {
7388 handlerParcelInfoRequest(this, pirPack.Data.ParcelID);
7389 }
7390 return true;
7391 }
7392
7393 private bool HandleParcelAccessListRequest(IClientAPI sender, Packet Pack)
7394 {
7395 ParcelAccessListRequestPacket requestPacket = (ParcelAccessListRequestPacket)Pack;
7396
7397 #region Packet Session and User Check
7398 if (m_checkPackets)
7399 {
7400 if (requestPacket.AgentData.SessionID != SessionId ||
7401 requestPacket.AgentData.AgentID != AgentId)
7402 return true;
7403 }
7404 #endregion
7405
7406 ParcelAccessListRequest handlerParcelAccessListRequest = OnParcelAccessListRequest;
7407
7408 if (handlerParcelAccessListRequest != null)
7409 {
7410 handlerParcelAccessListRequest(requestPacket.AgentData.AgentID, requestPacket.AgentData.SessionID,
7411 requestPacket.Data.Flags, requestPacket.Data.SequenceID,
7412 requestPacket.Data.LocalID, this);
7413 }
7414 return true;
7415 }
7416
7417 private bool HandleParcelAccessListUpdate(IClientAPI sender, Packet Pack)
7418 {
7419 ParcelAccessListUpdatePacket updatePacket = (ParcelAccessListUpdatePacket)Pack;
7420
7421 #region Packet Session and User Check
7422 if (m_checkPackets)
7423 {
7424 if (updatePacket.AgentData.SessionID != SessionId ||
7425 updatePacket.AgentData.AgentID != AgentId)
7426 return true;
7427 }
7428 #endregion
7429
7430 List<ParcelManager.ParcelAccessEntry> entries = new List<ParcelManager.ParcelAccessEntry>();
7431 foreach (ParcelAccessListUpdatePacket.ListBlock block in updatePacket.List)
7432 {
7433 ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry();
7434 entry.AgentID = block.ID;
7435 entry.Flags = (AccessList)block.Flags;
7436 entry.Time = new DateTime();
7437 entries.Add(entry);
7438 }
7439
7440 ParcelAccessListUpdateRequest handlerParcelAccessListUpdateRequest = OnParcelAccessListUpdateRequest;
7441 if (handlerParcelAccessListUpdateRequest != null)
7442 {
7443 handlerParcelAccessListUpdateRequest(updatePacket.AgentData.AgentID,
7444 updatePacket.AgentData.SessionID, updatePacket.Data.Flags,
7445 updatePacket.Data.LocalID, entries, this);
7446 }
7447 return true;
7448 }
7449
7450 private bool HandleParcelPropertiesRequest(IClientAPI sender, Packet Pack)
7451 {
7452 ParcelPropertiesRequestPacket propertiesRequest = (ParcelPropertiesRequestPacket)Pack;
7453
7454 #region Packet Session and User Check
7455 if (m_checkPackets)
7456 {
7457 if (propertiesRequest.AgentData.SessionID != SessionId ||
7458 propertiesRequest.AgentData.AgentID != AgentId)
7459 return true;
7460 }
7461 #endregion
7462
7463 ParcelPropertiesRequest handlerParcelPropertiesRequest = OnParcelPropertiesRequest;
7464 if (handlerParcelPropertiesRequest != null)
7465 {
7466 handlerParcelPropertiesRequest((int)Math.Round(propertiesRequest.ParcelData.West),
7467 (int)Math.Round(propertiesRequest.ParcelData.South),
7468 (int)Math.Round(propertiesRequest.ParcelData.East),
7469 (int)Math.Round(propertiesRequest.ParcelData.North),
7470 propertiesRequest.ParcelData.SequenceID,
7471 propertiesRequest.ParcelData.SnapSelection, this);
7472 }
7473 return true;
7474 }
7475
7476 private bool HandleParcelDivide(IClientAPI sender, Packet Pack)
7477 {
7478 ParcelDividePacket landDivide = (ParcelDividePacket)Pack;
7479
7480 #region Packet Session and User Check
7481 if (m_checkPackets)
7482 {
7483 if (landDivide.AgentData.SessionID != SessionId ||
7484 landDivide.AgentData.AgentID != AgentId)
7485 return true;
7486 }
7487 #endregion
7488
7489 ParcelDivideRequest handlerParcelDivideRequest = OnParcelDivideRequest;
7490 if (handlerParcelDivideRequest != null)
7491 {
7492 handlerParcelDivideRequest((int)Math.Round(landDivide.ParcelData.West),
7493 (int)Math.Round(landDivide.ParcelData.South),
7494 (int)Math.Round(landDivide.ParcelData.East),
7495 (int)Math.Round(landDivide.ParcelData.North), this);
7496 }
7497 return true;
7498 }
7499
7500 private bool HandleParcelJoin(IClientAPI sender, Packet Pack)
7501 {
7502 ParcelJoinPacket landJoin = (ParcelJoinPacket)Pack;
7503
7504 #region Packet Session and User Check
7505 if (m_checkPackets)
7506 {
7507 if (landJoin.AgentData.SessionID != SessionId ||
7508 landJoin.AgentData.AgentID != AgentId)
7509 return true;
7510 }
7511 #endregion
7512
7513 ParcelJoinRequest handlerParcelJoinRequest = OnParcelJoinRequest;
7514
7515 if (handlerParcelJoinRequest != null)
7516 {
7517 handlerParcelJoinRequest((int)Math.Round(landJoin.ParcelData.West),
7518 (int)Math.Round(landJoin.ParcelData.South),
7519 (int)Math.Round(landJoin.ParcelData.East),
7520 (int)Math.Round(landJoin.ParcelData.North), this);
7521 }
7522 return true;
7523 }
7524
7525 private bool HandleParcelPropertiesUpdate(IClientAPI sender, Packet Pack)
7526 {
7527 ParcelPropertiesUpdatePacket parcelPropertiesPacket = (ParcelPropertiesUpdatePacket)Pack;
7528
7529 #region Packet Session and User Check
7530 if (m_checkPackets)
7531 {
7532 if (parcelPropertiesPacket.AgentData.SessionID != SessionId ||
7533 parcelPropertiesPacket.AgentData.AgentID != AgentId)
7534 return true;
7535 }
7536 #endregion
7537
7538 ParcelPropertiesUpdateRequest handlerParcelPropertiesUpdateRequest = OnParcelPropertiesUpdateRequest;
7539
7540 if (handlerParcelPropertiesUpdateRequest != null)
7541 {
7542 LandUpdateArgs args = new LandUpdateArgs();
7543
7544 args.AuthBuyerID = parcelPropertiesPacket.ParcelData.AuthBuyerID;
7545 args.Category = (ParcelCategory)parcelPropertiesPacket.ParcelData.Category;
7546 args.Desc = Utils.BytesToString(parcelPropertiesPacket.ParcelData.Desc);
7547 args.GroupID = parcelPropertiesPacket.ParcelData.GroupID;
7548 args.LandingType = parcelPropertiesPacket.ParcelData.LandingType;
7549 args.MediaAutoScale = parcelPropertiesPacket.ParcelData.MediaAutoScale;
7550 args.MediaID = parcelPropertiesPacket.ParcelData.MediaID;
7551 args.MediaURL = Utils.BytesToString(parcelPropertiesPacket.ParcelData.MediaURL);
7552 args.MusicURL = Utils.BytesToString(parcelPropertiesPacket.ParcelData.MusicURL);
7553 args.Name = Utils.BytesToString(parcelPropertiesPacket.ParcelData.Name);
7554 args.ParcelFlags = parcelPropertiesPacket.ParcelData.ParcelFlags;
7555 args.PassHours = parcelPropertiesPacket.ParcelData.PassHours;
7556 args.PassPrice = parcelPropertiesPacket.ParcelData.PassPrice;
7557 args.SalePrice = parcelPropertiesPacket.ParcelData.SalePrice;
7558 args.SnapshotID = parcelPropertiesPacket.ParcelData.SnapshotID;
7559 args.UserLocation = parcelPropertiesPacket.ParcelData.UserLocation;
7560 args.UserLookAt = parcelPropertiesPacket.ParcelData.UserLookAt;
7561 handlerParcelPropertiesUpdateRequest(args, parcelPropertiesPacket.ParcelData.LocalID, this);
7562 }
7563 return true;
7564 }
7565
7566 private bool HandleParcelSelectObjects(IClientAPI sender, Packet Pack)
7567 {
7568 ParcelSelectObjectsPacket selectPacket = (ParcelSelectObjectsPacket)Pack;
7569
7570 #region Packet Session and User Check
7571 if (m_checkPackets)
7572 {
7573 if (selectPacket.AgentData.SessionID != SessionId ||
7574 selectPacket.AgentData.AgentID != AgentId)
7575 return true;
7576 }
7577 #endregion
7578
7579 List<UUID> returnIDs = new List<UUID>();
7580
7581 foreach (ParcelSelectObjectsPacket.ReturnIDsBlock rb in
7582 selectPacket.ReturnIDs)
7583 {
7584 returnIDs.Add(rb.ReturnID);
7585 }
7586
7587 ParcelSelectObjects handlerParcelSelectObjects = OnParcelSelectObjects;
7588
7589 if (handlerParcelSelectObjects != null)
7590 {
7591 handlerParcelSelectObjects(selectPacket.ParcelData.LocalID,
7592 Convert.ToInt32(selectPacket.ParcelData.ReturnType), returnIDs, this);
7593 }
7594 return true;
7595 }
7596
7597 private bool HandleParcelObjectOwnersRequest(IClientAPI sender, Packet Pack)
7598 {
7599 ParcelObjectOwnersRequestPacket reqPacket = (ParcelObjectOwnersRequestPacket)Pack;
7600
7601 #region Packet Session and User Check
7602 if (m_checkPackets)
7603 {
7604 if (reqPacket.AgentData.SessionID != SessionId ||
7605 reqPacket.AgentData.AgentID != AgentId)
7606 return true;
7607 }
7608 #endregion
7609
7610 ParcelObjectOwnerRequest handlerParcelObjectOwnerRequest = OnParcelObjectOwnerRequest;
7611
7612 if (handlerParcelObjectOwnerRequest != null)
7613 {
7614 handlerParcelObjectOwnerRequest(reqPacket.ParcelData.LocalID, this);
7615 }
7616 return true;
7617
7618 }
7619
7620 private bool HandleParcelGodForceOwner(IClientAPI sender, Packet Pack)
7621 {
7622 ParcelGodForceOwnerPacket godForceOwnerPacket = (ParcelGodForceOwnerPacket)Pack;
7623
7624 #region Packet Session and User Check
7625 if (m_checkPackets)
7626 {
7627 if (godForceOwnerPacket.AgentData.SessionID != SessionId ||
7628 godForceOwnerPacket.AgentData.AgentID != AgentId)
7629 return true;
7630 }
7631 #endregion
7632
7633 ParcelGodForceOwner handlerParcelGodForceOwner = OnParcelGodForceOwner;
7634 if (handlerParcelGodForceOwner != null)
7635 {
7636 handlerParcelGodForceOwner(godForceOwnerPacket.Data.LocalID, godForceOwnerPacket.Data.OwnerID, this);
7637 }
7638 return true;
7639 }
7640
7641 private bool HandleParcelRelease(IClientAPI sender, Packet Pack)
7642 {
7643 ParcelReleasePacket releasePacket = (ParcelReleasePacket)Pack;
7644
7645 #region Packet Session and User Check
7646 if (m_checkPackets)
7647 {
7648 if (releasePacket.AgentData.SessionID != SessionId ||
7649 releasePacket.AgentData.AgentID != AgentId)
7650 return true;
7651 }
7652 #endregion
7653
7654 ParcelAbandonRequest handlerParcelAbandonRequest = OnParcelAbandonRequest;
7655 if (handlerParcelAbandonRequest != null)
7656 {
7657 handlerParcelAbandonRequest(releasePacket.Data.LocalID, this);
7658 }
7659 return true;
7660 }
7661
7662 private bool HandleParcelReclaim(IClientAPI sender, Packet Pack)
7663 {
7664 ParcelReclaimPacket reclaimPacket = (ParcelReclaimPacket)Pack;
7665
7666 #region Packet Session and User Check
7667 if (m_checkPackets)
7668 {
7669 if (reclaimPacket.AgentData.SessionID != SessionId ||
7670 reclaimPacket.AgentData.AgentID != AgentId)
7671 return true;
7672 }
7673 #endregion
7674
7675 ParcelReclaim handlerParcelReclaim = OnParcelReclaim;
7676 if (handlerParcelReclaim != null)
7677 {
7678 handlerParcelReclaim(reclaimPacket.Data.LocalID, this);
7679 }
7680 return true;
7681 }
7682
7683 private bool HandleParcelReturnObjects(IClientAPI sender, Packet Pack)
7684 {
7685 ParcelReturnObjectsPacket parcelReturnObjects = (ParcelReturnObjectsPacket)Pack;
7686
7687 #region Packet Session and User Check
7688 if (m_checkPackets)
7689 {
7690 if (parcelReturnObjects.AgentData.SessionID != SessionId ||
7691 parcelReturnObjects.AgentData.AgentID != AgentId)
7692 return true;
7693 }
7694 #endregion
7695
7696 UUID[] puserselectedOwnerIDs = new UUID[parcelReturnObjects.OwnerIDs.Length];
7697 for (int parceliterator = 0; parceliterator < parcelReturnObjects.OwnerIDs.Length; parceliterator++)
7698 puserselectedOwnerIDs[parceliterator] = parcelReturnObjects.OwnerIDs[parceliterator].OwnerID;
7699
7700 UUID[] puserselectedTaskIDs = new UUID[parcelReturnObjects.TaskIDs.Length];
7701
7702 for (int parceliterator = 0; parceliterator < parcelReturnObjects.TaskIDs.Length; parceliterator++)
7703 puserselectedTaskIDs[parceliterator] = parcelReturnObjects.TaskIDs[parceliterator].TaskID;
7704
7705 ParcelReturnObjectsRequest handlerParcelReturnObjectsRequest = OnParcelReturnObjectsRequest;
7706 if (handlerParcelReturnObjectsRequest != null)
7707 {
7708 handlerParcelReturnObjectsRequest(parcelReturnObjects.ParcelData.LocalID, parcelReturnObjects.ParcelData.ReturnType, puserselectedOwnerIDs, puserselectedTaskIDs, this);
7709
7710 }
7711 return true;
7712 }
7713
7714 private bool HandleParcelSetOtherCleanTime(IClientAPI sender, Packet Pack)
7715 {
7716 ParcelSetOtherCleanTimePacket parcelSetOtherCleanTimePacket = (ParcelSetOtherCleanTimePacket)Pack;
7717
7718 #region Packet Session and User Check
7719 if (m_checkPackets)
7720 {
7721 if (parcelSetOtherCleanTimePacket.AgentData.SessionID != SessionId ||
7722 parcelSetOtherCleanTimePacket.AgentData.AgentID != AgentId)
7723 return true;
7724 }
7725 #endregion
7726
7727 ParcelSetOtherCleanTime handlerParcelSetOtherCleanTime = OnParcelSetOtherCleanTime;
7728 if (handlerParcelSetOtherCleanTime != null)
7729 {
7730 handlerParcelSetOtherCleanTime(this,
7731 parcelSetOtherCleanTimePacket.ParcelData.LocalID,
7732 parcelSetOtherCleanTimePacket.ParcelData.OtherCleanTime);
7733 }
7734 return true;
7735 }
7736
7737 private bool HandleLandStatRequest(IClientAPI sender, Packet Pack)
7738 {
7739 LandStatRequestPacket lsrp = (LandStatRequestPacket)Pack;
7740
7741 #region Packet Session and User Check
7742 if (m_checkPackets)
7743 {
7744 if (lsrp.AgentData.SessionID != SessionId ||
7745 lsrp.AgentData.AgentID != AgentId)
7746 return true;
7747 }
7748 #endregion
7749
7750 GodLandStatRequest handlerLandStatRequest = OnLandStatRequest;
7751 if (handlerLandStatRequest != null)
7752 {
7753 handlerLandStatRequest(lsrp.RequestData.ParcelLocalID, lsrp.RequestData.ReportType, lsrp.RequestData.RequestFlags, Utils.BytesToString(lsrp.RequestData.Filter), this);
7754 }
7755 return true;
7756 }
7757
7758 private bool HandleParcelDwellRequest(IClientAPI sender, Packet Pack)
7759 {
7760 ParcelDwellRequestPacket dwellrq =
7761 (ParcelDwellRequestPacket)Pack;
7762
7763 #region Packet Session and User Check
7764 if (m_checkPackets)
7765 {
7766 if (dwellrq.AgentData.SessionID != SessionId ||
7767 dwellrq.AgentData.AgentID != AgentId)
7768 return true;
7769 }
7770 #endregion
7771
7772 ParcelDwellRequest handlerParcelDwellRequest = OnParcelDwellRequest;
7773 if (handlerParcelDwellRequest != null)
7774 {
7775 handlerParcelDwellRequest(dwellrq.Data.LocalID, this);
7776 }
7777 return true;
7778 }
7779
7780 #endregion Parcel related packets
7781
7782 #region Estate Packets
7783
7784 private bool HandleEstateOwnerMessage(IClientAPI sender, Packet Pack)
7785 {
7786 EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket)Pack;
7787 //m_log.Debug(messagePacket.ToString());
7788 GodLandStatRequest handlerLandStatRequest;
7789
7790 #region Packet Session and User Check
7791 if (m_checkPackets)
7792 {
7793 if (messagePacket.AgentData.SessionID != SessionId ||
7794 messagePacket.AgentData.AgentID != AgentId)
7795 return true;
7796 }
7797 #endregion
7798
7799 switch (Utils.BytesToString(messagePacket.MethodData.Method))
7800 {
7801 case "getinfo":
7802 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
7803 {
7804 OnDetailedEstateDataRequest(this, messagePacket.MethodData.Invoice);
7805 }
7806 return true;
7807 case "setregioninfo":
7808 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
7809 {
7810 OnSetEstateFlagsRequest(convertParamStringToBool(messagePacket.ParamList[0].Parameter), convertParamStringToBool(messagePacket.ParamList[1].Parameter),
7811 convertParamStringToBool(messagePacket.ParamList[2].Parameter), !convertParamStringToBool(messagePacket.ParamList[3].Parameter),
7812 Convert.ToInt16(Convert.ToDecimal(Utils.BytesToString(messagePacket.ParamList[4].Parameter))),
7813 (float)Convert.ToDecimal(Utils.BytesToString(messagePacket.ParamList[5].Parameter)),
7814 Convert.ToInt16(Utils.BytesToString(messagePacket.ParamList[6].Parameter)),
7815 convertParamStringToBool(messagePacket.ParamList[7].Parameter), convertParamStringToBool(messagePacket.ParamList[8].Parameter));
7816 }
7817 return true;
7818 // case "texturebase":
7819 // if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
7820 // {
7821 // foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
7822 // {
7823 // string s = Utils.BytesToString(block.Parameter);
7824 // string[] splitField = s.Split(' ');
7825 // if (splitField.Length == 2)
7826 // {
7827 // UUID tempUUID = new UUID(splitField[1]);
7828 // OnSetEstateTerrainBaseTexture(this, Convert.ToInt16(splitField[0]), tempUUID);
7829 // }
7830 // }
7831 // }
7832 // break;
7833 case "texturedetail":
7834 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
7835 {
7836 foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
7837 {
7838 string s = Utils.BytesToString(block.Parameter);
7839 string[] splitField = s.Split(' ');
7840 if (splitField.Length == 2)
7841 {
7842 Int16 corner = Convert.ToInt16(splitField[0]);
7843 UUID textureUUID = new UUID(splitField[1]);
7844
7845 OnSetEstateTerrainDetailTexture(this, corner, textureUUID);
7846 }
7847 }
7848 }
7849
7850 return true;
7851 case "textureheights":
7852 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
7853 {
7854 foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
7855 {
7856 string s = Utils.BytesToString(block.Parameter);
7857 string[] splitField = s.Split(' ');
7858 if (splitField.Length == 3)
7859 {
7860 Int16 corner = Convert.ToInt16(splitField[0]);
7861 float lowValue = (float)Convert.ToDecimal(splitField[1]);
7862 float highValue = (float)Convert.ToDecimal(splitField[2]);
7863
7864 OnSetEstateTerrainTextureHeights(this, corner, lowValue, highValue);
7865 }
7866 }
7867 }
7868 return true;
7869 case "texturecommit":
7870 OnCommitEstateTerrainTextureRequest(this);
7871 break;
7872 case "setregionterrain":
7873 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
7874 {
7875 if (messagePacket.ParamList.Length != 9)
7876 {
7877 m_log.Error("EstateOwnerMessage: SetRegionTerrain method has a ParamList of invalid length");
7878 }
7879 else
7880 {
7881 try
7882 {
7883 string tmp = Utils.BytesToString(messagePacket.ParamList[0].Parameter);
7884 if (!tmp.Contains(".")) tmp += ".00";
7885 float WaterHeight = (float)Convert.ToDecimal(tmp);
7886 tmp = Utils.BytesToString(messagePacket.ParamList[1].Parameter);
7887 if (!tmp.Contains(".")) tmp += ".00";
7888 float TerrainRaiseLimit = (float)Convert.ToDecimal(tmp);
7889 tmp = Utils.BytesToString(messagePacket.ParamList[2].Parameter);
7890 if (!tmp.Contains(".")) tmp += ".00";
7891 float TerrainLowerLimit = (float)Convert.ToDecimal(tmp);
7892 bool UseEstateSun = convertParamStringToBool(messagePacket.ParamList[3].Parameter);
7893 bool UseFixedSun = convertParamStringToBool(messagePacket.ParamList[4].Parameter);
7894 float SunHour = (float)Convert.ToDecimal(Utils.BytesToString(messagePacket.ParamList[5].Parameter));
7895 bool UseGlobal = convertParamStringToBool(messagePacket.ParamList[6].Parameter);
7896 bool EstateFixedSun = convertParamStringToBool(messagePacket.ParamList[7].Parameter);
7897 float EstateSunHour = (float)Convert.ToDecimal(Utils.BytesToString(messagePacket.ParamList[8].Parameter));
7898
7899 OnSetRegionTerrainSettings(WaterHeight, TerrainRaiseLimit, TerrainLowerLimit, UseEstateSun, UseFixedSun, SunHour, UseGlobal, EstateFixedSun, EstateSunHour);
7900
7901 }
7902 catch (Exception ex)
7903 {
7904 m_log.Error("EstateOwnerMessage: Exception while setting terrain settings: \n" + messagePacket + "\n" + ex);
7905 }
7906 }
7907 }
7908
7909 return true;
7910 case "restart":
7911 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
7912 {
7913 // There's only 1 block in the estateResetSim.. and that's the number of seconds till restart.
7914 foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
7915 {
7916 float timeSeconds;
7917 Utils.TryParseSingle(Utils.BytesToString(block.Parameter), out timeSeconds);
7918 timeSeconds = (int)timeSeconds;
7919 OnEstateRestartSimRequest(this, (int)timeSeconds);
7920
7921 }
7922 }
7923 return true;
7924 case "estatechangecovenantid":
7925 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
7926 {
7927 foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList)
7928 {
7929 UUID newCovenantID = new UUID(Utils.BytesToString(block.Parameter));
7930 OnEstateChangeCovenantRequest(this, newCovenantID);
7931 }
7932 }
7933 return true;
7934 case "estateaccessdelta": // Estate access delta manages the banlist and allow list too.
7935 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
7936 {
7937 int estateAccessType = Convert.ToInt16(Utils.BytesToString(messagePacket.ParamList[1].Parameter));
7938 OnUpdateEstateAccessDeltaRequest(this, messagePacket.MethodData.Invoice, estateAccessType, new UUID(Utils.BytesToString(messagePacket.ParamList[2].Parameter)));
7939
7940 }
7941 return true;
7942 case "simulatormessage":
7943 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
7944 {
7945 UUID invoice = messagePacket.MethodData.Invoice;
7946 UUID SenderID = new UUID(Utils.BytesToString(messagePacket.ParamList[2].Parameter));
7947 string SenderName = Utils.BytesToString(messagePacket.ParamList[3].Parameter);
7948 string Message = Utils.BytesToString(messagePacket.ParamList[4].Parameter);
7949 UUID sessionID = messagePacket.AgentData.SessionID;
7950 OnSimulatorBlueBoxMessageRequest(this, invoice, SenderID, sessionID, SenderName, Message);
7951 }
7952 return true;
7953 case "instantmessage":
7954 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
7955 {
7956 if (messagePacket.ParamList.Length < 5)
7957 break;
7958 UUID invoice = messagePacket.MethodData.Invoice;
7959 UUID SenderID = new UUID(Utils.BytesToString(messagePacket.ParamList[2].Parameter));
7960 string SenderName = Utils.BytesToString(messagePacket.ParamList[3].Parameter);
7961 string Message = Utils.BytesToString(messagePacket.ParamList[4].Parameter);
7962 UUID sessionID = messagePacket.AgentData.SessionID;
7963 OnEstateBlueBoxMessageRequest(this, invoice, SenderID, sessionID, SenderName, Message);
7964 }
7965 return true;
7966 case "setregiondebug":
7967 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
7968 {
7969 UUID invoice = messagePacket.MethodData.Invoice;
7970 UUID SenderID = messagePacket.AgentData.AgentID;
7971 bool scripted = convertParamStringToBool(messagePacket.ParamList[0].Parameter);
7972 bool collisionEvents = convertParamStringToBool(messagePacket.ParamList[1].Parameter);
7973 bool physics = convertParamStringToBool(messagePacket.ParamList[2].Parameter);
7974
7975 OnEstateDebugRegionRequest(this, invoice, SenderID, scripted, collisionEvents, physics);
7976 }
7977 return true;
7978 case "teleporthomeuser":
7979 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
7980 {
7981 UUID invoice = messagePacket.MethodData.Invoice;
7982 UUID SenderID = messagePacket.AgentData.AgentID;
7983 UUID Prey;
7984
7985 UUID.TryParse(Utils.BytesToString(messagePacket.ParamList[1].Parameter), out Prey);
7986
7987 OnEstateTeleportOneUserHomeRequest(this, invoice, SenderID, Prey);
7988 }
7989 return true;
7990 case "teleporthomeallusers":
7991 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
7992 {
7993 UUID invoice = messagePacket.MethodData.Invoice;
7994 UUID SenderID = messagePacket.AgentData.AgentID;
7995 OnEstateTeleportAllUsersHomeRequest(this, invoice, SenderID);
7996 }
7997 return true;
7998 case "colliders":
7999 handlerLandStatRequest = OnLandStatRequest;
8000 if (handlerLandStatRequest != null)
8001 {
8002 handlerLandStatRequest(0, 1, 0, "", this);
8003 }
8004 return true;
8005 case "scripts":
8006 handlerLandStatRequest = OnLandStatRequest;
8007 if (handlerLandStatRequest != null)
8008 {
8009 handlerLandStatRequest(0, 0, 0, "", this);
8010 }
8011 return true;
8012 case "terrain":
8013 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
8014 {
8015 if (messagePacket.ParamList.Length > 0)
8016 {
8017 if (Utils.BytesToString(messagePacket.ParamList[0].Parameter) == "bake")
8018 {
8019 BakeTerrain handlerBakeTerrain = OnBakeTerrain;
8020 if (handlerBakeTerrain != null)
8021 {
8022 handlerBakeTerrain(this);
8023 }
8024 }
8025 if (Utils.BytesToString(messagePacket.ParamList[0].Parameter) == "download filename")
8026 {
8027 if (messagePacket.ParamList.Length > 1)
8028 {
8029 RequestTerrain handlerRequestTerrain = OnRequestTerrain;
8030 if (handlerRequestTerrain != null)
8031 {
8032 handlerRequestTerrain(this, Utils.BytesToString(messagePacket.ParamList[1].Parameter));
8033 }
8034 }
8035 }
8036 if (Utils.BytesToString(messagePacket.ParamList[0].Parameter) == "upload filename")
8037 {
8038 if (messagePacket.ParamList.Length > 1)
8039 {
8040 RequestTerrain handlerUploadTerrain = OnUploadTerrain;
8041 if (handlerUploadTerrain != null)
8042 {
8043 handlerUploadTerrain(this, Utils.BytesToString(messagePacket.ParamList[1].Parameter));
8044 }
8045 }
8046 }
8047
8048 }
8049
8050
8051 }
8052 return true;
8053
8054 case "estatechangeinfo":
8055 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
8056 {
8057 UUID invoice = messagePacket.MethodData.Invoice;
8058 UUID SenderID = messagePacket.AgentData.AgentID;
8059 UInt32 param1 = Convert.ToUInt32(Utils.BytesToString(messagePacket.ParamList[1].Parameter));
8060 UInt32 param2 = Convert.ToUInt32(Utils.BytesToString(messagePacket.ParamList[2].Parameter));
8061
8062 EstateChangeInfo handlerEstateChangeInfo = OnEstateChangeInfo;
8063 if (handlerEstateChangeInfo != null)
8064 {
8065 handlerEstateChangeInfo(this, invoice, SenderID, param1, param2);
8066 }
8067 }
8068 return true;
8069
8070 default:
8071 m_log.Error("EstateOwnerMessage: Unknown method requested\n" + messagePacket);
8072 return true;
8073 }
8074
8075 //int parcelID, uint reportType, uint requestflags, string filter
8076
8077 //lsrp.RequestData.ParcelLocalID;
8078 //lsrp.RequestData.ReportType; // 1 = colliders, 0 = scripts
8079 //lsrp.RequestData.RequestFlags;
8080 //lsrp.RequestData.Filter;
8081
8082 return true;
8083 }
8084 private bool HandleRequestRegionInfo(IClientAPI sender, Packet Pack)
8085 {
8086 RequestRegionInfoPacket.AgentDataBlock mPacket = ((RequestRegionInfoPacket)Pack).AgentData;
8087
8088 #region Packet Session and User Check
8089 if (m_checkPackets)
8090 {
8091 if (mPacket.SessionID != SessionId ||
8092 mPacket.AgentID != AgentId)
8093 return true;
8094 }
8095 #endregion
8096
8097 RegionInfoRequest handlerRegionInfoRequest = OnRegionInfoRequest;
8098 if (handlerRegionInfoRequest != null)
8099 {
8100 handlerRegionInfoRequest(this);
8101 }
8102 return true;
8103 }
8104 private bool HandleEstateCovenantRequest(IClientAPI sender, Packet Pack)
8105 {
8106
8107 //EstateCovenantRequestPacket.AgentDataBlock epack =
8108 // ((EstateCovenantRequestPacket)Pack).AgentData;
8109
8110 EstateCovenantRequest handlerEstateCovenantRequest = OnEstateCovenantRequest;
8111 if (handlerEstateCovenantRequest != null)
8112 {
8113 handlerEstateCovenantRequest(this);
8114 }
8115 return true;
8116
8117 }
8118
8119 #endregion Estate Packets
8120
8121 #region GodPackets
8122
8123 private bool HandleRequestGodlikePowers(IClientAPI sender, Packet Pack)
8124 {
8125 RequestGodlikePowersPacket rglpPack = (RequestGodlikePowersPacket)Pack;
8126 RequestGodlikePowersPacket.RequestBlockBlock rblock = rglpPack.RequestBlock;
8127 UUID token = rblock.Token;
8128
8129 RequestGodlikePowersPacket.AgentDataBlock ablock = rglpPack.AgentData;
8130
8131 RequestGodlikePowers handlerReqGodlikePowers = OnRequestGodlikePowers;
8132
8133 if (handlerReqGodlikePowers != null)
8134 {
8135 handlerReqGodlikePowers(ablock.AgentID, ablock.SessionID, token, rblock.Godlike, this);
8136 }
8137
8138 return true;
8139 }
8140 private bool HandleGodKickUser(IClientAPI sender, Packet Pack)
8141 {
8142 GodKickUserPacket gkupack = (GodKickUserPacket)Pack;
8143
8144 if (gkupack.UserInfo.GodSessionID == SessionId && AgentId == gkupack.UserInfo.GodID)
8145 {
8146 GodKickUser handlerGodKickUser = OnGodKickUser;
8147 if (handlerGodKickUser != null)
8148 {
8149 handlerGodKickUser(gkupack.UserInfo.GodID, gkupack.UserInfo.GodSessionID,
8150 gkupack.UserInfo.AgentID, (uint)0, gkupack.UserInfo.Reason);
8151 }
8152 }
8153 else
8154 {
8155 SendAgentAlertMessage("Kick request denied", false);
8156 }
8157 //KickUserPacket kupack = new KickUserPacket();
8158 //KickUserPacket.UserInfoBlock kupackib = kupack.UserInfo;
8159
8160 //kupack.UserInfo.AgentID = gkupack.UserInfo.AgentID;
8161 //kupack.UserInfo.SessionID = gkupack.UserInfo.GodSessionID;
8162
8163 //kupack.TargetBlock.TargetIP = (uint)0;
8164 //kupack.TargetBlock.TargetPort = (ushort)0;
8165 //kupack.UserInfo.Reason = gkupack.UserInfo.Reason;
8166
8167 //OutPacket(kupack, ThrottleOutPacketType.Task);
8168 return true;
8169 }
8170 #endregion GodPackets
8171
8172 #region Economy/Transaction Packets
8173
8174 private bool HandleMoneyBalanceRequest(IClientAPI sender, Packet Pack)
8175 {
8176 MoneyBalanceRequestPacket moneybalancerequestpacket = (MoneyBalanceRequestPacket)Pack;
8177
8178 #region Packet Session and User Check
8179 if (m_checkPackets)
8180 {
8181 if (moneybalancerequestpacket.AgentData.SessionID != SessionId ||
8182 moneybalancerequestpacket.AgentData.AgentID != AgentId)
8183 return true;
8184 }
8185 #endregion
8186
8187 MoneyBalanceRequest handlerMoneyBalanceRequest = OnMoneyBalanceRequest;
8188
8189 if (handlerMoneyBalanceRequest != null)
8190 {
8191 handlerMoneyBalanceRequest(this, moneybalancerequestpacket.AgentData.AgentID, moneybalancerequestpacket.AgentData.SessionID, moneybalancerequestpacket.MoneyData.TransactionID);
8192 }
8193
8194 return true;
8195 }
8196 private bool HandleEconomyDataRequest(IClientAPI sender, Packet Pack)
8197 {
8198 EconomyDataRequest handlerEconomoyDataRequest = OnEconomyDataRequest;
8199 if (handlerEconomoyDataRequest != null)
8200 {
8201 handlerEconomoyDataRequest(AgentId);
8202 }
8203 return true;
8204 }
8205 private bool HandleRequestPayPrice(IClientAPI sender, Packet Pack)
8206 {
8207 RequestPayPricePacket requestPayPricePacket = (RequestPayPricePacket)Pack;
8208
8209 RequestPayPrice handlerRequestPayPrice = OnRequestPayPrice;
8210 if (handlerRequestPayPrice != null)
8211 {
8212 handlerRequestPayPrice(this, requestPayPricePacket.ObjectData.ObjectID);
8213 }
8214 return true;
8215 }
8216 private bool HandleObjectSaleInfo(IClientAPI sender, Packet Pack)
8217 {
8218 ObjectSaleInfoPacket objectSaleInfoPacket = (ObjectSaleInfoPacket)Pack;
8219
8220 #region Packet Session and User Check
8221 if (m_checkPackets)
8222 {
8223 if (objectSaleInfoPacket.AgentData.SessionID != SessionId ||
8224 objectSaleInfoPacket.AgentData.AgentID != AgentId)
8225 return true;
8226 }
8227 #endregion
8228
8229 ObjectSaleInfo handlerObjectSaleInfo = OnObjectSaleInfo;
8230 if (handlerObjectSaleInfo != null)
8231 {
8232 foreach (ObjectSaleInfoPacket.ObjectDataBlock d
8233 in objectSaleInfoPacket.ObjectData)
8234 {
8235 handlerObjectSaleInfo(this,
8236 objectSaleInfoPacket.AgentData.AgentID,
8237 objectSaleInfoPacket.AgentData.SessionID,
8238 d.LocalID,
8239 d.SaleType,
8240 d.SalePrice);
8241 }
8242 }
8243 return true;
8244 }
8245 private bool HandleObjectBuy(IClientAPI sender, Packet Pack)
8246 {
8247 ObjectBuyPacket objectBuyPacket = (ObjectBuyPacket)Pack;
8248
8249 #region Packet Session and User Check
8250 if (m_checkPackets)
8251 {
8252 if (objectBuyPacket.AgentData.SessionID != SessionId ||
8253 objectBuyPacket.AgentData.AgentID != AgentId)
8254 return true;
8255 }
8256 #endregion
8257
8258 ObjectBuy handlerObjectBuy = OnObjectBuy;
8259
8260 if (handlerObjectBuy != null)
8261 {
8262 foreach (ObjectBuyPacket.ObjectDataBlock d
8263 in objectBuyPacket.ObjectData)
8264 {
8265 handlerObjectBuy(this,
8266 objectBuyPacket.AgentData.AgentID,
8267 objectBuyPacket.AgentData.SessionID,
8268 objectBuyPacket.AgentData.GroupID,
8269 objectBuyPacket.AgentData.CategoryID,
8270 d.ObjectLocalID,
8271 d.SaleType,
8272 d.SalePrice);
8273 }
8274 }
8275 return true;
8276 }
8277
8278 #endregion Economy/Transaction Packets
8279
8280 #region Script Packets
8281 private bool HandleGetScriptRunning(IClientAPI sender, Packet Pack)
8282 {
8283 GetScriptRunningPacket scriptRunning = (GetScriptRunningPacket)Pack;
8284
8285 GetScriptRunning handlerGetScriptRunning = OnGetScriptRunning;
8286 if (handlerGetScriptRunning != null)
8287 {
8288 handlerGetScriptRunning(this, scriptRunning.Script.ObjectID, scriptRunning.Script.ItemID);
8289 }
8290 return true;
8291 }
8292 private bool HandleSetScriptRunning(IClientAPI sender, Packet Pack)
8293 {
8294 SetScriptRunningPacket setScriptRunning = (SetScriptRunningPacket)Pack;
8295
8296 #region Packet Session and User Check
8297 if (m_checkPackets)
8298 {
8299 if (setScriptRunning.AgentData.SessionID != SessionId ||
8300 setScriptRunning.AgentData.AgentID != AgentId)
8301 return true;
8302 }
8303 #endregion
8304
8305 SetScriptRunning handlerSetScriptRunning = OnSetScriptRunning;
8306 if (handlerSetScriptRunning != null)
8307 {
8308 handlerSetScriptRunning(this, setScriptRunning.Script.ObjectID, setScriptRunning.Script.ItemID, setScriptRunning.Script.Running);
8309 }
8310 return true;
8311 }
8312
8313 private bool HandleScriptReset(IClientAPI sender, Packet Pack)
8314 {
8315 ScriptResetPacket scriptResetPacket = (ScriptResetPacket)Pack;
8316
8317 #region Packet Session and User Check
8318 if (m_checkPackets)
8319 {
8320 if (scriptResetPacket.AgentData.SessionID != SessionId ||
8321 scriptResetPacket.AgentData.AgentID != AgentId)
8322 return true;
8323 }
8324 #endregion
8325
8326 ScriptReset handlerScriptReset = OnScriptReset;
8327 if (handlerScriptReset != null)
8328 {
8329 handlerScriptReset(this, scriptResetPacket.Script.ObjectID, scriptResetPacket.Script.ItemID);
8330 }
8331 return true;
8332 }
8333
8334 #endregion Script Packets
8335
8336
8337
6341 #endregion Packet Handlers 8338 #endregion Packet Handlers
6342 8339
6343 public void SendScriptQuestion(UUID taskID, string taskName, string ownerName, UUID itemID, int question) 8340 public void SendScriptQuestion(UUID taskID, string taskName, string ownerName, UUID itemID, int question)
@@ -8456,9 +10453,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8456 break; 10453 break;
8457 10454
8458 //#endregion 10455 //#endregion
8459 */ 10456
8460 #endregion 10457 //#region Inventory/Asset/Other related packets
8461 #region Inventory/Asset/Other related packets
8462 10458
8463 case PacketType.RequestImage: 10459 case PacketType.RequestImage:
8464 RequestImagePacket imageRequest = (RequestImagePacket)Pack; 10460 RequestImagePacket imageRequest = (RequestImagePacket)Pack;
@@ -8592,12 +10588,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8592 10588
8593 MakeAssetRequest(transfer, taskID); 10589 MakeAssetRequest(transfer, taskID);
8594 10590
8595 /* RequestAsset = OnRequestAsset; 10591 // RequestAsset = OnRequestAsset;
8596 if (RequestAsset != null) 10592 // if (RequestAsset != null)
8597 { 10593 // {
8598 RequestAsset(this, transfer); 10594 // RequestAsset(this, transfer);
8599 }*/ 10595 // }
10596
8600 break; 10597 break;
10598
8601 case PacketType.AssetUploadRequest: 10599 case PacketType.AssetUploadRequest:
8602 AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack; 10600 AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack;
8603 10601
@@ -8616,6 +10614,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8616 request.AssetBlock.Tempfile); 10614 request.AssetBlock.Tempfile);
8617 } 10615 }
8618 break; 10616 break;
10617
8619 case PacketType.RequestXfer: 10618 case PacketType.RequestXfer:
8620 RequestXferPacket xferReq = (RequestXferPacket)Pack; 10619 RequestXferPacket xferReq = (RequestXferPacket)Pack;
8621 10620
@@ -8626,6 +10625,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8626 handlerRequestXfer(this, xferReq.XferID.ID, Util.FieldToString(xferReq.XferID.Filename)); 10625 handlerRequestXfer(this, xferReq.XferID.ID, Util.FieldToString(xferReq.XferID.Filename));
8627 } 10626 }
8628 break; 10627 break;
10628
8629 case PacketType.SendXferPacket: 10629 case PacketType.SendXferPacket:
8630 SendXferPacketPacket xferRec = (SendXferPacketPacket)Pack; 10630 SendXferPacketPacket xferRec = (SendXferPacketPacket)Pack;
8631 10631
@@ -8635,6 +10635,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8635 handlerXferReceive(this, xferRec.XferID.ID, xferRec.XferID.Packet, xferRec.DataPacket.Data); 10635 handlerXferReceive(this, xferRec.XferID.ID, xferRec.XferID.Packet, xferRec.DataPacket.Data);
8636 } 10636 }
8637 break; 10637 break;
10638
8638 case PacketType.ConfirmXferPacket: 10639 case PacketType.ConfirmXferPacket:
8639 ConfirmXferPacketPacket confirmXfer = (ConfirmXferPacketPacket)Pack; 10640 ConfirmXferPacketPacket confirmXfer = (ConfirmXferPacketPacket)Pack;
8640 10641
@@ -8644,6 +10645,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8644 handlerConfirmXfer(this, confirmXfer.XferID.ID, confirmXfer.XferID.Packet); 10645 handlerConfirmXfer(this, confirmXfer.XferID.ID, confirmXfer.XferID.Packet);
8645 } 10646 }
8646 break; 10647 break;
10648
8647 case PacketType.AbortXfer: 10649 case PacketType.AbortXfer:
8648 AbortXferPacket abortXfer = (AbortXferPacket)Pack; 10650 AbortXferPacket abortXfer = (AbortXferPacket)Pack;
8649 AbortXfer handlerAbortXfer = OnAbortXfer; 10651 AbortXfer handlerAbortXfer = OnAbortXfer;
@@ -8653,6 +10655,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8653 } 10655 }
8654 10656
8655 break; 10657 break;
10658
8656 case PacketType.CreateInventoryFolder: 10659 case PacketType.CreateInventoryFolder:
8657 CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack; 10660 CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack;
8658 10661
@@ -8674,6 +10677,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8674 invFolder.FolderData.ParentID); 10677 invFolder.FolderData.ParentID);
8675 } 10678 }
8676 break; 10679 break;
10680
8677 case PacketType.UpdateInventoryFolder: 10681 case PacketType.UpdateInventoryFolder:
8678 if (OnUpdateInventoryFolder != null) 10682 if (OnUpdateInventoryFolder != null)
8679 { 10683 {
@@ -8703,6 +10707,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8703 } 10707 }
8704 } 10708 }
8705 break; 10709 break;
10710
8706 case PacketType.MoveInventoryFolder: 10711 case PacketType.MoveInventoryFolder:
8707 if (OnMoveInventoryFolder != null) 10712 if (OnMoveInventoryFolder != null)
8708 { 10713 {
@@ -8730,6 +10735,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8730 } 10735 }
8731 } 10736 }
8732 break; 10737 break;
10738
8733 case PacketType.CreateInventoryItem: 10739 case PacketType.CreateInventoryItem:
8734 CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack; 10740 CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack;
8735 10741
@@ -8757,6 +10763,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8757 Util.UnixTimeSinceEpoch()); 10763 Util.UnixTimeSinceEpoch());
8758 } 10764 }
8759 break; 10765 break;
10766
8760 case PacketType.FetchInventory: 10767 case PacketType.FetchInventory:
8761 if (OnFetchInventory != null) 10768 if (OnFetchInventory != null)
8762 { 10769 {
@@ -8785,6 +10792,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8785 } 10792 }
8786 } 10793 }
8787 break; 10794 break;
10795
8788 case PacketType.FetchInventoryDescendents: 10796 case PacketType.FetchInventoryDescendents:
8789 FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack; 10797 FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack;
8790 10798
@@ -8805,6 +10813,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8805 Fetch.InventoryData.SortOrder); 10813 Fetch.InventoryData.SortOrder);
8806 } 10814 }
8807 break; 10815 break;
10816
8808 case PacketType.PurgeInventoryDescendents: 10817 case PacketType.PurgeInventoryDescendents:
8809 PurgeInventoryDescendentsPacket Purge = (PurgeInventoryDescendentsPacket)Pack; 10818 PurgeInventoryDescendentsPacket Purge = (PurgeInventoryDescendentsPacket)Pack;
8810 10819
@@ -8823,6 +10832,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8823 handlerPurgeInventoryDescendents(this, Purge.InventoryData.FolderID); 10832 handlerPurgeInventoryDescendents(this, Purge.InventoryData.FolderID);
8824 } 10833 }
8825 break; 10834 break;
10835
8826 case PacketType.UpdateInventoryItem: 10836 case PacketType.UpdateInventoryItem:
8827 UpdateInventoryItemPacket inventoryItemUpdate = (UpdateInventoryItemPacket)Pack; 10837 UpdateInventoryItemPacket inventoryItemUpdate = (UpdateInventoryItemPacket)Pack;
8828 10838
@@ -8867,6 +10877,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8867 } 10877 }
8868 } 10878 }
8869 break; 10879 break;
10880
8870 case PacketType.CopyInventoryItem: 10881 case PacketType.CopyInventoryItem:
8871 CopyInventoryItemPacket copyitem = (CopyInventoryItemPacket)Pack; 10882 CopyInventoryItemPacket copyitem = (CopyInventoryItemPacket)Pack;
8872 10883
@@ -8894,6 +10905,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8894 } 10905 }
8895 } 10906 }
8896 break; 10907 break;
10908
8897 case PacketType.MoveInventoryItem: 10909 case PacketType.MoveInventoryItem:
8898 MoveInventoryItemPacket moveitem = (MoveInventoryItemPacket)Pack; 10910 MoveInventoryItemPacket moveitem = (MoveInventoryItemPacket)Pack;
8899 10911
@@ -8927,6 +10939,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8927 } 10939 }
8928 } 10940 }
8929 break; 10941 break;
10942
8930 case PacketType.RemoveInventoryItem: 10943 case PacketType.RemoveInventoryItem:
8931 RemoveInventoryItemPacket removeItem = (RemoveInventoryItemPacket)Pack; 10944 RemoveInventoryItemPacket removeItem = (RemoveInventoryItemPacket)Pack;
8932 10945
@@ -8955,6 +10968,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8955 10968
8956 } 10969 }
8957 break; 10970 break;
10971
8958 case PacketType.RemoveInventoryFolder: 10972 case PacketType.RemoveInventoryFolder:
8959 RemoveInventoryFolderPacket removeFolder = (RemoveInventoryFolderPacket)Pack; 10973 RemoveInventoryFolderPacket removeFolder = (RemoveInventoryFolderPacket)Pack;
8960 10974
@@ -8982,6 +10996,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8982 } 10996 }
8983 } 10997 }
8984 break; 10998 break;
10999
8985 case PacketType.RemoveInventoryObjects: 11000 case PacketType.RemoveInventoryObjects:
8986 RemoveInventoryObjectsPacket removeObject = (RemoveInventoryObjectsPacket)Pack; 11001 RemoveInventoryObjectsPacket removeObject = (RemoveInventoryObjectsPacket)Pack;
8987 #region Packet Session and User Check 11002 #region Packet Session and User Check
@@ -9022,6 +11037,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9022 } 11037 }
9023 } 11038 }
9024 break; 11039 break;
11040
9025 case PacketType.RequestTaskInventory: 11041 case PacketType.RequestTaskInventory:
9026 RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket)Pack; 11042 RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket)Pack;
9027 11043
@@ -9040,6 +11056,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9040 handlerRequestTaskInventory(this, requesttask.InventoryData.LocalID); 11056 handlerRequestTaskInventory(this, requesttask.InventoryData.LocalID);
9041 } 11057 }
9042 break; 11058 break;
11059
9043 case PacketType.UpdateTaskInventory: 11060 case PacketType.UpdateTaskInventory:
9044 UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket)Pack; 11061 UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket)Pack;
9045 11062
@@ -9217,6 +11234,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9217 handlerMapNameRequest(this, mapName); 11234 handlerMapNameRequest(this, mapName);
9218 } 11235 }
9219 break; 11236 break;
11237
9220 case PacketType.TeleportLandmarkRequest: 11238 case PacketType.TeleportLandmarkRequest:
9221 TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket)Pack; 11239 TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket)Pack;
9222 11240
@@ -9287,7 +11305,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9287 11305
9288 } 11306 }
9289 break; 11307 break;
9290 11308
9291 case PacketType.TeleportLocationRequest: 11309 case PacketType.TeleportLocationRequest:
9292 TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack; 11310 TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack;
9293 // m_log.Debug(tpLocReq.ToString()); 11311 // m_log.Debug(tpLocReq.ToString());
@@ -9317,7 +11335,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9317 } 11335 }
9318 break; 11336 break;
9319 11337
9320 #endregion 11338 //#endregion
9321 11339
9322 case PacketType.UUIDNameRequest: 11340 case PacketType.UUIDNameRequest:
9323 UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack; 11341 UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack;
@@ -9332,7 +11350,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9332 } 11350 }
9333 break; 11351 break;
9334 11352
9335 #region Parcel related packets 11353 //#region Parcel related packets
11354
9336 11355
9337 case PacketType.RegionHandleRequest: 11356 case PacketType.RegionHandleRequest:
9338 RegionHandleRequestPacket rhrPack = (RegionHandleRequestPacket)Pack; 11357 RegionHandleRequestPacket rhrPack = (RegionHandleRequestPacket)Pack;
@@ -9415,6 +11434,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9415 updatePacket.Data.LocalID, entries, this); 11434 updatePacket.Data.LocalID, entries, this);
9416 } 11435 }
9417 break; 11436 break;
11437
9418 case PacketType.ParcelPropertiesRequest: 11438 case PacketType.ParcelPropertiesRequest:
9419 11439
9420 ParcelPropertiesRequestPacket propertiesRequest = (ParcelPropertiesRequestPacket)Pack; 11440 ParcelPropertiesRequestPacket propertiesRequest = (ParcelPropertiesRequestPacket)Pack;
@@ -9439,6 +11459,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9439 propertiesRequest.ParcelData.SnapSelection, this); 11459 propertiesRequest.ParcelData.SnapSelection, this);
9440 } 11460 }
9441 break; 11461 break;
11462
9442 case PacketType.ParcelDivide: 11463 case PacketType.ParcelDivide:
9443 ParcelDividePacket landDivide = (ParcelDividePacket)Pack; 11464 ParcelDividePacket landDivide = (ParcelDividePacket)Pack;
9444 11465
@@ -9460,6 +11481,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9460 (int)Math.Round(landDivide.ParcelData.North), this); 11481 (int)Math.Round(landDivide.ParcelData.North), this);
9461 } 11482 }
9462 break; 11483 break;
11484
9463 case PacketType.ParcelJoin: 11485 case PacketType.ParcelJoin:
9464 ParcelJoinPacket landJoin = (ParcelJoinPacket)Pack; 11486 ParcelJoinPacket landJoin = (ParcelJoinPacket)Pack;
9465 11487
@@ -9482,6 +11504,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9482 (int)Math.Round(landJoin.ParcelData.North), this); 11504 (int)Math.Round(landJoin.ParcelData.North), this);
9483 } 11505 }
9484 break; 11506 break;
11507
9485 case PacketType.ParcelPropertiesUpdate: 11508 case PacketType.ParcelPropertiesUpdate:
9486 ParcelPropertiesUpdatePacket parcelPropertiesPacket = (ParcelPropertiesUpdatePacket)Pack; 11509 ParcelPropertiesUpdatePacket parcelPropertiesPacket = (ParcelPropertiesUpdatePacket)Pack;
9487 11510
@@ -9520,6 +11543,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9520 handlerParcelPropertiesUpdateRequest(args, parcelPropertiesPacket.ParcelData.LocalID, this); 11543 handlerParcelPropertiesUpdateRequest(args, parcelPropertiesPacket.ParcelData.LocalID, this);
9521 } 11544 }
9522 break; 11545 break;
11546
9523 case PacketType.ParcelSelectObjects: 11547 case PacketType.ParcelSelectObjects:
9524 ParcelSelectObjectsPacket selectPacket = (ParcelSelectObjectsPacket)Pack; 11548 ParcelSelectObjectsPacket selectPacket = (ParcelSelectObjectsPacket)Pack;
9525 11549
@@ -9548,6 +11572,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9548 Convert.ToInt32(selectPacket.ParcelData.ReturnType), returnIDs, this); 11572 Convert.ToInt32(selectPacket.ParcelData.ReturnType), returnIDs, this);
9549 } 11573 }
9550 break; 11574 break;
11575
9551 case PacketType.ParcelObjectOwnersRequest: 11576 case PacketType.ParcelObjectOwnersRequest:
9552 //m_log.Debug(Pack.ToString()); 11577 //m_log.Debug(Pack.ToString());
9553 ParcelObjectOwnersRequestPacket reqPacket = (ParcelObjectOwnersRequestPacket)Pack; 11578 ParcelObjectOwnersRequestPacket reqPacket = (ParcelObjectOwnersRequestPacket)Pack;
@@ -9568,6 +11593,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9568 handlerParcelObjectOwnerRequest(reqPacket.ParcelData.LocalID, this); 11593 handlerParcelObjectOwnerRequest(reqPacket.ParcelData.LocalID, this);
9569 } 11594 }
9570 break; 11595 break;
11596
9571 case PacketType.ParcelGodForceOwner: 11597 case PacketType.ParcelGodForceOwner:
9572 ParcelGodForceOwnerPacket godForceOwnerPacket = (ParcelGodForceOwnerPacket)Pack; 11598 ParcelGodForceOwnerPacket godForceOwnerPacket = (ParcelGodForceOwnerPacket)Pack;
9573 11599
@@ -9586,6 +11612,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9586 handlerParcelGodForceOwner(godForceOwnerPacket.Data.LocalID, godForceOwnerPacket.Data.OwnerID, this); 11612 handlerParcelGodForceOwner(godForceOwnerPacket.Data.LocalID, godForceOwnerPacket.Data.OwnerID, this);
9587 } 11613 }
9588 break; 11614 break;
11615
9589 case PacketType.ParcelRelease: 11616 case PacketType.ParcelRelease:
9590 ParcelReleasePacket releasePacket = (ParcelReleasePacket)Pack; 11617 ParcelReleasePacket releasePacket = (ParcelReleasePacket)Pack;
9591 11618
@@ -9604,6 +11631,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9604 handlerParcelAbandonRequest(releasePacket.Data.LocalID, this); 11631 handlerParcelAbandonRequest(releasePacket.Data.LocalID, this);
9605 } 11632 }
9606 break; 11633 break;
11634
9607 case PacketType.ParcelReclaim: 11635 case PacketType.ParcelReclaim:
9608 ParcelReclaimPacket reclaimPacket = (ParcelReclaimPacket)Pack; 11636 ParcelReclaimPacket reclaimPacket = (ParcelReclaimPacket)Pack;
9609 11637
@@ -9622,6 +11650,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9622 handlerParcelReclaim(reclaimPacket.Data.LocalID, this); 11650 handlerParcelReclaim(reclaimPacket.Data.LocalID, this);
9623 } 11651 }
9624 break; 11652 break;
11653
9625 case PacketType.ParcelReturnObjects: 11654 case PacketType.ParcelReturnObjects:
9626 11655
9627 11656
@@ -9713,9 +11742,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9713 } 11742 }
9714 break; 11743 break;
9715 11744
9716 #endregion 11745 //#endregion
9717 11746
9718 #region Estate Packets 11747 //#region Estate Packets
9719 11748
9720 case PacketType.EstateOwnerMessage: 11749 case PacketType.EstateOwnerMessage:
9721 EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket)Pack; 11750 EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket)Pack;
@@ -10033,6 +12062,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
10033 handlerRegionInfoRequest(this); 12062 handlerRegionInfoRequest(this);
10034 } 12063 }
10035 break; 12064 break;
12065
10036 case PacketType.EstateCovenantRequest: 12066 case PacketType.EstateCovenantRequest:
10037 12067
10038 //EstateCovenantRequestPacket.AgentDataBlock epack = 12068 //EstateCovenantRequestPacket.AgentDataBlock epack =
@@ -10045,9 +12075,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
10045 } 12075 }
10046 break; 12076 break;
10047 12077
10048 #endregion 12078 //#endregion
10049 12079
10050 #region GodPackets 12080 //#region GodPackets
10051 12081
10052 case PacketType.RequestGodlikePowers: 12082 case PacketType.RequestGodlikePowers:
10053 RequestGodlikePowersPacket rglpPack = (RequestGodlikePowersPacket)Pack; 12083 RequestGodlikePowersPacket rglpPack = (RequestGodlikePowersPacket)Pack;
@@ -10064,6 +12094,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
10064 } 12094 }
10065 12095
10066 break; 12096 break;
12097
10067 case PacketType.GodKickUser: 12098 case PacketType.GodKickUser:
10068 GodKickUserPacket gkupack = (GodKickUserPacket)Pack; 12099 GodKickUserPacket gkupack = (GodKickUserPacket)Pack;
10069 12100
@@ -10093,9 +12124,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
10093 //OutPacket(kupack, ThrottleOutPacketType.Task); 12124 //OutPacket(kupack, ThrottleOutPacketType.Task);
10094 break; 12125 break;
10095 12126
10096 #endregion 12127 //#endregion
10097 12128
10098 #region Economy/Transaction Packets 12129 //#region Economy/Transaction Packets
10099 12130
10100 case PacketType.MoneyBalanceRequest: 12131 case PacketType.MoneyBalanceRequest:
10101 MoneyBalanceRequestPacket moneybalancerequestpacket = (MoneyBalanceRequestPacket)Pack; 12132 MoneyBalanceRequestPacket moneybalancerequestpacket = (MoneyBalanceRequestPacket)Pack;
@@ -10117,6 +12148,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
10117 } 12148 }
10118 12149
10119 break; 12150 break;
12151
10120 case PacketType.EconomyDataRequest: 12152 case PacketType.EconomyDataRequest:
10121 12153
10122 12154
@@ -10126,6 +12158,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
10126 handlerEconomoyDataRequest(AgentId); 12158 handlerEconomoyDataRequest(AgentId);
10127 } 12159 }
10128 break; 12160 break;
12161
10129 case PacketType.RequestPayPrice: 12162 case PacketType.RequestPayPrice:
10130 RequestPayPricePacket requestPayPricePacket = (RequestPayPricePacket)Pack; 12163 RequestPayPricePacket requestPayPricePacket = (RequestPayPricePacket)Pack;
10131 12164
@@ -10195,9 +12228,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
10195 } 12228 }
10196 break; 12229 break;
10197 12230
10198 #endregion 12231 //#endregion
10199 12232
10200 #region Script Packets 12233 //#region Script Packets
10201 12234
10202 case PacketType.GetScriptRunning: 12235 case PacketType.GetScriptRunning:
10203 GetScriptRunningPacket scriptRunning = (GetScriptRunningPacket)Pack; 12236 GetScriptRunningPacket scriptRunning = (GetScriptRunningPacket)Pack;
@@ -10247,8 +12280,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
10247 } 12280 }
10248 break; 12281 break;
10249 12282
12283 //#endregion
12284 */
10250 #endregion 12285 #endregion
10251
10252 #region Gesture Managment 12286 #region Gesture Managment
10253 12287
10254 case PacketType.ActivateGestures: 12288 case PacketType.ActivateGestures: