aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rwxr-xr-xOpenSim/Framework/Console/ConsoleBase.cs2
-rw-r--r--OpenSim/Framework/Servers/VersionInfo.cs2
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs10
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs59
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs3
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs7
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs2
-rw-r--r--OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs35
-rw-r--r--bin/config-include/SimianGrid.ini3
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