diff options
author | Snoopy Pfeffer | 2012-03-27 22:09:58 +0200 |
---|---|---|
committer | Snoopy Pfeffer | 2012-03-27 22:09:58 +0200 |
commit | 7223b63563f28f6fe8044bdabcd1b9900d28c54a (patch) | |
tree | 7bf1df67f9a1388b940b386e64e239f52f986a4b /OpenSim/Services/HypergridService | |
parent | HG: beginning of a more restrictive inventory access procedure (optional). Ex... (diff) | |
download | opensim-SC-7223b63563f28f6fe8044bdabcd1b9900d28c54a.zip opensim-SC-7223b63563f28f6fe8044bdabcd1b9900d28c54a.tar.gz opensim-SC-7223b63563f28f6fe8044bdabcd1b9900d28c54a.tar.bz2 opensim-SC-7223b63563f28f6fe8044bdabcd1b9900d28c54a.tar.xz |
User level based restrictions for HyperGrid teleports, asset uploads, group creations and getting contacted from other grids. Incoming HyperGrid teleports can also be restricted to local users.
Diffstat (limited to 'OpenSim/Services/HypergridService')
-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 | } |