aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs')
-rw-r--r--OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs212
1 files changed, 136 insertions, 76 deletions
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
index f66f01f..68e8485 100644
--- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
@@ -29,6 +29,7 @@ using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Reflection; 30using System.Reflection;
31using log4net; 31using log4net;
32using Mono.Addins;
32using Nini.Config; 33using Nini.Config;
33using OpenMetaverse; 34using OpenMetaverse;
34using OpenSim.Framework; 35using OpenSim.Framework;
@@ -89,7 +90,8 @@ enum GroupPowers : long
89 90
90namespace OpenSim.Region.CoreModules.World.Permissions 91namespace OpenSim.Region.CoreModules.World.Permissions
91{ 92{
92 public class PermissionsModule : IRegionModule 93 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
94 public class PermissionsModule : INonSharedRegionModule
93 { 95 {
94 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 96 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
95 97
@@ -148,12 +150,10 @@ namespace OpenSim.Region.CoreModules.World.Permissions
148 150
149 #endregion 151 #endregion
150 152
151 #region IRegionModule Members 153 #region INonSharedRegionModule Members
152 154
153 public void Initialise(Scene scene, IConfigSource config) 155 public void Initialise(IConfigSource config)
154 { 156 {
155 m_scene = scene;
156
157 IConfig myConfig = config.Configs["Startup"]; 157 IConfig myConfig = config.Configs["Startup"];
158 158
159 string permissionModules = myConfig.GetString("permissionmodules", "DefaultPermissionsModule"); 159 string permissionModules = myConfig.GetString("permissionmodules", "DefaultPermissionsModule");
@@ -177,7 +177,57 @@ namespace OpenSim.Region.CoreModules.World.Permissions
177 if (m_bypassPermissions) 177 if (m_bypassPermissions)
178 m_log.Info("[PERMISSIONS]: serviceside_object_permissions = false in ini file so disabling all region service permission checks"); 178 m_log.Info("[PERMISSIONS]: serviceside_object_permissions = false in ini file so disabling all region service permission checks");
179 else 179 else
180 m_log.Debug("[PERMISSIONS]: Enabling all region service permission checks"); 180 m_log.Debug("[PERMISSIONS]: Enabling all region service permission checks");
181
182 string grant = myConfig.GetString("GrantLSL","");
183 if (grant.Length > 0) {
184 foreach (string uuidl in grant.Split(',')) {
185 string uuid = uuidl.Trim(" \t".ToCharArray());
186 GrantLSL.Add(uuid, true);
187 }
188 }
189
190 grant = myConfig.GetString("GrantCS","");
191 if (grant.Length > 0) {
192 foreach (string uuidl in grant.Split(',')) {
193 string uuid = uuidl.Trim(" \t".ToCharArray());
194 GrantCS.Add(uuid, true);
195 }
196 }
197
198 grant = myConfig.GetString("GrantVB","");
199 if (grant.Length > 0) {
200 foreach (string uuidl in grant.Split(',')) {
201 string uuid = uuidl.Trim(" \t".ToCharArray());
202 GrantVB.Add(uuid, true);
203 }
204 }
205
206 grant = myConfig.GetString("GrantJS", "");
207 if (grant.Length > 0)
208 {
209 foreach (string uuidl in grant.Split(','))
210 {
211 string uuid = uuidl.Trim(" \t".ToCharArray());
212 GrantJS.Add(uuid, true);
213 }
214 }
215
216 grant = myConfig.GetString("GrantYP", "");
217 if (grant.Length > 0)
218 {
219 foreach (string uuidl in grant.Split(','))
220 {
221 string uuid = uuidl.Trim(" \t".ToCharArray());
222 GrantYP.Add(uuid, true);
223 }
224 }
225
226 }
227
228 public void AddRegion(Scene scene)
229 {
230 m_scene = scene;
181 231
182 //Register functions with Scene External Checks! 232 //Register functions with Scene External Checks!
183 m_scene.Permissions.OnBypassPermissions += BypassPermissions; 233 m_scene.Permissions.OnBypassPermissions += BypassPermissions;
@@ -210,23 +260,23 @@ namespace OpenSim.Region.CoreModules.World.Permissions
210 m_scene.Permissions.OnLinkObject += CanLinkObject; //NOT YET IMPLEMENTED 260 m_scene.Permissions.OnLinkObject += CanLinkObject; //NOT YET IMPLEMENTED
211 m_scene.Permissions.OnDelinkObject += CanDelinkObject; //NOT YET IMPLEMENTED 261 m_scene.Permissions.OnDelinkObject += CanDelinkObject; //NOT YET IMPLEMENTED
212 m_scene.Permissions.OnBuyLand += CanBuyLand; //NOT YET IMPLEMENTED 262 m_scene.Permissions.OnBuyLand += CanBuyLand; //NOT YET IMPLEMENTED
213 263
214 m_scene.Permissions.OnViewNotecard += CanViewNotecard; //NOT YET IMPLEMENTED 264 m_scene.Permissions.OnViewNotecard += CanViewNotecard; //NOT YET IMPLEMENTED
215 m_scene.Permissions.OnViewScript += CanViewScript; //NOT YET IMPLEMENTED 265 m_scene.Permissions.OnViewScript += CanViewScript; //NOT YET IMPLEMENTED
216 m_scene.Permissions.OnEditNotecard += CanEditNotecard; //NOT YET IMPLEMENTED 266 m_scene.Permissions.OnEditNotecard += CanEditNotecard; //NOT YET IMPLEMENTED
217 m_scene.Permissions.OnEditScript += CanEditScript; //NOT YET IMPLEMENTED 267 m_scene.Permissions.OnEditScript += CanEditScript; //NOT YET IMPLEMENTED
218 268
219 m_scene.Permissions.OnCreateObjectInventory += CanCreateObjectInventory; //NOT IMPLEMENTED HERE 269 m_scene.Permissions.OnCreateObjectInventory += CanCreateObjectInventory; //NOT IMPLEMENTED HERE
220 m_scene.Permissions.OnEditObjectInventory += CanEditObjectInventory;//MAYBE FULLY IMPLEMENTED 270 m_scene.Permissions.OnEditObjectInventory += CanEditObjectInventory;//MAYBE FULLY IMPLEMENTED
221 m_scene.Permissions.OnCopyObjectInventory += CanCopyObjectInventory; //NOT YET IMPLEMENTED 271 m_scene.Permissions.OnCopyObjectInventory += CanCopyObjectInventory; //NOT YET IMPLEMENTED
222 m_scene.Permissions.OnDeleteObjectInventory += CanDeleteObjectInventory; //NOT YET IMPLEMENTED 272 m_scene.Permissions.OnDeleteObjectInventory += CanDeleteObjectInventory; //NOT YET IMPLEMENTED
223 m_scene.Permissions.OnResetScript += CanResetScript; 273 m_scene.Permissions.OnResetScript += CanResetScript;
224 274
225 m_scene.Permissions.OnCreateUserInventory += CanCreateUserInventory; //NOT YET IMPLEMENTED 275 m_scene.Permissions.OnCreateUserInventory += CanCreateUserInventory; //NOT YET IMPLEMENTED
226 m_scene.Permissions.OnCopyUserInventory += CanCopyUserInventory; //NOT YET IMPLEMENTED 276 m_scene.Permissions.OnCopyUserInventory += CanCopyUserInventory; //NOT YET IMPLEMENTED
227 m_scene.Permissions.OnEditUserInventory += CanEditUserInventory; //NOT YET IMPLEMENTED 277 m_scene.Permissions.OnEditUserInventory += CanEditUserInventory; //NOT YET IMPLEMENTED
228 m_scene.Permissions.OnDeleteUserInventory += CanDeleteUserInventory; //NOT YET IMPLEMENTED 278 m_scene.Permissions.OnDeleteUserInventory += CanDeleteUserInventory; //NOT YET IMPLEMENTED
229 279
230 m_scene.Permissions.OnTeleport += CanTeleport; //NOT YET IMPLEMENTED 280 m_scene.Permissions.OnTeleport += CanTeleport; //NOT YET IMPLEMENTED
231 m_scene.Permissions.OnUseObjectReturn += CanUseObjectReturn; //NOT YET IMPLEMENTED 281 m_scene.Permissions.OnUseObjectReturn += CanUseObjectReturn; //NOT YET IMPLEMENTED
232 282
@@ -244,52 +294,87 @@ namespace OpenSim.Region.CoreModules.World.Permissions
244 "debug permissions <true / false>", 294 "debug permissions <true / false>",
245 "Enable permissions debugging", 295 "Enable permissions debugging",
246 HandleDebugPermissions); 296 HandleDebugPermissions);
247 297 }
248
249 string grant = myConfig.GetString("GrantLSL","");
250 if (grant.Length > 0) {
251 foreach (string uuidl in grant.Split(',')) {
252 string uuid = uuidl.Trim(" \t".ToCharArray());
253 GrantLSL.Add(uuid, true);
254 }
255 }
256 298
257 grant = myConfig.GetString("GrantCS",""); 299 public Type ReplaceableInterface
258 if (grant.Length > 0) { 300 {
259 foreach (string uuidl in grant.Split(',')) { 301 get { return null; }
260 string uuid = uuidl.Trim(" \t".ToCharArray()); 302 }
261 GrantCS.Add(uuid, true);
262 }
263 }
264 303
265 grant = myConfig.GetString("GrantVB",""); 304 public void RegionLoaded(Scene scene)
266 if (grant.Length > 0) { 305 {
267 foreach (string uuidl in grant.Split(',')) { 306 m_friendsModule = m_scene.RequestModuleInterface<IFriendsModule>();
268 string uuid = uuidl.Trim(" \t".ToCharArray());
269 GrantVB.Add(uuid, true);
270 }
271 }
272 307
273 grant = myConfig.GetString("GrantJS", ""); 308 if (m_friendsModule == null)
274 if (grant.Length > 0) 309 m_log.Error("[PERMISSIONS]: Friends module not found, friend permissions will not work");
275 { 310 else
276 foreach (string uuidl in grant.Split(',')) 311 m_log.Info("[PERMISSIONS]: Friends module found, friend permissions enabled");
277 { 312 }
278 string uuid = uuidl.Trim(" \t".ToCharArray());
279 GrantJS.Add(uuid, true);
280 }
281 }
282 313
283 grant = myConfig.GetString("GrantYP", ""); 314 public void RemoveRegion(Scene scene)
284 if (grant.Length > 0) 315 {
285 { 316 scene.Permissions.OnBypassPermissions -= BypassPermissions;
286 foreach (string uuidl in grant.Split(',')) 317 scene.Permissions.OnSetBypassPermissions -= SetBypassPermissions;
287 { 318 scene.Permissions.OnPropagatePermissions -= PropagatePermissions;
288 string uuid = uuidl.Trim(" \t".ToCharArray()); 319 scene.Permissions.OnGenerateClientFlags -= GenerateClientFlags;
289 GrantYP.Add(uuid, true); 320 scene.Permissions.OnAbandonParcel -= CanAbandonParcel;
290 } 321 scene.Permissions.OnReclaimParcel -= CanReclaimParcel;
291 } 322 scene.Permissions.OnDeedParcel -= CanDeedParcel;
323 scene.Permissions.OnDeedObject -= CanDeedObject;
324 scene.Permissions.OnIsGod -= IsGod;
325 scene.Permissions.OnDuplicateObject -= CanDuplicateObject;
326 scene.Permissions.OnDeleteObject -= CanDeleteObject; //MAYBE FULLY IMPLEMENTED
327 scene.Permissions.OnEditObject -= CanEditObject; //MAYBE FULLY IMPLEMENTED
328 scene.Permissions.OnEditParcel -= CanEditParcel; //MAYBE FULLY IMPLEMENTED
329 scene.Permissions.OnInstantMessage -= CanInstantMessage;
330 scene.Permissions.OnInventoryTransfer -= CanInventoryTransfer; //NOT YET IMPLEMENTED
331 scene.Permissions.OnIssueEstateCommand -= CanIssueEstateCommand; //FULLY IMPLEMENTED
332 scene.Permissions.OnMoveObject -= CanMoveObject; //MAYBE FULLY IMPLEMENTED
333 scene.Permissions.OnObjectEntry -= CanObjectEntry;
334 scene.Permissions.OnReturnObject -= CanReturnObject; //NOT YET IMPLEMENTED
335 scene.Permissions.OnRezObject -= CanRezObject; //MAYBE FULLY IMPLEMENTED
336 scene.Permissions.OnRunConsoleCommand -= CanRunConsoleCommand;
337 scene.Permissions.OnRunScript -= CanRunScript; //NOT YET IMPLEMENTED
338 scene.Permissions.OnCompileScript -= CanCompileScript;
339 scene.Permissions.OnSellParcel -= CanSellParcel;
340 scene.Permissions.OnTakeObject -= CanTakeObject;
341 scene.Permissions.OnTakeCopyObject -= CanTakeCopyObject;
342 scene.Permissions.OnTerraformLand -= CanTerraformLand;
343 scene.Permissions.OnLinkObject -= CanLinkObject; //NOT YET IMPLEMENTED
344 scene.Permissions.OnDelinkObject -= CanDelinkObject; //NOT YET IMPLEMENTED
345 scene.Permissions.OnBuyLand -= CanBuyLand; //NOT YET IMPLEMENTED
346
347 scene.Permissions.OnViewNotecard -= CanViewNotecard; //NOT YET IMPLEMENTED
348 scene.Permissions.OnViewScript -= CanViewScript; //NOT YET IMPLEMENTED
349 scene.Permissions.OnEditNotecard -= CanEditNotecard; //NOT YET IMPLEMENTED
350 scene.Permissions.OnEditScript -= CanEditScript; //NOT YET IMPLEMENTED
351
352 scene.Permissions.OnCreateObjectInventory -= CanCreateObjectInventory; //NOT IMPLEMENTED HERE
353 scene.Permissions.OnEditObjectInventory -= CanEditObjectInventory;//MAYBE FULLY IMPLEMENTED
354 scene.Permissions.OnCopyObjectInventory -= CanCopyObjectInventory; //NOT YET IMPLEMENTED
355 scene.Permissions.OnDeleteObjectInventory -= CanDeleteObjectInventory; //NOT YET IMPLEMENTED
356 scene.Permissions.OnResetScript -= CanResetScript;
357
358 scene.Permissions.OnCreateUserInventory -= CanCreateUserInventory; //NOT YET IMPLEMENTED
359 scene.Permissions.OnCopyUserInventory -= CanCopyUserInventory; //NOT YET IMPLEMENTED
360 scene.Permissions.OnEditUserInventory -= CanEditUserInventory; //NOT YET IMPLEMENTED
361 scene.Permissions.OnDeleteUserInventory -= CanDeleteUserInventory; //NOT YET IMPLEMENTED
362
363 scene.Permissions.OnTeleport -= CanTeleport; //NOT YET IMPLEMENTED
364 scene.Permissions.OnUseObjectReturn -= CanUseObjectReturn; //NOT YET IMPLEMENTED
365 }
366
367 public void PostInitialise()
368 {
369 }
370
371 public void Close()
372 {
373 }
292 374
375 public string Name
376 {
377 get { return "PermissionsModule"; }
293 } 378 }
294 379
295 public void HandleBypassPermissions(string module, string[] args) 380 public void HandleBypassPermissions(string module, string[] args)
@@ -362,31 +447,6 @@ namespace OpenSim.Region.CoreModules.World.Permissions
362 m_log.InfoFormat("[PERMISSIONS] Set permissions debugging to {0} in {1}", m_debugPermissions, m_scene.RegionInfo.RegionName); 447 m_log.InfoFormat("[PERMISSIONS] Set permissions debugging to {0} in {1}", m_debugPermissions, m_scene.RegionInfo.RegionName);
363 } 448 }
364 } 449 }
365
366 public void PostInitialise()
367 {
368 m_friendsModule = m_scene.RequestModuleInterface<IFriendsModule>();
369
370 if (m_friendsModule == null)
371 m_log.Error("[PERMISSIONS]: Friends module not found, friend permissions will not work");
372 else
373 m_log.Info("[PERMISSIONS]: Friends module found, friend permissions enabled");
374 }
375
376 public void Close()
377 {
378 }
379
380 public string Name
381 {
382 get { return "PermissionsModule"; }
383 }
384
385 public bool IsSharedModule
386 {
387 get { return false; }
388 }
389
390 #endregion 450 #endregion
391 451
392 #region Helper Functions 452 #region Helper Functions