aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/Estate/EstateModule.cs
diff options
context:
space:
mode:
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;
45namespace OpenSim.Region.CoreModules.World.Estate 45namespace 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