/// <summary></summary> /// <param name="packet"></param> /// <param name="simulator"></param> private void EstateOwnerMessageHandler(Packet packet, Simulator simulator) { EstateOwnerMessagePacket message = (EstateOwnerMessagePacket)packet; uint estateID; string method = Utils.BytesToString(message.MethodData.Method); //List<string> parameters = new List<string>(); if (method == "estateupdateinfo") { string estateName = Utils.BytesToString(message.ParamList[0].Parameter); UUID estateOwner = new UUID(Utils.BytesToString(message.ParamList[1].Parameter)); estateID = Utils.BytesToUInt(message.ParamList[2].Parameter); /* * foreach (EstateOwnerMessagePacket.ParamListBlock param in message.ParamList) * { * parameters.Add(Utils.BytesToString(param.Parameter)); * } */ bool denyNoPaymentInfo; if (Utils.BytesToUInt(message.ParamList[8].Parameter) == 0) { denyNoPaymentInfo = true; } else { denyNoPaymentInfo = false; } if (OnGetEstateUpdateInfo != null) { try { OnGetEstateUpdateInfo(estateName, estateOwner, estateID, denyNoPaymentInfo); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } else if (method == "setaccess") { int count; estateID = Utils.BytesToUInt(message.ParamList[0].Parameter); if (message.ParamList.Length > 1) { //param comes in as a string for some reason uint param; if (!uint.TryParse(Utils.BytesToString(message.ParamList[1].Parameter), out param)) { return; } EstateAccessReplyDelta accessType = (EstateAccessReplyDelta)param; switch (accessType) { case EstateAccessReplyDelta.EstateManagers: if (OnGetEstateManagers != null) { if (message.ParamList.Length > 5) { if (!int.TryParse(Utils.BytesToString(message.ParamList[5].Parameter), out count)) { return; } List <UUID> managers = new List <UUID>(); for (int i = 6; i < message.ParamList.Length; i++) { try { UUID managerID = new UUID(message.ParamList[i].Parameter, 0); managers.Add(managerID); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } try { OnGetEstateManagers(estateID, count, managers); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } break; case EstateAccessReplyDelta.EstateBans: if (OnGetEstateBans != null) { if (message.ParamList.Length > 6) { if (!int.TryParse(Utils.BytesToString(message.ParamList[4].Parameter), out count)) { return; } List <UUID> bannedUsers = new List <UUID>(); for (int i = 7; i < message.ParamList.Length; i++) { try { UUID bannedID = new UUID(message.ParamList[i].Parameter, 0); bannedUsers.Add(bannedID); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } try { OnGetEstateBans(estateID, count, bannedUsers); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } break; case EstateAccessReplyDelta.AllowedUsers: if (OnGetAllowedUsers != null) { if (message.ParamList.Length > 5) { if (!int.TryParse(Utils.BytesToString(message.ParamList[2].Parameter), out count)) { return; } List <UUID> allowedUsers = new List <UUID>(); for (int i = 6; i < message.ParamList.Length; i++) { try { UUID allowedID = new UUID(message.ParamList[i].Parameter, 0); allowedUsers.Add(allowedID); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } try { OnGetAllowedUsers(estateID, count, allowedUsers); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } break; case EstateAccessReplyDelta.AllowedGroups: if (OnGetAllowedGroups != null) { if (message.ParamList.Length > 5) { if (!int.TryParse(Utils.BytesToString(message.ParamList[3].Parameter), out count)) { return; } List <UUID> allowedGroups = new List <UUID>(); for (int i = 5; i < message.ParamList.Length; i++) { try { UUID groupID = new UUID(message.ParamList[i].Parameter, 0); allowedGroups.Add(groupID); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } try { OnGetAllowedGroups(estateID, count, allowedGroups); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } break; } } } /* * Console.WriteLine("--- " + method + " ---"); * foreach (EstateOwnerMessagePacket.ParamListBlock block in message.ParamList) * { * Console.WriteLine(Utils.BytesToString(block.Parameter)); * } * Console.WriteLine("------"); */ }
/// <summary></summary> /// <param name="packet"></param> /// <param name="simulator"></param> private void EstateOwnerMessageHandler(Packet packet, Simulator simulator) { EstateOwnerMessagePacket message = (EstateOwnerMessagePacket)packet; uint estateID; string method = Helpers.FieldToUTF8String(message.MethodData.Method); List <string> parameters = new List <string>(); if (method == "estateupdateinfo") { string estateName = Helpers.FieldToUTF8String(message.ParamList[0].Parameter); LLUUID estateOwner = new LLUUID(Helpers.FieldToUTF8String(message.ParamList[1].Parameter)); estateID = Helpers.BytesToUInt(message.ParamList[2].Parameter); /* * foreach (EstateOwnerMessagePacket.ParamListBlock param in message.ParamList) * { * parameters.Add(Helpers.FieldToUTF8String(param.Parameter)); * } */ bool denyNoPaymentInfo; if (Helpers.BytesToUInt(message.ParamList[8].Parameter) == 0) { denyNoPaymentInfo = true; } else { denyNoPaymentInfo = false; } if (OnGetEstateUpdateInfo != null) { try { OnGetEstateUpdateInfo(estateName, estateOwner, estateID, denyNoPaymentInfo); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } else if (method == "setaccess") { int count; estateID = Helpers.BytesToUInt(message.ParamList[0].Parameter); if (message.ParamList.Length > 1) { EstateAccessReplyDelta accessType = (EstateAccessReplyDelta)Helpers.BytesToUInt(message.ParamList[1].Parameter); switch (accessType) { case EstateAccessReplyDelta.EstateManagers: if (OnGetEstateManagers != null) { count = (int)Helpers.BytesToUInt(message.ParamList[3].Parameter); List <LLUUID> managers = new List <LLUUID>(); if (message.ParamList.Length > 5) { for (int i = 5; i < message.ParamList.Length; i++) { LLUUID managerID; if (LLUUID.TryParse(Helpers.FieldToUTF8String(message.ParamList[i].Parameter), out managerID)) { managers.Add(managerID); } } try { OnGetEstateManagers(estateID, count, managers); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } break; case EstateAccessReplyDelta.EstateBans: if (OnGetEstateBans != null) { count = (int)Helpers.BytesToUInt(message.ParamList[4].Parameter); List <LLUUID> bannedUsers = new List <LLUUID>(); if (message.ParamList.Length > 5) { for (int i = 5; i < message.ParamList.Length; i++) { LLUUID bannedID; if (LLUUID.TryParse(Helpers.FieldToUTF8String(message.ParamList[i].Parameter), out bannedID)) { bannedUsers.Add(bannedID); } } try { OnGetEstateBans(estateID, count, bannedUsers); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } break; case EstateAccessReplyDelta.AllowedUsers: if (OnGetAllowedUsers != null) { count = (int)Helpers.BytesToUInt(message.ParamList[2].Parameter); List <LLUUID> allowedUsers = new List <LLUUID>(); if (message.ParamList.Length > 5) { for (int i = 5; i < message.ParamList.Length; i++) { LLUUID userID; if (LLUUID.TryParse(Helpers.FieldToUTF8String(message.ParamList[i].Parameter), out userID)) { allowedUsers.Add(userID); } } try { OnGetAllowedUsers(estateID, count, allowedUsers); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } break; case EstateAccessReplyDelta.AllowedGroups: if (OnGetAllowedGroups != null) { count = (int)Helpers.BytesToUInt(message.ParamList[3].Parameter); List <LLUUID> allowedGroups = new List <LLUUID>(); if (message.ParamList.Length > 5) { for (int i = 5; i < message.ParamList.Length; i++) { LLUUID groupID; if (LLUUID.TryParse(Helpers.FieldToUTF8String(message.ParamList[i].Parameter), out groupID)) { allowedGroups.Add(groupID); } } try { OnGetAllowedGroups(estateID, count, allowedGroups); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } break; } if (accessType == EstateAccessReplyDelta.EstateManagers) { if (OnGetEstateManagers != null) { count = (int)Helpers.BytesToUInt(message.ParamList[5].Parameter); List <LLUUID> managers = new List <LLUUID>(); for (int i = 5; i < message.ParamList.Length; i++) { LLUUID managerID; if (LLUUID.TryParse(Helpers.FieldToUTF8String(message.ParamList[i].Parameter), out managerID)) { managers.Add(managerID); } } try { OnGetEstateManagers(estateID, count, managers); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } } } /* * Console.WriteLine("--- " + method + " ---"); * foreach (EstateOwnerMessagePacket.ParamListBlock block in message.ParamList) * { * Console.WriteLine(Helpers.FieldToUTF8String(block.Parameter)); * } * Console.WriteLine("------"); */ }