Merge branch '0.7-post-fixes' of ssh://opensimulator.org/var/git/opensim into 0.7-post-fixes
commit
18117d8c9a
|
@ -118,7 +118,7 @@ namespace OpenSim.Framework.Console
|
||||||
// (Done with no echo and suitable for passwords)
|
// (Done with no echo and suitable for passwords)
|
||||||
public string PasswdPrompt(string p)
|
public string PasswdPrompt(string p)
|
||||||
{
|
{
|
||||||
return ReadLine(p, false, false);
|
return ReadLine(String.Format("{0}: ", p), false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual string ReadLine(string p, bool isCommand, bool e)
|
public virtual string ReadLine(string p, bool isCommand, bool e)
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace OpenSim
|
||||||
public class VersionInfo
|
public class VersionInfo
|
||||||
{
|
{
|
||||||
private const string VERSION_NUMBER = "0.7";
|
private const string VERSION_NUMBER = "0.7";
|
||||||
private const Flavour VERSION_FLAVOUR = Flavour.Release;
|
private const Flavour VERSION_FLAVOUR = Flavour.Post_Fixes;
|
||||||
|
|
||||||
public enum Flavour
|
public enum Flavour
|
||||||
{
|
{
|
||||||
|
|
|
@ -81,14 +81,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog
|
||||||
{
|
{
|
||||||
ScenePresence sp = m_scene.GetScenePresence(agentID);
|
ScenePresence sp = m_scene.GetScenePresence(agentID);
|
||||||
|
|
||||||
if (sp != null && !sp.IsChildAgent)
|
if (sp != null)
|
||||||
sp.ControllingClient.SendAgentAlertMessage(message, modal);
|
sp.ControllingClient.SendAgentAlertMessage(message, modal);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendAlertToUser(string firstName, string lastName, string message, bool modal)
|
public void SendAlertToUser(string firstName, string lastName, string message, bool modal)
|
||||||
{
|
{
|
||||||
ScenePresence presence = m_scene.GetScenePresence(firstName, lastName);
|
ScenePresence presence = m_scene.GetScenePresence(firstName, lastName);
|
||||||
if (presence != null && !presence.IsChildAgent)
|
if (presence != null)
|
||||||
presence.ControllingClient.SendAgentAlertMessage(message, modal);
|
presence.ControllingClient.SendAgentAlertMessage(message, modal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog
|
||||||
}
|
}
|
||||||
|
|
||||||
ScenePresence sp = m_scene.GetScenePresence(avatarID);
|
ScenePresence sp = m_scene.GetScenePresence(avatarID);
|
||||||
if (sp != null && !sp.IsChildAgent)
|
if (sp != null)
|
||||||
sp.ControllingClient.SendDialog(objectName, objectID, ownerFirstName, ownerLastName, message, textureID, ch, buttonlabels);
|
sp.ControllingClient.SendDialog(objectName, objectID, ownerFirstName, ownerLastName, message, textureID, ch, buttonlabels);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog
|
||||||
{
|
{
|
||||||
ScenePresence sp = m_scene.GetScenePresence(avatarID);
|
ScenePresence sp = m_scene.GetScenePresence(avatarID);
|
||||||
|
|
||||||
if (sp != null && !sp.IsChildAgent)
|
if (sp != null)
|
||||||
sp.ControllingClient.SendLoadURL(objectName, objectID, ownerID, groupOwned, message, url);
|
sp.ControllingClient.SendLoadURL(objectName, objectID, ownerID, groupOwned, message, url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog
|
||||||
|
|
||||||
ScenePresence sp = m_scene.GetScenePresence(avatarid);
|
ScenePresence sp = m_scene.GetScenePresence(avatarid);
|
||||||
|
|
||||||
if (sp != null && !sp.IsChildAgent)
|
if (sp != null)
|
||||||
sp.ControllingClient.SendTextBoxRequest(message, chatChannel, name, ownerFirstName, ownerLastName, objectid);
|
sp.ControllingClient.SendTextBoxRequest(message, chatChannel, name, ownerFirstName, ownerLastName, objectid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -915,6 +915,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
SceneObjectGroup group = part.ParentGroup;
|
SceneObjectGroup group = part.ParentGroup;
|
||||||
if (group != null)
|
if (group != null)
|
||||||
{
|
{
|
||||||
|
if (!Permissions.CanEditObjectInventory(part.UUID, remoteClient.AgentId))
|
||||||
|
return;
|
||||||
|
|
||||||
TaskInventoryItem item = group.GetInventoryItem(localID, itemID);
|
TaskInventoryItem item = group.GetInventoryItem(localID, itemID);
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return;
|
return;
|
||||||
|
@ -1054,9 +1057,21 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only owner can copy
|
TaskInventoryItem item = part.Inventory.GetInventoryItem(itemId);
|
||||||
if (remoteClient.AgentId != taskItem.OwnerID)
|
if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
|
||||||
return;
|
{
|
||||||
|
// If the item to be moved is no copy, we need to be able to
|
||||||
|
// edit the prim.
|
||||||
|
if (!Permissions.CanEditObjectInventory(part.UUID, remoteClient.AgentId))
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// If the item is copiable, then we just need to have perms
|
||||||
|
// on it. The delete check is a pure rights check
|
||||||
|
if (!Permissions.CanDeleteObject(part.UUID, remoteClient.AgentId))
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
MoveTaskInventoryItem(remoteClient, folderId, part, itemId);
|
MoveTaskInventoryItem(remoteClient, folderId, part, itemId);
|
||||||
}
|
}
|
||||||
|
@ -1339,16 +1354,48 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
agentTransactions.HandleTaskItemUpdateFromTransaction(
|
agentTransactions.HandleTaskItemUpdateFromTransaction(
|
||||||
remoteClient, part, transactionID, currentItem);
|
remoteClient, part, transactionID, currentItem);
|
||||||
}
|
|
||||||
if (part.Inventory.UpdateInventoryItem(itemInfo))
|
|
||||||
{
|
|
||||||
if ((InventoryType)itemInfo.InvType == InventoryType.Notecard)
|
if ((InventoryType)itemInfo.InvType == InventoryType.Notecard)
|
||||||
remoteClient.SendAgentAlertMessage("Notecard saved", false);
|
remoteClient.SendAgentAlertMessage("Notecard saved", false);
|
||||||
else if ((InventoryType)itemInfo.InvType == InventoryType.LSL)
|
else if ((InventoryType)itemInfo.InvType == InventoryType.LSL)
|
||||||
remoteClient.SendAgentAlertMessage("Script saved", false);
|
remoteClient.SendAgentAlertMessage("Script saved", false);
|
||||||
else
|
else
|
||||||
remoteClient.SendAgentAlertMessage("Item saved", false);
|
remoteClient.SendAgentAlertMessage("Item saved", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Base ALWAYS has move
|
||||||
|
currentItem.BasePermissions |= (uint)PermissionMask.Move;
|
||||||
|
|
||||||
|
// Check if we're allowed to mess with permissions
|
||||||
|
if (!Permissions.IsGod(remoteClient.AgentId)) // Not a god
|
||||||
|
{
|
||||||
|
if (remoteClient.AgentId != part.OwnerID) // Not owner
|
||||||
|
{
|
||||||
|
// Friends and group members can't change any perms
|
||||||
|
itemInfo.BasePermissions = currentItem.BasePermissions;
|
||||||
|
itemInfo.EveryonePermissions = currentItem.EveryonePermissions;
|
||||||
|
itemInfo.GroupPermissions = currentItem.GroupPermissions;
|
||||||
|
itemInfo.NextPermissions = currentItem.NextPermissions;
|
||||||
|
itemInfo.CurrentPermissions = currentItem.CurrentPermissions;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Owner can't change base, and can change other
|
||||||
|
// only up to base
|
||||||
|
itemInfo.BasePermissions = currentItem.BasePermissions;
|
||||||
|
itemInfo.EveryonePermissions &= currentItem.BasePermissions;
|
||||||
|
itemInfo.GroupPermissions &= currentItem.BasePermissions;
|
||||||
|
itemInfo.CurrentPermissions &= currentItem.BasePermissions;
|
||||||
|
itemInfo.NextPermissions &= currentItem.BasePermissions;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Next ALWAYS has move
|
||||||
|
itemInfo.NextPermissions |= (uint)PermissionMask.Move;
|
||||||
|
|
||||||
|
if (part.Inventory.UpdateInventoryItem(itemInfo))
|
||||||
|
{
|
||||||
part.GetProperties(remoteClient);
|
part.GetProperties(remoteClient);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,6 +136,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
protected SceneCommunicationService m_sceneGridService;
|
protected SceneCommunicationService m_sceneGridService;
|
||||||
public bool LoginsDisabled = true;
|
public bool LoginsDisabled = true;
|
||||||
|
public bool LoadingPrims = false;
|
||||||
|
|
||||||
public new float TimeDilation
|
public new float TimeDilation
|
||||||
{
|
{
|
||||||
|
@ -1879,6 +1880,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual void LoadPrimsFromStorage(UUID regionID)
|
public virtual void LoadPrimsFromStorage(UUID regionID)
|
||||||
{
|
{
|
||||||
|
LoadingPrims = true;
|
||||||
m_log.Info("[SCENE]: Loading objects from datastore");
|
m_log.Info("[SCENE]: Loading objects from datastore");
|
||||||
|
|
||||||
List<SceneObjectGroup> PrimsFromDB = m_storageManager.DataStore.LoadObjects(regionID);
|
List<SceneObjectGroup> PrimsFromDB = m_storageManager.DataStore.LoadObjects(regionID);
|
||||||
|
@ -1902,6 +1904,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
|
|
||||||
m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)");
|
m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)");
|
||||||
|
LoadingPrims = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -294,7 +294,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
if ((m_scene.TestBorderCross(val - Vector3.UnitX, Cardinals.E) || m_scene.TestBorderCross(val + Vector3.UnitX, Cardinals.W)
|
if ((m_scene.TestBorderCross(val - Vector3.UnitX, Cardinals.E) || m_scene.TestBorderCross(val + Vector3.UnitX, Cardinals.W)
|
||||||
|| m_scene.TestBorderCross(val - Vector3.UnitY, Cardinals.N) || m_scene.TestBorderCross(val + Vector3.UnitY, Cardinals.S))
|
|| m_scene.TestBorderCross(val - Vector3.UnitY, Cardinals.N) || m_scene.TestBorderCross(val + Vector3.UnitY, Cardinals.S))
|
||||||
&& !IsAttachmentCheckFull())
|
&& !IsAttachmentCheckFull() && (!m_scene.LoadingPrims))
|
||||||
{
|
{
|
||||||
m_scene.CrossPrimGroupIntoNewRegion(val, this, true);
|
m_scene.CrossPrimGroupIntoNewRegion(val, this, true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4137,6 +4137,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
case 16:
|
case 16:
|
||||||
_nextOwnerMask = ApplyMask(_nextOwnerMask, set, mask) &
|
_nextOwnerMask = ApplyMask(_nextOwnerMask, set, mask) &
|
||||||
baseMask;
|
baseMask;
|
||||||
|
// Prevent the client from creating no mod, no copy
|
||||||
|
// objects
|
||||||
|
if ((_nextOwnerMask & (uint)PermissionMask.Copy) == 0)
|
||||||
|
_nextOwnerMask |= (uint)PermissionMask.Transfer;
|
||||||
|
|
||||||
|
_nextOwnerMask |= (uint)PermissionMask.Move;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
SendFullUpdateToAllClients();
|
SendFullUpdateToAllClients();
|
||||||
|
|
|
@ -88,7 +88,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
|
||||||
|
|
||||||
public void Initialise(IConfigSource source)
|
public void Initialise(IConfigSource source)
|
||||||
{
|
{
|
||||||
if (Simian.IsSimianEnabled(source, "UserAccountServices", this.Name))
|
if (Simian.IsSimianEnabled(source, "UserAccountServices", "SimianUserAccountServiceConnector"))
|
||||||
{
|
{
|
||||||
IConfig gridConfig = source.Configs["UserAccountService"];
|
IConfig gridConfig = source.Configs["UserAccountService"];
|
||||||
if (gridConfig == null)
|
if (gridConfig == null)
|
||||||
|
@ -108,6 +108,23 @@ namespace OpenSim.Services.Connectors.SimianGrid
|
||||||
serviceUrl = serviceUrl + '/';
|
serviceUrl = serviceUrl + '/';
|
||||||
|
|
||||||
m_serverUrl = serviceUrl;
|
m_serverUrl = serviceUrl;
|
||||||
|
IConfig profilesConfig = source.Configs["Profiles"];
|
||||||
|
if (profilesConfig == null)
|
||||||
|
{
|
||||||
|
// Do not run this module by default.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// if profiles aren't enabled, we're not needed.
|
||||||
|
// if we're not specified as the connector to use, then we're not wanted
|
||||||
|
if (profilesConfig.GetString("Module", String.Empty) != Name)
|
||||||
|
{
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
m_log.InfoFormat("[SIMIAN ACCOUNT CONNECTOR]: Initializing {0}", this.Name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,6 +152,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
|
||||||
|
|
||||||
// Profiles
|
// Profiles
|
||||||
client.OnRequestAvatarProperties += RequestAvatarPropertiesHandler;
|
client.OnRequestAvatarProperties += RequestAvatarPropertiesHandler;
|
||||||
|
|
||||||
client.OnUpdateAvatarProperties += UpdateAvatarPropertiesHandler;
|
client.OnUpdateAvatarProperties += UpdateAvatarPropertiesHandler;
|
||||||
client.OnAvatarInterestUpdate += AvatarInterestUpdateHandler;
|
client.OnAvatarInterestUpdate += AvatarInterestUpdateHandler;
|
||||||
client.OnUserInfoRequest += UserInfoRequestHandler;
|
client.OnUserInfoRequest += UserInfoRequestHandler;
|
||||||
|
@ -302,12 +320,25 @@ namespace OpenSim.Services.Connectors.SimianGrid
|
||||||
System.Globalization.CultureInfo.InvariantCulture), charterMember, about["FLAbout"].AsString(), (uint)flags,
|
System.Globalization.CultureInfo.InvariantCulture), charterMember, about["FLAbout"].AsString(), (uint)flags,
|
||||||
about["FLImage"].AsUUID(), about["Image"].AsUUID(), about["URL"].AsString(), user["Partner"].AsUUID());
|
about["FLImage"].AsUUID(), about["Image"].AsUUID(), about["URL"].AsString(), user["Partner"].AsUUID());
|
||||||
|
|
||||||
|
OSDMap interests = null;
|
||||||
|
if (user.ContainsKey("LLInterests"))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
interests = OSDParser.DeserializeJson(user["LLInterests"].AsString()) as OSDMap;
|
||||||
|
client.SendAvatarInterestsReply(avatarID, interests["WantMask"].AsUInteger(), interests["WantText"].AsString(), interests["SkillsMask"].AsUInteger(), interests["SkillsText"].AsString(), interests["languages"].AsString());
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (about == null)
|
||||||
|
about = new OSDMap(0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Warn("[SIMIAN PROFILES]: Failed to fetch profile information for " + client.Name + ", returning default values");
|
m_log.Warn("[SIMIAN PROFILES]: Failed to fetch profile information for " + client.Name + ", returning default values");
|
||||||
client.SendAvatarProperties(avatarID, String.Empty, "1/1/1970", Utils.EmptyBytes,
|
client.SendAvatarProperties(avatarID, String.Empty, "1/1/1970", Utils.EmptyBytes,
|
||||||
String.Empty, (uint)flags, UUID.Zero, UUID.Zero, String.Empty, UUID.Zero);
|
String.Empty, (uint)flags, UUID.Zero, UUID.Zero, String.Empty, UUID.Zero);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,3 +65,6 @@
|
||||||
MessagingModule = GroupsMessagingModule
|
MessagingModule = GroupsMessagingModule
|
||||||
MessagingEnabled = true
|
MessagingEnabled = true
|
||||||
ServicesConnectorModule = SimianGroupsServicesConnector
|
ServicesConnectorModule = SimianGroupsServicesConnector
|
||||||
|
|
||||||
|
[Profiles]
|
||||||
|
Module = SimianProfiles
|
||||||
|
|
Loading…
Reference in New Issue