aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment')
-rw-r--r--OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs13
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.Inventory.cs3
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs76
3 files changed, 53 insertions, 39 deletions
diff --git a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs
index b6b7d4a..394690c 100644
--- a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs
@@ -184,12 +184,11 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
184 m_scene.ExternalChecks.addCheckCanLinkObject(CanLinkObject); //NOT YET IMPLEMENTED 184 m_scene.ExternalChecks.addCheckCanLinkObject(CanLinkObject); //NOT YET IMPLEMENTED
185 m_scene.ExternalChecks.addCheckCanDelinkObject(CanDelinkObject); //NOT YET IMPLEMENTED 185 m_scene.ExternalChecks.addCheckCanDelinkObject(CanDelinkObject); //NOT YET IMPLEMENTED
186 m_scene.ExternalChecks.addCheckCanBuyLand(CanBuyLand); //NOT YET IMPLEMENTED 186 m_scene.ExternalChecks.addCheckCanBuyLand(CanBuyLand); //NOT YET IMPLEMENTED
187 m_scene.ExternalChecks.addCheckCanCopyInventory(CanCopyInventory); //NOT YET IMPLEMENTED 187 m_scene.ExternalChecks.addCheckCanCopyObjectInventory(CanCopyObjectInventory); //NOT YET IMPLEMENTED
188 m_scene.ExternalChecks.addCheckCanDeleteInventory(CanDeleteInventory); //NOT YET IMPLEMENTED 188 m_scene.ExternalChecks.addCheckCanDeleteObjectInventory(CanDeleteObjectInventory); //NOT YET IMPLEMENTED
189 m_scene.ExternalChecks.addCheckCanCreateInventory(CanCreateInventory); //NOT YET IMPLEMENTED 189 m_scene.ExternalChecks.addCheckCanCreateObjectInventory(CanCreateObjectInventory); //NOT YET IMPLEMENTED
190 m_scene.ExternalChecks.addCheckCanTeleport(CanTeleport); //NOT YET IMPLEMENTED 190 m_scene.ExternalChecks.addCheckCanTeleport(CanTeleport); //NOT YET IMPLEMENTED
191 191
192
193 //Register Debug Commands 192 //Register Debug Commands
194 Command bypassCommand = new Command("bypass", CommandIntentions.COMMAND_HAZARDOUS, InterfaceBypassPermissions, "Force the permissions a specific way to test permissions"); 193 Command bypassCommand = new Command("bypass", CommandIntentions.COMMAND_HAZARDOUS, InterfaceBypassPermissions, "Force the permissions a specific way to test permissions");
195 bypassCommand.AddArgument("enable_bypass_perms", "true to enable bypassing all perms", "Boolean"); 194 bypassCommand.AddArgument("enable_bypass_perms", "true to enable bypassing all perms", "Boolean");
@@ -1202,7 +1201,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
1202 return true; 1201 return true;
1203 } 1202 }
1204 1203
1205 public bool CanCopyInventory(UUID itemID, UUID objectID, UUID userID) 1204 public bool CanCopyObjectInventory(UUID itemID, UUID objectID, UUID userID)
1206 { 1205 {
1207 DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); 1206 DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
1208 if (m_bypassPermissions) return m_bypassPermissionsValue; 1207 if (m_bypassPermissions) return m_bypassPermissionsValue;
@@ -1210,7 +1209,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
1210 return true; 1209 return true;
1211 } 1210 }
1212 1211
1213 public bool CanDeleteInventory(UUID itemID, UUID objectID, UUID userID) 1212 public bool CanDeleteObjectInventory(UUID itemID, UUID objectID, UUID userID)
1214 { 1213 {
1215 DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); 1214 DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
1216 if (m_bypassPermissions) return m_bypassPermissionsValue; 1215 if (m_bypassPermissions) return m_bypassPermissionsValue;
@@ -1227,7 +1226,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
1227 /// <param name="objectID"></param> 1226 /// <param name="objectID"></param>
1228 /// <param name="userID"></param> 1227 /// <param name="userID"></param>
1229 /// <returns></returns> 1228 /// <returns></returns>
1230 public bool CanCreateInventory(int invType, UUID objectID, UUID userID) 1229 public bool CanCreateObjectInventory(int invType, UUID objectID, UUID userID)
1231 { 1230 {
1232 m_log.Debug("[PERMISSIONS]: CanCreateInventory called"); 1231 m_log.Debug("[PERMISSIONS]: CanCreateInventory called");
1233 1232
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
index 19c9d08..d47e068 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
@@ -1387,7 +1387,8 @@ namespace OpenSim.Region.Environment.Scenes
1387 if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0) 1387 if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
1388 return; 1388 return;
1389 1389
1390 if (!ExternalChecks.ExternalChecksCanCreateInventory(itemBase.InvType, part.UUID, remoteClient.AgentId)) 1390 if (!ExternalChecks.ExternalChecksCanCreateObjectInventory(
1391 itemBase.InvType, part.UUID, remoteClient.AgentId))
1391 return; 1392 return;
1392 1393
1393 AssetBase asset = CreateAsset(itemBase.Name, itemBase.Description, (sbyte)itemBase.AssetType, Encoding.ASCII.GetBytes("default\n{\n state_entry()\n {\n llSay(0, \"Script running\");\n }\n}")); 1394 AssetBase asset = CreateAsset(itemBase.Name, itemBase.Description, (sbyte)itemBase.AssetType, Encoding.ASCII.GetBytes("default\n{\n state_entry()\n {\n llSay(0, \"Script running\");\n }\n}"));
diff --git a/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs b/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs
index c5bbcdd..0e018e8 100644
--- a/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneExternalChecks.cs
@@ -1070,51 +1070,63 @@ namespace OpenSim.Region.Environment.Scenes
1070 1070
1071 #endregion 1071 #endregion
1072 1072
1073 public delegate bool CanCreateInventory(int invType, UUID objectID, UUID userID); 1073 public delegate bool CanCreateObjectInventory(int invType, UUID objectID, UUID userID);
1074 private List<CanCreateInventory> CanCreateInventoryCheckFunctions = new List<CanCreateInventory>(); 1074 private List<CanCreateObjectInventory> CanCreateObjectInventoryCheckFunctions
1075 = new List<CanCreateObjectInventory>();
1075 1076
1076 public void addCheckCanCreateInventory(CanCreateInventory delegateFunc) 1077
1078 public void addCheckCanCreateObjectInventory(CanCreateObjectInventory delegateFunc)
1077 { 1079 {
1078 if (!CanCreateInventoryCheckFunctions.Contains(delegateFunc)) 1080 if (!CanCreateObjectInventoryCheckFunctions.Contains(delegateFunc))
1079 CanCreateInventoryCheckFunctions.Add(delegateFunc); 1081 CanCreateObjectInventoryCheckFunctions.Add(delegateFunc);
1080 } 1082 }
1081 1083
1082 public void removeCheckCanCreateInventory(CanCreateInventory delegateFunc) 1084 public void removeCheckCanCreateObjectInventory(CanCreateObjectInventory delegateFunc)
1083 { 1085 {
1084 if (CanCreateInventoryCheckFunctions.Contains(delegateFunc)) 1086 if (CanCreateObjectInventoryCheckFunctions.Contains(delegateFunc))
1085 CanCreateInventoryCheckFunctions.Remove(delegateFunc); 1087 CanCreateObjectInventoryCheckFunctions.Remove(delegateFunc);
1086 } 1088 }
1087 1089
1088 public bool ExternalChecksCanCreateInventory(int invType, UUID objectID, UUID userID) 1090 /// <summary>
1091 /// Check whether the specified user is allowed to directly create the given inventory type in a prim's
1092 /// inventory (e.g. the New Script button in the 1.21 Linden Lab client). This permission check does not
1093 /// apply to existing items that are being dragged in to that prim's inventory.
1094 /// </summary>
1095 /// <param name="invType"></param>
1096 /// <param name="objectID"></param>
1097 /// <param name="userID"></param>
1098 /// <returns></returns>
1099 public bool ExternalChecksCanCreateObjectInventory(int invType, UUID objectID, UUID userID)
1089 { 1100 {
1090 foreach (CanCreateInventory check in CanCreateInventoryCheckFunctions) 1101 foreach (CanCreateObjectInventory check in CanCreateObjectInventoryCheckFunctions)
1091 { 1102 {
1092 if (check(invType, objectID, userID) == false) 1103 if (check(invType, objectID, userID) == false)
1093 { 1104 {
1094 return false; 1105 return false;
1095 } 1106 }
1096 } 1107 }
1108
1097 return true; 1109 return true;
1098 } 1110 }
1099 1111
1100 public delegate bool CanCopyInventory(UUID itemID, UUID objectID, UUID userID); 1112 public delegate bool CanCopyObjectInventory(UUID itemID, UUID objectID, UUID userID);
1101 private List<CanCopyInventory> CanCopyInventoryCheckFunctions = new List<CanCopyInventory>(); 1113 private List<CanCopyObjectInventory> CanCopyObjectInventoryCheckFunctions = new List<CanCopyObjectInventory>();
1102 1114
1103 public void addCheckCanCopyInventory(CanCopyInventory delegateFunc) 1115 public void addCheckCanCopyObjectInventory(CanCopyObjectInventory delegateFunc)
1104 { 1116 {
1105 if (!CanCopyInventoryCheckFunctions.Contains(delegateFunc)) 1117 if (!CanCopyObjectInventoryCheckFunctions.Contains(delegateFunc))
1106 CanCopyInventoryCheckFunctions.Add(delegateFunc); 1118 CanCopyObjectInventoryCheckFunctions.Add(delegateFunc);
1107 } 1119 }
1108 1120
1109 public void removeCheckCanCopyInventory(CanCopyInventory delegateFunc) 1121 public void removeCheckCanCopyObjectInventory(CanCopyObjectInventory delegateFunc)
1110 { 1122 {
1111 if (CanCopyInventoryCheckFunctions.Contains(delegateFunc)) 1123 if (CanCopyObjectInventoryCheckFunctions.Contains(delegateFunc))
1112 CanCopyInventoryCheckFunctions.Remove(delegateFunc); 1124 CanCopyObjectInventoryCheckFunctions.Remove(delegateFunc);
1113 } 1125 }
1114 1126
1115 public bool ExternalChecksCanCopyInventory(UUID itemID, UUID objectID, UUID userID) 1127 public bool ExternalChecksCanCopyObjectInventory(UUID itemID, UUID objectID, UUID userID)
1116 { 1128 {
1117 foreach (CanCopyInventory check in CanCopyInventoryCheckFunctions) 1129 foreach (CanCopyObjectInventory check in CanCopyObjectInventoryCheckFunctions)
1118 { 1130 {
1119 if (check(itemID, objectID, userID) == false) 1131 if (check(itemID, objectID, userID) == false)
1120 { 1132 {
@@ -1124,30 +1136,32 @@ namespace OpenSim.Region.Environment.Scenes
1124 return true; 1136 return true;
1125 } 1137 }
1126 1138
1127 public delegate bool CanDeleteInventory(UUID itemID, UUID objectID, UUID userID); 1139 public delegate bool CanDeleteObjectInventory(UUID itemID, UUID objectID, UUID userID);
1128 private List<CanDeleteInventory> CanDeleteInventoryCheckFunctions = new List<CanDeleteInventory>(); 1140 private List<CanDeleteObjectInventory> CanDeleteObjectInventoryCheckFunctions
1141 = new List<CanDeleteObjectInventory>();
1129 1142
1130 public void addCheckCanDeleteInventory(CanDeleteInventory delegateFunc) 1143 public void addCheckCanDeleteObjectInventory(CanDeleteObjectInventory delegateFunc)
1131 { 1144 {
1132 if (!CanDeleteInventoryCheckFunctions.Contains(delegateFunc)) 1145 if (!CanDeleteObjectInventoryCheckFunctions.Contains(delegateFunc))
1133 CanDeleteInventoryCheckFunctions.Add(delegateFunc); 1146 CanDeleteObjectInventoryCheckFunctions.Add(delegateFunc);
1134 } 1147 }
1135 1148
1136 public void removeCheckCanDeleteInventory(CanDeleteInventory delegateFunc) 1149 public void removeCheckCanDeleteObjectInventory(CanDeleteObjectInventory delegateFunc)
1137 { 1150 {
1138 if (CanDeleteInventoryCheckFunctions.Contains(delegateFunc)) 1151 if (CanDeleteObjectInventoryCheckFunctions.Contains(delegateFunc))
1139 CanDeleteInventoryCheckFunctions.Remove(delegateFunc); 1152 CanDeleteObjectInventoryCheckFunctions.Remove(delegateFunc);
1140 } 1153 }
1141 1154
1142 public bool ExternalChecksCanDeleteInventory(UUID itemID, UUID objectID, UUID userID) 1155 public bool ExternalChecksCanDeleteObjectInventory(UUID itemID, UUID objectID, UUID userID)
1143 { 1156 {
1144 foreach (CanDeleteInventory check in CanDeleteInventoryCheckFunctions) 1157 foreach (CanDeleteObjectInventory check in CanDeleteObjectInventoryCheckFunctions)
1145 { 1158 {
1146 if (check(itemID, objectID, userID) == false) 1159 if (check(itemID, objectID, userID) == false)
1147 { 1160 {
1148 return false; 1161 return false;
1149 } 1162 }
1150 } 1163 }
1164
1151 return true; 1165 return true;
1152 } 1166 }
1153 1167