Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
						commit
						a8b1a57cd1
					
				| 
						 | 
				
			
			@ -60,21 +60,6 @@ namespace OpenSim.Client.Linden
 | 
			
		|||
            m_port = port;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected bool RegionLoginsEnabled
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (m_firstScene != null)
 | 
			
		||||
                {
 | 
			
		||||
                    return m_firstScene.SceneGridService.RegionLoginsEnabled;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected List<Scene> m_scenes = new List<Scene>();
 | 
			
		||||
        protected Scene m_firstScene;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -239,67 +224,53 @@ namespace OpenSim.Client.Linden
 | 
			
		|||
                    agentData.child = false;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (!RegionLoginsEnabled)
 | 
			
		||||
                {
 | 
			
		||||
                    m_log.InfoFormat(
 | 
			
		||||
                        "[CLIENT]: Denying access for user {0} {1} because region login is currently disabled",
 | 
			
		||||
                        agentData.firstname, agentData.lastname);
 | 
			
		||||
                bool success = false;
 | 
			
		||||
                string denyMess = "";
 | 
			
		||||
 | 
			
		||||
                Scene scene;
 | 
			
		||||
                if (TryGetRegion(regionHandle, out scene))
 | 
			
		||||
                {
 | 
			
		||||
                    if (scene.RegionInfo.EstateSettings.IsBanned(agentData.AgentID))
 | 
			
		||||
                    {
 | 
			
		||||
                        denyMess = "User is banned from this region";
 | 
			
		||||
                        m_log.InfoFormat(
 | 
			
		||||
                            "[CLIENT]: Denying access for user {0} {1} because user is banned",
 | 
			
		||||
                            agentData.firstname, agentData.lastname);
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        string reason;
 | 
			
		||||
                        if (scene.NewUserConnection(agentData, (uint)TeleportFlags.ViaLogin, out reason))
 | 
			
		||||
                        {
 | 
			
		||||
                            success = true;
 | 
			
		||||
                        }
 | 
			
		||||
                        else
 | 
			
		||||
                        {
 | 
			
		||||
                            denyMess = String.Format("Login refused by region: {0}", reason);
 | 
			
		||||
                            m_log.InfoFormat(
 | 
			
		||||
                                "[CLIENT]: Denying access for user {0} {1} because user connection was refused by the region",
 | 
			
		||||
                                agentData.firstname, agentData.lastname);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    denyMess = "Region not found";
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (success)
 | 
			
		||||
                {
 | 
			
		||||
                    Hashtable respdata = new Hashtable();
 | 
			
		||||
                    respdata["success"] = "FALSE";
 | 
			
		||||
                    respdata["reason"] = "region login currently disabled";
 | 
			
		||||
                    respdata["success"] = "TRUE";
 | 
			
		||||
                    resp.Value = respdata;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    bool success = false;
 | 
			
		||||
                    string denyMess = "";
 | 
			
		||||
 | 
			
		||||
                    Scene scene;
 | 
			
		||||
                    if (TryGetRegion(regionHandle, out scene))
 | 
			
		||||
                    {
 | 
			
		||||
                        if (scene.RegionInfo.EstateSettings.IsBanned(agentData.AgentID))
 | 
			
		||||
                        {
 | 
			
		||||
                            denyMess = "User is banned from this region";
 | 
			
		||||
                            m_log.InfoFormat(
 | 
			
		||||
                                "[CLIENT]: Denying access for user {0} {1} because user is banned",
 | 
			
		||||
                                agentData.firstname, agentData.lastname);
 | 
			
		||||
                        }
 | 
			
		||||
                        else
 | 
			
		||||
                        {
 | 
			
		||||
                            string reason;
 | 
			
		||||
                            if (scene.NewUserConnection(agentData, (uint)TeleportFlags.ViaLogin, out reason))
 | 
			
		||||
                            {
 | 
			
		||||
                                success = true;
 | 
			
		||||
                            }
 | 
			
		||||
                            else
 | 
			
		||||
                            {
 | 
			
		||||
                                denyMess = String.Format("Login refused by region: {0}", reason);
 | 
			
		||||
                                m_log.InfoFormat(
 | 
			
		||||
                                    "[CLIENT]: Denying access for user {0} {1} because user connection was refused by the region",
 | 
			
		||||
                                    agentData.firstname, agentData.lastname);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        denyMess = "Region not found";
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if (success)
 | 
			
		||||
                    {
 | 
			
		||||
                        Hashtable respdata = new Hashtable();
 | 
			
		||||
                        respdata["success"] = "TRUE";
 | 
			
		||||
                        resp.Value = respdata;
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        Hashtable respdata = new Hashtable();
 | 
			
		||||
                        respdata["success"] = "FALSE";
 | 
			
		||||
                        respdata["reason"] = denyMess;
 | 
			
		||||
                        resp.Value = respdata;
 | 
			
		||||
                    }
 | 
			
		||||
                    Hashtable respdata = new Hashtable();
 | 
			
		||||
                    respdata["success"] = "FALSE";
 | 
			
		||||
                    respdata["reason"] = denyMess;
 | 
			
		||||
                    resp.Value = respdata;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception e)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -56,21 +56,6 @@ namespace OpenSim.Client.Linden
 | 
			
		|||
        protected bool authenticate;
 | 
			
		||||
        protected string welcomeMessage;
 | 
			
		||||
 | 
			
		||||
        public bool RegionLoginsEnabled
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (m_firstScene != null)
 | 
			
		||||
                {
 | 
			
		||||
                    return m_firstScene.SceneGridService.RegionLoginsEnabled;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected LLStandaloneLoginService m_loginService;
 | 
			
		||||
 | 
			
		||||
        #region IRegionModule Members
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -202,20 +202,15 @@ namespace OpenSim.Client.Linden
 | 
			
		|||
                agent.Appearance = new AvatarAppearance(agent.AgentID);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (m_regionsConnector.RegionLoginsEnabled)
 | 
			
		||||
            string reason;
 | 
			
		||||
            bool success = m_regionsConnector.NewUserConnection(regionInfo.RegionHandle, agent, out reason);
 | 
			
		||||
            if (!success)
 | 
			
		||||
            {
 | 
			
		||||
                string reason;
 | 
			
		||||
                bool success = m_regionsConnector.NewUserConnection(regionInfo.RegionHandle, agent, out reason);
 | 
			
		||||
                if (!success)
 | 
			
		||||
                {
 | 
			
		||||
                    response.ErrorReason = "key";
 | 
			
		||||
                    response.ErrorMessage = reason;
 | 
			
		||||
                }
 | 
			
		||||
                return success;
 | 
			
		||||
                // return m_regionsConnector.NewUserConnection(regionInfo.RegionHandle, agent, out reason);
 | 
			
		||||
                response.ErrorReason = "key";
 | 
			
		||||
                response.ErrorMessage = reason;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return false;
 | 
			
		||||
            return success;
 | 
			
		||||
            // return m_regionsConnector.NewUserConnection(regionInfo.RegionHandle, agent, out reason);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void LogOffUser(UserProfileData theUser, string message)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1217,7 +1217,7 @@ namespace OpenSim.Client.MXP.ClientStack
 | 
			
		|||
            // Need to translate to MXP somehow
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID)
 | 
			
		||||
        public void SendEstateList(UUID invoice, int code, UUID[] Data, uint estateID)
 | 
			
		||||
        {
 | 
			
		||||
            // Need to translate to MXP somehow
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -1688,7 +1688,15 @@ namespace OpenSim.Client.MXP.ClientStack
 | 
			
		|||
        }
 | 
			
		||||
        
 | 
			
		||||
        public void SendGroupTransactionsSummaryDetails(IClientAPI sender,UUID groupID, UUID transactionID, UUID sessionID,int amt)
 | 
			
		||||
        {
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendGroupVoteHistory(UUID groupID, UUID transactionID, GroupVoteHistory[] Votes)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendGroupActiveProposals(UUID groupID, UUID transactionID, GroupActiveProposals[] Proposals)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -760,7 +760,7 @@ namespace OpenSim.Client.Sirikata.ClientStack
 | 
			
		|||
            throw new System.NotImplementedException();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID)
 | 
			
		||||
        public void SendEstateList(UUID invoice, int code, UUID[] Data, uint estateID)
 | 
			
		||||
        {
 | 
			
		||||
            throw new System.NotImplementedException();
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -1177,7 +1177,15 @@ namespace OpenSim.Client.Sirikata.ClientStack
 | 
			
		|||
        }
 | 
			
		||||
        
 | 
			
		||||
        public void SendGroupTransactionsSummaryDetails(IClientAPI sender,UUID groupID, UUID transactionID, UUID sessionID,int amt)
 | 
			
		||||
        {
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendGroupVoteHistory(UUID groupID, UUID transactionID, GroupVoteHistory[] Votes)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendGroupActiveProposals(UUID groupID, UUID transactionID, GroupActiveProposals[] Proposals)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -767,7 +767,7 @@ namespace OpenSim.Client.VWoHTTP.ClientStack
 | 
			
		|||
            throw new System.NotImplementedException();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID)
 | 
			
		||||
        public void SendEstateList(UUID invoice, int code, UUID[] Data, uint estateID)
 | 
			
		||||
        {
 | 
			
		||||
            throw new System.NotImplementedException();
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -1194,7 +1194,15 @@ namespace OpenSim.Client.VWoHTTP.ClientStack
 | 
			
		|||
        }
 | 
			
		||||
        
 | 
			
		||||
        public void SendGroupTransactionsSummaryDetails(IClientAPI sender,UUID groupID, UUID transactionID, UUID sessionID,int amt)
 | 
			
		||||
        {
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendGroupVoteHistory(UUID groupID, UUID transactionID, GroupVoteHistory[] Votes)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendGroupActiveProposals(UUID groupID, UUID transactionID, GroupActiveProposals[] Proposals)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -388,12 +388,6 @@ namespace OpenSim.Framework.Communications.Tests
 | 
			
		|||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            #region ILoginRegionsConnector Members
 | 
			
		||||
            public bool RegionLoginsEnabled
 | 
			
		||||
            {
 | 
			
		||||
                get { return true; }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public void LogOffUserFromGrid(ulong regionHandle, OpenMetaverse.UUID AvatarID, OpenMetaverse.UUID RegionSecret, string message)
 | 
			
		||||
            {
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -454,8 +448,6 @@ namespace OpenSim.Framework.Communications.Tests
 | 
			
		|||
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            #endregion
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,10 +36,10 @@ namespace OpenSim.Framework
 | 
			
		|||
 | 
			
		||||
        public enum EstateAccessCodex : uint
 | 
			
		||||
        {
 | 
			
		||||
            AccessOptions = 17,
 | 
			
		||||
            AllowedGroups = 18,
 | 
			
		||||
            EstateBans = 20,
 | 
			
		||||
            EstateManagers = 24
 | 
			
		||||
            AccessOptions = 1,
 | 
			
		||||
            AllowedGroups = 2,
 | 
			
		||||
            EstateBans = 4,
 | 
			
		||||
            EstateManagers = 8
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Flags]public enum TeleportFlags : uint
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -300,6 +300,34 @@ namespace OpenSim.Framework
 | 
			
		|||
                OnSave(this);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void AddEstateUser(UUID avatarID)
 | 
			
		||||
        {
 | 
			
		||||
            if (avatarID == UUID.Zero)
 | 
			
		||||
                return;
 | 
			
		||||
            if (!l_EstateAccess.Contains(avatarID))
 | 
			
		||||
                l_EstateAccess.Add(avatarID);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void RemoveEstateUser(UUID avatarID)
 | 
			
		||||
        {
 | 
			
		||||
            if (l_EstateAccess.Contains(avatarID))
 | 
			
		||||
                l_EstateAccess.Remove(avatarID);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void AddEstateGroup(UUID avatarID)
 | 
			
		||||
        {
 | 
			
		||||
            if (avatarID == UUID.Zero)
 | 
			
		||||
                return;
 | 
			
		||||
            if (!l_EstateGroups.Contains(avatarID))
 | 
			
		||||
                l_EstateGroups.Add(avatarID);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void RemoveEstateGroup(UUID avatarID)
 | 
			
		||||
        {
 | 
			
		||||
            if (l_EstateGroups.Contains(avatarID))
 | 
			
		||||
                l_EstateGroups.Remove(avatarID);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void AddEstateManager(UUID avatarID)
 | 
			
		||||
        {
 | 
			
		||||
            if (avatarID == UUID.Zero)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1271,7 +1271,7 @@ namespace OpenSim.Framework
 | 
			
		|||
        void SendHealth(float health);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID);
 | 
			
		||||
        void SendEstateList(UUID invoice, int code, UUID[] Data, uint estateID);
 | 
			
		||||
 | 
			
		||||
        void SendBannedUserList(UUID invoice, EstateBan[] banlist, uint estateID);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1446,7 +1446,12 @@ namespace OpenSim.Framework
 | 
			
		|||
        void SendUserInfoReply(bool imViaEmail, bool visible, string email);
 | 
			
		||||
        
 | 
			
		||||
        void SendUseCachedMuteList();
 | 
			
		||||
        void SendMuteListUpdate(string filename);
 | 
			
		||||
 | 
			
		||||
        void SendMuteListUpdate(string filename);
 | 
			
		||||
 | 
			
		||||
        void SendGroupActiveProposals(UUID groupID, UUID transactionID, GroupActiveProposals[] Proposals);
 | 
			
		||||
 | 
			
		||||
        void SendGroupVoteHistory(UUID groupID, UUID transactionID, GroupVoteHistory[] Votes);
 | 
			
		||||
 | 
			
		||||
        void KillEndDone();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,6 @@ namespace OpenSim.Framework
 | 
			
		|||
{
 | 
			
		||||
    public interface ILoginServiceToRegionsConnector
 | 
			
		||||
    {
 | 
			
		||||
        bool RegionLoginsEnabled { get; }
 | 
			
		||||
        void LogOffUserFromGrid(ulong regionHandle, UUID AvatarID, UUID RegionSecret, string message);
 | 
			
		||||
        bool NewUserConnection(ulong regionHandle, AgentCircuitData agent, out string reason);
 | 
			
		||||
        RegionInfo RequestClosestRegion(string region);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,7 @@ namespace OpenSim.Framework
 | 
			
		|||
{
 | 
			
		||||
    public class MainServer
 | 
			
		||||
    {
 | 
			
		||||
        private static BaseHttpServer instance;
 | 
			
		||||
        private static BaseHttpServer instance = null;
 | 
			
		||||
        private static Dictionary<uint, BaseHttpServer> m_Servers =
 | 
			
		||||
                new Dictionary<uint, BaseHttpServer>();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -46,7 +46,7 @@ namespace OpenSim.Framework
 | 
			
		|||
        {
 | 
			
		||||
            if (port == 0)
 | 
			
		||||
                return Instance;
 | 
			
		||||
            if (port == Instance.Port)
 | 
			
		||||
            if (instance != null && port == Instance.Port)
 | 
			
		||||
                return Instance;
 | 
			
		||||
 | 
			
		||||
            if (m_Servers.ContainsKey(port))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,6 +53,7 @@ namespace OpenSim
 | 
			
		|||
        protected string m_shutdownCommandsFile;
 | 
			
		||||
        protected bool m_gui = false;
 | 
			
		||||
        protected string m_consoleType = "local";
 | 
			
		||||
        protected uint m_consolePort = 0;
 | 
			
		||||
 | 
			
		||||
        private string m_timedScript = "disabled";
 | 
			
		||||
        private Timer m_scriptTimer;
 | 
			
		||||
| 
						 | 
				
			
			@ -66,6 +67,7 @@ namespace OpenSim
 | 
			
		|||
            base.ReadExtraConfigSettings();
 | 
			
		||||
 | 
			
		||||
            IConfig startupConfig = m_config.Source.Configs["Startup"];
 | 
			
		||||
            IConfig networkConfig = m_config.Source.Configs["Network"];
 | 
			
		||||
 | 
			
		||||
            int stpMaxThreads = 15;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -79,6 +81,8 @@ namespace OpenSim
 | 
			
		|||
                else
 | 
			
		||||
                    m_consoleType= startupConfig.GetString("console", String.Empty);
 | 
			
		||||
 | 
			
		||||
                if (networkConfig != null)
 | 
			
		||||
                    m_consolePort = (uint)networkConfig.GetInt("console_port", 0);
 | 
			
		||||
                m_timedScript = startupConfig.GetString("timer_Script", "disabled");
 | 
			
		||||
                if (m_logFileAppender != null)
 | 
			
		||||
                {
 | 
			
		||||
| 
						 | 
				
			
			@ -151,7 +155,16 @@ namespace OpenSim
 | 
			
		|||
            base.StartupSpecific();
 | 
			
		||||
 | 
			
		||||
            if (m_console is RemoteConsole)
 | 
			
		||||
                ((RemoteConsole)m_console).SetServer(m_httpServer);
 | 
			
		||||
            {
 | 
			
		||||
                if (m_consolePort == 0)
 | 
			
		||||
                {
 | 
			
		||||
                    ((RemoteConsole)m_console).SetServer(m_httpServer);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    ((RemoteConsole)m_console).SetServer(MainServer.GetHttpServer(m_consolePort));
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //Run Startup Commands
 | 
			
		||||
            if (String.IsNullOrEmpty(m_startupCommandsFile))
 | 
			
		||||
| 
						 | 
				
			
			@ -287,18 +300,6 @@ namespace OpenSim
 | 
			
		|||
                                          "create region",
 | 
			
		||||
                                          "Create a new region", HandleCreateRegion);
 | 
			
		||||
 | 
			
		||||
            m_console.Commands.AddCommand("region", false, "login enable",
 | 
			
		||||
                                          "login enable",
 | 
			
		||||
                                          "Enable logins to the simulator", HandleLoginEnable);
 | 
			
		||||
 | 
			
		||||
            m_console.Commands.AddCommand("region", false, "login disable",
 | 
			
		||||
                                          "login disable",
 | 
			
		||||
                                          "Disable logins to the simulator", HandleLoginDisable);
 | 
			
		||||
 | 
			
		||||
            m_console.Commands.AddCommand("region", false, "login status",
 | 
			
		||||
                                          "login status",
 | 
			
		||||
                                          "Display status of logins", HandleLoginStatus);
 | 
			
		||||
 | 
			
		||||
            m_console.Commands.AddCommand("region", false, "restart",
 | 
			
		||||
                                          "restart",
 | 
			
		||||
                                          "Restart all sims in this instance", RunCommand);
 | 
			
		||||
| 
						 | 
				
			
			@ -558,42 +559,6 @@ namespace OpenSim
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Enable logins
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="module"></param>
 | 
			
		||||
        /// <param name="cmd"></param>
 | 
			
		||||
        private void HandleLoginEnable(string module, string[] cmd)
 | 
			
		||||
        {
 | 
			
		||||
            ProcessLogin(true);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Disable logins
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="module"></param>
 | 
			
		||||
        /// <param name="cmd"></param>
 | 
			
		||||
        private void HandleLoginDisable(string module, string[] cmd)
 | 
			
		||||
        {
 | 
			
		||||
            ProcessLogin(false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Log login status to the console
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="module"></param>
 | 
			
		||||
        /// <param name="cmd"></param>
 | 
			
		||||
        private void HandleLoginStatus(string module, string[] cmd)
 | 
			
		||||
        {
 | 
			
		||||
            if (m_sceneManager.CurrentOrFirstScene.SceneGridService.RegionLoginsEnabled == false)
 | 
			
		||||
 | 
			
		||||
                m_log.Info("[ Login ]  Login are disabled ");
 | 
			
		||||
            else
 | 
			
		||||
                m_log.Info("[ Login ]  Login are enabled");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Change and load configuration file data.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -203,12 +203,6 @@ namespace OpenSim
 | 
			
		|||
                plugin.PostInitialise();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Only enable logins to the regions once we have completely finished starting up (apart from scripts)
 | 
			
		||||
            if ((SceneManager.CurrentOrFirstScene != null) && (SceneManager.CurrentOrFirstScene.SceneGridService != null))
 | 
			
		||||
            {
 | 
			
		||||
                SceneManager.CurrentOrFirstScene.SceneGridService.RegionLoginsEnabled = true;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            AddPluginCommands();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -278,31 +272,6 @@ namespace OpenSim
 | 
			
		|||
            m_sceneManager.OnRestartSim += handleRestartRegion;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Initialises the asset cache. This supports legacy configuration values
 | 
			
		||||
        /// to ensure consistent operation, but values outside of that namespace
 | 
			
		||||
        /// are handled by the more generic resolution mechanism provided by 
 | 
			
		||||
        /// the ResolveAssetServer virtual method. If extended resolution fails, 
 | 
			
		||||
        /// then the normal default action is taken.
 | 
			
		||||
        /// Creation of the AssetCache is handled by ResolveAssetCache. This
 | 
			
		||||
        /// function accepts a reference to the instantiated AssetServer and
 | 
			
		||||
        /// returns an IAssetCache implementation, if possible. This is a virtual
 | 
			
		||||
        /// method.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public void ProcessLogin(bool LoginEnabled)
 | 
			
		||||
        {
 | 
			
		||||
            if (LoginEnabled)
 | 
			
		||||
            {
 | 
			
		||||
                m_log.Info("[LOGIN]: Login is now enabled.");
 | 
			
		||||
                SceneManager.CurrentOrFirstScene.SceneGridService.RegionLoginsEnabled = true;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                m_log.Info("[LOGIN]: Login is now disabled.");
 | 
			
		||||
                SceneManager.CurrentOrFirstScene.SceneGridService.RegionLoginsEnabled = false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Execute the region creation process.  This includes setting up scene infrastructure.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3912,7 +3912,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
 | 
			
		|||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID)
 | 
			
		||||
        public void SendEstateList(UUID invoice, int code, UUID[] Data, uint estateID)
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
            EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket();
 | 
			
		||||
            packet.AgentData.TransactionID = UUID.Random();
 | 
			
		||||
| 
						 | 
				
			
			@ -3921,26 +3922,36 @@ namespace OpenSim.Region.ClientStack.LindenUDP
 | 
			
		|||
            packet.MethodData.Invoice = invoice;
 | 
			
		||||
            packet.MethodData.Method = Utils.StringToBytes("setaccess");
 | 
			
		||||
 | 
			
		||||
            EstateOwnerMessagePacket.ParamListBlock[] returnblock = new EstateOwnerMessagePacket.ParamListBlock[6 + EstateManagers.Length];
 | 
			
		||||
            EstateOwnerMessagePacket.ParamListBlock[] returnblock = new EstateOwnerMessagePacket.ParamListBlock[6 + Data.Length];
 | 
			
		||||
 | 
			
		||||
            for (int i = 0; i < (6 + EstateManagers.Length); i++)
 | 
			
		||||
            for (int i = 0; i < (6 + Data.Length); i++)
 | 
			
		||||
            {
 | 
			
		||||
                returnblock[i] = new EstateOwnerMessagePacket.ParamListBlock();
 | 
			
		||||
            }
 | 
			
		||||
            int j = 0;
 | 
			
		||||
 | 
			
		||||
            returnblock[j].Parameter = Utils.StringToBytes(estateID.ToString()); j++;
 | 
			
		||||
            returnblock[j].Parameter = Utils.StringToBytes(((int)Constants.EstateAccessCodex.EstateManagers).ToString()); j++;
 | 
			
		||||
            returnblock[j].Parameter = Utils.StringToBytes(code.ToString()); j++;
 | 
			
		||||
            returnblock[j].Parameter = Utils.StringToBytes("0"); j++;
 | 
			
		||||
            returnblock[j].Parameter = Utils.StringToBytes("0"); j++;
 | 
			
		||||
            returnblock[j].Parameter = Utils.StringToBytes("0"); j++;
 | 
			
		||||
            returnblock[j].Parameter = Utils.StringToBytes(EstateManagers.Length.ToString()); j++;
 | 
			
		||||
            for (int i = 0; i < EstateManagers.Length; i++)
 | 
			
		||||
            returnblock[j].Parameter = Utils.StringToBytes("0"); j++;
 | 
			
		||||
 | 
			
		||||
            j = 2; // Agents
 | 
			
		||||
            if ((code & 2) != 0)
 | 
			
		||||
                j = 3; // Groups
 | 
			
		||||
            if ((code & 8) != 0)
 | 
			
		||||
                j = 5; // Managers
 | 
			
		||||
 | 
			
		||||
            returnblock[j].Parameter = Utils.StringToBytes(Data.Length.ToString());
 | 
			
		||||
            j = 6;
 | 
			
		||||
 | 
			
		||||
            for (int i = 0; i < Data.Length; i++)
 | 
			
		||||
            {
 | 
			
		||||
                returnblock[j].Parameter = EstateManagers[i].GetBytes(); j++;
 | 
			
		||||
                returnblock[j].Parameter = Data[i].GetBytes(); j++;
 | 
			
		||||
            }
 | 
			
		||||
            packet.ParamList = returnblock;
 | 
			
		||||
            packet.Header.Reliable = false;
 | 
			
		||||
            packet.Header.Reliable = true;
 | 
			
		||||
            OutPacket(packet, ThrottleOutPacketType.Task);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,21 +55,6 @@ namespace OpenSim.Region.CoreModules.Hypergrid
 | 
			
		|||
 | 
			
		||||
        protected bool m_enabled = false; // Module is only enabled if running in standalone mode
 | 
			
		||||
 | 
			
		||||
        public bool RegionLoginsEnabled
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (m_firstScene != null)
 | 
			
		||||
                {
 | 
			
		||||
                    return m_firstScene.SceneGridService.RegionLoginsEnabled;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
       
 | 
			
		||||
        protected HGLoginAuthService m_loginService;
 | 
			
		||||
 | 
			
		||||
        #region IRegionModule Members
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,6 +47,7 @@
 | 
			
		|||
        <RegionModule id="LandServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Land.LandServiceInConnectorModule" />
 | 
			
		||||
        <RegionModule id="NeighbourServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Neighbour.NeighbourServiceInConnectorModule" />    \
 | 
			
		||||
        <RegionModule id="HypergridServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Grid.HypergridServiceInConnectorModule" />    \
 | 
			
		||||
        <RegionModule id="AccessModule" type="OpenSim.Region.CoreModules.World.AccessModule" />    \
 | 
			
		||||
 | 
			
		||||
    </Extension>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -696,8 +696,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
 | 
			
		|||
        public bool CheckUserAtEntry(UUID userID, UUID sessionID, out bool comingHome)
 | 
			
		||||
        {
 | 
			
		||||
            comingHome = false;
 | 
			
		||||
            if (!m_aScene.SceneGridService.RegionLoginsEnabled)
 | 
			
		||||
                return false;
 | 
			
		||||
 | 
			
		||||
            CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(userID);
 | 
			
		||||
            if (uinfo != null) 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,158 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) Contributors, http://opensimulator.org/
 | 
			
		||||
 * See CONTRIBUTORS.TXT for a full list of copyright holders.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions are met:
 | 
			
		||||
 *     * Redistributions of source code must retain the above copyright
 | 
			
		||||
 *       notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 *     * Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *       notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *       documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *     * Neither the name of the OpenSimulator Project nor the
 | 
			
		||||
 *       names of its contributors may be used to endorse or promote products
 | 
			
		||||
 *       derived from this software without specific prior written permission.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
 | 
			
		||||
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 | 
			
		||||
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 | 
			
		||||
 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
 | 
			
		||||
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 | 
			
		||||
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 | 
			
		||||
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 | 
			
		||||
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | 
			
		||||
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 | 
			
		||||
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using log4net;
 | 
			
		||||
using Nini.Config;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
using OpenSim.Framework;
 | 
			
		||||
using OpenSim.Framework.Console;
 | 
			
		||||
using OpenSim.Framework.Communications.Cache;
 | 
			
		||||
using OpenSim.Region.Framework.Interfaces;
 | 
			
		||||
using OpenSim.Region.Framework.Scenes;
 | 
			
		||||
using OpenSim.Services.Interfaces;
 | 
			
		||||
 | 
			
		||||
namespace OpenSim.Region.CoreModules.World
 | 
			
		||||
{
 | 
			
		||||
    public class AccessModule : ISharedRegionModule
 | 
			
		||||
    {
 | 
			
		||||
        private static readonly ILog m_log =
 | 
			
		||||
                LogManager.GetLogger(
 | 
			
		||||
                MethodBase.GetCurrentMethod().DeclaringType);
 | 
			
		||||
                
 | 
			
		||||
        private List<Scene> m_SceneList = new List<Scene>();
 | 
			
		||||
 | 
			
		||||
        public void Initialise(IConfigSource config)
 | 
			
		||||
        {
 | 
			
		||||
            MainConsole.Instance.Commands.AddCommand("access", true,
 | 
			
		||||
                    "login enable",
 | 
			
		||||
                    "login enable",
 | 
			
		||||
                    "Enable simulator logins",
 | 
			
		||||
                    String.Empty,
 | 
			
		||||
                    HandleLoginCommand);
 | 
			
		||||
 | 
			
		||||
            MainConsole.Instance.Commands.AddCommand("access", true,
 | 
			
		||||
                    "login disable",
 | 
			
		||||
                    "login disable",
 | 
			
		||||
                    "Disable simulator logins",
 | 
			
		||||
                    String.Empty,
 | 
			
		||||
                    HandleLoginCommand);
 | 
			
		||||
 | 
			
		||||
            MainConsole.Instance.Commands.AddCommand("access", true,
 | 
			
		||||
                    "login status",
 | 
			
		||||
                    "login status",
 | 
			
		||||
                    "Show login status",
 | 
			
		||||
                    String.Empty,
 | 
			
		||||
                    HandleLoginCommand);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void PostInitialise()
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Close()
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public string Name
 | 
			
		||||
        {
 | 
			
		||||
            get { return "AccessModule"; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Type ReplaceableInterface
 | 
			
		||||
        {
 | 
			
		||||
            get { return null; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void AddRegion(Scene scene)
 | 
			
		||||
        {
 | 
			
		||||
            if (!m_SceneList.Contains(scene))
 | 
			
		||||
                m_SceneList.Add(scene);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void RemoveRegion(Scene scene)
 | 
			
		||||
        {
 | 
			
		||||
            m_SceneList.Remove(scene);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void RegionLoaded(Scene scene)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void HandleLoginCommand(string module, string[] cmd)
 | 
			
		||||
        {
 | 
			
		||||
            if ((Scene)MainConsole.Instance.ConsoleScene == null)
 | 
			
		||||
            {
 | 
			
		||||
                foreach (Scene s in m_SceneList)
 | 
			
		||||
                {
 | 
			
		||||
                    if(!ProcessCommand(s, cmd))
 | 
			
		||||
                        break;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                ProcessCommand((Scene)MainConsole.Instance.ConsoleScene, cmd);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        bool ProcessCommand(Scene scene, string[] cmd)
 | 
			
		||||
        {
 | 
			
		||||
            if (cmd.Length < 2)
 | 
			
		||||
            {
 | 
			
		||||
                MainConsole.Instance.Output("Syntax: login enable|disable|status");
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            switch (cmd[1])
 | 
			
		||||
            {
 | 
			
		||||
            case "enable":
 | 
			
		||||
                if (scene.LoginsDisabled)
 | 
			
		||||
                    MainConsole.Instance.Output(String.Format("Enabling logins for region {0}", scene.RegionInfo.RegionName));
 | 
			
		||||
                scene.LoginsDisabled = false;
 | 
			
		||||
                break;
 | 
			
		||||
            case "disable":
 | 
			
		||||
                if (!scene.LoginsDisabled)
 | 
			
		||||
                    MainConsole.Instance.Output(String.Format("Disabling logins for region {0}", scene.RegionInfo.RegionName));
 | 
			
		||||
                scene.LoginsDisabled = true;
 | 
			
		||||
                break;
 | 
			
		||||
            case "status":
 | 
			
		||||
                if (scene.LoginsDisabled)
 | 
			
		||||
                    MainConsole.Instance.Output(String.Format("Login in {0} are disabled", scene.RegionInfo.RegionName));
 | 
			
		||||
                else
 | 
			
		||||
                    MainConsole.Instance.Output(String.Format("Login in {0} are enabled", scene.RegionInfo.RegionName));
 | 
			
		||||
                break;
 | 
			
		||||
            default:
 | 
			
		||||
                MainConsole.Instance.Output("Syntax: login enable|disable|status");
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -75,10 +75,21 @@ namespace OpenSim.Region.CoreModules.World.Estate
 | 
			
		|||
                    m_scene.RegionInfo.EstateSettings.AbuseEmail,
 | 
			
		||||
                    estateOwner);
 | 
			
		||||
 | 
			
		||||
            remote_client.SendEstateManagersList(invoice,
 | 
			
		||||
            remote_client.SendEstateList(invoice,
 | 
			
		||||
                    (int)Constants.EstateAccessCodex.EstateManagers,
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.EstateManagers,
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
 | 
			
		||||
            remote_client.SendEstateList(invoice,
 | 
			
		||||
                    (int)Constants.EstateAccessCodex.AccessOptions,
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.EstateAccess,
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
 | 
			
		||||
            remote_client.SendEstateList(invoice,
 | 
			
		||||
                    (int)Constants.EstateAccessCodex.AllowedGroups,
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.EstateGroups,
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
 | 
			
		||||
            remote_client.SendBannedUserList(invoice,
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.EstateBans,
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
| 
						 | 
				
			
			@ -233,127 +244,176 @@ namespace OpenSim.Region.CoreModules.World.Estate
 | 
			
		|||
            if (user == m_scene.RegionInfo.MasterAvatarAssignedUUID)
 | 
			
		||||
                return; // never process owner
 | 
			
		||||
 | 
			
		||||
            switch (estateAccessType)
 | 
			
		||||
            if ((estateAccessType & 4) != 0) // User add
 | 
			
		||||
            {
 | 
			
		||||
                case 64:
 | 
			
		||||
                    if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || m_scene.Permissions.BypassPermissions())
 | 
			
		||||
                if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
 | 
			
		||||
                {
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.AddEstateUser(user);
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.Save();
 | 
			
		||||
                    remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, m_scene.RegionInfo.EstateSettings.EstateAccess, m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
            if ((estateAccessType & 8) != 0) // User remove
 | 
			
		||||
            {
 | 
			
		||||
                if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
 | 
			
		||||
                {
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.RemoveEstateUser(user);
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.Save();
 | 
			
		||||
 | 
			
		||||
                    remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, m_scene.RegionInfo.EstateSettings.EstateAccess, m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if ((estateAccessType & 16) != 0) // Group add
 | 
			
		||||
            {
 | 
			
		||||
                if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
 | 
			
		||||
                {
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.AddEstateGroup(user);
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.Save();
 | 
			
		||||
                    remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, m_scene.RegionInfo.EstateSettings.EstateGroups, m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if ((estateAccessType & 32) != 0) // Group remove
 | 
			
		||||
            {
 | 
			
		||||
                if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
 | 
			
		||||
                {
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.RemoveEstateGroup(user);
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.Save();
 | 
			
		||||
 | 
			
		||||
                    remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, m_scene.RegionInfo.EstateSettings.EstateGroups, m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if ((estateAccessType & 64) != 0) // Ban add
 | 
			
		||||
            {
 | 
			
		||||
                if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || m_scene.Permissions.BypassPermissions())
 | 
			
		||||
                {
 | 
			
		||||
                    EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans;
 | 
			
		||||
 | 
			
		||||
                    bool alreadyInList = false;
 | 
			
		||||
 | 
			
		||||
                    for (int i = 0; i < banlistcheck.Length; i++)
 | 
			
		||||
                    {
 | 
			
		||||
                        EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans;
 | 
			
		||||
 | 
			
		||||
                        bool alreadyInList = false;
 | 
			
		||||
 | 
			
		||||
                        for (int i = 0; i < banlistcheck.Length; i++)
 | 
			
		||||
                        if (user == banlistcheck[i].BannedUserID)
 | 
			
		||||
                        {
 | 
			
		||||
                            if (user == banlistcheck[i].BannedUserID)
 | 
			
		||||
                            {
 | 
			
		||||
                                alreadyInList = true;
 | 
			
		||||
                                break;
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            alreadyInList = true;
 | 
			
		||||
                            break;
 | 
			
		||||
                        }
 | 
			
		||||
                        if (!alreadyInList)
 | 
			
		||||
                        {
 | 
			
		||||
 | 
			
		||||
                            EstateBan item = new EstateBan();
 | 
			
		||||
 | 
			
		||||
                            item.BannedUserID = user;
 | 
			
		||||
                            item.EstateID = m_scene.RegionInfo.EstateSettings.EstateID;
 | 
			
		||||
                            item.BannedHostAddress = "0.0.0.0";
 | 
			
		||||
                            item.BannedHostIPMask = "0.0.0.0";
 | 
			
		||||
 | 
			
		||||
                            m_scene.RegionInfo.EstateSettings.AddBan(item);
 | 
			
		||||
                            m_scene.RegionInfo.EstateSettings.Save();
 | 
			
		||||
 | 
			
		||||
                            ScenePresence s = m_scene.GetScenePresence(user);
 | 
			
		||||
                            if (s != null)
 | 
			
		||||
                            {
 | 
			
		||||
                                if (!s.IsChildAgent)
 | 
			
		||||
                                {
 | 
			
		||||
                                    s.ControllingClient.SendTeleportLocationStart();
 | 
			
		||||
                                    m_scene.TeleportClientHome(user, s.ControllingClient);
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                        }
 | 
			
		||||
                        else
 | 
			
		||||
                        {
 | 
			
		||||
                            remote_client.SendAlertMessage("User is already on the region ban list");
 | 
			
		||||
                        }
 | 
			
		||||
                        //m_scene.RegionInfo.regionBanlist.Add(Manager(user);
 | 
			
		||||
                        remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    if (!alreadyInList)
 | 
			
		||||
                    {
 | 
			
		||||
                        remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
                case 128:
 | 
			
		||||
                    if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || m_scene.Permissions.BypassPermissions())
 | 
			
		||||
                    {
 | 
			
		||||
                        EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans;
 | 
			
		||||
 | 
			
		||||
                        bool alreadyInList = false;
 | 
			
		||||
                        EstateBan listitem = null;
 | 
			
		||||
                        EstateBan item = new EstateBan();
 | 
			
		||||
 | 
			
		||||
                        for (int i = 0; i < banlistcheck.Length; i++)
 | 
			
		||||
                        {
 | 
			
		||||
                            if (user == banlistcheck[i].BannedUserID)
 | 
			
		||||
                            {
 | 
			
		||||
                                alreadyInList = true;
 | 
			
		||||
                                listitem = banlistcheck[i];
 | 
			
		||||
                                break;
 | 
			
		||||
                            }
 | 
			
		||||
                        item.BannedUserID = user;
 | 
			
		||||
                        item.EstateID = m_scene.RegionInfo.EstateSettings.EstateID;
 | 
			
		||||
                        item.BannedHostAddress = "0.0.0.0";
 | 
			
		||||
                        item.BannedHostIPMask = "0.0.0.0";
 | 
			
		||||
 | 
			
		||||
                        }
 | 
			
		||||
                        if (alreadyInList && listitem != null)
 | 
			
		||||
                        {
 | 
			
		||||
                            m_scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID);
 | 
			
		||||
                            m_scene.RegionInfo.EstateSettings.Save();
 | 
			
		||||
                        }
 | 
			
		||||
                        else
 | 
			
		||||
                        {
 | 
			
		||||
                            remote_client.SendAlertMessage("User is not on the region ban list");
 | 
			
		||||
                        }
 | 
			
		||||
                        //m_scene.RegionInfo.regionBanlist.Add(Manager(user);
 | 
			
		||||
                        remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
                case 256:
 | 
			
		||||
 | 
			
		||||
                    if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
 | 
			
		||||
                    {
 | 
			
		||||
                        m_scene.RegionInfo.EstateSettings.AddEstateManager(user);
 | 
			
		||||
                        m_scene.RegionInfo.EstateSettings.Save();
 | 
			
		||||
                        remote_client.SendEstateManagersList(invoice, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    break;
 | 
			
		||||
                case 512:
 | 
			
		||||
                    if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
 | 
			
		||||
                    {
 | 
			
		||||
                        m_scene.RegionInfo.EstateSettings.RemoveEstateManager(user);
 | 
			
		||||
                        m_scene.RegionInfo.EstateSettings.AddBan(item);
 | 
			
		||||
                        m_scene.RegionInfo.EstateSettings.Save();
 | 
			
		||||
 | 
			
		||||
                        remote_client.SendEstateManagersList(invoice, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
                        ScenePresence s = m_scene.GetScenePresence(user);
 | 
			
		||||
                        if (s != null)
 | 
			
		||||
                        {
 | 
			
		||||
                            if (!s.IsChildAgent)
 | 
			
		||||
                            {
 | 
			
		||||
                                s.ControllingClient.SendTeleportLocationStart();
 | 
			
		||||
                                m_scene.TeleportClientHome(user, s.ControllingClient);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
 | 
			
		||||
                        remote_client.SendAlertMessage("User is already on the region ban list");
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
                    //m_scene.RegionInfo.regionBanlist.Add(Manager(user);
 | 
			
		||||
                    remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if ((estateAccessType & 128) != 0) // Ban remove
 | 
			
		||||
            {
 | 
			
		||||
                if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || m_scene.Permissions.BypassPermissions())
 | 
			
		||||
                {
 | 
			
		||||
                    EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans;
 | 
			
		||||
 | 
			
		||||
                default:
 | 
			
		||||
                    bool alreadyInList = false;
 | 
			
		||||
                    EstateBan listitem = null;
 | 
			
		||||
 | 
			
		||||
                    m_log.ErrorFormat("EstateOwnerMessage: Unknown EstateAccessType requested in estateAccessDelta: {0}", estateAccessType.ToString());
 | 
			
		||||
                    break;
 | 
			
		||||
                    for (int i = 0; i < banlistcheck.Length; i++)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (user == banlistcheck[i].BannedUserID)
 | 
			
		||||
                        {
 | 
			
		||||
                            alreadyInList = true;
 | 
			
		||||
                            listitem = banlistcheck[i];
 | 
			
		||||
                            break;
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
                    if (alreadyInList && listitem != null)
 | 
			
		||||
                    {
 | 
			
		||||
                        m_scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID);
 | 
			
		||||
                        m_scene.RegionInfo.EstateSettings.Save();
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        remote_client.SendAlertMessage("User is not on the region ban list");
 | 
			
		||||
                    }
 | 
			
		||||
                    //m_scene.RegionInfo.regionBanlist.Add(Manager(user);
 | 
			
		||||
                    remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if ((estateAccessType & 256) != 0) // Manager add
 | 
			
		||||
            {
 | 
			
		||||
                if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
 | 
			
		||||
                {
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.AddEstateManager(user);
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.Save();
 | 
			
		||||
                    remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if ((estateAccessType & 512) != 0) // Manager remove
 | 
			
		||||
            {
 | 
			
		||||
                if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
 | 
			
		||||
                {
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.RemoveEstateManager(user);
 | 
			
		||||
                    m_scene.RegionInfo.EstateSettings.Save();
 | 
			
		||||
 | 
			
		||||
                    remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -879,7 +879,7 @@ namespace OpenSim.Region.Examples.SimpleModule
 | 
			
		|||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID)
 | 
			
		||||
        public void SendEstateList(UUID invoice, int code, UUID[] Data, uint estateID)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1133,7 +1133,15 @@ namespace OpenSim.Region.Examples.SimpleModule
 | 
			
		|||
        }
 | 
			
		||||
        
 | 
			
		||||
        public void SendGroupTransactionsSummaryDetails(IClientAPI sender,UUID groupID, UUID transactionID, UUID sessionID,int amt)
 | 
			
		||||
        {
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendGroupVoteHistory(UUID groupID, UUID transactionID, GroupVoteHistory[] Votes)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendGroupActiveProposals(UUID groupID, UUID transactionID, GroupActiveProposals[] Proposals)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,13 +32,29 @@ namespace OpenSim.Region.Framework.Interfaces
 | 
			
		|||
{
 | 
			
		||||
    public delegate void ScriptCommand(UUID script, string id, string module, string command, string k);
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Interface for communication between OpenSim modules and in-world scripts
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    ///
 | 
			
		||||
    /// See OpenSim.Region.ScriptEngine.Shared.Api.MOD_Api.modSendCommand() for information on receiving messages
 | 
			
		||||
    /// from scripts in OpenSim modules.
 | 
			
		||||
    public interface IScriptModuleComms
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Modules can subscribe to this event to receive command invocations from in-world scripts
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        event ScriptCommand OnScriptCommand;
 | 
			
		||||
 | 
			
		||||
        void DispatchReply(UUID script, int code, string text, string k);
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Send a link_message event to an in-world script
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="scriptId"></param>
 | 
			
		||||
        /// <param name="code"></param>
 | 
			
		||||
        /// <param name="text"></param>
 | 
			
		||||
        /// <param name="key"></param>
 | 
			
		||||
        void DispatchReply(UUID scriptId, int code, string text, string key);
 | 
			
		||||
 | 
			
		||||
        // For use ONLY by the script API
 | 
			
		||||
        void RaiseEvent(UUID script, string id, string module, string command, string k);
 | 
			
		||||
        void RaiseEvent(UUID script, string id, string module, string command, string key);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -183,12 +183,24 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
 | 
			
		||||
        public event ScriptNotAtTargetEvent OnScriptNotAtTargetEvent;
 | 
			
		||||
 | 
			
		||||
        public delegate void ScriptAtRotTargetEvent(uint localID, uint handle, Quaternion targetrot, Quaternion atrot);
 | 
			
		||||
 | 
			
		||||
        public event ScriptAtRotTargetEvent OnScriptAtRotTargetEvent;
 | 
			
		||||
 | 
			
		||||
        public delegate void ScriptNotAtRotTargetEvent(uint localID);
 | 
			
		||||
 | 
			
		||||
        public event ScriptNotAtRotTargetEvent OnScriptNotAtRotTargetEvent;
 | 
			
		||||
 | 
			
		||||
        public delegate void ScriptColliding(uint localID, ColliderArgs colliders);
 | 
			
		||||
 | 
			
		||||
        public event ScriptColliding OnScriptColliderStart;
 | 
			
		||||
        public event ScriptColliding OnScriptColliding;
 | 
			
		||||
        public event ScriptColliding OnScriptCollidingEnd;
 | 
			
		||||
 | 
			
		||||
        public event ScriptColliding OnScriptLandColliderStart;
 | 
			
		||||
        public event ScriptColliding OnScriptLandColliding;
 | 
			
		||||
        public event ScriptColliding OnScriptLandColliderEnd;
 | 
			
		||||
 | 
			
		||||
        public delegate void OnMakeChildAgentDelegate(ScenePresence presence);
 | 
			
		||||
        public event OnMakeChildAgentDelegate OnMakeChildAgent;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -380,6 +392,8 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
        private ScriptChangedEvent handlerScriptChangedEvent = null; //OnScriptChangedEvent;
 | 
			
		||||
        private ScriptAtTargetEvent handlerScriptAtTargetEvent = null;
 | 
			
		||||
        private ScriptNotAtTargetEvent handlerScriptNotAtTargetEvent = null;
 | 
			
		||||
        private ScriptAtRotTargetEvent handlerScriptAtRotTargetEvent = null;
 | 
			
		||||
        private ScriptNotAtRotTargetEvent handlerScriptNotAtRotTargetEvent = null;
 | 
			
		||||
        private ClientMovement handlerClientMovement = null; //OnClientMovement;
 | 
			
		||||
        private OnPermissionErrorDelegate handlerPermissionError = null; //OnPermissionError;
 | 
			
		||||
        private OnPluginConsoleDelegate handlerPluginConsole = null; //OnPluginConsole;
 | 
			
		||||
| 
						 | 
				
			
			@ -439,6 +453,9 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
        private ScriptColliding handlerCollidingStart = null;
 | 
			
		||||
        private ScriptColliding handlerColliding = null;
 | 
			
		||||
        private ScriptColliding handlerCollidingEnd = null;
 | 
			
		||||
        private ScriptColliding handlerLandCollidingStart = null;
 | 
			
		||||
        private ScriptColliding handlerLandColliding = null;
 | 
			
		||||
        private ScriptColliding handlerLandCollidingEnd = null;
 | 
			
		||||
        private GetScriptRunning handlerGetScriptRunning = null;
 | 
			
		||||
 | 
			
		||||
        private SunLindenHour handlerCurrentTimeAsLindenSunHour = null;
 | 
			
		||||
| 
						 | 
				
			
			@ -844,6 +861,24 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void TriggerAtRotTargetEvent(uint localID, uint handle, Quaternion targetrot, Quaternion currentrot)
 | 
			
		||||
        {
 | 
			
		||||
            handlerScriptAtRotTargetEvent = OnScriptAtRotTargetEvent;
 | 
			
		||||
            if (handlerScriptAtRotTargetEvent != null)
 | 
			
		||||
            {
 | 
			
		||||
                handlerScriptAtRotTargetEvent(localID, handle, targetrot, currentrot);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void TriggerNotAtRotTargetEvent(uint localID)
 | 
			
		||||
        {
 | 
			
		||||
            handlerScriptNotAtRotTargetEvent = OnScriptNotAtRotTargetEvent;
 | 
			
		||||
            if (handlerScriptNotAtRotTargetEvent != null)
 | 
			
		||||
            {
 | 
			
		||||
                handlerScriptNotAtRotTargetEvent(localID);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void TriggerRequestChangeWaterHeight(float height)
 | 
			
		||||
        {
 | 
			
		||||
            handlerRequestChangeWaterHeight = OnRequestChangeWaterHeight;
 | 
			
		||||
| 
						 | 
				
			
			@ -1034,6 +1069,27 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                handlerCollidingEnd(localId, colliders);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void TriggerScriptLandCollidingStart(uint localId, ColliderArgs colliders)
 | 
			
		||||
        {
 | 
			
		||||
            handlerLandCollidingStart = OnScriptLandColliderStart;
 | 
			
		||||
            if (handlerLandCollidingStart != null)
 | 
			
		||||
                handlerLandCollidingStart(localId, colliders);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void TriggerScriptLandColliding(uint localId, ColliderArgs colliders)
 | 
			
		||||
        {
 | 
			
		||||
            handlerLandColliding = OnScriptLandColliding;
 | 
			
		||||
            if (handlerLandColliding != null)
 | 
			
		||||
                handlerLandColliding(localId, colliders);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void TriggerScriptLandCollidingEnd(uint localId, ColliderArgs colliders)
 | 
			
		||||
        {
 | 
			
		||||
            handlerLandCollidingEnd = OnScriptLandColliderEnd;
 | 
			
		||||
            if (handlerLandCollidingEnd != null)
 | 
			
		||||
                handlerLandCollidingEnd(localId, colliders);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void TriggerSetRootAgentScene(UUID agentID, Scene scene)
 | 
			
		||||
        {
 | 
			
		||||
            handlerSetRootAgentScene = OnSetRootAgentScene;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -144,7 +144,7 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
        public CommunicationsManager CommsManager;
 | 
			
		||||
 | 
			
		||||
        protected SceneCommunicationService m_sceneGridService;
 | 
			
		||||
        public bool loginsdisabled = true;
 | 
			
		||||
        public bool LoginsDisabled = true;
 | 
			
		||||
 | 
			
		||||
        public new float TimeDilation
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -1275,15 +1275,19 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                        StatsReporter.addScriptLines(m_sceneGraph.GetScriptLPS());
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if (loginsdisabled && m_frame > 20)
 | 
			
		||||
                    if (LoginsDisabled && m_frame == 20)
 | 
			
		||||
                    {
 | 
			
		||||
                        // In 99.9% of cases it is a bad idea to manually force garbage collection. However,
 | 
			
		||||
                        // this is a rare case where we know we have just went through a long cycle of heap
 | 
			
		||||
                        // allocations, and there is no more work to be done until someone logs in
 | 
			
		||||
                        GC.Collect();
 | 
			
		||||
 | 
			
		||||
                        m_log.DebugFormat("[REGION]: Enabling logins for {0}", RegionInfo.RegionName);
 | 
			
		||||
                        loginsdisabled = false;
 | 
			
		||||
                        IConfig startupConfig = m_config.Configs["Startup"];
 | 
			
		||||
                        if (startupConfig == null || !startupConfig.GetBoolean("StartDisabled", false))
 | 
			
		||||
                        {
 | 
			
		||||
                            m_log.DebugFormat("[REGION]: Enabling logins for {0}", RegionInfo.RegionName);
 | 
			
		||||
                            LoginsDisabled = false;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                catch (NotImplementedException)
 | 
			
		||||
| 
						 | 
				
			
			@ -3348,7 +3352,7 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
            // TeleportFlags.ViaLandmark | TeleportFlags.ViaLocation | TeleportFlags.ViaLandmark | TeleportFlags.Default - Regular Teleport
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            if (loginsdisabled)
 | 
			
		||||
            if (LoginsDisabled)
 | 
			
		||||
            {
 | 
			
		||||
                reason = "Logins Disabled";
 | 
			
		||||
                return false;
 | 
			
		||||
| 
						 | 
				
			
			@ -3525,8 +3529,35 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            IGroupsModule groupsModule =
 | 
			
		||||
                    RequestModuleInterface<IGroupsModule>();
 | 
			
		||||
 | 
			
		||||
            List<UUID> agentGroups = new List<UUID>();
 | 
			
		||||
 | 
			
		||||
            if (groupsModule != null)
 | 
			
		||||
            {
 | 
			
		||||
                GroupMembershipData[] GroupMembership =
 | 
			
		||||
                        groupsModule.GetMembershipData(agent.AgentID);
 | 
			
		||||
 | 
			
		||||
                for (int i = 0; i < GroupMembership.Length; i++)
 | 
			
		||||
                    agentGroups.Add(GroupMembership[i].GroupID);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            bool groupAccess = false;
 | 
			
		||||
            UUID[] estateGroups = m_regInfo.EstateSettings.EstateGroups;
 | 
			
		||||
 | 
			
		||||
            foreach (UUID group in estateGroups)
 | 
			
		||||
            {
 | 
			
		||||
                if (agentGroups.Contains(group))
 | 
			
		||||
                {
 | 
			
		||||
                    groupAccess = true;
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (!m_regInfo.EstateSettings.PublicAccess &&
 | 
			
		||||
                !m_regInfo.EstateSettings.HasAccess(agent.AgentID))
 | 
			
		||||
                !m_regInfo.EstateSettings.HasAccess(agent.AgentID) &&
 | 
			
		||||
                !groupAccess)
 | 
			
		||||
            {
 | 
			
		||||
                m_log.WarnFormat("[CONNECTION BEGIN]: Denied access to: {0} ({1} {2}) at {3} because the user does not have access to the estate",
 | 
			
		||||
                                 agent.AgentID, agent.firstname, agent.lastname, RegionInfo.RegionName);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -65,13 +65,6 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
 | 
			
		||||
        protected List<UUID> m_agentsInTransit;
 | 
			
		||||
 | 
			
		||||
        public bool RegionLoginsEnabled
 | 
			
		||||
        {
 | 
			
		||||
            get { return m_regionLoginsEnabled; }
 | 
			
		||||
            set { m_regionLoginsEnabled = value; }
 | 
			
		||||
        }
 | 
			
		||||
        private bool m_regionLoginsEnabled = false;
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// An agent is crossing into this region
 | 
			
		||||
        /// </summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -57,6 +57,7 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
        land_collision_end = 4096,
 | 
			
		||||
        land_collision_start = 8192,
 | 
			
		||||
        at_target = 16384,
 | 
			
		||||
        at_rot_target = 16777216,
 | 
			
		||||
        listen = 32768,
 | 
			
		||||
        money = 65536,
 | 
			
		||||
        moving_end = 131072,
 | 
			
		||||
| 
						 | 
				
			
			@ -81,6 +82,13 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
        public uint handle;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    struct scriptRotTarget
 | 
			
		||||
    {
 | 
			
		||||
        public Quaternion targetRot;
 | 
			
		||||
        public float tolerance;
 | 
			
		||||
        public uint handle;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public delegate void PrimCountTaintedDelegate();
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
| 
						 | 
				
			
			@ -166,10 +174,14 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
        // private Dictionary<UUID, scriptEvents> m_scriptEvents = new Dictionary<UUID, scriptEvents>();
 | 
			
		||||
 | 
			
		||||
        private Dictionary<uint, scriptPosTarget> m_targets = new Dictionary<uint, scriptPosTarget>();
 | 
			
		||||
        private Dictionary<uint, scriptRotTarget> m_rotTargets = new Dictionary<uint, scriptRotTarget>();
 | 
			
		||||
 | 
			
		||||
        private bool m_scriptListens_atTarget = false;
 | 
			
		||||
        private bool m_scriptListens_notAtTarget = false;
 | 
			
		||||
 | 
			
		||||
        private bool m_scriptListens_atRotTarget = false;
 | 
			
		||||
        private bool m_scriptListens_notAtRotTarget = false;
 | 
			
		||||
 | 
			
		||||
        internal Dictionary<UUID, string> m_savedScriptState = null;
 | 
			
		||||
 | 
			
		||||
        #region Properties
 | 
			
		||||
| 
						 | 
				
			
			@ -1262,6 +1274,15 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                    m_targets.Clear();
 | 
			
		||||
                m_scene.RemoveGroupTarget(this);
 | 
			
		||||
            }
 | 
			
		||||
            m_scriptListens_atRotTarget = ((aggregateScriptEvents & scriptEvents.at_rot_target) != 0);
 | 
			
		||||
            m_scriptListens_notAtRotTarget = ((aggregateScriptEvents & scriptEvents.not_at_rot_target) != 0);
 | 
			
		||||
 | 
			
		||||
            if (!m_scriptListens_atRotTarget && !m_scriptListens_notAtRotTarget)
 | 
			
		||||
            {
 | 
			
		||||
                lock (m_rotTargets)
 | 
			
		||||
                    m_rotTargets.Clear();
 | 
			
		||||
                m_scene.RemoveGroupTarget(this);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            ScheduleGroupForFullUpdate();
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -3158,6 +3179,30 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        public int registerRotTargetWaypoint(Quaternion target, float tolerance)
 | 
			
		||||
        {
 | 
			
		||||
            scriptRotTarget waypoint = new scriptRotTarget();
 | 
			
		||||
            waypoint.targetRot = target;
 | 
			
		||||
            waypoint.tolerance = tolerance;
 | 
			
		||||
            uint handle = m_scene.AllocateLocalId();
 | 
			
		||||
            waypoint.handle = handle;
 | 
			
		||||
            lock (m_rotTargets)
 | 
			
		||||
            {
 | 
			
		||||
                m_rotTargets.Add(handle, waypoint);
 | 
			
		||||
            }
 | 
			
		||||
            m_scene.AddGroupTarget(this);
 | 
			
		||||
            return (int)handle;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void unregisterRotTargetWaypoint(int handle)
 | 
			
		||||
        {
 | 
			
		||||
            lock (m_targets)
 | 
			
		||||
            {
 | 
			
		||||
                m_rotTargets.Remove((uint)handle);
 | 
			
		||||
                if (m_targets.Count == 0)
 | 
			
		||||
                    m_scene.RemoveGroupTarget(this);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public int registerTargetWaypoint(Vector3 target, float tolerance)
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -3264,6 +3309,85 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (m_scriptListens_atRotTarget || m_scriptListens_notAtRotTarget)
 | 
			
		||||
            {
 | 
			
		||||
                if (m_rotTargets.Count > 0)
 | 
			
		||||
                {
 | 
			
		||||
                    bool at_Rottarget = false;
 | 
			
		||||
                    Dictionary<uint, scriptRotTarget> atRotTargets = new Dictionary<uint, scriptRotTarget>();
 | 
			
		||||
                    lock (m_rotTargets)
 | 
			
		||||
                    {
 | 
			
		||||
                        foreach (uint idx in m_rotTargets.Keys)
 | 
			
		||||
                        {
 | 
			
		||||
                            scriptRotTarget target = m_rotTargets[idx];
 | 
			
		||||
                            double angle = Math.Acos(target.targetRot.X * m_rootPart.RotationOffset.X + target.targetRot.Y * m_rootPart.RotationOffset.Y + target.targetRot.Z * m_rootPart.RotationOffset.Z + target.targetRot.W * m_rootPart.RotationOffset.W) * 2;
 | 
			
		||||
                            if (angle < 0) angle = -angle;
 | 
			
		||||
                            if (angle > Math.PI) angle = (Math.PI * 2 - angle);
 | 
			
		||||
                            if (angle <= target.tolerance)
 | 
			
		||||
                            {
 | 
			
		||||
                                // trigger at_rot_target
 | 
			
		||||
                                if (m_scriptListens_atRotTarget)
 | 
			
		||||
                                {
 | 
			
		||||
                                    at_Rottarget = true;
 | 
			
		||||
                                    scriptRotTarget att = new scriptRotTarget();
 | 
			
		||||
                                    att.targetRot = target.targetRot;
 | 
			
		||||
                                    att.tolerance = target.tolerance;
 | 
			
		||||
                                    att.handle = target.handle;
 | 
			
		||||
                                    atRotTargets.Add(idx, att);
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if (atRotTargets.Count > 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        uint[] localids = new uint[0];
 | 
			
		||||
                        lock (m_parts)
 | 
			
		||||
                        {
 | 
			
		||||
                            localids = new uint[m_parts.Count];
 | 
			
		||||
                            int cntr = 0;
 | 
			
		||||
                            foreach (SceneObjectPart part in m_parts.Values)
 | 
			
		||||
                            {
 | 
			
		||||
                                localids[cntr] = part.LocalId;
 | 
			
		||||
                                cntr++;
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        for (int ctr = 0; ctr < localids.Length; ctr++)
 | 
			
		||||
                        {
 | 
			
		||||
                            foreach (uint target in atRotTargets.Keys)
 | 
			
		||||
                            {
 | 
			
		||||
                                scriptRotTarget att = atRotTargets[target];
 | 
			
		||||
                                m_scene.EventManager.TriggerAtRotTargetEvent(
 | 
			
		||||
                                    localids[ctr], att.handle, att.targetRot, m_rootPart.RotationOffset);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        return;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if (m_scriptListens_notAtRotTarget && !at_Rottarget)
 | 
			
		||||
                    {
 | 
			
		||||
                        //trigger not_at_target
 | 
			
		||||
                        uint[] localids = new uint[0];
 | 
			
		||||
                        lock (m_parts)
 | 
			
		||||
                        {
 | 
			
		||||
                            localids = new uint[m_parts.Count];
 | 
			
		||||
                            int cntr = 0;
 | 
			
		||||
                            foreach (SceneObjectPart part in m_parts.Values)
 | 
			
		||||
                            {
 | 
			
		||||
                                localids[cntr] = part.LocalId;
 | 
			
		||||
                                cntr++;
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        for (int ctr = 0; ctr < localids.Length; ctr++)
 | 
			
		||||
                        {
 | 
			
		||||
                            m_scene.EventManager.TriggerNotAtRotTargetEvent(localids[ctr]);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        public float GetMass()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -139,15 +139,15 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
        public uint TimeStampTerse;
 | 
			
		||||
 | 
			
		||||
        [XmlIgnore]
 | 
			
		||||
        public UUID FromItemID;
 | 
			
		||||
 | 
			
		||||
        [XmlIgnore]
 | 
			
		||||
        public int STATUS_ROTATE_X;
 | 
			
		||||
 | 
			
		||||
        [XmlIgnore]
 | 
			
		||||
        public int STATUS_ROTATE_Y;
 | 
			
		||||
 | 
			
		||||
        [XmlIgnore]
 | 
			
		||||
        public UUID FromItemID;
 | 
			
		||||
 | 
			
		||||
        [XmlIgnore]
 | 
			
		||||
        public int STATUS_ROTATE_X;
 | 
			
		||||
 | 
			
		||||
        [XmlIgnore]
 | 
			
		||||
        public int STATUS_ROTATE_Y;
 | 
			
		||||
 | 
			
		||||
        [XmlIgnore]
 | 
			
		||||
        public int STATUS_ROTATE_Z;
 | 
			
		||||
        
 | 
			
		||||
        [XmlIgnore]
 | 
			
		||||
| 
						 | 
				
			
			@ -1680,19 +1680,19 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                return false;
 | 
			
		||||
 | 
			
		||||
            return m_parentGroup.RootPart.DIE_AT_EDGE;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public int GetAxisRotation(int axis)
 | 
			
		||||
        {
 | 
			
		||||
            //Cannot use ScriptBaseClass constants as no referance to it currently.
 | 
			
		||||
            if (axis == 2)//STATUS_ROTATE_X
 | 
			
		||||
                return STATUS_ROTATE_X;
 | 
			
		||||
            if (axis == 4)//STATUS_ROTATE_Y
 | 
			
		||||
                return STATUS_ROTATE_Y;
 | 
			
		||||
            if (axis == 8)//STATUS_ROTATE_Z
 | 
			
		||||
                return STATUS_ROTATE_Z;
 | 
			
		||||
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public int GetAxisRotation(int axis)
 | 
			
		||||
        {
 | 
			
		||||
            //Cannot use ScriptBaseClass constants as no referance to it currently.
 | 
			
		||||
            if (axis == 2)//STATUS_ROTATE_X
 | 
			
		||||
                return STATUS_ROTATE_X;
 | 
			
		||||
            if (axis == 4)//STATUS_ROTATE_Y
 | 
			
		||||
                return STATUS_ROTATE_Y;
 | 
			
		||||
            if (axis == 8)//STATUS_ROTATE_Z
 | 
			
		||||
                return STATUS_ROTATE_Z;
 | 
			
		||||
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public double GetDistanceTo(Vector3 a, Vector3 b)
 | 
			
		||||
| 
						 | 
				
			
			@ -1853,16 +1853,12 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
            // and build up list of colliders this time
 | 
			
		||||
            foreach (uint localid in collissionswith.Keys)
 | 
			
		||||
            {
 | 
			
		||||
                if (localid != 0)
 | 
			
		||||
                thisHitColliders.Add(localid);
 | 
			
		||||
                if (!m_lastColliders.Contains(localid))
 | 
			
		||||
                {
 | 
			
		||||
                    thisHitColliders.Add(localid);
 | 
			
		||||
                    if (!m_lastColliders.Contains(localid))
 | 
			
		||||
                    {
 | 
			
		||||
                        startedColliders.Add(localid);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    //m_log.Debug("[OBJECT]: Collided with:" + localid.ToString() + " at depth of: " + collissionswith[localid].ToString());
 | 
			
		||||
                    startedColliders.Add(localid);
 | 
			
		||||
                }
 | 
			
		||||
                //m_log.Debug("[OBJECT]: Collided with:" + localid.ToString() + " at depth of: " + collissionswith[localid].ToString());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // calculate things that ended colliding
 | 
			
		||||
| 
						 | 
				
			
			@ -1904,6 +1900,8 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                    List<DetectedObject> colliding = new List<DetectedObject>();
 | 
			
		||||
                    foreach (uint localId in startedColliders)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (localId == 0)
 | 
			
		||||
                            return;
 | 
			
		||||
                        // always running this check because if the user deletes the object it would return a null reference.
 | 
			
		||||
                        if (m_parentGroup == null)
 | 
			
		||||
                            return;
 | 
			
		||||
| 
						 | 
				
			
			@ -1936,24 +1934,24 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                                else
 | 
			
		||||
                                {
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                            else
 | 
			
		||||
                            {
 | 
			
		||||
                            }
 | 
			
		||||
                            else
 | 
			
		||||
                            {
 | 
			
		||||
                                bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
 | 
			
		||||
                                //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work
 | 
			
		||||
                                if (found)
 | 
			
		||||
                                {
 | 
			
		||||
                                    DetectedObject detobj = new DetectedObject();
 | 
			
		||||
                                    detobj.keyUUID = obj.UUID;
 | 
			
		||||
                                    detobj.nameStr = obj.Name;
 | 
			
		||||
                                    detobj.ownerUUID = obj._ownerID;
 | 
			
		||||
                                    detobj.posVector = obj.AbsolutePosition;
 | 
			
		||||
                                    detobj.rotQuat = obj.GetWorldRotation();
 | 
			
		||||
                                    detobj.velVector = obj.Velocity;
 | 
			
		||||
                                    detobj.colliderType = 0;
 | 
			
		||||
                                    detobj.groupUUID = obj._groupID;
 | 
			
		||||
                                    colliding.Add(detobj);
 | 
			
		||||
                                }
 | 
			
		||||
                                //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work
 | 
			
		||||
                                if (!found)
 | 
			
		||||
                                {
 | 
			
		||||
                                    DetectedObject detobj = new DetectedObject();
 | 
			
		||||
                                    detobj.keyUUID = obj.UUID;
 | 
			
		||||
                                    detobj.nameStr = obj.Name;
 | 
			
		||||
                                    detobj.ownerUUID = obj._ownerID;
 | 
			
		||||
                                    detobj.posVector = obj.AbsolutePosition;
 | 
			
		||||
                                    detobj.rotQuat = obj.GetWorldRotation();
 | 
			
		||||
                                    detobj.velVector = obj.Velocity;
 | 
			
		||||
                                    detobj.colliderType = 0;
 | 
			
		||||
                                    detobj.groupUUID = obj._groupID;
 | 
			
		||||
                                    colliding.Add(detobj);
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        else
 | 
			
		||||
| 
						 | 
				
			
			@ -1965,7 +1963,7 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                                ScenePresence av = avlist[i];
 | 
			
		||||
 | 
			
		||||
                                if (av.LocalId == localId)
 | 
			
		||||
                                {
 | 
			
		||||
                                {
 | 
			
		||||
                                    if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.Name))
 | 
			
		||||
                                    {
 | 
			
		||||
                                        bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
 | 
			
		||||
| 
						 | 
				
			
			@ -1987,24 +1985,24 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                                        else
 | 
			
		||||
                                        {
 | 
			
		||||
                                        }
 | 
			
		||||
                                    }
 | 
			
		||||
                                    else
 | 
			
		||||
                                    {
 | 
			
		||||
                                    }
 | 
			
		||||
                                    else
 | 
			
		||||
                                    {
 | 
			
		||||
                                        bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
 | 
			
		||||
                                        //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work
 | 
			
		||||
                                        if (!found)
 | 
			
		||||
                                        {
 | 
			
		||||
                                            DetectedObject detobj = new DetectedObject();
 | 
			
		||||
                                            detobj.keyUUID = av.UUID;
 | 
			
		||||
                                            detobj.nameStr = av.ControllingClient.Name;
 | 
			
		||||
                                            detobj.ownerUUID = av.UUID;
 | 
			
		||||
                                            detobj.posVector = av.AbsolutePosition;
 | 
			
		||||
                                            detobj.rotQuat = av.Rotation;
 | 
			
		||||
                                            detobj.velVector = av.Velocity;
 | 
			
		||||
                                            detobj.colliderType = 0;
 | 
			
		||||
                                            detobj.groupUUID = av.ControllingClient.ActiveGroupId;
 | 
			
		||||
                                            colliding.Add(detobj);
 | 
			
		||||
                                        }
 | 
			
		||||
                                        //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work
 | 
			
		||||
                                        if (!found)
 | 
			
		||||
                                        {
 | 
			
		||||
                                            DetectedObject detobj = new DetectedObject();
 | 
			
		||||
                                            detobj.keyUUID = av.UUID;
 | 
			
		||||
                                            detobj.nameStr = av.ControllingClient.Name;
 | 
			
		||||
                                            detobj.ownerUUID = av.UUID;
 | 
			
		||||
                                            detobj.posVector = av.AbsolutePosition;
 | 
			
		||||
                                            detobj.rotQuat = av.Rotation;
 | 
			
		||||
                                            detobj.velVector = av.Velocity;
 | 
			
		||||
                                            detobj.colliderType = 0;
 | 
			
		||||
                                            detobj.groupUUID = av.ControllingClient.ActiveGroupId;
 | 
			
		||||
                                            colliding.Add(detobj);
 | 
			
		||||
                                        }
 | 
			
		||||
                                    }
 | 
			
		||||
 | 
			
		||||
                                }
 | 
			
		||||
| 
						 | 
				
			
			@ -2039,7 +2037,7 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                    {
 | 
			
		||||
                        // always running this check because if the user deletes the object it would return a null reference.
 | 
			
		||||
                        if (localId == 0)
 | 
			
		||||
                            continue;
 | 
			
		||||
                            return;
 | 
			
		||||
 | 
			
		||||
                        if (m_parentGroup == null)
 | 
			
		||||
                            return;
 | 
			
		||||
| 
						 | 
				
			
			@ -2077,7 +2075,7 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                            {
 | 
			
		||||
                                bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
 | 
			
		||||
                                //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work
 | 
			
		||||
                                if (found)
 | 
			
		||||
                                if (!found)
 | 
			
		||||
                                {
 | 
			
		||||
                                    DetectedObject detobj = new DetectedObject();
 | 
			
		||||
                                    detobj.keyUUID = obj.UUID;
 | 
			
		||||
| 
						 | 
				
			
			@ -2101,7 +2099,7 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                                ScenePresence av = avlist[i];
 | 
			
		||||
 | 
			
		||||
                                if (av.LocalId == localId)
 | 
			
		||||
                                {
 | 
			
		||||
                                {
 | 
			
		||||
                                    if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.Name))
 | 
			
		||||
                                    {
 | 
			
		||||
                                        bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
 | 
			
		||||
| 
						 | 
				
			
			@ -2171,7 +2169,7 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                    foreach (uint localId in endedColliders)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (localId == 0)
 | 
			
		||||
                            continue;
 | 
			
		||||
                            return;
 | 
			
		||||
 | 
			
		||||
                        // always running this check because if the user deletes the object it would return a null reference.
 | 
			
		||||
                        if (m_parentGroup == null)
 | 
			
		||||
| 
						 | 
				
			
			@ -2208,7 +2206,7 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                            {
 | 
			
		||||
                                bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
 | 
			
		||||
                                //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work
 | 
			
		||||
                                if (found)
 | 
			
		||||
                                if (!found)
 | 
			
		||||
                                {
 | 
			
		||||
                                    DetectedObject detobj = new DetectedObject();
 | 
			
		||||
                                    detobj.keyUUID = obj.UUID;
 | 
			
		||||
| 
						 | 
				
			
			@ -2232,7 +2230,7 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                                ScenePresence av = avlist[i];
 | 
			
		||||
 | 
			
		||||
                                if (av.LocalId == localId)
 | 
			
		||||
                                {
 | 
			
		||||
                                {
 | 
			
		||||
                                    if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.Name))
 | 
			
		||||
                                    {
 | 
			
		||||
                                        bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
 | 
			
		||||
| 
						 | 
				
			
			@ -2292,7 +2290,121 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                        m_parentGroup.Scene.EventManager.TriggerScriptCollidingEnd(LocalId, EndCollidingMessage);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            }
 | 
			
		||||
            if ((m_parentGroup.RootPart.ScriptEvents & scriptEvents.land_collision_start) != 0)
 | 
			
		||||
            {
 | 
			
		||||
                if (startedColliders.Count > 0)
 | 
			
		||||
                {
 | 
			
		||||
                    ColliderArgs LandStartCollidingMessage = new ColliderArgs();
 | 
			
		||||
                    List<DetectedObject> colliding = new List<DetectedObject>();
 | 
			
		||||
                    foreach (uint localId in startedColliders)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (localId == 0)
 | 
			
		||||
                        {
 | 
			
		||||
                            //Hope that all is left is ground!
 | 
			
		||||
                            DetectedObject detobj = new DetectedObject();
 | 
			
		||||
                            detobj.keyUUID = UUID.Zero;
 | 
			
		||||
                            detobj.nameStr = "";
 | 
			
		||||
                            detobj.ownerUUID = UUID.Zero;
 | 
			
		||||
                            detobj.posVector = m_parentGroup.RootPart.AbsolutePosition;
 | 
			
		||||
                            detobj.rotQuat = Quaternion.Identity;
 | 
			
		||||
                            detobj.velVector = Vector3.Zero;
 | 
			
		||||
                            detobj.colliderType = 0;
 | 
			
		||||
                            detobj.groupUUID = UUID.Zero;
 | 
			
		||||
                            colliding.Add(detobj);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if (colliding.Count > 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        LandStartCollidingMessage.Colliders = colliding;
 | 
			
		||||
                        // always running this check because if the user deletes the object it would return a null reference.
 | 
			
		||||
                        if (m_parentGroup == null)
 | 
			
		||||
                            return;
 | 
			
		||||
 | 
			
		||||
                        if (m_parentGroup.Scene == null)
 | 
			
		||||
                            return;
 | 
			
		||||
 | 
			
		||||
                        m_parentGroup.Scene.EventManager.TriggerScriptLandCollidingStart(LocalId, LandStartCollidingMessage);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if ((m_parentGroup.RootPart.ScriptEvents & scriptEvents.land_collision) != 0)
 | 
			
		||||
            {
 | 
			
		||||
                if (m_lastColliders.Count > 0)
 | 
			
		||||
                {
 | 
			
		||||
                    ColliderArgs LandCollidingMessage = new ColliderArgs();
 | 
			
		||||
                    List<DetectedObject> colliding = new List<DetectedObject>();
 | 
			
		||||
                    foreach (uint localId in startedColliders)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (localId == 0)
 | 
			
		||||
                        {
 | 
			
		||||
                            //Hope that all is left is ground!
 | 
			
		||||
                            DetectedObject detobj = new DetectedObject();
 | 
			
		||||
                            detobj.keyUUID = UUID.Zero;
 | 
			
		||||
                            detobj.nameStr = "";
 | 
			
		||||
                            detobj.ownerUUID = UUID.Zero;
 | 
			
		||||
                            detobj.posVector = m_parentGroup.RootPart.AbsolutePosition;
 | 
			
		||||
                            detobj.rotQuat = Quaternion.Identity;
 | 
			
		||||
                            detobj.velVector = Vector3.Zero;
 | 
			
		||||
                            detobj.colliderType = 0;
 | 
			
		||||
                            detobj.groupUUID = UUID.Zero;
 | 
			
		||||
                            colliding.Add(detobj);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if (colliding.Count > 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        LandCollidingMessage.Colliders = colliding;
 | 
			
		||||
                        // always running this check because if the user deletes the object it would return a null reference.
 | 
			
		||||
                        if (m_parentGroup == null)
 | 
			
		||||
                            return;
 | 
			
		||||
 | 
			
		||||
                        if (m_parentGroup.Scene == null)
 | 
			
		||||
                            return;
 | 
			
		||||
 | 
			
		||||
                        m_parentGroup.Scene.EventManager.TriggerScriptLandColliding(LocalId, LandCollidingMessage);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if ((m_parentGroup.RootPart.ScriptEvents & scriptEvents.land_collision_end) != 0)
 | 
			
		||||
            {
 | 
			
		||||
                if (endedColliders.Count > 0)
 | 
			
		||||
                {
 | 
			
		||||
                    ColliderArgs LandEndCollidingMessage = new ColliderArgs();
 | 
			
		||||
                    List<DetectedObject> colliding = new List<DetectedObject>();
 | 
			
		||||
                    foreach (uint localId in startedColliders)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (localId == 0)
 | 
			
		||||
                        {
 | 
			
		||||
                            //Hope that all is left is ground!
 | 
			
		||||
                            DetectedObject detobj = new DetectedObject();
 | 
			
		||||
                            detobj.keyUUID = UUID.Zero;
 | 
			
		||||
                            detobj.nameStr = "";
 | 
			
		||||
                            detobj.ownerUUID = UUID.Zero;
 | 
			
		||||
                            detobj.posVector = m_parentGroup.RootPart.AbsolutePosition;
 | 
			
		||||
                            detobj.rotQuat = Quaternion.Identity;
 | 
			
		||||
                            detobj.velVector = Vector3.Zero;
 | 
			
		||||
                            detobj.colliderType = 0;
 | 
			
		||||
                            detobj.groupUUID = UUID.Zero;
 | 
			
		||||
                            colliding.Add(detobj);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if (colliding.Count > 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        LandEndCollidingMessage.Colliders = colliding;
 | 
			
		||||
                        // always running this check because if the user deletes the object it would return a null reference.
 | 
			
		||||
                        if (m_parentGroup == null)
 | 
			
		||||
                            return;
 | 
			
		||||
 | 
			
		||||
                        if (m_parentGroup.Scene == null)
 | 
			
		||||
                            return;
 | 
			
		||||
 | 
			
		||||
                        m_parentGroup.Scene.EventManager.TriggerScriptLandCollidingEnd(LocalId, LandEndCollidingMessage);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void PhysicsOutOfBounds(Vector3 pos)
 | 
			
		||||
| 
						 | 
				
			
			@ -2758,13 +2870,13 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
            if (m_parentGroup != null)
 | 
			
		||||
            {
 | 
			
		||||
                m_parentGroup.SetAxisRotation(axis, rotate);
 | 
			
		||||
            }
 | 
			
		||||
            //Cannot use ScriptBaseClass constants as no referance to it currently.
 | 
			
		||||
            if (axis == 2)//STATUS_ROTATE_X
 | 
			
		||||
                STATUS_ROTATE_X = rotate;
 | 
			
		||||
            if (axis == 4)//STATUS_ROTATE_Y
 | 
			
		||||
                STATUS_ROTATE_Y = rotate;
 | 
			
		||||
            if (axis == 8)//STATUS_ROTATE_Z
 | 
			
		||||
            }
 | 
			
		||||
            //Cannot use ScriptBaseClass constants as no referance to it currently.
 | 
			
		||||
            if (axis == 2)//STATUS_ROTATE_X
 | 
			
		||||
                STATUS_ROTATE_X = rotate;
 | 
			
		||||
            if (axis == 4)//STATUS_ROTATE_Y
 | 
			
		||||
                STATUS_ROTATE_Y = rotate;
 | 
			
		||||
            if (axis == 8)//STATUS_ROTATE_Z
 | 
			
		||||
                STATUS_ROTATE_Z = rotate;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -3698,6 +3810,9 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                            ((AggregateScriptEvents & scriptEvents.collision) != 0) ||
 | 
			
		||||
                            ((AggregateScriptEvents & scriptEvents.collision_end) != 0) ||
 | 
			
		||||
                            ((AggregateScriptEvents & scriptEvents.collision_start) != 0) ||
 | 
			
		||||
                            ((AggregateScriptEvents & scriptEvents.land_collision_start) != 0) ||
 | 
			
		||||
                            ((AggregateScriptEvents & scriptEvents.land_collision) != 0) ||
 | 
			
		||||
                            ((AggregateScriptEvents & scriptEvents.land_collision_end) != 0) ||
 | 
			
		||||
                            (CollisionSound != UUID.Zero)
 | 
			
		||||
                            )
 | 
			
		||||
                        {
 | 
			
		||||
| 
						 | 
				
			
			@ -3902,6 +4017,9 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                ((AggregateScriptEvents & scriptEvents.collision) != 0) ||
 | 
			
		||||
                ((AggregateScriptEvents & scriptEvents.collision_end) != 0) ||
 | 
			
		||||
                ((AggregateScriptEvents & scriptEvents.collision_start) != 0) ||
 | 
			
		||||
                ((AggregateScriptEvents & scriptEvents.land_collision_start) != 0) ||
 | 
			
		||||
                ((AggregateScriptEvents & scriptEvents.land_collision) != 0) ||
 | 
			
		||||
                ((AggregateScriptEvents & scriptEvents.land_collision_end) != 0) ||
 | 
			
		||||
                (CollisionSound != UUID.Zero)
 | 
			
		||||
                )
 | 
			
		||||
            {
 | 
			
		||||
| 
						 | 
				
			
			@ -3962,6 +4080,23 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public int registerRotTargetWaypoint(Quaternion target, float tolerance)
 | 
			
		||||
        {
 | 
			
		||||
            if (m_parentGroup != null)
 | 
			
		||||
            {
 | 
			
		||||
                return m_parentGroup.registerRotTargetWaypoint(target, tolerance);
 | 
			
		||||
            }
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void unregisterRotTargetWaypoint(int handle)
 | 
			
		||||
        {
 | 
			
		||||
            if (m_parentGroup != null)
 | 
			
		||||
            {
 | 
			
		||||
                m_parentGroup.unregisterRotTargetWaypoint(handle);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SetCameraAtOffset(Vector3 v)
 | 
			
		||||
        {
 | 
			
		||||
            m_cameraAtOffset = v;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1220,7 +1220,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
 | 
			
		|||
            
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID)
 | 
			
		||||
        public void SendEstateList(UUID invoice, int code, UUID[] Data, uint estateID)
 | 
			
		||||
        {
 | 
			
		||||
            
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -1657,7 +1657,15 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
 | 
			
		|||
        }
 | 
			
		||||
        
 | 
			
		||||
        public void SendGroupTransactionsSummaryDetails(IClientAPI sender,UUID groupID, UUID transactionID, UUID sessionID,int amt)
 | 
			
		||||
        {
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendGroupVoteHistory(UUID groupID, UUID transactionID, GroupVoteHistory[] Votes)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendGroupActiveProposals(UUID groupID, UUID transactionID, GroupActiveProposals[] Proposals)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -220,8 +220,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 | 
			
		|||
            
 | 
			
		||||
            // Fail if fundamental information is still missing
 | 
			
		||||
 | 
			
		||||
            if (cs.Server == null || cs.IrcChannel == null || cs.BaseNickname == null || cs.User == null)
 | 
			
		||||
                throw new Exception(String.Format("[IRC-Channel-{0}] Invalid configuration for region {1}", cs.idn, rs.Region));
 | 
			
		||||
            if (cs.Server == null)
 | 
			
		||||
                throw new Exception(String.Format("[IRC-Channel-{0}] Invalid configuration for region {1}: server missing", cs.idn, rs.Region));
 | 
			
		||||
            else if (cs.IrcChannel == null)
 | 
			
		||||
                throw new Exception(String.Format("[IRC-Channel-{0}] Invalid configuration for region {1}: channel missing", cs.idn, rs.Region));
 | 
			
		||||
            else if (cs.BaseNickname == null)
 | 
			
		||||
                throw new Exception(String.Format("[IRC-Channel-{0}] Invalid configuration for region {1}: nick missing", cs.idn, rs.Region));
 | 
			
		||||
            else if (cs.User == null)
 | 
			
		||||
                throw new Exception(String.Format("[IRC-Channel-{0}] Invalid configuration for region {1}: user missing", cs.idn, rs.Region));
 | 
			
		||||
 | 
			
		||||
            m_log.InfoFormat("[IRC-Channel-{0}] Configuration for Region {1} is valid", cs.idn, rs.Region);
 | 
			
		||||
            m_log.InfoFormat("[IRC-Channel-{0}]    Server = {1}", cs.idn, cs.Server);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -897,7 +897,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
 | 
			
		|||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID)
 | 
			
		||||
        public void SendEstateList(UUID invoice, int code, UUID[] Data, uint estateID)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1138,7 +1138,15 @@ namespace OpenSim.Region.OptionalModules.World.NPC
 | 
			
		|||
        }
 | 
			
		||||
        
 | 
			
		||||
        public void SendGroupTransactionsSummaryDetails(IClientAPI sender,UUID groupID, UUID transactionID, UUID sessionID,int amt)
 | 
			
		||||
        {
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendGroupVoteHistory(UUID groupID, UUID transactionID, GroupVoteHistory[] Votes)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendGroupActiveProposals(UUID groupID, UUID transactionID, GroupActiveProposals[] Proposals)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2109,14 +2109,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
        public LSL_Integer llRotTarget(LSL_Rotation rot, double error)
 | 
			
		||||
        {
 | 
			
		||||
            m_host.AddScriptLPS(1);
 | 
			
		||||
            NotImplemented("llRotTarget");
 | 
			
		||||
            return 0;
 | 
			
		||||
            return m_host.registerRotTargetWaypoint(new Quaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.s), (float)error);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void llRotTargetRemove(int number)
 | 
			
		||||
        {
 | 
			
		||||
            m_host.AddScriptLPS(1);
 | 
			
		||||
            NotImplemented("llRotTargetRemove");
 | 
			
		||||
            m_host.unregisterRotTargetWaypoint(number);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void llMoveToTarget(LSL_Vector target, double tau)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1983,6 +1983,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
 | 
			
		||||
            return (int)pws;
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        public void osSetSpeed(string UUID, float SpeedModifier)
 | 
			
		||||
        {
 | 
			
		||||
            CheckThreatLevel(ThreatLevel.Moderate, "osSetSpeed");
 | 
			
		||||
| 
						 | 
				
			
			@ -1990,6 +1991,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
            ScenePresence avatar = World.GetScenePresence(new UUID(UUID));
 | 
			
		||||
            avatar.SpeedModifier = SpeedModifier;
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        public void osKickAvatar(string FirstName,string SurName,string alert)
 | 
			
		||||
        {
 | 
			
		||||
            CheckThreatLevel(ThreatLevel.Severe, "osKickAvatar");
 | 
			
		||||
| 
						 | 
				
			
			@ -2010,6 +2012,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        public void osCauseDamage(string avatar, double damage)
 | 
			
		||||
        {
 | 
			
		||||
            CheckThreatLevel(ThreatLevel.High, "osCauseDamage");
 | 
			
		||||
| 
						 | 
				
			
			@ -2037,6 +2040,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        public void osCauseHealing(string avatar, double healing)
 | 
			
		||||
        {
 | 
			
		||||
            CheckThreatLevel(ThreatLevel.High, "osCauseHealing");
 | 
			
		||||
| 
						 | 
				
			
			@ -2061,4 +2065,4 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -62,6 +62,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
 | 
			
		|||
            land_collision_end = 4096,
 | 
			
		||||
            land_collision_start = 8192,
 | 
			
		||||
            at_target = 16384,
 | 
			
		||||
            at_rot_target = 16777216,
 | 
			
		||||
            listen = 32768,
 | 
			
		||||
            money = 65536,
 | 
			
		||||
            moving_end = 131072,
 | 
			
		||||
| 
						 | 
				
			
			@ -203,7 +204,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
 | 
			
		|||
            }
 | 
			
		||||
 | 
			
		||||
            m_eventFlagsMap.Add("attach", scriptEvents.attach);
 | 
			
		||||
            // m_eventFlagsMap.Add("at_rot_target",(long)scriptEvents.at_rot_target);
 | 
			
		||||
            m_eventFlagsMap.Add("at_rot_target", scriptEvents.at_rot_target);
 | 
			
		||||
            m_eventFlagsMap.Add("at_target", scriptEvents.at_target);
 | 
			
		||||
            // m_eventFlagsMap.Add("changed",(long)scriptEvents.changed);
 | 
			
		||||
            m_eventFlagsMap.Add("collision", scriptEvents.collision);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,10 +59,15 @@ namespace OpenSim.Region.ScriptEngine.XEngine
 | 
			
		|||
            myScriptEngine.World.EventManager.OnScriptChangedEvent += changed;
 | 
			
		||||
            myScriptEngine.World.EventManager.OnScriptAtTargetEvent += at_target;
 | 
			
		||||
            myScriptEngine.World.EventManager.OnScriptNotAtTargetEvent += not_at_target;
 | 
			
		||||
            myScriptEngine.World.EventManager.OnScriptAtRotTargetEvent += at_rot_target;
 | 
			
		||||
            myScriptEngine.World.EventManager.OnScriptNotAtRotTargetEvent += not_at_rot_target;
 | 
			
		||||
            myScriptEngine.World.EventManager.OnScriptControlEvent += control;
 | 
			
		||||
            myScriptEngine.World.EventManager.OnScriptColliderStart += collision_start;
 | 
			
		||||
            myScriptEngine.World.EventManager.OnScriptColliding += collision;
 | 
			
		||||
            myScriptEngine.World.EventManager.OnScriptCollidingEnd += collision_end;
 | 
			
		||||
            myScriptEngine.World.EventManager.OnScriptLandColliderStart += land_collision_start;
 | 
			
		||||
            myScriptEngine.World.EventManager.OnScriptLandColliding += land_collision;
 | 
			
		||||
            myScriptEngine.World.EventManager.OnScriptLandColliderEnd += land_collision_end;
 | 
			
		||||
            IMoneyModule money=myScriptEngine.World.RequestModuleInterface<IMoneyModule>();
 | 
			
		||||
            if (money != null)
 | 
			
		||||
            {
 | 
			
		||||
| 
						 | 
				
			
			@ -285,29 +290,63 @@ namespace OpenSim.Region.ScriptEngine.XEngine
 | 
			
		|||
                        det.ToArray()));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void land_collision_start(uint localID, UUID itemID)
 | 
			
		||||
        {
 | 
			
		||||
            myScriptEngine.PostObjectEvent(localID, new EventParams(
 | 
			
		||||
                    "land_collision_start",
 | 
			
		||||
                    new object[0],
 | 
			
		||||
                    new DetectParams[0]));
 | 
			
		||||
        public void land_collision_start(uint localID, ColliderArgs col)
 | 
			
		||||
         {
 | 
			
		||||
            List<DetectParams> det = new List<DetectParams>();
 | 
			
		||||
 | 
			
		||||
            foreach (DetectedObject detobj in col.Colliders)
 | 
			
		||||
            {
 | 
			
		||||
                DetectParams d = new DetectParams();
 | 
			
		||||
                d.Position = new LSL_Types.Vector3(detobj.posVector.X,
 | 
			
		||||
                    detobj.posVector.Y,
 | 
			
		||||
                    detobj.posVector.Z);
 | 
			
		||||
                d.Populate(myScriptEngine.World);
 | 
			
		||||
                det.Add(d);
 | 
			
		||||
                myScriptEngine.PostObjectEvent(localID, new EventParams(
 | 
			
		||||
                        "land_collision_start",
 | 
			
		||||
                        new Object[] { new LSL_Types.Vector3(d.Position) },
 | 
			
		||||
                        det.ToArray()));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void land_collision(uint localID, UUID itemID)
 | 
			
		||||
        public void land_collision(uint localID, ColliderArgs col)
 | 
			
		||||
        {
 | 
			
		||||
            myScriptEngine.PostObjectEvent(localID, new EventParams(
 | 
			
		||||
                    "land_collision",
 | 
			
		||||
                    new object[0],
 | 
			
		||||
                    new DetectParams[0]));
 | 
			
		||||
            List<DetectParams> det = new List<DetectParams>();
 | 
			
		||||
 | 
			
		||||
            foreach (DetectedObject detobj in col.Colliders)
 | 
			
		||||
            {
 | 
			
		||||
                DetectParams d = new DetectParams();
 | 
			
		||||
                d.Position = new LSL_Types.Vector3(detobj.posVector.X,
 | 
			
		||||
                    detobj.posVector.Y,
 | 
			
		||||
                    detobj.posVector.Z);
 | 
			
		||||
                d.Populate(myScriptEngine.World);
 | 
			
		||||
                det.Add(d);
 | 
			
		||||
                myScriptEngine.PostObjectEvent(localID, new EventParams(
 | 
			
		||||
                        "land_collision",
 | 
			
		||||
                        new Object[] { new LSL_Types.Vector3(d.Position) },
 | 
			
		||||
                        det.ToArray()));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void land_collision_end(uint localID, UUID itemID)
 | 
			
		||||
        public void land_collision_end(uint localID, ColliderArgs col)
 | 
			
		||||
        {
 | 
			
		||||
            myScriptEngine.PostObjectEvent(localID, new EventParams(
 | 
			
		||||
                    "land_collision_end",
 | 
			
		||||
                    new object[0],
 | 
			
		||||
                    new DetectParams[0]));
 | 
			
		||||
        }
 | 
			
		||||
            List<DetectParams> det = new List<DetectParams>();
 | 
			
		||||
 | 
			
		||||
            foreach (DetectedObject detobj in col.Colliders)
 | 
			
		||||
            {
 | 
			
		||||
                DetectParams d = new DetectParams();
 | 
			
		||||
                d.Position = new LSL_Types.Vector3(detobj.posVector.X,
 | 
			
		||||
                    detobj.posVector.Y,
 | 
			
		||||
                    detobj.posVector.Z);
 | 
			
		||||
                d.Populate(myScriptEngine.World);
 | 
			
		||||
                det.Add(d);
 | 
			
		||||
                myScriptEngine.PostObjectEvent(localID, new EventParams(
 | 
			
		||||
                        "land_collision_end",
 | 
			
		||||
                        new Object[] { new LSL_Types.Vector3(d.Position) },
 | 
			
		||||
                        det.ToArray()));
 | 
			
		||||
            }
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
        // timer: not handled here
 | 
			
		||||
        // listen: not handled here
 | 
			
		||||
| 
						 | 
				
			
			@ -353,14 +392,18 @@ namespace OpenSim.Region.ScriptEngine.XEngine
 | 
			
		|||
                    new DetectParams[0]));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void at_rot_target(uint localID, UUID itemID)
 | 
			
		||||
        public void at_rot_target(uint localID, uint handle, Quaternion targetrot,
 | 
			
		||||
                Quaternion atrot)
 | 
			
		||||
        {
 | 
			
		||||
            myScriptEngine.PostObjectEvent(localID, new EventParams(
 | 
			
		||||
                    "at_rot_target",new object[0],
 | 
			
		||||
                    "at_rot_target", new object[] {
 | 
			
		||||
                    new LSL_Types.LSLInteger(handle),
 | 
			
		||||
                    new LSL_Types.Quaternion(targetrot.X,targetrot.Y,targetrot.Z,targetrot.W),
 | 
			
		||||
                    new LSL_Types.Quaternion(atrot.X,atrot.Y,atrot.Z,atrot.W) },
 | 
			
		||||
                    new DetectParams[0]));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void not_at_rot_target(uint localID, UUID itemID)
 | 
			
		||||
        public void not_at_rot_target(uint localID)
 | 
			
		||||
        {
 | 
			
		||||
            myScriptEngine.PostObjectEvent(localID, new EventParams(
 | 
			
		||||
                    "not_at_rot_target",new object[0],
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,6 +49,7 @@ namespace OpenSim.Server.Base
 | 
			
		|||
        protected uint m_Port = 0;
 | 
			
		||||
        protected Dictionary<uint, BaseHttpServer> m_Servers =
 | 
			
		||||
            new Dictionary<uint, BaseHttpServer>();
 | 
			
		||||
        protected uint m_consolePort = 0;
 | 
			
		||||
 | 
			
		||||
        public IHttpServer HttpServer
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -98,6 +99,7 @@ namespace OpenSim.Server.Base
 | 
			
		|||
                Thread.CurrentThread.Abort();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            m_consolePort = (uint)networkConfig.GetInt("ConsolePort", 0);
 | 
			
		||||
            m_Port = port;
 | 
			
		||||
 | 
			
		||||
            m_HttpServer = new BaseHttpServer(port);
 | 
			
		||||
| 
						 | 
				
			
			@ -111,7 +113,10 @@ namespace OpenSim.Server.Base
 | 
			
		|||
 | 
			
		||||
            if (MainConsole.Instance is RemoteConsole)
 | 
			
		||||
            {
 | 
			
		||||
                ((RemoteConsole)MainConsole.Instance).SetServer(m_HttpServer);
 | 
			
		||||
                if (m_consolePort == 0)
 | 
			
		||||
                    ((RemoteConsole)MainConsole.Instance).SetServer(m_HttpServer);
 | 
			
		||||
                else
 | 
			
		||||
                    ((RemoteConsole)MainConsole.Instance).SetServer(GetHttpServer(m_consolePort));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,7 @@ using OpenSim.Services.Interfaces;
 | 
			
		|||
using OpenSim.Framework.Servers.HttpServer;
 | 
			
		||||
using OpenSim.Server.Handlers.Base;
 | 
			
		||||
using log4net;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
 | 
			
		||||
namespace OpenSim.Server.Handlers.Asset
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -193,6 +194,14 @@ namespace OpenSim.Server.Handlers.Asset
 | 
			
		|||
        {
 | 
			
		||||
            Dictionary<string,object> result = new Dictionary<string,object>();
 | 
			
		||||
 | 
			
		||||
            if (!request.ContainsKey("PRINCIPAL"))
 | 
			
		||||
                return FailureResult();
 | 
			
		||||
 | 
			
		||||
            if(m_InventoryService.CreateUserInventory(new UUID(request["PRINCIPAL"].ToString())))
 | 
			
		||||
                result["RESULT"] = "True";
 | 
			
		||||
            else
 | 
			
		||||
                result["RESULT"] = "False";
 | 
			
		||||
 | 
			
		||||
            string xmlString = ServerUtils.BuildXmlResponse(result);
 | 
			
		||||
            m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
 | 
			
		||||
            UTF8Encoding encoding = new UTF8Encoding();
 | 
			
		||||
| 
						 | 
				
			
			@ -203,6 +212,15 @@ namespace OpenSim.Server.Handlers.Asset
 | 
			
		|||
        {
 | 
			
		||||
            Dictionary<string,object> result = new Dictionary<string,object>();
 | 
			
		||||
 | 
			
		||||
            if (!request.ContainsKey("PRINCIPAL"))
 | 
			
		||||
                return FailureResult();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            List<InventoryFolderBase> folders = m_InventoryService.GetInventorySkeleton(new UUID(request["PRINCIPAL"].ToString()));
 | 
			
		||||
 | 
			
		||||
            foreach (InventoryFolderBase f in folders)
 | 
			
		||||
                result[f.ID.ToString()] = EncodeFolder(f);
 | 
			
		||||
 | 
			
		||||
            string xmlString = ServerUtils.BuildXmlResponse(result);
 | 
			
		||||
            m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
 | 
			
		||||
            UTF8Encoding encoding = new UTF8Encoding();
 | 
			
		||||
| 
						 | 
				
			
			@ -378,5 +396,61 @@ namespace OpenSim.Server.Handlers.Asset
 | 
			
		|||
            UTF8Encoding encoding = new UTF8Encoding();
 | 
			
		||||
            return encoding.GetBytes(xmlString);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private Dictionary<string, object> EncodeFolder(InventoryFolderBase f)
 | 
			
		||||
        {
 | 
			
		||||
            Dictionary<string, object> ret = new Dictionary<string, object>();
 | 
			
		||||
 | 
			
		||||
            ret["ParentID"] = f.ParentID.ToString();
 | 
			
		||||
            ret["Type"] = f.Type.ToString();
 | 
			
		||||
            ret["Version"] = f.Version.ToString();
 | 
			
		||||
            ret["Name"] = f.Name;
 | 
			
		||||
            ret["Owner"] = f.Owner.ToString();
 | 
			
		||||
            ret["ID"] = f.ID.ToString();
 | 
			
		||||
 | 
			
		||||
            return ret;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private InventoryFolderBase BuildFolder(Dictionary<string,object> data)
 | 
			
		||||
        {
 | 
			
		||||
            InventoryFolderBase folder = new InventoryFolderBase();
 | 
			
		||||
 | 
			
		||||
            folder.ParentID =  new UUID(data["ParentID"].ToString());
 | 
			
		||||
            folder.Type = short.Parse(data["Type"].ToString());
 | 
			
		||||
            folder.Version = ushort.Parse(data["Version"].ToString());
 | 
			
		||||
            folder.Name = data["Name"].ToString();
 | 
			
		||||
            folder.Owner =  new UUID(data["Owner"].ToString());
 | 
			
		||||
            folder.ID = new UUID(data["ID"].ToString());
 | 
			
		||||
 | 
			
		||||
            return folder;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private InventoryItemBase BuildItem(Dictionary<string,object> data)
 | 
			
		||||
        {
 | 
			
		||||
            InventoryItemBase item = new InventoryItemBase();
 | 
			
		||||
 | 
			
		||||
            item.AssetID = new UUID(data["AssetID"].ToString());
 | 
			
		||||
            item.AssetType = int.Parse(data["AssetType"].ToString());
 | 
			
		||||
            item.Name = data["Name"].ToString();
 | 
			
		||||
            item.Owner = new UUID(data["Owner"].ToString());
 | 
			
		||||
            item.ID = new UUID(data["ID"].ToString());
 | 
			
		||||
            item.InvType = int.Parse(data["InvType"].ToString());
 | 
			
		||||
            item.Folder = new UUID(data["Folder"].ToString());
 | 
			
		||||
            item.CreatorId = data["CreatorId"].ToString();
 | 
			
		||||
            item.Description = data["Description"].ToString();
 | 
			
		||||
            item.NextPermissions = uint.Parse(data["NextPermissions"].ToString());
 | 
			
		||||
            item.CurrentPermissions = uint.Parse(data["CurrentPermissions"].ToString());
 | 
			
		||||
            item.BasePermissions = uint.Parse(data["BasePermissions"].ToString());
 | 
			
		||||
            item.EveryOnePermissions = uint.Parse(data["EveryOnePermissions"].ToString());
 | 
			
		||||
            item.GroupPermissions = uint.Parse(data["GroupPermissions"].ToString());
 | 
			
		||||
            item.GroupID = new UUID(data["GroupID"].ToString());
 | 
			
		||||
            item.GroupOwned = bool.Parse(data["GroupOwned"].ToString());
 | 
			
		||||
            item.SalePrice = int.Parse(data["SalePrice"].ToString());
 | 
			
		||||
            item.SaleType = byte.Parse(data["SaleType"].ToString());
 | 
			
		||||
            item.Flags = uint.Parse(data["Flags"].ToString());
 | 
			
		||||
            item.CreationDate = int.Parse(data["CreationDate"].ToString());
 | 
			
		||||
 | 
			
		||||
            return item;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -490,7 +490,7 @@ namespace OpenSim.Services.Connectors
 | 
			
		|||
            return replyData;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        InventoryFolderBase BuildFolder(Dictionary<string,object> data)
 | 
			
		||||
        private InventoryFolderBase BuildFolder(Dictionary<string,object> data)
 | 
			
		||||
        {
 | 
			
		||||
            InventoryFolderBase folder = new InventoryFolderBase();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -504,7 +504,7 @@ namespace OpenSim.Services.Connectors
 | 
			
		|||
            return folder;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        InventoryItemBase BuildItem(Dictionary<string,object> data)
 | 
			
		||||
        private InventoryItemBase BuildItem(Dictionary<string,object> data)
 | 
			
		||||
        {
 | 
			
		||||
            InventoryItemBase item = new InventoryItemBase();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,10 +46,18 @@ namespace OpenSim.Services.GridService
 | 
			
		|||
                LogManager.GetLogger(
 | 
			
		||||
                MethodBase.GetCurrentMethod().DeclaringType);
 | 
			
		||||
 | 
			
		||||
        protected bool m_AllowDuplicateNames = false;
 | 
			
		||||
 | 
			
		||||
        public GridService(IConfigSource config)
 | 
			
		||||
            : base(config)
 | 
			
		||||
        {
 | 
			
		||||
            m_log.DebugFormat("[GRID SERVICE]: Starting...");
 | 
			
		||||
 | 
			
		||||
            IConfig gridConfig = config.Configs["GridService"];
 | 
			
		||||
            if (gridConfig != null)
 | 
			
		||||
            {
 | 
			
		||||
                m_AllowDuplicateNames = gridConfig.GetBoolean("AllowDuplicateNames", m_AllowDuplicateNames);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #region IGridService
 | 
			
		||||
| 
						 | 
				
			
			@ -82,6 +90,23 @@ namespace OpenSim.Services.GridService
 | 
			
		|||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (!m_AllowDuplicateNames)
 | 
			
		||||
            {
 | 
			
		||||
                List<RegionData> dupe = m_Database.Get(regionInfos.RegionName, scopeID);
 | 
			
		||||
                if (dupe != null && dupe.Count > 0)
 | 
			
		||||
                {
 | 
			
		||||
                    foreach (RegionData d in dupe)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (d.RegionID != regionInfos.RegionID)
 | 
			
		||||
                        {
 | 
			
		||||
                            m_log.WarnFormat("[GRID SERVICE]: Region {0} tried to register duplicate name with ID {1}.", 
 | 
			
		||||
                                regionInfos.RegionName, regionInfos.RegionID);
 | 
			
		||||
                            return false;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Everything is ok, let's register
 | 
			
		||||
            RegionData rdata = RegionInfo2RegionData(regionInfos);
 | 
			
		||||
            rdata.ScopeID = scopeID;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -924,7 +924,7 @@ namespace OpenSim.Tests.Common.Mock
 | 
			
		|||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID)
 | 
			
		||||
        public void SendEstateList(UUID invoice, int code, UUID[] Data, uint estateID)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1194,6 +1194,14 @@ namespace OpenSim.Tests.Common.Mock
 | 
			
		|||
        
 | 
			
		||||
        public void SendGroupTransactionsSummaryDetails(IClientAPI sender,UUID groupID, UUID transactionID, UUID sessionID,int amt)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendGroupVoteHistory(UUID groupID, UUID transactionID, GroupVoteHistory[] Votes)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SendGroupActiveProposals(UUID groupID, UUID transactionID, GroupActiveProposals[] Proposals)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										11
									
								
								README.txt
								
								
								
								
							
							
						
						
									
										11
									
								
								README.txt
								
								
								
								
							| 
						 | 
				
			
			@ -13,10 +13,14 @@ If it breaks, you get to keep *both* pieces.
 | 
			
		|||
== Installation on Windows ==
 | 
			
		||||
 | 
			
		||||
Prereqs:
 | 
			
		||||
 | 
			
		||||
 * runprebuild.bat
 | 
			
		||||
 * Load OpenSim.sln into Visual Studio .NET and build the solution.
 | 
			
		||||
 * chdir bin
 | 
			
		||||
 * edit OpenSim.ini and appropriate files in bin/config-include
 | 
			
		||||
 * OpenSim.exe
 | 
			
		||||
 
 | 
			
		||||
 Helpful resources:
 | 
			
		||||
* http://opensimulator.org/wiki/Build_Instructions
 | 
			
		||||
 | 
			
		||||
See configuring OpenSim
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -31,11 +35,16 @@ From the distribution type:
 | 
			
		|||
 * ./runprebuild.sh
 | 
			
		||||
 * nant
 | 
			
		||||
 * cd bin
 | 
			
		||||
 * edit OpenSim.ini and appropriate files in bin/config-include
 | 
			
		||||
 * mono ./OpenSim.exe
 | 
			
		||||
 | 
			
		||||
See configuring OpenSim
 | 
			
		||||
 | 
			
		||||
== Configuring OpenSim ==
 | 
			
		||||
 Helpful resources:
 | 
			
		||||
* http://opensimulator.org/wiki/Configuration
 | 
			
		||||
* http://opensimulator.org/wiki/Configuring_Regions
 | 
			
		||||
* http://opensimulator.org/wiki/Mysql-config
 | 
			
		||||
 | 
			
		||||
When OpenSim starts for the first time, you will be prompted with a
 | 
			
		||||
series of questions that look something like:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,3 +3,7 @@ In this directory you can place addon modules for OpenSim
 | 
			
		|||
Each module should be in it's own tree and the root of the tree
 | 
			
		||||
should contain a file named "prebuild.xml", which will be included in the
 | 
			
		||||
main prebuild file.
 | 
			
		||||
 | 
			
		||||
The prebuild.xml should only contain <Project> and associated child tags.  
 | 
			
		||||
The <?xml>, <Prebuild>, <Solution> and <Configuration> tags should not be 
 | 
			
		||||
included since the add-on modules prebuild.xml will be inserted directly into the main prebuild.xml
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,7 @@ port = 8003
 | 
			
		|||
; * Leave commented to diable logins to the console
 | 
			
		||||
;ConsoleUser = Test
 | 
			
		||||
;ConsolePass = secret
 | 
			
		||||
;ConsolePort = 0
 | 
			
		||||
 | 
			
		||||
; * As an example, the below configuration precisely mimicks the legacy
 | 
			
		||||
; * asset server. It is read by the asset IN connector (defined above)
 | 
			
		||||
| 
						 | 
				
			
			@ -79,3 +80,4 @@ LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
 | 
			
		|||
StorageProvider = "OpenSim.Data.MySQL.dll:MySqlRegionData"
 | 
			
		||||
ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=grid;"
 | 
			
		||||
Realm = "regions"
 | 
			
		||||
; AllowDuplicateNames = "True"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -126,11 +126,16 @@
 | 
			
		|||
    ;storage_plugin = "OpenSim.Data.Null.dll"
 | 
			
		||||
 | 
			
		||||
    ; --- To use sqlite as region storage:
 | 
			
		||||
    ; NOTE: SQLite and OpenSim are not functioning properly with Mono 2.4.3 or greater.
 | 
			
		||||
    ; If you are using Mono you probably should be using MySQL
 | 
			
		||||
    storage_plugin = "OpenSim.Data.SQLite.dll"
 | 
			
		||||
    storage_connection_string="URI=file:OpenSim.db,version=3";
 | 
			
		||||
 | 
			
		||||
    ; --- To use MySQL storage, supply your own connectionstring (this is only an example):
 | 
			
		||||
    ; --- To use MySQL storage, supply your own connection string (this is only an example):
 | 
			
		||||
    ;     note that the supplied account needs create privilegies if you want it to auto-create needed tables.
 | 
			
		||||
    ;
 | 
			
		||||
    ; -->>> There are multiple connection strings defined in several places in this file. Check it carefully!
 | 
			
		||||
    ;
 | 
			
		||||
    ; storage_plugin="OpenSim.Data.MySQL.dll"
 | 
			
		||||
    ; storage_connection_string="Data Source=localhost;Database=opensim;User ID=opensim;Password=*****;";
 | 
			
		||||
    ; If you want to use a different database/server for estate data, then
 | 
			
		||||
| 
						 | 
				
			
			@ -263,6 +268,9 @@
 | 
			
		|||
    ; Enable JSON simulator data by setting a URI name (case sensitive)
 | 
			
		||||
    ; Stats_URI = "jsonSimStats"
 | 
			
		||||
 | 
			
		||||
    ; Make OpenSim start all regions woth logins disabled. They will need
 | 
			
		||||
    ; to be enabled from the console if this is set
 | 
			
		||||
    ; StartDisabled = false
 | 
			
		||||
 | 
			
		||||
[SMTP]
 | 
			
		||||
    enabled=false
 | 
			
		||||
| 
						 | 
				
			
			@ -318,6 +326,7 @@
 | 
			
		|||
    ConsoleUser = "Test"
 | 
			
		||||
    ConsolePass = "secret"
 | 
			
		||||
    http_listener_port = 9000
 | 
			
		||||
    console_port = 0
 | 
			
		||||
    default_location_x = 1000
 | 
			
		||||
    default_location_y = 1000
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -978,6 +987,11 @@
 | 
			
		|||
    ; Compile debug info (line numbers) into the script assemblies
 | 
			
		||||
    CompileWithDebugInformation = true
 | 
			
		||||
 | 
			
		||||
    ; Allow the user of mod* functions.  This allows a script to pass messages
 | 
			
		||||
    ; to a region module via the modSendCommand() function
 | 
			
		||||
    ; Default is false
 | 
			
		||||
    AllowMODFunctions = false
 | 
			
		||||
 | 
			
		||||
    ; Allow the use of os* functions (some are dangerous)
 | 
			
		||||
    AllowOSFunctions = false
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue