diff options
Diffstat (limited to 'OpenSim/Services')
-rw-r--r-- | OpenSim/Services/HypergridService/GatekeeperService.cs | 13 | ||||
-rw-r--r-- | OpenSim/Services/HypergridService/UserAgentService.cs | 14 |
2 files changed, 25 insertions, 2 deletions
diff --git a/OpenSim/Services/HypergridService/GatekeeperService.cs b/OpenSim/Services/HypergridService/GatekeeperService.cs index 4e38687..149a0ab 100644 --- a/OpenSim/Services/HypergridService/GatekeeperService.cs +++ b/OpenSim/Services/HypergridService/GatekeeperService.cs | |||
@@ -60,6 +60,7 @@ namespace OpenSim.Services.HypergridService | |||
60 | 60 | ||
61 | protected string m_AllowedClients = string.Empty; | 61 | protected string m_AllowedClients = string.Empty; |
62 | protected string m_DeniedClients = string.Empty; | 62 | protected string m_DeniedClients = string.Empty; |
63 | private static bool m_ForeignAgentsAllowed = true; | ||
63 | 64 | ||
64 | private static UUID m_ScopeID; | 65 | private static UUID m_ScopeID; |
65 | private static bool m_AllowTeleportsToAnyRegion; | 66 | private static bool m_AllowTeleportsToAnyRegion; |
@@ -110,6 +111,7 @@ namespace OpenSim.Services.HypergridService | |||
110 | 111 | ||
111 | m_AllowedClients = serverConfig.GetString("AllowedClients", string.Empty); | 112 | m_AllowedClients = serverConfig.GetString("AllowedClients", string.Empty); |
112 | m_DeniedClients = serverConfig.GetString("DeniedClients", string.Empty); | 113 | m_DeniedClients = serverConfig.GetString("DeniedClients", string.Empty); |
114 | m_ForeignAgentsAllowed = serverConfig.GetBoolean("ForeignAgentsAllowed", true); | ||
113 | 115 | ||
114 | if (m_GridService == null || m_PresenceService == null || m_SimulationService == null) | 116 | if (m_GridService == null || m_PresenceService == null || m_SimulationService == null) |
115 | throw new Exception("Unable to load a required plugin, Gatekeeper Service cannot function."); | 117 | throw new Exception("Unable to load a required plugin, Gatekeeper Service cannot function."); |
@@ -257,6 +259,17 @@ namespace OpenSim.Services.HypergridService | |||
257 | } | 259 | } |
258 | m_log.DebugFormat("[GATEKEEPER SERVICE]: User is ok"); | 260 | m_log.DebugFormat("[GATEKEEPER SERVICE]: User is ok"); |
259 | 261 | ||
262 | // | ||
263 | // Foreign agents allowed | ||
264 | // | ||
265 | if (account == null && !m_ForeignAgentsAllowed) | ||
266 | { | ||
267 | reason = "Unauthorized"; | ||
268 | m_log.InfoFormat("[GATEKEEPER SERVICE]: Foreign agents are not permitted {0} {1}. Refusing service.", | ||
269 | aCircuit.firstname, aCircuit.lastname); | ||
270 | return false; | ||
271 | } | ||
272 | |||
260 | // May want to authorize | 273 | // May want to authorize |
261 | 274 | ||
262 | bool isFirstLogin = false; | 275 | bool isFirstLogin = false; |
diff --git a/OpenSim/Services/HypergridService/UserAgentService.cs b/OpenSim/Services/HypergridService/UserAgentService.cs index 6a5007f..49c7f89 100644 --- a/OpenSim/Services/HypergridService/UserAgentService.cs +++ b/OpenSim/Services/HypergridService/UserAgentService.cs | |||
@@ -73,6 +73,8 @@ namespace OpenSim.Services.HypergridService | |||
73 | 73 | ||
74 | protected static string m_GridName; | 74 | protected static string m_GridName; |
75 | 75 | ||
76 | protected static int m_LevelOutsideContacts; | ||
77 | |||
76 | protected static bool m_BypassClientVerification; | 78 | protected static bool m_BypassClientVerification; |
77 | 79 | ||
78 | public UserAgentService(IConfigSource config) : this(config, null) | 80 | public UserAgentService(IConfigSource config) : this(config, null) |
@@ -127,6 +129,8 @@ namespace OpenSim.Services.HypergridService | |||
127 | } | 129 | } |
128 | if (!m_GridName.EndsWith("/")) | 130 | if (!m_GridName.EndsWith("/")) |
129 | m_GridName = m_GridName + "/"; | 131 | m_GridName = m_GridName + "/"; |
132 | |||
133 | m_LevelOutsideContacts = serverConfig.GetInt("LevelOutsideContacts", 0); | ||
130 | } | 134 | } |
131 | } | 135 | } |
132 | 136 | ||
@@ -571,10 +575,16 @@ namespace OpenSim.Services.HypergridService | |||
571 | 575 | ||
572 | public UUID GetUUID(String first, String last) | 576 | public UUID GetUUID(String first, String last) |
573 | { | 577 | { |
574 | // Let's see if it's a local user | 578 | // Let's see if it's a local user |
575 | UserAccount account = m_UserAccountService.GetUserAccount(UUID.Zero, first, last); | 579 | UserAccount account = m_UserAccountService.GetUserAccount(UUID.Zero, first, last); |
576 | if (account != null) | 580 | if (account != null) |
577 | return account.PrincipalID; | 581 | { |
582 | // check user level | ||
583 | if (account.UserLevel < m_LevelOutsideContacts) | ||
584 | return UUID.Zero; | ||
585 | else | ||
586 | return account.PrincipalID; | ||
587 | } | ||
578 | else | 588 | else |
579 | return UUID.Zero; | 589 | return UUID.Zero; |
580 | } | 590 | } |