diff options
Diffstat (limited to 'OpenSim')
13 files changed, 213 insertions, 211 deletions
diff --git a/OpenSim/Client/Linden/LLProxyLoginModule.cs b/OpenSim/Client/Linden/LLProxyLoginModule.cs index 9075f15..14ce682 100644 --- a/OpenSim/Client/Linden/LLProxyLoginModule.cs +++ b/OpenSim/Client/Linden/LLProxyLoginModule.cs | |||
@@ -60,21 +60,6 @@ namespace OpenSim.Client.Linden | |||
60 | m_port = port; | 60 | m_port = port; |
61 | } | 61 | } |
62 | 62 | ||
63 | protected bool RegionLoginsEnabled | ||
64 | { | ||
65 | get | ||
66 | { | ||
67 | if (m_firstScene != null) | ||
68 | { | ||
69 | return m_firstScene.SceneGridService.RegionLoginsEnabled; | ||
70 | } | ||
71 | else | ||
72 | { | ||
73 | return false; | ||
74 | } | ||
75 | } | ||
76 | } | ||
77 | |||
78 | protected List<Scene> m_scenes = new List<Scene>(); | 63 | protected List<Scene> m_scenes = new List<Scene>(); |
79 | protected Scene m_firstScene; | 64 | protected Scene m_firstScene; |
80 | 65 | ||
@@ -239,67 +224,53 @@ namespace OpenSim.Client.Linden | |||
239 | agentData.child = false; | 224 | agentData.child = false; |
240 | } | 225 | } |
241 | 226 | ||
242 | if (!RegionLoginsEnabled) | 227 | bool success = false; |
243 | { | 228 | string denyMess = ""; |
244 | m_log.InfoFormat( | ||
245 | "[CLIENT]: Denying access for user {0} {1} because region login is currently disabled", | ||
246 | agentData.firstname, agentData.lastname); | ||
247 | 229 | ||
248 | Hashtable respdata = new Hashtable(); | 230 | Scene scene; |
249 | respdata["success"] = "FALSE"; | 231 | if (TryGetRegion(regionHandle, out scene)) |
250 | respdata["reason"] = "region login currently disabled"; | ||
251 | resp.Value = respdata; | ||
252 | } | ||
253 | else | ||
254 | { | 232 | { |
255 | bool success = false; | 233 | if (scene.RegionInfo.EstateSettings.IsBanned(agentData.AgentID)) |
256 | string denyMess = ""; | 234 | { |
257 | 235 | denyMess = "User is banned from this region"; | |
258 | Scene scene; | 236 | m_log.InfoFormat( |
259 | if (TryGetRegion(regionHandle, out scene)) | 237 | "[CLIENT]: Denying access for user {0} {1} because user is banned", |
238 | agentData.firstname, agentData.lastname); | ||
239 | } | ||
240 | else | ||
260 | { | 241 | { |
261 | if (scene.RegionInfo.EstateSettings.IsBanned(agentData.AgentID)) | 242 | string reason; |
243 | if (scene.NewUserConnection(agentData, (uint)TeleportFlags.ViaLogin, out reason)) | ||
262 | { | 244 | { |
263 | denyMess = "User is banned from this region"; | 245 | success = true; |
264 | m_log.InfoFormat( | ||
265 | "[CLIENT]: Denying access for user {0} {1} because user is banned", | ||
266 | agentData.firstname, agentData.lastname); | ||
267 | } | 246 | } |
268 | else | 247 | else |
269 | { | 248 | { |
270 | string reason; | 249 | denyMess = String.Format("Login refused by region: {0}", reason); |
271 | if (scene.NewUserConnection(agentData, (uint)TeleportFlags.ViaLogin, out reason)) | 250 | m_log.InfoFormat( |
272 | { | 251 | "[CLIENT]: Denying access for user {0} {1} because user connection was refused by the region", |
273 | success = true; | 252 | agentData.firstname, agentData.lastname); |
274 | } | ||
275 | else | ||
276 | { | ||
277 | denyMess = String.Format("Login refused by region: {0}", reason); | ||
278 | m_log.InfoFormat( | ||
279 | "[CLIENT]: Denying access for user {0} {1} because user connection was refused by the region", | ||
280 | agentData.firstname, agentData.lastname); | ||
281 | } | ||
282 | } | 253 | } |
283 | |||
284 | } | ||
285 | else | ||
286 | { | ||
287 | denyMess = "Region not found"; | ||
288 | } | 254 | } |
289 | 255 | ||
290 | if (success) | 256 | } |
291 | { | 257 | else |
292 | Hashtable respdata = new Hashtable(); | 258 | { |
293 | respdata["success"] = "TRUE"; | 259 | denyMess = "Region not found"; |
294 | resp.Value = respdata; | 260 | } |
295 | } | 261 | |
296 | else | 262 | if (success) |
297 | { | 263 | { |
298 | Hashtable respdata = new Hashtable(); | 264 | Hashtable respdata = new Hashtable(); |
299 | respdata["success"] = "FALSE"; | 265 | respdata["success"] = "TRUE"; |
300 | respdata["reason"] = denyMess; | 266 | resp.Value = respdata; |
301 | resp.Value = respdata; | 267 | } |
302 | } | 268 | else |
269 | { | ||
270 | Hashtable respdata = new Hashtable(); | ||
271 | respdata["success"] = "FALSE"; | ||
272 | respdata["reason"] = denyMess; | ||
273 | resp.Value = respdata; | ||
303 | } | 274 | } |
304 | } | 275 | } |
305 | catch (Exception e) | 276 | catch (Exception e) |
diff --git a/OpenSim/Client/Linden/LLStandaloneLoginModule.cs b/OpenSim/Client/Linden/LLStandaloneLoginModule.cs index 8047f74..e51eace 100644 --- a/OpenSim/Client/Linden/LLStandaloneLoginModule.cs +++ b/OpenSim/Client/Linden/LLStandaloneLoginModule.cs | |||
@@ -56,21 +56,6 @@ namespace OpenSim.Client.Linden | |||
56 | protected bool authenticate; | 56 | protected bool authenticate; |
57 | protected string welcomeMessage; | 57 | protected string welcomeMessage; |
58 | 58 | ||
59 | public bool RegionLoginsEnabled | ||
60 | { | ||
61 | get | ||
62 | { | ||
63 | if (m_firstScene != null) | ||
64 | { | ||
65 | return m_firstScene.SceneGridService.RegionLoginsEnabled; | ||
66 | } | ||
67 | else | ||
68 | { | ||
69 | return false; | ||
70 | } | ||
71 | } | ||
72 | } | ||
73 | |||
74 | protected LLStandaloneLoginService m_loginService; | 59 | protected LLStandaloneLoginService m_loginService; |
75 | 60 | ||
76 | #region IRegionModule Members | 61 | #region IRegionModule Members |
diff --git a/OpenSim/Client/Linden/LLStandaloneLoginService.cs b/OpenSim/Client/Linden/LLStandaloneLoginService.cs index 122110d..9ab043a 100644 --- a/OpenSim/Client/Linden/LLStandaloneLoginService.cs +++ b/OpenSim/Client/Linden/LLStandaloneLoginService.cs | |||
@@ -202,20 +202,15 @@ namespace OpenSim.Client.Linden | |||
202 | agent.Appearance = new AvatarAppearance(agent.AgentID); | 202 | agent.Appearance = new AvatarAppearance(agent.AgentID); |
203 | } | 203 | } |
204 | 204 | ||
205 | if (m_regionsConnector.RegionLoginsEnabled) | 205 | string reason; |
206 | bool success = m_regionsConnector.NewUserConnection(regionInfo.RegionHandle, agent, out reason); | ||
207 | if (!success) | ||
206 | { | 208 | { |
207 | string reason; | 209 | response.ErrorReason = "key"; |
208 | bool success = m_regionsConnector.NewUserConnection(regionInfo.RegionHandle, agent, out reason); | 210 | response.ErrorMessage = reason; |
209 | if (!success) | ||
210 | { | ||
211 | response.ErrorReason = "key"; | ||
212 | response.ErrorMessage = reason; | ||
213 | } | ||
214 | return success; | ||
215 | // return m_regionsConnector.NewUserConnection(regionInfo.RegionHandle, agent, out reason); | ||
216 | } | 211 | } |
217 | 212 | return success; | |
218 | return false; | 213 | // return m_regionsConnector.NewUserConnection(regionInfo.RegionHandle, agent, out reason); |
219 | } | 214 | } |
220 | 215 | ||
221 | public override void LogOffUser(UserProfileData theUser, string message) | 216 | public override void LogOffUser(UserProfileData theUser, string message) |
diff --git a/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs b/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs index 60f0ba8..a274ae7 100644 --- a/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs +++ b/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs | |||
@@ -388,12 +388,6 @@ namespace OpenSim.Framework.Communications.Tests | |||
388 | } | 388 | } |
389 | } | 389 | } |
390 | 390 | ||
391 | #region ILoginRegionsConnector Members | ||
392 | public bool RegionLoginsEnabled | ||
393 | { | ||
394 | get { return true; } | ||
395 | } | ||
396 | |||
397 | public void LogOffUserFromGrid(ulong regionHandle, OpenMetaverse.UUID AvatarID, OpenMetaverse.UUID RegionSecret, string message) | 391 | public void LogOffUserFromGrid(ulong regionHandle, OpenMetaverse.UUID AvatarID, OpenMetaverse.UUID RegionSecret, string message) |
398 | { | 392 | { |
399 | } | 393 | } |
@@ -454,8 +448,6 @@ namespace OpenSim.Framework.Communications.Tests | |||
454 | 448 | ||
455 | return null; | 449 | return null; |
456 | } | 450 | } |
457 | |||
458 | #endregion | ||
459 | } | 451 | } |
460 | } | 452 | } |
461 | } \ No newline at end of file | 453 | } |
diff --git a/OpenSim/Framework/ILoginServiceToRegionsConnector.cs b/OpenSim/Framework/ILoginServiceToRegionsConnector.cs index 2aee88e..5a155c1 100644 --- a/OpenSim/Framework/ILoginServiceToRegionsConnector.cs +++ b/OpenSim/Framework/ILoginServiceToRegionsConnector.cs | |||
@@ -32,7 +32,6 @@ namespace OpenSim.Framework | |||
32 | { | 32 | { |
33 | public interface ILoginServiceToRegionsConnector | 33 | public interface ILoginServiceToRegionsConnector |
34 | { | 34 | { |
35 | bool RegionLoginsEnabled { get; } | ||
36 | void LogOffUserFromGrid(ulong regionHandle, UUID AvatarID, UUID RegionSecret, string message); | 35 | void LogOffUserFromGrid(ulong regionHandle, UUID AvatarID, UUID RegionSecret, string message); |
37 | bool NewUserConnection(ulong regionHandle, AgentCircuitData agent, out string reason); | 36 | bool NewUserConnection(ulong regionHandle, AgentCircuitData agent, out string reason); |
38 | RegionInfo RequestClosestRegion(string region); | 37 | RegionInfo RequestClosestRegion(string region); |
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index 82b2fd4..c9f2cfa 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs | |||
@@ -287,18 +287,6 @@ namespace OpenSim | |||
287 | "create region", | 287 | "create region", |
288 | "Create a new region", HandleCreateRegion); | 288 | "Create a new region", HandleCreateRegion); |
289 | 289 | ||
290 | m_console.Commands.AddCommand("region", false, "login enable", | ||
291 | "login enable", | ||
292 | "Enable logins to the simulator", HandleLoginEnable); | ||
293 | |||
294 | m_console.Commands.AddCommand("region", false, "login disable", | ||
295 | "login disable", | ||
296 | "Disable logins to the simulator", HandleLoginDisable); | ||
297 | |||
298 | m_console.Commands.AddCommand("region", false, "login status", | ||
299 | "login status", | ||
300 | "Display status of logins", HandleLoginStatus); | ||
301 | |||
302 | m_console.Commands.AddCommand("region", false, "restart", | 290 | m_console.Commands.AddCommand("region", false, "restart", |
303 | "restart", | 291 | "restart", |
304 | "Restart all sims in this instance", RunCommand); | 292 | "Restart all sims in this instance", RunCommand); |
@@ -559,42 +547,6 @@ namespace OpenSim | |||
559 | } | 547 | } |
560 | 548 | ||
561 | /// <summary> | 549 | /// <summary> |
562 | /// Enable logins | ||
563 | /// </summary> | ||
564 | /// <param name="module"></param> | ||
565 | /// <param name="cmd"></param> | ||
566 | private void HandleLoginEnable(string module, string[] cmd) | ||
567 | { | ||
568 | ProcessLogin(true); | ||
569 | } | ||
570 | |||
571 | |||
572 | /// <summary> | ||
573 | /// Disable logins | ||
574 | /// </summary> | ||
575 | /// <param name="module"></param> | ||
576 | /// <param name="cmd"></param> | ||
577 | private void HandleLoginDisable(string module, string[] cmd) | ||
578 | { | ||
579 | ProcessLogin(false); | ||
580 | } | ||
581 | |||
582 | /// <summary> | ||
583 | /// Log login status to the console | ||
584 | /// </summary> | ||
585 | /// <param name="module"></param> | ||
586 | /// <param name="cmd"></param> | ||
587 | private void HandleLoginStatus(string module, string[] cmd) | ||
588 | { | ||
589 | if (m_sceneManager.CurrentOrFirstScene.SceneGridService.RegionLoginsEnabled == false) | ||
590 | |||
591 | m_log.Info("[ Login ] Login are disabled "); | ||
592 | else | ||
593 | m_log.Info("[ Login ] Login are enabled"); | ||
594 | } | ||
595 | |||
596 | |||
597 | /// <summary> | ||
598 | /// Change and load configuration file data. | 550 | /// Change and load configuration file data. |
599 | /// </summary> | 551 | /// </summary> |
600 | /// <param name="module"></param> | 552 | /// <param name="module"></param> |
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 391856b..cf2ab65 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs | |||
@@ -203,12 +203,6 @@ namespace OpenSim | |||
203 | plugin.PostInitialise(); | 203 | plugin.PostInitialise(); |
204 | } | 204 | } |
205 | 205 | ||
206 | // Only enable logins to the regions once we have completely finished starting up (apart from scripts) | ||
207 | if ((SceneManager.CurrentOrFirstScene != null) && (SceneManager.CurrentOrFirstScene.SceneGridService != null)) | ||
208 | { | ||
209 | SceneManager.CurrentOrFirstScene.SceneGridService.RegionLoginsEnabled = true; | ||
210 | } | ||
211 | |||
212 | AddPluginCommands(); | 206 | AddPluginCommands(); |
213 | } | 207 | } |
214 | 208 | ||
@@ -279,31 +273,6 @@ namespace OpenSim | |||
279 | } | 273 | } |
280 | 274 | ||
281 | /// <summary> | 275 | /// <summary> |
282 | /// Initialises the asset cache. This supports legacy configuration values | ||
283 | /// to ensure consistent operation, but values outside of that namespace | ||
284 | /// are handled by the more generic resolution mechanism provided by | ||
285 | /// the ResolveAssetServer virtual method. If extended resolution fails, | ||
286 | /// then the normal default action is taken. | ||
287 | /// Creation of the AssetCache is handled by ResolveAssetCache. This | ||
288 | /// function accepts a reference to the instantiated AssetServer and | ||
289 | /// returns an IAssetCache implementation, if possible. This is a virtual | ||
290 | /// method. | ||
291 | /// </summary> | ||
292 | public void ProcessLogin(bool LoginEnabled) | ||
293 | { | ||
294 | if (LoginEnabled) | ||
295 | { | ||
296 | m_log.Info("[LOGIN]: Login is now enabled."); | ||
297 | SceneManager.CurrentOrFirstScene.SceneGridService.RegionLoginsEnabled = true; | ||
298 | } | ||
299 | else | ||
300 | { | ||
301 | m_log.Info("[LOGIN]: Login is now disabled."); | ||
302 | SceneManager.CurrentOrFirstScene.SceneGridService.RegionLoginsEnabled = false; | ||
303 | } | ||
304 | } | ||
305 | |||
306 | /// <summary> | ||
307 | /// Execute the region creation process. This includes setting up scene infrastructure. | 276 | /// Execute the region creation process. This includes setting up scene infrastructure. |
308 | /// </summary> | 277 | /// </summary> |
309 | /// <param name="regionInfo"></param> | 278 | /// <param name="regionInfo"></param> |
diff --git a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs index 46ee3c0..0b54746 100644 --- a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs +++ b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs | |||
@@ -55,21 +55,6 @@ namespace OpenSim.Region.CoreModules.Hypergrid | |||
55 | 55 | ||
56 | protected bool m_enabled = false; // Module is only enabled if running in standalone mode | 56 | protected bool m_enabled = false; // Module is only enabled if running in standalone mode |
57 | 57 | ||
58 | public bool RegionLoginsEnabled | ||
59 | { | ||
60 | get | ||
61 | { | ||
62 | if (m_firstScene != null) | ||
63 | { | ||
64 | return m_firstScene.SceneGridService.RegionLoginsEnabled; | ||
65 | } | ||
66 | else | ||
67 | { | ||
68 | return false; | ||
69 | } | ||
70 | } | ||
71 | } | ||
72 | |||
73 | protected HGLoginAuthService m_loginService; | 58 | protected HGLoginAuthService m_loginService; |
74 | 59 | ||
75 | #region IRegionModule Members | 60 | #region IRegionModule Members |
diff --git a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml index beb2307..ebc7f59 100644 --- a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml +++ b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml | |||
@@ -47,6 +47,7 @@ | |||
47 | <RegionModule id="LandServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Land.LandServiceInConnectorModule" /> | 47 | <RegionModule id="LandServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Land.LandServiceInConnectorModule" /> |
48 | <RegionModule id="NeighbourServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Neighbour.NeighbourServiceInConnectorModule" /> \ | 48 | <RegionModule id="NeighbourServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Neighbour.NeighbourServiceInConnectorModule" /> \ |
49 | <RegionModule id="HypergridServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Grid.HypergridServiceInConnectorModule" /> \ | 49 | <RegionModule id="HypergridServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Grid.HypergridServiceInConnectorModule" /> \ |
50 | <RegionModule id="AccessModule" type="OpenSim.Region.CoreModules.World.AccessModule" /> \ | ||
50 | 51 | ||
51 | </Extension> | 52 | </Extension> |
52 | 53 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs index 93cb60c..f9cd90f 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs | |||
@@ -696,8 +696,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
696 | public bool CheckUserAtEntry(UUID userID, UUID sessionID, out bool comingHome) | 696 | public bool CheckUserAtEntry(UUID userID, UUID sessionID, out bool comingHome) |
697 | { | 697 | { |
698 | comingHome = false; | 698 | comingHome = false; |
699 | if (!m_aScene.SceneGridService.RegionLoginsEnabled) | ||
700 | return false; | ||
701 | 699 | ||
702 | CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(userID); | 700 | CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(userID); |
703 | if (uinfo != null) | 701 | if (uinfo != null) |
diff --git a/OpenSim/Region/CoreModules/World/Access/AccessModule.cs b/OpenSim/Region/CoreModules/World/Access/AccessModule.cs new file mode 100644 index 0000000..dfa8df6 --- /dev/null +++ b/OpenSim/Region/CoreModules/World/Access/AccessModule.cs | |||
@@ -0,0 +1,158 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Reflection; | ||
31 | using log4net; | ||
32 | using Nini.Config; | ||
33 | using OpenMetaverse; | ||
34 | using OpenSim.Framework; | ||
35 | using OpenSim.Framework.Console; | ||
36 | using OpenSim.Framework.Communications.Cache; | ||
37 | using OpenSim.Region.Framework.Interfaces; | ||
38 | using OpenSim.Region.Framework.Scenes; | ||
39 | using OpenSim.Services.Interfaces; | ||
40 | |||
41 | namespace OpenSim.Region.CoreModules.World | ||
42 | { | ||
43 | public class AccessModule : ISharedRegionModule | ||
44 | { | ||
45 | private static readonly ILog m_log = | ||
46 | LogManager.GetLogger( | ||
47 | MethodBase.GetCurrentMethod().DeclaringType); | ||
48 | |||
49 | private List<Scene> m_SceneList = new List<Scene>(); | ||
50 | |||
51 | public void Initialise(IConfigSource config) | ||
52 | { | ||
53 | MainConsole.Instance.Commands.AddCommand("access", true, | ||
54 | "login enable", | ||
55 | "login enable", | ||
56 | "Enable simulator logins", | ||
57 | String.Empty, | ||
58 | HandleLoginCommand); | ||
59 | |||
60 | MainConsole.Instance.Commands.AddCommand("access", true, | ||
61 | "login disable", | ||
62 | "login disable", | ||
63 | "Disable simulator logins", | ||
64 | String.Empty, | ||
65 | HandleLoginCommand); | ||
66 | |||
67 | MainConsole.Instance.Commands.AddCommand("access", true, | ||
68 | "login status", | ||
69 | "login status", | ||
70 | "Show login status", | ||
71 | String.Empty, | ||
72 | HandleLoginCommand); | ||
73 | } | ||
74 | |||
75 | public void PostInitialise() | ||
76 | { | ||
77 | } | ||
78 | |||
79 | public void Close() | ||
80 | { | ||
81 | } | ||
82 | |||
83 | public string Name | ||
84 | { | ||
85 | get { return "AccessModule"; } | ||
86 | } | ||
87 | |||
88 | public Type ReplaceableInterface | ||
89 | { | ||
90 | get { return null; } | ||
91 | } | ||
92 | |||
93 | public void AddRegion(Scene scene) | ||
94 | { | ||
95 | if (!m_SceneList.Contains(scene)) | ||
96 | m_SceneList.Add(scene); | ||
97 | } | ||
98 | |||
99 | public void RemoveRegion(Scene scene) | ||
100 | { | ||
101 | m_SceneList.Remove(scene); | ||
102 | } | ||
103 | |||
104 | public void RegionLoaded(Scene scene) | ||
105 | { | ||
106 | } | ||
107 | |||
108 | public void HandleLoginCommand(string module, string[] cmd) | ||
109 | { | ||
110 | if ((Scene)MainConsole.Instance.ConsoleScene == null) | ||
111 | { | ||
112 | foreach (Scene s in m_SceneList) | ||
113 | { | ||
114 | if(!ProcessCommand(s, cmd)) | ||
115 | break; | ||
116 | } | ||
117 | } | ||
118 | else | ||
119 | { | ||
120 | ProcessCommand((Scene)MainConsole.Instance.ConsoleScene, cmd); | ||
121 | } | ||
122 | } | ||
123 | |||
124 | bool ProcessCommand(Scene scene, string[] cmd) | ||
125 | { | ||
126 | if (cmd.Length < 2) | ||
127 | { | ||
128 | MainConsole.Instance.Output("Syntax: login enable|disable|status"); | ||
129 | return false; | ||
130 | } | ||
131 | |||
132 | switch (cmd[1]) | ||
133 | { | ||
134 | case "enable": | ||
135 | if (scene.LoginsDisabled) | ||
136 | MainConsole.Instance.Output(String.Format("Enabling logins for region {0}", scene.RegionInfo.RegionName)); | ||
137 | scene.LoginsDisabled = false; | ||
138 | break; | ||
139 | case "disable": | ||
140 | if (!scene.LoginsDisabled) | ||
141 | MainConsole.Instance.Output(String.Format("Disabling logins for region {0}", scene.RegionInfo.RegionName)); | ||
142 | scene.LoginsDisabled = true; | ||
143 | break; | ||
144 | case "status": | ||
145 | if (scene.LoginsDisabled) | ||
146 | MainConsole.Instance.Output(String.Format("Login in {0} are disabled", scene.RegionInfo.RegionName)); | ||
147 | else | ||
148 | MainConsole.Instance.Output(String.Format("Login in {0} are enabled", scene.RegionInfo.RegionName)); | ||
149 | break; | ||
150 | default: | ||
151 | MainConsole.Instance.Output("Syntax: login enable|disable|status"); | ||
152 | return false; | ||
153 | } | ||
154 | |||
155 | return true; | ||
156 | } | ||
157 | } | ||
158 | } | ||
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 62d4aee..8ac4bc4 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -144,7 +144,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
144 | public CommunicationsManager CommsManager; | 144 | public CommunicationsManager CommsManager; |
145 | 145 | ||
146 | protected SceneCommunicationService m_sceneGridService; | 146 | protected SceneCommunicationService m_sceneGridService; |
147 | public bool loginsdisabled = true; | 147 | public bool LoginsDisabled = true; |
148 | 148 | ||
149 | public new float TimeDilation | 149 | public new float TimeDilation |
150 | { | 150 | { |
@@ -1289,15 +1289,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
1289 | StatsReporter.addScriptLines(m_sceneGraph.GetScriptLPS()); | 1289 | StatsReporter.addScriptLines(m_sceneGraph.GetScriptLPS()); |
1290 | } | 1290 | } |
1291 | 1291 | ||
1292 | if (loginsdisabled && m_frame > 20) | 1292 | if (LoginsDisabled && m_frame == 20) |
1293 | { | 1293 | { |
1294 | // In 99.9% of cases it is a bad idea to manually force garbage collection. However, | 1294 | // In 99.9% of cases it is a bad idea to manually force garbage collection. However, |
1295 | // this is a rare case where we know we have just went through a long cycle of heap | 1295 | // this is a rare case where we know we have just went through a long cycle of heap |
1296 | // allocations, and there is no more work to be done until someone logs in | 1296 | // allocations, and there is no more work to be done until someone logs in |
1297 | GC.Collect(); | 1297 | GC.Collect(); |
1298 | 1298 | ||
1299 | m_log.DebugFormat("[REGION]: Enabling logins for {0}", RegionInfo.RegionName); | 1299 | IConfig startupConfig = m_config.Configs["Startup"]; |
1300 | loginsdisabled = false; | 1300 | if (startupConfig == null || !startupConfig.GetBoolean("StartDisabled", false)) |
1301 | { | ||
1302 | m_log.DebugFormat("[REGION]: Enabling logins for {0}", RegionInfo.RegionName); | ||
1303 | LoginsDisabled = false; | ||
1304 | } | ||
1301 | } | 1305 | } |
1302 | } | 1306 | } |
1303 | catch (NotImplementedException) | 1307 | catch (NotImplementedException) |
@@ -3375,7 +3379,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3375 | // TeleportFlags.ViaLandmark | TeleportFlags.ViaLocation | TeleportFlags.ViaLandmark | TeleportFlags.Default - Regular Teleport | 3379 | // TeleportFlags.ViaLandmark | TeleportFlags.ViaLocation | TeleportFlags.ViaLandmark | TeleportFlags.Default - Regular Teleport |
3376 | 3380 | ||
3377 | 3381 | ||
3378 | if (loginsdisabled) | 3382 | if (LoginsDisabled) |
3379 | { | 3383 | { |
3380 | reason = "Logins Disabled"; | 3384 | reason = "Logins Disabled"; |
3381 | return false; | 3385 | return false; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index 8c808ab..6a3c386 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs | |||
@@ -65,13 +65,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
65 | 65 | ||
66 | protected List<UUID> m_agentsInTransit; | 66 | protected List<UUID> m_agentsInTransit; |
67 | 67 | ||
68 | public bool RegionLoginsEnabled | ||
69 | { | ||
70 | get { return m_regionLoginsEnabled; } | ||
71 | set { m_regionLoginsEnabled = value; } | ||
72 | } | ||
73 | private bool m_regionLoginsEnabled = false; | ||
74 | |||
75 | /// <summary> | 68 | /// <summary> |
76 | /// An agent is crossing into this region | 69 | /// An agent is crossing into this region |
77 | /// </summary> | 70 | /// </summary> |