diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Estate/EstateModule.cs (renamed from OpenSim/Region/CoreModules/World/Estate/XEstateModule.cs) | 64 |
1 files changed, 40 insertions, 24 deletions
diff --git a/OpenSim/Region/CoreModules/World/Estate/XEstateModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateModule.cs index 4bb3799..f3c8aa8 100644 --- a/OpenSim/Region/CoreModules/World/Estate/XEstateModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateModule.cs | |||
@@ -45,12 +45,14 @@ using Mono.Addins; | |||
45 | namespace OpenSim.Region.CoreModules.World.Estate | 45 | namespace OpenSim.Region.CoreModules.World.Estate |
46 | { | 46 | { |
47 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "XEstate")] | 47 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "XEstate")] |
48 | public class XEstateModule : ISharedRegionModule | 48 | public class EstateModule : ISharedRegionModule |
49 | { | 49 | { |
50 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 50 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
51 | 51 | ||
52 | protected List<Scene> m_Scenes = new List<Scene>(); | 52 | protected List<Scene> m_Scenes = new List<Scene>(); |
53 | protected bool m_InInfoUpdate = false; | 53 | protected bool m_InInfoUpdate = false; |
54 | private string token = "7db8eh2gvgg45jj"; | ||
55 | protected bool m_enabled = false; | ||
54 | 56 | ||
55 | public bool InInfoUpdate | 57 | public bool InInfoUpdate |
56 | { | 58 | { |
@@ -67,19 +69,33 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
67 | 69 | ||
68 | public void Initialise(IConfigSource config) | 70 | public void Initialise(IConfigSource config) |
69 | { | 71 | { |
70 | int port = 0; | 72 | uint port = MainServer.Instance.Port; |
71 | 73 | ||
72 | IConfig estateConfig = config.Configs["Estate"]; | 74 | IConfig estateConfig = config.Configs["Estates"]; |
73 | if (estateConfig != null) | 75 | if (estateConfig != null) |
74 | { | 76 | { |
75 | port = estateConfig.GetInt("Port", 0); | 77 | if (estateConfig.GetString("EstateCommunicationsHandler", Name) == Name) |
78 | m_enabled = true; | ||
79 | else | ||
80 | return; | ||
81 | |||
82 | port = (uint)estateConfig.GetInt("Port", 0); | ||
83 | // this will need to came from somewhere else | ||
84 | token = estateConfig.GetString("Token", token); | ||
85 | } | ||
86 | else | ||
87 | { | ||
88 | m_enabled = true; | ||
76 | } | 89 | } |
77 | 90 | ||
78 | m_EstateConnector = new EstateConnector(this); | 91 | m_EstateConnector = new EstateConnector(this, token, port); |
92 | |||
93 | if(port == 0) | ||
94 | port = MainServer.Instance.Port; | ||
79 | 95 | ||
80 | // Instantiate the request handler | 96 | // Instantiate the request handler |
81 | IHttpServer server = MainServer.GetHttpServer((uint)port); | 97 | IHttpServer server = MainServer.GetHttpServer(port); |
82 | server.AddStreamHandler(new EstateRequestHandler(this)); | 98 | server.AddStreamHandler(new EstateRequestHandler(this, token)); |
83 | } | 99 | } |
84 | 100 | ||
85 | public void PostInitialise() | 101 | public void PostInitialise() |
@@ -92,24 +108,31 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
92 | 108 | ||
93 | public void AddRegion(Scene scene) | 109 | public void AddRegion(Scene scene) |
94 | { | 110 | { |
111 | if (!m_enabled) | ||
112 | return; | ||
113 | |||
95 | lock (m_Scenes) | 114 | lock (m_Scenes) |
96 | m_Scenes.Add(scene); | 115 | m_Scenes.Add(scene); |
97 | |||
98 | scene.EventManager.OnNewClient += OnNewClient; | ||
99 | } | 116 | } |
100 | 117 | ||
101 | public void RegionLoaded(Scene scene) | 118 | public void RegionLoaded(Scene scene) |
102 | { | 119 | { |
120 | if (!m_enabled) | ||
121 | return; | ||
122 | |||
103 | IEstateModule em = scene.RequestModuleInterface<IEstateModule>(); | 123 | IEstateModule em = scene.RequestModuleInterface<IEstateModule>(); |
104 | 124 | ||
105 | em.OnRegionInfoChange += OnRegionInfoChange; | 125 | em.OnRegionInfoChange += OnRegionInfoChange; |
106 | em.OnEstateInfoChange += OnEstateInfoChange; | 126 | em.OnEstateInfoChange += OnEstateInfoChange; |
107 | em.OnEstateMessage += OnEstateMessage; | 127 | em.OnEstateMessage += OnEstateMessage; |
128 | em.OnEstateTeleportOneUserHomeRequest += OnEstateTeleportOneUserHomeRequest; | ||
129 | em.OnEstateTeleportAllUsersHomeRequest += OnEstateTeleportAllUsersHomeRequest; | ||
108 | } | 130 | } |
109 | 131 | ||
110 | public void RemoveRegion(Scene scene) | 132 | public void RemoveRegion(Scene scene) |
111 | { | 133 | { |
112 | scene.EventManager.OnNewClient -= OnNewClient; | 134 | if (!m_enabled) |
135 | return; | ||
113 | 136 | ||
114 | lock (m_Scenes) | 137 | lock (m_Scenes) |
115 | m_Scenes.Remove(scene); | 138 | m_Scenes.Remove(scene); |
@@ -181,13 +204,6 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
181 | m_EstateConnector.SendEstateMessage(estateID, FromID, FromName, Message); | 204 | m_EstateConnector.SendEstateMessage(estateID, FromID, FromName, Message); |
182 | } | 205 | } |
183 | 206 | ||
184 | private void OnNewClient(IClientAPI client) | ||
185 | { | ||
186 | client.OnEstateTeleportOneUserHomeRequest += OnEstateTeleportOneUserHomeRequest; | ||
187 | client.OnEstateTeleportAllUsersHomeRequest += OnEstateTeleportAllUsersHomeRequest; | ||
188 | |||
189 | } | ||
190 | |||
191 | private void OnEstateTeleportOneUserHomeRequest(IClientAPI client, UUID invoice, UUID senderID, UUID prey) | 207 | private void OnEstateTeleportOneUserHomeRequest(IClientAPI client, UUID invoice, UUID senderID, UUID prey) |
192 | { | 208 | { |
193 | if (prey == UUID.Zero) | 209 | if (prey == UUID.Zero) |
@@ -205,16 +221,18 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
205 | 221 | ||
206 | foreach (Scene s in Scenes) | 222 | foreach (Scene s in Scenes) |
207 | { | 223 | { |
208 | if (s == scene) | ||
209 | continue; // Already handles by estate module | ||
210 | if (s.RegionInfo.EstateSettings.EstateID != estateID) | 224 | if (s.RegionInfo.EstateSettings.EstateID != estateID) |
211 | continue; | 225 | continue; |
212 | 226 | ||
213 | ScenePresence p = scene.GetScenePresence(prey); | 227 | ScenePresence p = scene.GetScenePresence(prey); |
214 | if (p != null && !p.IsChildAgent) | 228 | if (p != null && !p.IsChildAgent ) |
215 | { | 229 | { |
216 | p.ControllingClient.SendTeleportStart(16); | 230 | if(!p.IsDeleted && !p.IsInTransit) |
217 | scene.TeleportClientHome(prey, p.ControllingClient); | 231 | { |
232 | p.ControllingClient.SendTeleportStart(16); | ||
233 | scene.TeleportClientHome(prey, p.ControllingClient); | ||
234 | } | ||
235 | return; | ||
218 | } | 236 | } |
219 | } | 237 | } |
220 | 238 | ||
@@ -235,8 +253,6 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
235 | 253 | ||
236 | foreach (Scene s in Scenes) | 254 | foreach (Scene s in Scenes) |
237 | { | 255 | { |
238 | if (s == scene) | ||
239 | continue; // Already handles by estate module | ||
240 | if (s.RegionInfo.EstateSettings.EstateID != estateID) | 256 | if (s.RegionInfo.EstateSettings.EstateID != estateID) |
241 | continue; | 257 | continue; |
242 | 258 | ||