diff options
-rwxr-xr-x | OpenSim/Framework/Console/ConsoleBase.cs | 2 | ||||
-rw-r--r-- | OpenSim/Framework/Servers/VersionInfo.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 59 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 3 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 7 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | 2 | ||||
-rw-r--r-- | OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs | 35 | ||||
-rw-r--r-- | bin/config-include/SimianGrid.ini | 3 |
10 files changed, 108 insertions, 17 deletions
diff --git a/OpenSim/Framework/Console/ConsoleBase.cs b/OpenSim/Framework/Console/ConsoleBase.cs index b70d1db..aab920b 100755 --- a/OpenSim/Framework/Console/ConsoleBase.cs +++ b/OpenSim/Framework/Console/ConsoleBase.cs | |||
@@ -118,7 +118,7 @@ namespace OpenSim.Framework.Console | |||
118 | // (Done with no echo and suitable for passwords) | 118 | // (Done with no echo and suitable for passwords) |
119 | public string PasswdPrompt(string p) | 119 | public string PasswdPrompt(string p) |
120 | { | 120 | { |
121 | return ReadLine(p, false, false); | 121 | return ReadLine(String.Format("{0}: ", p), false, false); |
122 | } | 122 | } |
123 | 123 | ||
124 | public virtual string ReadLine(string p, bool isCommand, bool e) | 124 | public virtual string ReadLine(string p, bool isCommand, bool e) |
diff --git a/OpenSim/Framework/Servers/VersionInfo.cs b/OpenSim/Framework/Servers/VersionInfo.cs index c136f52..4d23fbb 100644 --- a/OpenSim/Framework/Servers/VersionInfo.cs +++ b/OpenSim/Framework/Servers/VersionInfo.cs | |||
@@ -30,7 +30,7 @@ namespace OpenSim | |||
30 | public class VersionInfo | 30 | public class VersionInfo |
31 | { | 31 | { |
32 | private const string VERSION_NUMBER = "0.7"; | 32 | private const string VERSION_NUMBER = "0.7"; |
33 | private const Flavour VERSION_FLAVOUR = Flavour.Release; | 33 | private const Flavour VERSION_FLAVOUR = Flavour.Post_Fixes; |
34 | 34 | ||
35 | public enum Flavour | 35 | public enum Flavour |
36 | { | 36 | { |
diff --git a/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs b/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs index b5c3176..2105f3c 100644 --- a/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs | |||
@@ -81,14 +81,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog | |||
81 | { | 81 | { |
82 | ScenePresence sp = m_scene.GetScenePresence(agentID); | 82 | ScenePresence sp = m_scene.GetScenePresence(agentID); |
83 | 83 | ||
84 | if (sp != null && !sp.IsChildAgent) | 84 | if (sp != null) |
85 | sp.ControllingClient.SendAgentAlertMessage(message, modal); | 85 | sp.ControllingClient.SendAgentAlertMessage(message, modal); |
86 | } | 86 | } |
87 | 87 | ||
88 | public void SendAlertToUser(string firstName, string lastName, string message, bool modal) | 88 | public void SendAlertToUser(string firstName, string lastName, string message, bool modal) |
89 | { | 89 | { |
90 | ScenePresence presence = m_scene.GetScenePresence(firstName, lastName); | 90 | ScenePresence presence = m_scene.GetScenePresence(firstName, lastName); |
91 | if (presence != null && !presence.IsChildAgent) | 91 | if (presence != null) |
92 | presence.ControllingClient.SendAgentAlertMessage(message, modal); | 92 | presence.ControllingClient.SendAgentAlertMessage(message, modal); |
93 | } | 93 | } |
94 | 94 | ||
@@ -119,7 +119,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog | |||
119 | } | 119 | } |
120 | 120 | ||
121 | ScenePresence sp = m_scene.GetScenePresence(avatarID); | 121 | ScenePresence sp = m_scene.GetScenePresence(avatarID); |
122 | if (sp != null && !sp.IsChildAgent) | 122 | if (sp != null) |
123 | sp.ControllingClient.SendDialog(objectName, objectID, ownerFirstName, ownerLastName, message, textureID, ch, buttonlabels); | 123 | sp.ControllingClient.SendDialog(objectName, objectID, ownerFirstName, ownerLastName, message, textureID, ch, buttonlabels); |
124 | } | 124 | } |
125 | 125 | ||
@@ -128,7 +128,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog | |||
128 | { | 128 | { |
129 | ScenePresence sp = m_scene.GetScenePresence(avatarID); | 129 | ScenePresence sp = m_scene.GetScenePresence(avatarID); |
130 | 130 | ||
131 | if (sp != null && !sp.IsChildAgent) | 131 | if (sp != null) |
132 | sp.ControllingClient.SendLoadURL(objectName, objectID, ownerID, groupOwned, message, url); | 132 | sp.ControllingClient.SendLoadURL(objectName, objectID, ownerID, groupOwned, message, url); |
133 | } | 133 | } |
134 | 134 | ||
@@ -149,7 +149,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog | |||
149 | 149 | ||
150 | ScenePresence sp = m_scene.GetScenePresence(avatarid); | 150 | ScenePresence sp = m_scene.GetScenePresence(avatarid); |
151 | 151 | ||
152 | if (sp != null && !sp.IsChildAgent) | 152 | if (sp != null) |
153 | sp.ControllingClient.SendTextBoxRequest(message, chatChannel, name, ownerFirstName, ownerLastName, objectid); | 153 | sp.ControllingClient.SendTextBoxRequest(message, chatChannel, name, ownerFirstName, ownerLastName, objectid); |
154 | } | 154 | } |
155 | 155 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 96a9d97..d79a7f1 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -915,6 +915,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
915 | SceneObjectGroup group = part.ParentGroup; | 915 | SceneObjectGroup group = part.ParentGroup; |
916 | if (group != null) | 916 | if (group != null) |
917 | { | 917 | { |
918 | if (!Permissions.CanEditObjectInventory(part.UUID, remoteClient.AgentId)) | ||
919 | return; | ||
920 | |||
918 | TaskInventoryItem item = group.GetInventoryItem(localID, itemID); | 921 | TaskInventoryItem item = group.GetInventoryItem(localID, itemID); |
919 | if (item == null) | 922 | if (item == null) |
920 | return; | 923 | return; |
@@ -1054,9 +1057,21 @@ namespace OpenSim.Region.Framework.Scenes | |||
1054 | return; | 1057 | return; |
1055 | } | 1058 | } |
1056 | 1059 | ||
1057 | // Only owner can copy | 1060 | TaskInventoryItem item = part.Inventory.GetInventoryItem(itemId); |
1058 | if (remoteClient.AgentId != taskItem.OwnerID) | 1061 | if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) |
1059 | return; | 1062 | { |
1063 | // If the item to be moved is no copy, we need to be able to | ||
1064 | // edit the prim. | ||
1065 | if (!Permissions.CanEditObjectInventory(part.UUID, remoteClient.AgentId)) | ||
1066 | return; | ||
1067 | } | ||
1068 | else | ||
1069 | { | ||
1070 | // If the item is copiable, then we just need to have perms | ||
1071 | // on it. The delete check is a pure rights check | ||
1072 | if (!Permissions.CanDeleteObject(part.UUID, remoteClient.AgentId)) | ||
1073 | return; | ||
1074 | } | ||
1060 | 1075 | ||
1061 | MoveTaskInventoryItem(remoteClient, folderId, part, itemId); | 1076 | MoveTaskInventoryItem(remoteClient, folderId, part, itemId); |
1062 | } | 1077 | } |
@@ -1339,16 +1354,48 @@ namespace OpenSim.Region.Framework.Scenes | |||
1339 | { | 1354 | { |
1340 | agentTransactions.HandleTaskItemUpdateFromTransaction( | 1355 | agentTransactions.HandleTaskItemUpdateFromTransaction( |
1341 | remoteClient, part, transactionID, currentItem); | 1356 | remoteClient, part, transactionID, currentItem); |
1342 | } | 1357 | |
1343 | if (part.Inventory.UpdateInventoryItem(itemInfo)) | ||
1344 | { | ||
1345 | if ((InventoryType)itemInfo.InvType == InventoryType.Notecard) | 1358 | if ((InventoryType)itemInfo.InvType == InventoryType.Notecard) |
1346 | remoteClient.SendAgentAlertMessage("Notecard saved", false); | 1359 | remoteClient.SendAgentAlertMessage("Notecard saved", false); |
1347 | else if ((InventoryType)itemInfo.InvType == InventoryType.LSL) | 1360 | else if ((InventoryType)itemInfo.InvType == InventoryType.LSL) |
1348 | remoteClient.SendAgentAlertMessage("Script saved", false); | 1361 | remoteClient.SendAgentAlertMessage("Script saved", false); |
1349 | else | 1362 | else |
1350 | remoteClient.SendAgentAlertMessage("Item saved", false); | 1363 | remoteClient.SendAgentAlertMessage("Item saved", false); |
1364 | } | ||
1365 | |||
1366 | // Base ALWAYS has move | ||
1367 | currentItem.BasePermissions |= (uint)PermissionMask.Move; | ||
1368 | |||
1369 | // Check if we're allowed to mess with permissions | ||
1370 | if (!Permissions.IsGod(remoteClient.AgentId)) // Not a god | ||
1371 | { | ||
1372 | if (remoteClient.AgentId != part.OwnerID) // Not owner | ||
1373 | { | ||
1374 | // Friends and group members can't change any perms | ||
1375 | itemInfo.BasePermissions = currentItem.BasePermissions; | ||
1376 | itemInfo.EveryonePermissions = currentItem.EveryonePermissions; | ||
1377 | itemInfo.GroupPermissions = currentItem.GroupPermissions; | ||
1378 | itemInfo.NextPermissions = currentItem.NextPermissions; | ||
1379 | itemInfo.CurrentPermissions = currentItem.CurrentPermissions; | ||
1380 | } | ||
1381 | else | ||
1382 | { | ||
1383 | // Owner can't change base, and can change other | ||
1384 | // only up to base | ||
1385 | itemInfo.BasePermissions = currentItem.BasePermissions; | ||
1386 | itemInfo.EveryonePermissions &= currentItem.BasePermissions; | ||
1387 | itemInfo.GroupPermissions &= currentItem.BasePermissions; | ||
1388 | itemInfo.CurrentPermissions &= currentItem.BasePermissions; | ||
1389 | itemInfo.NextPermissions &= currentItem.BasePermissions; | ||
1390 | } | ||
1391 | |||
1392 | } | ||
1351 | 1393 | ||
1394 | // Next ALWAYS has move | ||
1395 | itemInfo.NextPermissions |= (uint)PermissionMask.Move; | ||
1396 | |||
1397 | if (part.Inventory.UpdateInventoryItem(itemInfo)) | ||
1398 | { | ||
1352 | part.GetProperties(remoteClient); | 1399 | part.GetProperties(remoteClient); |
1353 | } | 1400 | } |
1354 | } | 1401 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index e2ab643..091fdeb 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -136,6 +136,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
136 | 136 | ||
137 | protected SceneCommunicationService m_sceneGridService; | 137 | protected SceneCommunicationService m_sceneGridService; |
138 | public bool LoginsDisabled = true; | 138 | public bool LoginsDisabled = true; |
139 | public bool LoadingPrims = false; | ||
139 | 140 | ||
140 | public new float TimeDilation | 141 | public new float TimeDilation |
141 | { | 142 | { |
@@ -1879,6 +1880,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1879 | /// </summary> | 1880 | /// </summary> |
1880 | public virtual void LoadPrimsFromStorage(UUID regionID) | 1881 | public virtual void LoadPrimsFromStorage(UUID regionID) |
1881 | { | 1882 | { |
1883 | LoadingPrims = true; | ||
1882 | m_log.Info("[SCENE]: Loading objects from datastore"); | 1884 | m_log.Info("[SCENE]: Loading objects from datastore"); |
1883 | 1885 | ||
1884 | List<SceneObjectGroup> PrimsFromDB = m_storageManager.DataStore.LoadObjects(regionID); | 1886 | List<SceneObjectGroup> PrimsFromDB = m_storageManager.DataStore.LoadObjects(regionID); |
@@ -1902,6 +1904,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1902 | } | 1904 | } |
1903 | 1905 | ||
1904 | m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)"); | 1906 | m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)"); |
1907 | LoadingPrims = false; | ||
1905 | } | 1908 | } |
1906 | 1909 | ||
1907 | 1910 | ||
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 1ca390a..17275d0 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -294,7 +294,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
294 | 294 | ||
295 | if ((m_scene.TestBorderCross(val - Vector3.UnitX, Cardinals.E) || m_scene.TestBorderCross(val + Vector3.UnitX, Cardinals.W) | 295 | if ((m_scene.TestBorderCross(val - Vector3.UnitX, Cardinals.E) || m_scene.TestBorderCross(val + Vector3.UnitX, Cardinals.W) |
296 | || m_scene.TestBorderCross(val - Vector3.UnitY, Cardinals.N) || m_scene.TestBorderCross(val + Vector3.UnitY, Cardinals.S)) | 296 | || m_scene.TestBorderCross(val - Vector3.UnitY, Cardinals.N) || m_scene.TestBorderCross(val + Vector3.UnitY, Cardinals.S)) |
297 | && !IsAttachmentCheckFull()) | 297 | && !IsAttachmentCheckFull() && (!m_scene.LoadingPrims)) |
298 | { | 298 | { |
299 | m_scene.CrossPrimGroupIntoNewRegion(val, this, true); | 299 | m_scene.CrossPrimGroupIntoNewRegion(val, this, true); |
300 | } | 300 | } |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 59fd805..6e29312 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -4137,6 +4137,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
4137 | case 16: | 4137 | case 16: |
4138 | _nextOwnerMask = ApplyMask(_nextOwnerMask, set, mask) & | 4138 | _nextOwnerMask = ApplyMask(_nextOwnerMask, set, mask) & |
4139 | baseMask; | 4139 | baseMask; |
4140 | // Prevent the client from creating no mod, no copy | ||
4141 | // objects | ||
4142 | if ((_nextOwnerMask & (uint)PermissionMask.Copy) == 0) | ||
4143 | _nextOwnerMask |= (uint)PermissionMask.Transfer; | ||
4144 | |||
4145 | _nextOwnerMask |= (uint)PermissionMask.Move; | ||
4146 | |||
4140 | break; | 4147 | break; |
4141 | } | 4148 | } |
4142 | SendFullUpdateToAllClients(); | 4149 | SendFullUpdateToAllClients(); |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 20d5486..9eb92be 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | |||
@@ -598,7 +598,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
598 | // changed since permissions were last set. | 598 | // changed since permissions were last set. |
599 | if (item.GroupPermissions != (uint)PermissionMask.None) | 599 | if (item.GroupPermissions != (uint)PermissionMask.None) |
600 | item.GroupID = m_part.GroupID; | 600 | item.GroupID = m_part.GroupID; |
601 | 601 | ||
602 | if (item.AssetID == UUID.Zero) | 602 | if (item.AssetID == UUID.Zero) |
603 | item.AssetID = it.AssetID; | 603 | item.AssetID = it.AssetID; |
604 | 604 | ||
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs b/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs index fbf4648..704790e 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs | |||
@@ -88,7 +88,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
88 | 88 | ||
89 | public void Initialise(IConfigSource source) | 89 | public void Initialise(IConfigSource source) |
90 | { | 90 | { |
91 | if (Simian.IsSimianEnabled(source, "UserAccountServices", this.Name)) | 91 | if (Simian.IsSimianEnabled(source, "UserAccountServices", "SimianUserAccountServiceConnector")) |
92 | { | 92 | { |
93 | IConfig gridConfig = source.Configs["UserAccountService"]; | 93 | IConfig gridConfig = source.Configs["UserAccountService"]; |
94 | if (gridConfig == null) | 94 | if (gridConfig == null) |
@@ -108,6 +108,23 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
108 | serviceUrl = serviceUrl + '/'; | 108 | serviceUrl = serviceUrl + '/'; |
109 | 109 | ||
110 | m_serverUrl = serviceUrl; | 110 | m_serverUrl = serviceUrl; |
111 | IConfig profilesConfig = source.Configs["Profiles"]; | ||
112 | if (profilesConfig == null) | ||
113 | { | ||
114 | // Do not run this module by default. | ||
115 | return; | ||
116 | } | ||
117 | else | ||
118 | { | ||
119 | // if profiles aren't enabled, we're not needed. | ||
120 | // if we're not specified as the connector to use, then we're not wanted | ||
121 | if (profilesConfig.GetString("Module", String.Empty) != Name) | ||
122 | { | ||
123 | |||
124 | return; | ||
125 | } | ||
126 | m_log.InfoFormat("[SIMIAN ACCOUNT CONNECTOR]: Initializing {0}", this.Name); | ||
127 | } | ||
111 | } | 128 | } |
112 | } | 129 | } |
113 | 130 | ||
@@ -135,6 +152,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
135 | 152 | ||
136 | // Profiles | 153 | // Profiles |
137 | client.OnRequestAvatarProperties += RequestAvatarPropertiesHandler; | 154 | client.OnRequestAvatarProperties += RequestAvatarPropertiesHandler; |
155 | |||
138 | client.OnUpdateAvatarProperties += UpdateAvatarPropertiesHandler; | 156 | client.OnUpdateAvatarProperties += UpdateAvatarPropertiesHandler; |
139 | client.OnAvatarInterestUpdate += AvatarInterestUpdateHandler; | 157 | client.OnAvatarInterestUpdate += AvatarInterestUpdateHandler; |
140 | client.OnUserInfoRequest += UserInfoRequestHandler; | 158 | client.OnUserInfoRequest += UserInfoRequestHandler; |
@@ -302,12 +320,25 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
302 | System.Globalization.CultureInfo.InvariantCulture), charterMember, about["FLAbout"].AsString(), (uint)flags, | 320 | System.Globalization.CultureInfo.InvariantCulture), charterMember, about["FLAbout"].AsString(), (uint)flags, |
303 | about["FLImage"].AsUUID(), about["Image"].AsUUID(), about["URL"].AsString(), user["Partner"].AsUUID()); | 321 | about["FLImage"].AsUUID(), about["Image"].AsUUID(), about["URL"].AsString(), user["Partner"].AsUUID()); |
304 | 322 | ||
323 | OSDMap interests = null; | ||
324 | if (user.ContainsKey("LLInterests")) | ||
325 | { | ||
326 | try | ||
327 | { | ||
328 | interests = OSDParser.DeserializeJson(user["LLInterests"].AsString()) as OSDMap; | ||
329 | client.SendAvatarInterestsReply(avatarID, interests["WantMask"].AsUInteger(), interests["WantText"].AsString(), interests["SkillsMask"].AsUInteger(), interests["SkillsText"].AsString(), interests["languages"].AsString()); | ||
330 | } | ||
331 | catch { } | ||
332 | } | ||
333 | |||
334 | if (about == null) | ||
335 | about = new OSDMap(0); | ||
305 | } | 336 | } |
306 | else | 337 | else |
307 | { | 338 | { |
308 | m_log.Warn("[SIMIAN PROFILES]: Failed to fetch profile information for " + client.Name + ", returning default values"); | 339 | m_log.Warn("[SIMIAN PROFILES]: Failed to fetch profile information for " + client.Name + ", returning default values"); |
309 | client.SendAvatarProperties(avatarID, String.Empty, "1/1/1970", Utils.EmptyBytes, | 340 | client.SendAvatarProperties(avatarID, String.Empty, "1/1/1970", Utils.EmptyBytes, |
310 | String.Empty, (uint)flags, UUID.Zero, UUID.Zero, String.Empty, UUID.Zero); | 341 | String.Empty, (uint)flags, UUID.Zero, UUID.Zero, String.Empty, UUID.Zero); |
311 | } | 342 | } |
312 | } | 343 | } |
313 | 344 | ||
diff --git a/bin/config-include/SimianGrid.ini b/bin/config-include/SimianGrid.ini index 41deb92..65d4ea6 100644 --- a/bin/config-include/SimianGrid.ini +++ b/bin/config-include/SimianGrid.ini | |||
@@ -65,3 +65,6 @@ | |||
65 | MessagingModule = GroupsMessagingModule | 65 | MessagingModule = GroupsMessagingModule |
66 | MessagingEnabled = true | 66 | MessagingEnabled = true |
67 | ServicesConnectorModule = SimianGroupsServicesConnector | 67 | ServicesConnectorModule = SimianGroupsServicesConnector |
68 | |||
69 | [Profiles] | ||
70 | Module = SimianProfiles | ||