コード例 #1
0
        /// <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("------");
             */
        }
コード例 #2
0
        /// <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("------");
             */
        }