diff --git a/.nant/local.include b/.nant/local.include
index 0b6f9feafd..0279f257b0 100644
--- a/.nant/local.include
+++ b/.nant/local.include
@@ -20,6 +20,7 @@
+
@@ -29,7 +30,7 @@
-
+
diff --git a/OpenSim/Framework/Console/ConsoleBase.cs b/OpenSim/Framework/Console/ConsoleBase.cs
index b70d1dbdc6..aab920b09a 100755
--- a/OpenSim/Framework/Console/ConsoleBase.cs
+++ b/OpenSim/Framework/Console/ConsoleBase.cs
@@ -118,7 +118,7 @@ namespace OpenSim.Framework.Console
// (Done with no echo and suitable for passwords)
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)
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs b/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs
index fbf4648155..704790ee28 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs
@@ -88,7 +88,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
public void Initialise(IConfigSource source)
{
- if (Simian.IsSimianEnabled(source, "UserAccountServices", this.Name))
+ if (Simian.IsSimianEnabled(source, "UserAccountServices", "SimianUserAccountServiceConnector"))
{
IConfig gridConfig = source.Configs["UserAccountService"];
if (gridConfig == null)
@@ -108,6 +108,23 @@ namespace OpenSim.Services.Connectors.SimianGrid
serviceUrl = 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
client.OnRequestAvatarProperties += RequestAvatarPropertiesHandler;
+
client.OnUpdateAvatarProperties += UpdateAvatarPropertiesHandler;
client.OnAvatarInterestUpdate += AvatarInterestUpdateHandler;
client.OnUserInfoRequest += UserInfoRequestHandler;
@@ -302,12 +320,25 @@ namespace OpenSim.Services.Connectors.SimianGrid
System.Globalization.CultureInfo.InvariantCulture), charterMember, about["FLAbout"].AsString(), (uint)flags,
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
{
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,
- String.Empty, (uint)flags, UUID.Zero, UUID.Zero, String.Empty, UUID.Zero);
+ String.Empty, (uint)flags, UUID.Zero, UUID.Zero, String.Empty, UUID.Zero);
}
}
diff --git a/OpenSim/Services/InventoryService/XInventoryService.cs b/OpenSim/Services/InventoryService/XInventoryService.cs
index bb24292bf2..f581f76d90 100644
--- a/OpenSim/Services/InventoryService/XInventoryService.cs
+++ b/OpenSim/Services/InventoryService/XInventoryService.cs
@@ -45,6 +45,7 @@ namespace OpenSim.Services.InventoryService
MethodBase.GetCurrentMethod().DeclaringType);
protected IXInventoryData m_Database;
+ protected bool m_AllowDelete = true;
public XInventoryService(IConfigSource config) : base(config)
{
@@ -60,6 +61,7 @@ namespace OpenSim.Services.InventoryService
{
dllName = authConfig.GetString("StorageProvider", dllName);
connString = authConfig.GetString("ConnectionString", connString);
+ m_AllowDelete = authConfig.GetBoolean("AllowDelete", true);
// realm = authConfig.GetString("Realm", realm);
}
@@ -304,10 +306,15 @@ namespace OpenSim.Services.InventoryService
//
public virtual bool DeleteFolders(UUID principalID, List folderIDs)
{
+ if (!m_AllowDelete)
+ return false;
+
// Ignore principal ID, it's bogus at connector level
//
foreach (UUID id in folderIDs)
{
+ if (!ParentIsTrash(id))
+ continue;
InventoryFolderBase f = new InventoryFolderBase();
f.ID = id;
PurgeFolder(f);
@@ -319,6 +326,12 @@ namespace OpenSim.Services.InventoryService
public virtual bool PurgeFolder(InventoryFolderBase folder)
{
+ if (!m_AllowDelete)
+ return false;
+
+ if (!ParentIsTrash(folder.ID))
+ return false;
+
XInventoryFolder[] subFolders = m_Database.GetFolders(
new string[] { "parentFolderID" },
new string[] { folder.ID.ToString() });
@@ -358,6 +371,9 @@ namespace OpenSim.Services.InventoryService
public virtual bool DeleteItems(UUID principalID, List itemIDs)
{
+ if (!m_AllowDelete)
+ return false;
+
// Just use the ID... *facepalms*
//
foreach (UUID id in itemIDs)
@@ -519,5 +535,29 @@ namespace OpenSim.Services.InventoryService
return newItem;
}
+
+ private bool ParentIsTrash(UUID folderID)
+ {
+ XInventoryFolder[] folder = m_Database.GetFolders(new string[] {"folderID"}, new string[] {folderID.ToString()});
+ if (folder.Length < 1)
+ return false;
+
+ UUID parentFolder = folder[0].parentFolderID;
+
+ while (parentFolder != UUID.Zero)
+ {
+ XInventoryFolder[] parent = m_Database.GetFolders(new string[] {"folderID"}, new string[] {parentFolder.ToString()});
+ if (parent.Length < 1)
+ return false;
+
+ if (parent[0].type == (int)AssetType.TrashFolder)
+ return true;
+ if (parent[0].type == (int)AssetType.RootFolder)
+ return false;
+
+ parentFolder = parent[0].parentFolderID;
+ }
+ return false;
+ }
}
}
diff --git a/bin/config-include/SimianGrid.ini b/bin/config-include/SimianGrid.ini
index 41deb92db2..65d4ea60df 100644
--- a/bin/config-include/SimianGrid.ini
+++ b/bin/config-include/SimianGrid.ini
@@ -65,3 +65,6 @@
MessagingModule = GroupsMessagingModule
MessagingEnabled = true
ServicesConnectorModule = SimianGroupsServicesConnector
+
+[Profiles]
+ Module = SimianProfiles