diff --git a/OpenSim/Framework/ThrottleOutPacketType.cs b/OpenSim/Framework/ThrottleOutPacketType.cs
index 87899f0870..ca4b126c97 100644
--- a/OpenSim/Framework/ThrottleOutPacketType.cs
+++ b/OpenSim/Framework/ThrottleOutPacketType.cs
@@ -47,8 +47,6 @@ namespace OpenSim.Framework
Texture = 5,
/// Non-texture assets
Asset = 6,
-
- HighPriority = 128,
}
[Flags]
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
index 7a4f981da6..03cd32eaa7 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
@@ -38,7 +38,6 @@ using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces;
using OpenSim.Services.Connectors;
-using OpenSim.Services.Connectors.SimianGrid;
using OpenMetaverse;
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
@@ -694,18 +693,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
{
// Still not as flexible as I would like this to be,
// but good enough for now
- string connectorType = new HeloServicesConnector(url).Helo();
- m_log.DebugFormat("[HG INVENTORY SERVICE]: HELO returned {0}", connectorType);
- if (connectorType == "opensim-simian")
- {
- connector = new SimianInventoryServiceConnector(url);
- }
- else
- {
- RemoteXInventoryServicesConnector rxisc = new RemoteXInventoryServicesConnector(url);
- rxisc.Scene = m_Scenes[0];
- connector = rxisc;
- }
+ RemoteXInventoryServicesConnector rxisc = new RemoteXInventoryServicesConnector(url);
+ rxisc.Scene = m_Scenes[0];
+ connector = rxisc;
m_connectors.Add(url, connector);
}
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs
deleted file mode 100644
index 98c7ed4d42..0000000000
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs
+++ /dev/null
@@ -1,1439 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Reflection;
-using System.Threading;
-
-using Nwc.XmlRpc;
-
-using log4net;
-using Mono.Addins;
-using Nini.Config;
-
-using OpenMetaverse;
-using OpenMetaverse.StructuredData;
-
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Services.Interfaces;
-
-/***************************************************************************
- * Simian Data Map
- * ===============
- *
- * OwnerID -> Type -> Key
- * -----------------------
- *
- * UserID -> Group -> ActiveGroup
- * + GroupID
- *
- * UserID -> GroupSessionDropped -> GroupID
- * UserID -> GroupSessionInvited -> GroupID
- *
- * UserID -> GroupMember -> GroupID
- * + SelectedRoleID [UUID]
- * + AcceptNotices [bool]
- * + ListInProfile [bool]
- * + Contribution [int]
- *
- * UserID -> GroupRole[GroupID] -> RoleID
- *
- *
- * GroupID -> Group -> GroupName
- * + Charter
- * + ShowInList
- * + InsigniaID
- * + MembershipFee
- * + OpenEnrollment
- * + AllowPublish
- * + MaturePublish
- * + FounderID
- * + EveryonePowers
- * + OwnerRoleID
- * + OwnersPowers
- *
- * GroupID -> GroupRole -> RoleID
- * + Name
- * + Description
- * + Title
- * + Powers
- *
- * GroupID -> GroupMemberInvite -> InviteID
- * + AgentID
- * + RoleID
- *
- * GroupID -> GroupNotice -> NoticeID
- * + TimeStamp [uint]
- * + FromName [string]
- * + Subject [string]
- * + Message [string]
- * + BinaryBucket [byte[]]
- *
- * */
-
-namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
-{
- [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "SimianGroupsServicesConnectorModule")]
- public class SimianGroupsServicesConnectorModule : ISharedRegionModule, IGroupsServicesConnector
- {
- private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- public const GroupPowers m_DefaultEveryonePowers = GroupPowers.AllowSetHome |
- GroupPowers.Accountable |
- GroupPowers.JoinChat |
- GroupPowers.AllowVoiceChat |
- GroupPowers.ReceiveNotices |
- GroupPowers.StartProposal |
- GroupPowers.VoteOnProposal;
-
- // Would this be cleaner as (GroupPowers)ulong.MaxValue;
- public const GroupPowers m_DefaultOwnerPowers = GroupPowers.Accountable
- | GroupPowers.AllowEditLand
- | GroupPowers.AllowFly
- | GroupPowers.AllowLandmark
- | GroupPowers.AllowRez
- | GroupPowers.AllowSetHome
- | GroupPowers.AllowVoiceChat
- | GroupPowers.AssignMember
- | GroupPowers.AssignMemberLimited
- | GroupPowers.ChangeActions
- | GroupPowers.ChangeIdentity
- | GroupPowers.ChangeMedia
- | GroupPowers.ChangeOptions
- | GroupPowers.CreateRole
- | GroupPowers.DeedObject
- | GroupPowers.DeleteRole
- | GroupPowers.Eject
- | GroupPowers.FindPlaces
- | GroupPowers.Invite
- | GroupPowers.JoinChat
- | GroupPowers.LandChangeIdentity
- | GroupPowers.LandDeed
- | GroupPowers.LandDivideJoin
- | GroupPowers.LandEdit
- | GroupPowers.LandEjectAndFreeze
- | GroupPowers.LandGardening
- | GroupPowers.LandManageAllowed
- | GroupPowers.LandManageBanned
- | GroupPowers.LandManagePasses
- | GroupPowers.LandOptions
- | GroupPowers.LandRelease
- | GroupPowers.LandSetSale
- | GroupPowers.ModerateChat
- | GroupPowers.ObjectManipulate
- | GroupPowers.ObjectSetForSale
- | GroupPowers.ReceiveNotices
- | GroupPowers.RemoveMember
- | GroupPowers.ReturnGroupOwned
- | GroupPowers.ReturnGroupSet
- | GroupPowers.ReturnNonGroup
- | GroupPowers.RoleProperties
- | GroupPowers.SendNotices
- | GroupPowers.SetLandingPoint
- | GroupPowers.StartProposal
- | GroupPowers.VoteOnProposal;
-
- private bool m_connectorEnabled = false;
-
- private string m_groupsServerURI = string.Empty;
-
- private bool m_debugEnabled = false;
-
- private Dictionary m_pendingRequests = new Dictionary();
-
- private ExpiringCache m_memoryCache;
- private int m_cacheTimeout = 30;
-
- // private IUserAccountService m_accountService = null;
-
-
- #region Region Module interfaceBase Members
-
- public string Name
- {
- get { return "SimianGroupsServicesConnector"; }
- }
-
- // this module is not intended to be replaced, but there should only be 1 of them.
- public Type ReplaceableInterface
- {
- get { return null; }
- }
-
- public void Initialise(IConfigSource config)
- {
- IConfig groupsConfig = config.Configs["Groups"];
-
- if (groupsConfig == null)
- {
- // Do not run this module by default.
- return;
- }
- else
- {
- // if groups aren't enabled, we're not needed.
- // if we're not specified as the connector to use, then we're not wanted
- if ((groupsConfig.GetBoolean("Enabled", false) == false)
- || (groupsConfig.GetString("ServicesConnectorModule", "XmlRpcGroupsServicesConnector") != Name))
- {
- m_connectorEnabled = false;
- return;
- }
-
- m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR]: Initializing {0}", this.Name);
-
- m_groupsServerURI = groupsConfig.GetString("GroupsServerURI", string.Empty);
- if (string.IsNullOrEmpty(m_groupsServerURI))
- {
- m_log.ErrorFormat("Please specify a valid Simian Server for GroupsServerURI in OpenSim.ini, [Groups]");
- m_connectorEnabled = false;
- return;
- }
-
-
- m_cacheTimeout = groupsConfig.GetInt("GroupsCacheTimeout", 30);
- if (m_cacheTimeout == 0)
- {
- m_log.WarnFormat("[SIMIAN-GROUPS-CONNECTOR] Groups Cache Disabled.");
- }
- else
- {
- m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] Groups Cache Timeout set to {0}.", m_cacheTimeout);
- }
-
-
-
- m_memoryCache = new ExpiringCache();
-
-
- // If we got all the config options we need, lets start'er'up
- m_connectorEnabled = true;
-
- m_debugEnabled = groupsConfig.GetBoolean("DebugEnabled", true);
-
- }
- }
-
- public void Close()
- {
- }
-
- public void AddRegion(OpenSim.Region.Framework.Scenes.Scene scene)
- {
- if (m_connectorEnabled)
- {
- scene.RegisterModuleInterface(this);
- }
- }
-
- public void RemoveRegion(OpenSim.Region.Framework.Scenes.Scene scene)
- {
- if (scene.RequestModuleInterface() == this)
- {
- scene.UnregisterModuleInterface(this);
- }
- }
-
- public void RegionLoaded(OpenSim.Region.Framework.Scenes.Scene scene)
- {
- // TODO: May want to consider listenning for Agent Connections so we can pre-cache group info
- // scene.EventManager.OnNewClient += OnNewClient;
- }
-
- #endregion
-
- #region ISharedRegionModule Members
-
- public void PostInitialise()
- {
- // NoOp
- }
-
- #endregion
-
-
-
-
- #region IGroupsServicesConnector Members
-
- ///
- /// Create a Group, including Everyone and Owners Role, place FounderID in both groups, select Owner as selected role, and newly created group as agent's active role.
- ///
- public UUID CreateGroup(UUID requestingAgentID, string name, string charter, bool showInList, UUID insigniaID,
- int membershipFee, bool openEnrollment, bool allowPublish,
- bool maturePublish, UUID founderID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- UUID GroupID = UUID.Random();
- UUID OwnerRoleID = UUID.Random();
-
- OSDMap GroupInfoMap = new OSDMap();
- GroupInfoMap["Charter"] = OSD.FromString(charter);
- GroupInfoMap["ShowInList"] = OSD.FromBoolean(showInList);
- GroupInfoMap["InsigniaID"] = OSD.FromUUID(insigniaID);
- GroupInfoMap["MembershipFee"] = OSD.FromInteger(0);
- GroupInfoMap["OpenEnrollment"] = OSD.FromBoolean(openEnrollment);
- GroupInfoMap["AllowPublish"] = OSD.FromBoolean(allowPublish);
- GroupInfoMap["MaturePublish"] = OSD.FromBoolean(maturePublish);
- GroupInfoMap["FounderID"] = OSD.FromUUID(founderID);
- GroupInfoMap["EveryonePowers"] = OSD.FromULong((ulong)m_DefaultEveryonePowers);
- GroupInfoMap["OwnerRoleID"] = OSD.FromUUID(OwnerRoleID);
- GroupInfoMap["OwnersPowers"] = OSD.FromULong((ulong)m_DefaultOwnerPowers);
-
- if (SimianAddGeneric(GroupID, "Group", name, GroupInfoMap))
- {
- AddGroupRole(requestingAgentID, GroupID, UUID.Zero, "Everyone", "Members of " + name, "Member of " + name, (ulong)m_DefaultEveryonePowers);
- AddGroupRole(requestingAgentID, GroupID, OwnerRoleID, "Owners", "Owners of " + name, "Owner of " + name, (ulong)m_DefaultOwnerPowers);
-
- AddAgentToGroup(requestingAgentID, requestingAgentID, GroupID, OwnerRoleID);
-
- return GroupID;
- }
- else
- {
- return UUID.Zero;
- }
- }
-
-
- public void UpdateGroup(UUID requestingAgentID, UUID groupID, string charter, bool showInList,
- UUID insigniaID, int membershipFee, bool openEnrollment,
- bool allowPublish, bool maturePublish)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
- // TODO: Check to make sure requestingAgentID has permission to update group
-
- string GroupName;
- OSDMap GroupInfoMap;
- if (SimianGetFirstGenericEntry(groupID, "GroupInfo", out GroupName, out GroupInfoMap))
- {
- GroupInfoMap["Charter"] = OSD.FromString(charter);
- GroupInfoMap["ShowInList"] = OSD.FromBoolean(showInList);
- GroupInfoMap["InsigniaID"] = OSD.FromUUID(insigniaID);
- GroupInfoMap["MembershipFee"] = OSD.FromInteger(0);
- GroupInfoMap["OpenEnrollment"] = OSD.FromBoolean(openEnrollment);
- GroupInfoMap["AllowPublish"] = OSD.FromBoolean(allowPublish);
- GroupInfoMap["MaturePublish"] = OSD.FromBoolean(maturePublish);
-
- SimianAddGeneric(groupID, "Group", GroupName, GroupInfoMap);
- }
-
- }
-
-
- public void AddGroupRole(UUID requestingAgentID, UUID groupID, UUID roleID, string name, string description,
- string title, ulong powers)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- OSDMap GroupRoleInfo = new OSDMap();
- GroupRoleInfo["Name"] = OSD.FromString(name);
- GroupRoleInfo["Description"] = OSD.FromString(description);
- GroupRoleInfo["Title"] = OSD.FromString(title);
- GroupRoleInfo["Powers"] = OSD.FromULong((ulong)powers);
-
- // TODO: Add security, make sure that requestingAgentID has permision to add roles
- SimianAddGeneric(groupID, "GroupRole", roleID.ToString(), GroupRoleInfo);
- }
-
- public void RemoveGroupRole(UUID requestingAgentID, UUID groupID, UUID roleID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- // TODO: Add security
-
- // Can't delete the Everyone Role
- if (roleID != UUID.Zero)
- {
- // Remove all GroupRole Members from Role
- Dictionary GroupRoleMembers;
- string GroupRoleMemberType = "GroupRole" + groupID.ToString();
- if (SimianGetGenericEntries(GroupRoleMemberType, roleID.ToString(), out GroupRoleMembers))
- {
- foreach (UUID UserID in GroupRoleMembers.Keys)
- {
- EnsureRoleNotSelectedByMember(groupID, roleID, UserID);
-
- SimianRemoveGenericEntry(UserID, GroupRoleMemberType, roleID.ToString());
- }
- }
-
- // Remove role
- SimianRemoveGenericEntry(groupID, "GroupRole", roleID.ToString());
- }
- }
-
-
- public void UpdateGroupRole(UUID requestingAgentID, UUID groupID, UUID roleID, string name, string description,
- string title, ulong powers)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- // TODO: Security, check that requestingAgentID is allowed to update group roles
-
- OSDMap GroupRoleInfo;
- if (SimianGetGenericEntry(groupID, "GroupRole", roleID.ToString(), out GroupRoleInfo))
- {
- if (name != null)
- {
- GroupRoleInfo["Name"] = OSD.FromString(name);
- }
- if (description != null)
- {
- GroupRoleInfo["Description"] = OSD.FromString(description);
- }
- if (title != null)
- {
- GroupRoleInfo["Title"] = OSD.FromString(title);
- }
- GroupRoleInfo["Powers"] = OSD.FromULong((ulong)powers);
-
- }
-
-
- SimianAddGeneric(groupID, "GroupRole", roleID.ToString(), GroupRoleInfo);
- }
-
- public GroupRecord GetGroupRecord(UUID requestingAgentID, UUID groupID, string groupName)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- OSDMap GroupInfoMap = null;
- if (groupID != UUID.Zero)
- {
- if (!SimianGetFirstGenericEntry(groupID, "Group", out groupName, out GroupInfoMap))
- {
- return null;
- }
- }
- else if (!string.IsNullOrEmpty(groupName))
- {
- if (!SimianGetFirstGenericEntry("Group", groupName, out groupID, out GroupInfoMap))
- {
- return null;
- }
- }
-
- GroupRecord GroupInfo = new GroupRecord();
-
- GroupInfo.GroupID = groupID;
- GroupInfo.GroupName = groupName;
- GroupInfo.Charter = GroupInfoMap["Charter"].AsString();
- GroupInfo.ShowInList = GroupInfoMap["ShowInList"].AsBoolean();
- GroupInfo.GroupPicture = GroupInfoMap["InsigniaID"].AsUUID();
- GroupInfo.MembershipFee = GroupInfoMap["MembershipFee"].AsInteger();
- GroupInfo.OpenEnrollment = GroupInfoMap["OpenEnrollment"].AsBoolean();
- GroupInfo.AllowPublish = GroupInfoMap["AllowPublish"].AsBoolean();
- GroupInfo.MaturePublish = GroupInfoMap["MaturePublish"].AsBoolean();
- GroupInfo.FounderID = GroupInfoMap["FounderID"].AsUUID();
- GroupInfo.OwnerRoleID = GroupInfoMap["OwnerRoleID"].AsUUID();
-
- return GroupInfo;
-
- }
-
- public GroupProfileData GetMemberGroupProfile(UUID requestingAgentID, UUID groupID, UUID memberID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- OSDMap groupProfile;
- string groupName;
- if (!SimianGetFirstGenericEntry(groupID, "Group", out groupName, out groupProfile))
- {
- // GroupProfileData is not nullable
- return new GroupProfileData();
- }
-
- GroupProfileData MemberGroupProfile = new GroupProfileData();
- MemberGroupProfile.GroupID = groupID;
- MemberGroupProfile.Name = groupName;
-
- if (groupProfile["Charter"] != null)
- {
- MemberGroupProfile.Charter = groupProfile["Charter"].AsString();
- }
-
- MemberGroupProfile.ShowInList = groupProfile["ShowInList"].AsString() == "1";
- MemberGroupProfile.InsigniaID = groupProfile["InsigniaID"].AsUUID();
- MemberGroupProfile.MembershipFee = groupProfile["MembershipFee"].AsInteger();
- MemberGroupProfile.OpenEnrollment = groupProfile["OpenEnrollment"].AsBoolean();
- MemberGroupProfile.AllowPublish = groupProfile["AllowPublish"].AsBoolean();
- MemberGroupProfile.MaturePublish = groupProfile["MaturePublish"].AsBoolean();
- MemberGroupProfile.FounderID = groupProfile["FounderID"].AsUUID();;
- MemberGroupProfile.OwnerRole = groupProfile["OwnerRoleID"].AsUUID();
-
- Dictionary Members;
- if (SimianGetGenericEntries("GroupMember",groupID.ToString(), out Members))
- {
- MemberGroupProfile.GroupMembershipCount = Members.Count;
- }
-
- Dictionary Roles;
- if (SimianGetGenericEntries(groupID, "GroupRole", out Roles))
- {
- MemberGroupProfile.GroupRolesCount = Roles.Count;
- }
-
- // TODO: Get Group Money balance from somewhere
- // group.Money = 0;
-
- GroupMembershipData MemberInfo = GetAgentGroupMembership(requestingAgentID, memberID, groupID);
-
- MemberGroupProfile.MemberTitle = MemberInfo.GroupTitle;
- MemberGroupProfile.PowersMask = MemberInfo.GroupPowers;
-
- return MemberGroupProfile;
- }
-
- public void SetAgentActiveGroup(UUID requestingAgentID, UUID agentID, UUID groupID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- OSDMap ActiveGroup = new OSDMap();
- ActiveGroup.Add("GroupID", OSD.FromUUID(groupID));
- SimianAddGeneric(agentID, "Group", "ActiveGroup", ActiveGroup);
- }
-
- public void SetAgentActiveGroupRole(UUID requestingAgentID, UUID agentID, UUID groupID, UUID roleID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- OSDMap GroupMemberInfo;
- if (!SimianGetGenericEntry(agentID, "GroupMember", groupID.ToString(), out GroupMemberInfo))
- {
- GroupMemberInfo = new OSDMap();
- }
-
- GroupMemberInfo["SelectedRoleID"] = OSD.FromUUID(roleID);
- SimianAddGeneric(agentID, "GroupMember", groupID.ToString(), GroupMemberInfo);
- }
-
- public void SetAgentGroupInfo(UUID requestingAgentID, UUID agentID, UUID groupID, bool acceptNotices, bool listInProfile)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- OSDMap GroupMemberInfo;
- if (!SimianGetGenericEntry(agentID, "GroupMember", groupID.ToString(), out GroupMemberInfo))
- {
- GroupMemberInfo = new OSDMap();
- }
-
- GroupMemberInfo["AcceptNotices"] = OSD.FromBoolean(acceptNotices);
- GroupMemberInfo["ListInProfile"] = OSD.FromBoolean(listInProfile);
- GroupMemberInfo["Contribution"] = OSD.FromInteger(0);
- GroupMemberInfo["SelectedRole"] = OSD.FromUUID(UUID.Zero);
- SimianAddGeneric(agentID, "GroupMember", groupID.ToString(), GroupMemberInfo);
- }
-
- public void AddAgentToGroupInvite(UUID requestingAgentID, UUID inviteID, UUID groupID, UUID roleID, UUID agentID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- OSDMap Invite = new OSDMap();
- Invite["AgentID"] = OSD.FromUUID(agentID);
- Invite["RoleID"] = OSD.FromUUID(roleID);
-
- SimianAddGeneric(groupID, "GroupMemberInvite", inviteID.ToString(), Invite);
- }
-
- public GroupInviteInfo GetAgentToGroupInvite(UUID requestingAgentID, UUID inviteID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- OSDMap GroupMemberInvite;
- UUID GroupID;
- if (!SimianGetFirstGenericEntry("GroupMemberInvite", inviteID.ToString(), out GroupID, out GroupMemberInvite))
- {
- return null;
- }
-
- GroupInviteInfo inviteInfo = new GroupInviteInfo();
- inviteInfo.InviteID = inviteID;
- inviteInfo.GroupID = GroupID;
- inviteInfo.AgentID = GroupMemberInvite["AgentID"].AsUUID();
- inviteInfo.RoleID = GroupMemberInvite["RoleID"].AsUUID();
-
- return inviteInfo;
- }
-
- public void RemoveAgentToGroupInvite(UUID requestingAgentID, UUID inviteID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- GroupInviteInfo invite = GetAgentToGroupInvite(requestingAgentID, inviteID);
- SimianRemoveGenericEntry(invite.GroupID, "GroupMemberInvite", inviteID.ToString());
- }
-
- public void AddAgentToGroup(UUID requestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- // Setup Agent/Group information
- SetAgentGroupInfo(requestingAgentID, AgentID, GroupID, true, true);
-
- // Add agent to Everyone Group
- AddAgentToGroupRole(requestingAgentID, AgentID, GroupID, UUID.Zero);
-
- // Add agent to Specified Role
- AddAgentToGroupRole(requestingAgentID, AgentID, GroupID, RoleID);
-
- // Set selected role in this group to specified role
- SetAgentActiveGroupRole(requestingAgentID, AgentID, GroupID, RoleID);
- }
-
- public void RemoveAgentFromGroup(UUID requestingAgentID, UUID agentID, UUID groupID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- // If current active group is the group the agent is being removed from, change their group to UUID.Zero
- GroupMembershipData memberActiveMembership = GetAgentActiveMembership(requestingAgentID, agentID);
- if (memberActiveMembership.GroupID == groupID)
- {
- SetAgentActiveGroup(agentID, agentID, UUID.Zero);
- }
-
- // Remove Group Member information for this group
- SimianRemoveGenericEntry(agentID, "GroupMember", groupID.ToString());
-
- // By using a Simian Generics Type consisting of a prefix and a groupID,
- // combined with RoleID as key allows us to get a list of roles a particular member
- // of a group is assigned to.
- string GroupRoleMemberType = "GroupRole" + groupID.ToString();
-
- // Take Agent out of all other group roles
- Dictionary GroupRoles;
- if (SimianGetGenericEntries(agentID, GroupRoleMemberType, out GroupRoles))
- {
- foreach (string roleID in GroupRoles.Keys)
- {
- SimianRemoveGenericEntry(agentID, GroupRoleMemberType, roleID);
- }
- }
- }
-
- public void AddAgentToGroupRole(UUID requestingAgentID, UUID agentID, UUID groupID, UUID roleID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- SimianAddGeneric(agentID, "GroupRole" + groupID.ToString(), roleID.ToString(), new OSDMap());
- }
-
- public void RemoveAgentFromGroupRole(UUID requestingAgentID, UUID agentID, UUID groupID, UUID roleID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- // Cannot remove members from the Everyone Role
- if (roleID != UUID.Zero)
- {
- EnsureRoleNotSelectedByMember(groupID, roleID, agentID);
-
- string GroupRoleMemberType = "GroupRole" + groupID.ToString();
- SimianRemoveGenericEntry(agentID, GroupRoleMemberType, roleID.ToString());
- }
- }
-
- public List FindGroups(UUID requestingAgentID, string search)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- List findings = new List();
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetGenerics" },
- { "Type", "Group" },
- { "Key", search },
- { "Fuzzy", "1" }
- };
-
-
- OSDMap response = CachedPostRequest(requestArgs);
- if (response["Success"].AsBoolean() && response["Entries"] is OSDArray)
- {
- OSDArray entryArray = (OSDArray)response["Entries"];
- foreach (OSDMap entryMap in entryArray)
- {
- DirGroupsReplyData data = new DirGroupsReplyData();
- data.groupID = entryMap["OwnerID"].AsUUID();
- data.groupName = entryMap["Key"].AsString();
-
- // TODO: is there a better way to do this?
- Dictionary Members;
- if (SimianGetGenericEntries("GroupMember", data.groupID.ToString(), out Members))
- {
- data.members = Members.Count;
- }
- else
- {
- data.members = 0;
- }
-
- // TODO: sort results?
- // data.searchOrder = order;
-
- findings.Add(data);
- }
- }
-
- return findings;
- }
-
- public GroupMembershipData GetAgentGroupMembership(UUID requestingAgentID, UUID agentID, UUID groupID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- GroupMembershipData data = null;
-// bool foundData = false;
-
- OSDMap UserGroupMemberInfo;
- if (SimianGetGenericEntry(agentID, "GroupMember", groupID.ToString(), out UserGroupMemberInfo))
- {
- data = new GroupMembershipData();
- data.AcceptNotices = UserGroupMemberInfo["AcceptNotices"].AsBoolean();
- data.Contribution = UserGroupMemberInfo["Contribution"].AsInteger();
- data.ListInProfile = UserGroupMemberInfo["ListInProfile"].AsBoolean();
- data.ActiveRole = UserGroupMemberInfo["SelectedRoleID"].AsUUID();
-
- ///////////////////////////////
- // Agent Specific Information:
- //
- OSDMap UserActiveGroup;
- if (SimianGetGenericEntry(agentID, "Group", "ActiveGroup", out UserActiveGroup))
- {
- data.Active = UserActiveGroup["GroupID"].AsUUID().Equals(groupID);
- }
-
- ///////////////////////////////
- // Role Specific Information:
- //
- OSDMap GroupRoleInfo;
- if (SimianGetGenericEntry(groupID, "GroupRole", data.ActiveRole.ToString(), out GroupRoleInfo))
- {
- data.GroupTitle = GroupRoleInfo["Title"].AsString();
- data.GroupPowers = GroupRoleInfo["Powers"].AsULong();
- }
-
- ///////////////////////////////
- // Group Specific Information:
- //
- OSDMap GroupInfo;
- string GroupName;
- if (SimianGetFirstGenericEntry(groupID, "Group", out GroupName, out GroupInfo))
- {
- data.GroupID = groupID;
- data.AllowPublish = GroupInfo["AllowPublish"].AsBoolean();
- data.Charter = GroupInfo["Charter"].AsString();
- data.FounderID = GroupInfo["FounderID"].AsUUID();
- data.GroupName = GroupName;
- data.GroupPicture = GroupInfo["InsigniaID"].AsUUID();
- data.MaturePublish = GroupInfo["MaturePublish"].AsBoolean();
- data.MembershipFee = GroupInfo["MembershipFee"].AsInteger();
- data.OpenEnrollment = GroupInfo["OpenEnrollment"].AsBoolean();
- data.ShowInList = GroupInfo["ShowInList"].AsBoolean();
- }
- }
-
- return data;
- }
-
- public GroupMembershipData GetAgentActiveMembership(UUID requestingAgentID, UUID agentID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- UUID GroupID = UUID.Zero;
- OSDMap UserActiveGroup;
- if (SimianGetGenericEntry(agentID, "Group", "ActiveGroup", out UserActiveGroup))
- {
- GroupID = UserActiveGroup["GroupID"].AsUUID();
- }
-
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] Active GroupID : {0}", GroupID.ToString());
- return GetAgentGroupMembership(requestingAgentID, agentID, GroupID);
- }
-
- public List GetAgentGroupMemberships(UUID requestingAgentID, UUID agentID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- List memberships = new List();
-
- Dictionary GroupMemberShips;
- if (SimianGetGenericEntries(agentID, "GroupMember", out GroupMemberShips))
- {
- foreach (string key in GroupMemberShips.Keys)
- {
- memberships.Add(GetAgentGroupMembership(requestingAgentID, agentID, UUID.Parse(key)));
- }
- }
-
- return memberships;
- }
-
- public List GetAgentGroupRoles(UUID requestingAgentID, UUID agentID, UUID groupID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- List Roles = new List();
-
- Dictionary GroupRoles;
- if (SimianGetGenericEntries(groupID, "GroupRole", out GroupRoles))
- {
- Dictionary MemberRoles;
- if (SimianGetGenericEntries(agentID, "GroupRole" + groupID.ToString(), out MemberRoles))
- {
- foreach (KeyValuePair kvp in MemberRoles)
- {
- GroupRolesData data = new GroupRolesData();
- data.RoleID = UUID.Parse(kvp.Key);
- data.Name = GroupRoles[kvp.Key]["Name"].AsString();
- data.Description = GroupRoles[kvp.Key]["Description"].AsString();
- data.Title = GroupRoles[kvp.Key]["Title"].AsString();
- data.Powers = GroupRoles[kvp.Key]["Powers"].AsULong();
-
- Roles.Add(data);
- }
- }
- }
- return Roles;
- }
-
- public List GetGroupRoles(UUID requestingAgentID, UUID groupID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- List Roles = new List();
-
- Dictionary GroupRoles;
- if (SimianGetGenericEntries(groupID, "GroupRole", out GroupRoles))
- {
- foreach (KeyValuePair role in GroupRoles)
- {
- GroupRolesData data = new GroupRolesData();
-
- data.RoleID = UUID.Parse(role.Key);
-
- data.Name = role.Value["Name"].AsString();
- data.Description = role.Value["Description"].AsString();
- data.Title = role.Value["Title"].AsString();
- data.Powers = role.Value["Powers"].AsULong();
-
- Dictionary GroupRoleMembers;
- if (SimianGetGenericEntries("GroupRole" + groupID.ToString(), role.Key, out GroupRoleMembers))
- {
- data.Members = GroupRoleMembers.Count;
- }
- else
- {
- data.Members = 0;
- }
-
- Roles.Add(data);
- }
- }
-
- return Roles;
-
- }
-
-
-
- public List GetGroupMembers(UUID requestingAgentID, UUID GroupID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- List members = new List();
-
- OSDMap GroupInfo;
- string GroupName;
- UUID GroupOwnerRoleID = UUID.Zero;
- if (!SimianGetFirstGenericEntry(GroupID, "Group", out GroupName, out GroupInfo))
- {
- return members;
- }
- GroupOwnerRoleID = GroupInfo["OwnerRoleID"].AsUUID();
-
- // Locally cache group roles, since we'll be needing this data for each member
- Dictionary GroupRoles;
- SimianGetGenericEntries(GroupID, "GroupRole", out GroupRoles);
-
- // Locally cache list of group owners
- Dictionary GroupOwners;
- SimianGetGenericEntries("GroupRole" + GroupID.ToString(), GroupOwnerRoleID.ToString(), out GroupOwners);
-
-
- Dictionary GroupMembers;
- if (SimianGetGenericEntries("GroupMember", GroupID.ToString(), out GroupMembers))
- {
- foreach (KeyValuePair member in GroupMembers)
- {
- GroupMembersData data = new GroupMembersData();
-
- data.AgentID = member.Key;
-
- UUID SelectedRoleID = member.Value["SelectedRoleID"].AsUUID();
-
- data.AcceptNotices = member.Value["AcceptNotices"].AsBoolean();
- data.ListInProfile = member.Value["ListInProfile"].AsBoolean();
- data.Contribution = member.Value["Contribution"].AsInteger();
-
- data.IsOwner = GroupOwners.ContainsKey(member.Key);
-
- OSDMap GroupRoleInfo = GroupRoles[SelectedRoleID.ToString()];
- data.Title = GroupRoleInfo["Title"].AsString();
- data.AgentPowers = GroupRoleInfo["Powers"].AsULong();
-
- members.Add(data);
- }
- }
-
- return members;
-
- }
-
- public List GetGroupRoleMembers(UUID requestingAgentID, UUID groupID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- List members = new List();
-
- Dictionary GroupRoles;
- if (SimianGetGenericEntries(groupID, "GroupRole", out GroupRoles))
- {
- foreach (KeyValuePair Role in GroupRoles)
- {
- Dictionary GroupRoleMembers;
- if (SimianGetGenericEntries("GroupRole"+groupID.ToString(), Role.Key, out GroupRoleMembers))
- {
- foreach (KeyValuePair GroupRoleMember in GroupRoleMembers)
- {
- GroupRoleMembersData data = new GroupRoleMembersData();
-
- data.MemberID = GroupRoleMember.Key;
- data.RoleID = UUID.Parse(Role.Key);
-
- members.Add(data);
- }
- }
- }
- }
-
- return members;
- }
-
- public List GetGroupNotices(UUID requestingAgentID, UUID GroupID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- List values = new List();
-
- Dictionary Notices;
- if (SimianGetGenericEntries(GroupID, "GroupNotice", out Notices))
- {
- foreach (KeyValuePair Notice in Notices)
- {
- GroupNoticeData data = new GroupNoticeData();
- data.NoticeID = UUID.Parse(Notice.Key);
- data.Timestamp = Notice.Value["TimeStamp"].AsUInteger();
- data.FromName = Notice.Value["FromName"].AsString();
- data.Subject = Notice.Value["Subject"].AsString();
- data.HasAttachment = Notice.Value["BinaryBucket"].AsBinary().Length > 0;
-
- //TODO: Figure out how to get this
- data.AssetType = 0;
-
- values.Add(data);
- }
- }
-
- return values;
-
- }
- public GroupNoticeInfo GetGroupNotice(UUID requestingAgentID, UUID noticeID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- OSDMap GroupNotice;
- UUID GroupID;
- if (SimianGetFirstGenericEntry("GroupNotice", noticeID.ToString(), out GroupID, out GroupNotice))
- {
- GroupNoticeInfo data = new GroupNoticeInfo();
- data.GroupID = GroupID;
- data.Message = GroupNotice["Message"].AsString();
- data.BinaryBucket = GroupNotice["BinaryBucket"].AsBinary();
- data.noticeData.NoticeID = noticeID;
- data.noticeData.Timestamp = GroupNotice["TimeStamp"].AsUInteger();
- data.noticeData.FromName = GroupNotice["FromName"].AsString();
- data.noticeData.Subject = GroupNotice["Subject"].AsString();
- data.noticeData.HasAttachment = data.BinaryBucket.Length > 0;
- data.noticeData.AssetType = 0;
-
- if (data.Message == null)
- {
- data.Message = string.Empty;
- }
-
- return data;
- }
- return null;
- }
- public void AddGroupNotice(UUID requestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message, byte[] binaryBucket)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- OSDMap Notice = new OSDMap();
- Notice["TimeStamp"] = OSD.FromUInteger((uint)Util.UnixTimeSinceEpoch());
- Notice["FromName"] = OSD.FromString(fromName);
- Notice["Subject"] = OSD.FromString(subject);
- Notice["Message"] = OSD.FromString(message);
- Notice["BinaryBucket"] = OSD.FromBinary(binaryBucket);
-
- SimianAddGeneric(groupID, "GroupNotice", noticeID.ToString(), Notice);
-
- }
- #endregion
-
- #region GroupSessionTracking
-
- public void ResetAgentGroupChatSessions(UUID agentID)
- {
- Dictionary agentSessions;
-
- if (SimianGetGenericEntries(agentID, "GroupSessionDropped", out agentSessions))
- {
- foreach (string GroupID in agentSessions.Keys)
- {
- SimianRemoveGenericEntry(agentID, "GroupSessionDropped", GroupID);
- }
- }
-
- if (SimianGetGenericEntries(agentID, "GroupSessionInvited", out agentSessions))
- {
- foreach (string GroupID in agentSessions.Keys)
- {
- SimianRemoveGenericEntry(agentID, "GroupSessionInvited", GroupID);
- }
- }
- }
-
- public bool hasAgentDroppedGroupChatSession(UUID agentID, UUID groupID)
- {
- OSDMap session;
- return SimianGetGenericEntry(agentID, "GroupSessionDropped", groupID.ToString(), out session);
- }
-
- public void AgentDroppedFromGroupChatSession(UUID agentID, UUID groupID)
- {
- SimianAddGeneric(agentID, "GroupSessionDropped", groupID.ToString(), new OSDMap());
- }
-
- public void AgentInvitedToGroupChatSession(UUID agentID, UUID groupID)
- {
- SimianAddGeneric(agentID, "GroupSessionInvited", groupID.ToString(), new OSDMap());
- }
-
- public bool hasAgentBeenInvitedToGroupChatSession(UUID agentID, UUID groupID)
- {
- OSDMap session;
- return SimianGetGenericEntry(agentID, "GroupSessionDropped", groupID.ToString(), out session);
- }
-
- #endregion
-
- private void EnsureRoleNotSelectedByMember(UUID groupID, UUID roleID, UUID userID)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- // If member's SelectedRole is roleID, change their selected role to Everyone
- // before removing them from the role
- OSDMap UserGroupInfo;
- if (SimianGetGenericEntry(userID, "GroupMember", groupID.ToString(), out UserGroupInfo))
- {
- if (UserGroupInfo["SelectedRoleID"].AsUUID() == roleID)
- {
- UserGroupInfo["SelectedRoleID"] = OSD.FromUUID(UUID.Zero);
- }
- SimianAddGeneric(userID, "GroupMember", groupID.ToString(), UserGroupInfo);
- }
- }
-
-
- #region Simian Util Methods
- private bool SimianAddGeneric(UUID ownerID, string type, string key, OSDMap map)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called ({1},{2},{3})", System.Reflection.MethodBase.GetCurrentMethod().Name, ownerID, type, key);
-
- string value = OSDParser.SerializeJsonString(map);
-
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] value: {0}", value);
-
- NameValueCollection RequestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddGeneric" },
- { "OwnerID", ownerID.ToString() },
- { "Type", type },
- { "Key", key },
- { "Value", value}
- };
-
-
- OSDMap Response = CachedPostRequest(RequestArgs);
- if (Response["Success"].AsBoolean())
- {
- return true;
- }
- else
- {
- m_log.WarnFormat("[SIMIAN GROUPS CONNECTOR]: Error {0}, {1}, {2}, {3}", ownerID, type, key, Response["Message"]);
- return false;
- }
- }
-
- ///
- /// Returns the first of possibly many entries for Owner/Type pair
- ///
- private bool SimianGetFirstGenericEntry(UUID ownerID, string type, out string key, out OSDMap map)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called ({1},{2})", System.Reflection.MethodBase.GetCurrentMethod().Name, ownerID, type);
-
- NameValueCollection RequestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetGenerics" },
- { "OwnerID", ownerID.ToString() },
- { "Type", type }
- };
-
-
- OSDMap Response = CachedPostRequest(RequestArgs);
- if (Response["Success"].AsBoolean() && Response["Entries"] is OSDArray)
- {
- OSDArray entryArray = (OSDArray)Response["Entries"];
- if (entryArray.Count >= 1)
- {
- OSDMap entryMap = entryArray[0] as OSDMap;
- key = entryMap["Key"].AsString();
- map = (OSDMap)OSDParser.DeserializeJson(entryMap["Value"].AsString());
-
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] Generics Result {0}", entryMap["Value"].AsString());
-
- return true;
- }
- else
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] No Generics Results");
- }
- }
- else
- {
- m_log.WarnFormat("[SIMIAN GROUPS CONNECTOR]: Error retrieving group info ({0})", Response["Message"]);
- }
- key = null;
- map = null;
- return false;
- }
- private bool SimianGetFirstGenericEntry(string type, string key, out UUID ownerID, out OSDMap map)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called ({1},{2})", System.Reflection.MethodBase.GetCurrentMethod().Name, type, key);
-
-
- NameValueCollection RequestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetGenerics" },
- { "Type", type },
- { "Key", key}
- };
-
-
- OSDMap Response = CachedPostRequest(RequestArgs);
- if (Response["Success"].AsBoolean() && Response["Entries"] is OSDArray)
- {
- OSDArray entryArray = (OSDArray)Response["Entries"];
- if (entryArray.Count >= 1)
- {
- OSDMap entryMap = entryArray[0] as OSDMap;
- ownerID = entryMap["OwnerID"].AsUUID();
- map = (OSDMap)OSDParser.DeserializeJson(entryMap["Value"].AsString());
-
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] Generics Result {0}", entryMap["Value"].AsString());
-
- return true;
- }
- else
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] No Generics Results");
- }
- }
- else
- {
- m_log.WarnFormat("[SIMIAN GROUPS CONNECTOR]: Error retrieving group info ({0})", Response["Message"]);
- }
- ownerID = UUID.Zero;
- map = null;
- return false;
- }
-
- private bool SimianGetGenericEntry(UUID ownerID, string type, string key, out OSDMap map)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called ({1},{2},{3})", System.Reflection.MethodBase.GetCurrentMethod().Name, ownerID, type, key);
-
- NameValueCollection RequestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetGenerics" },
- { "OwnerID", ownerID.ToString() },
- { "Type", type },
- { "Key", key}
- };
-
-
- OSDMap Response = CachedPostRequest(RequestArgs);
- if (Response["Success"].AsBoolean() && Response["Entries"] is OSDArray)
- {
- OSDArray entryArray = (OSDArray)Response["Entries"];
- if (entryArray.Count == 1)
- {
- OSDMap entryMap = entryArray[0] as OSDMap;
- key = entryMap["Key"].AsString();
- map = (OSDMap)OSDParser.DeserializeJson(entryMap["Value"].AsString());
-
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] Generics Result {0}", entryMap["Value"].AsString());
-
- return true;
- }
- else
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] No Generics Results");
- }
- }
- else
- {
- m_log.WarnFormat("[SIMIAN GROUPS CONNECTOR]: Error retrieving group info ({0})", Response["Message"]);
- }
- map = null;
- return false;
- }
-
- private bool SimianGetGenericEntries(UUID ownerID, string type, out Dictionary maps)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called ({1},{2})", System.Reflection.MethodBase.GetCurrentMethod().Name,ownerID, type);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetGenerics" },
- { "OwnerID", ownerID.ToString() },
- { "Type", type }
- };
-
-
-
- OSDMap response = CachedPostRequest(requestArgs);
- if (response["Success"].AsBoolean() && response["Entries"] is OSDArray)
- {
- maps = new Dictionary();
-
- OSDArray entryArray = (OSDArray)response["Entries"];
- foreach (OSDMap entryMap in entryArray)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] Generics Result {0}", entryMap["Value"].AsString());
- maps.Add(entryMap["Key"].AsString(), (OSDMap)OSDParser.DeserializeJson(entryMap["Value"].AsString()));
- }
- if (maps.Count == 0)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] No Generics Results");
- }
-
- return true;
- }
- else
- {
- maps = null;
- m_log.WarnFormat("[SIMIAN GROUPS CONNECTOR]: Error retrieving group info ({0})", response["Message"]);
- }
- return false;
- }
- private bool SimianGetGenericEntries(string type, string key, out Dictionary maps)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called ({1},{2})", System.Reflection.MethodBase.GetCurrentMethod().Name, type, key);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetGenerics" },
- { "Type", type },
- { "Key", key }
- };
-
-
-
- OSDMap response = CachedPostRequest(requestArgs);
- if (response["Success"].AsBoolean() && response["Entries"] is OSDArray)
- {
- maps = new Dictionary();
-
- OSDArray entryArray = (OSDArray)response["Entries"];
- foreach (OSDMap entryMap in entryArray)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] Generics Result {0}", entryMap["Value"].AsString());
- maps.Add(entryMap["OwnerID"].AsUUID(), (OSDMap)OSDParser.DeserializeJson(entryMap["Value"].AsString()));
- }
- if (maps.Count == 0)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] No Generics Results");
- }
- return true;
- }
- else
- {
- maps = null;
- m_log.WarnFormat("[SIMIAN-GROUPS-CONNECTOR]: Error retrieving group info ({0})", response["Message"]);
- }
- return false;
- }
-
- private bool SimianRemoveGenericEntry(UUID ownerID, string type, string key)
- {
- if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called ({1},{2},{3})", System.Reflection.MethodBase.GetCurrentMethod().Name, ownerID, type, key);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "RemoveGeneric" },
- { "OwnerID", ownerID.ToString() },
- { "Type", type },
- { "Key", key }
- };
-
-
- OSDMap response = CachedPostRequest(requestArgs);
- if (response["Success"].AsBoolean())
- {
- return true;
- }
- else
- {
- m_log.WarnFormat("[SIMIAN GROUPS CONNECTOR]: Error {0}, {1}, {2}, {3}", ownerID, type, key, response["Message"]);
- return false;
- }
- }
- #endregion
-
- #region CheesyCache
- OSDMap CachedPostRequest(NameValueCollection requestArgs)
- {
- // Immediately forward the request if the cache is disabled.
- if (m_cacheTimeout == 0)
- {
- m_log.WarnFormat("[SIMIAN GROUPS CONNECTOR]: cache is disabled");
- return WebUtil.PostToService(m_groupsServerURI, requestArgs);
- }
-
- // Check if this is an update or a request
- if (requestArgs["RequestMethod"] == "RemoveGeneric"
- || requestArgs["RequestMethod"] == "AddGeneric")
- {
- m_log.WarnFormat("[SIMIAN GROUPS CONNECTOR]: clearing generics cache");
-
- // Any and all updates cause the cache to clear
- m_memoryCache.Clear();
-
- // Send update to server, return the response without caching it
- return WebUtil.PostToService(m_groupsServerURI, requestArgs);
- }
-
- // If we're not doing an update, we must be requesting data
-
- // Create the cache key for the request and see if we have it cached
- string CacheKey = WebUtil.BuildQueryString(requestArgs);
-
- // This code uses a leader/follower pattern. On a cache miss, the request is added
- // to a queue; the first thread to add it to the queue completes the request while
- // follow on threads busy wait for the results, this situation seems to happen
- // often when checking permissions
- while (true)
- {
- OSDMap response = null;
- bool firstRequest = false;
-
- lock (m_memoryCache)
- {
- if (m_memoryCache.TryGetValue(CacheKey, out response))
- return response;
-
- if (! m_pendingRequests.ContainsKey(CacheKey))
- {
- m_pendingRequests.Add(CacheKey,true);
- firstRequest = true;
- }
- }
-
- if (firstRequest)
- {
- // if it wasn't in the cache, pass the request to the Simian Grid Services
- try
- {
- response = WebUtil.PostToService(m_groupsServerURI, requestArgs);
- }
- catch (Exception)
- {
- m_log.ErrorFormat("[SIMIAN GROUPS CONNECTOR]: request failed {0}", CacheKey);
- }
-
- // and cache the response
- lock (m_memoryCache)
- {
- m_memoryCache.AddOrUpdate(CacheKey, response, TimeSpan.FromSeconds(m_cacheTimeout));
- m_pendingRequests.Remove(CacheKey);
- }
-
- return response;
- }
-
- Thread.Sleep(50); // waiting for a web request to complete, 50msecs is reasonable
- }
-
- // if (!m_memoryCache.TryGetValue(CacheKey, out response))
- // {
- // m_log.WarnFormat("[SIMIAN GROUPS CONNECTOR]: query not in the cache");
- // Util.PrintCallStack();
-
- // // if it wasn't in the cache, pass the request to the Simian Grid Services
- // response = WebUtil.PostToService(m_groupsServerURI, requestArgs);
-
- // // and cache the response
- // m_memoryCache.AddOrUpdate(CacheKey, response, TimeSpan.FromSeconds(m_cacheTimeout));
- // }
-
- // // return cached response
- // return response;
- }
- #endregion
-
- }
-
-}
-
diff --git a/OpenSim/Services/Connectors/Asset/HGAssetServiceConnector.cs b/OpenSim/Services/Connectors/Asset/HGAssetServiceConnector.cs
index 3710c86d22..7fa80b048a 100644
--- a/OpenSim/Services/Connectors/Asset/HGAssetServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Asset/HGAssetServiceConnector.cs
@@ -35,7 +35,6 @@ using System.Web;
using OpenSim.Framework;
using OpenSim.Services.Interfaces;
using OpenSim.Services.Connectors.Hypergrid;
-using OpenSim.Services.Connectors.SimianGrid;
using OpenMetaverse;
namespace OpenSim.Services.Connectors
@@ -97,15 +96,7 @@ namespace OpenSim.Services.Connectors
{
// Still not as flexible as I would like this to be,
// but good enough for now
- string connectorType = new HeloServicesConnector(url).Helo();
- m_log.DebugFormat("[HG ASSET SERVICE]: HELO returned {0}", connectorType);
- if (connectorType == "opensim-simian")
- {
- connector = new SimianAssetServiceConnector(url);
- }
- else
- connector = new AssetServicesConnector(url);
-
+ connector = new AssetServicesConnector(url);
m_connectors.Add(url, connector);
}
}
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs
deleted file mode 100644
index cd4781deb0..0000000000
--- a/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Reflection;
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Services.Interfaces;
-using OpenMetaverse;
-using log4net;
-
-namespace OpenSim.Services.Connectors.SimianGrid
-{
- public class SimianActivityDetector
- {
- private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- private IGridUserService m_GridUserService;
-
- public SimianActivityDetector(IGridUserService guService)
- {
- m_GridUserService = guService;
- m_log.DebugFormat("[SIMIAN ACTIVITY DETECTOR]: Started");
- }
-
- public void AddRegion(Scene scene)
- {
- // For now the only events we listen to are these
- // But we could trigger the position update more often
- scene.EventManager.OnMakeRootAgent += OnMakeRootAgent;
- scene.EventManager.OnNewClient += OnNewClient;
- scene.EventManager.OnAvatarEnteringNewParcel += OnEnteringNewParcel;
- }
-
- public void RemoveRegion(Scene scene)
- {
- scene.EventManager.OnMakeRootAgent -= OnMakeRootAgent;
- scene.EventManager.OnNewClient -= OnNewClient;
- scene.EventManager.OnAvatarEnteringNewParcel -= OnEnteringNewParcel;
- }
-
- public void OnMakeRootAgent(ScenePresence sp)
- {
- m_log.DebugFormat("[SIMIAN ACTIVITY DETECTOR]: Detected root presence {0} in {1}", sp.UUID, sp.Scene.RegionInfo.RegionName);
- Util.FireAndForget(delegate(object o)
- {
- m_GridUserService.SetLastPosition(sp.UUID.ToString(), sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat);
- }, null, "SimianActivityDetector.SetLastPositionOnMakeRootAgent");
- }
-
- public void OnNewClient(IClientAPI client)
- {
- client.OnConnectionClosed += OnConnectionClose;
- }
-
- public void OnConnectionClose(IClientAPI client)
- {
- if (client.SceneAgent.IsChildAgent)
- return;
-
-// m_log.DebugFormat("[ACTIVITY DETECTOR]: Detected client logout {0} in {1}", client.AgentId, client.Scene.RegionInfo.RegionName);
- m_GridUserService.LoggedOut(
- client.AgentId.ToString(), client.SessionId, client.Scene.RegionInfo.RegionID,
- client.SceneAgent.AbsolutePosition, client.SceneAgent.Lookat);
- }
-
- void OnEnteringNewParcel(ScenePresence sp, int localLandID, UUID regionID)
- {
- // Asynchronously update the position stored in the session table for this agent
- Util.FireAndForget(delegate(object o)
- {
- m_GridUserService.SetLastPosition(sp.UUID.ToString(), sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat);
- }, null, "SimianActivityDetector.SetLastPositionOnEnteringNewParcel");
- }
- }
-}
\ No newline at end of file
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
deleted file mode 100644
index 953bc2af1b..0000000000
--- a/OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs
+++ /dev/null
@@ -1,693 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.IO;
-using System.Net;
-using System.Reflection;
-using log4net;
-using Mono.Addins;
-using Nini.Config;
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Services.Interfaces;
-using OpenMetaverse;
-using OpenMetaverse.StructuredData;
-
-namespace OpenSim.Services.Connectors.SimianGrid
-{
- ///
- /// Connects to the SimianGrid asset service
- ///
- [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "SimianAssetServiceConnector")]
- public class SimianAssetServiceConnector : IAssetService, ISharedRegionModule
- {
- private static readonly ILog m_log =
- LogManager.GetLogger(
- MethodBase.GetCurrentMethod().DeclaringType);
- private static string ZeroID = UUID.Zero.ToString();
-
- private string m_serverUrl = String.Empty;
- private IAssetCache m_cache;
- private bool m_Enabled = false;
-
- #region ISharedRegionModule
-
- public Type ReplaceableInterface { get { return null; } }
- public void RegionLoaded(Scene scene)
- {
- if (m_cache == null)
- {
- IAssetCache cache = scene.RequestModuleInterface();
- if (cache is ISharedRegionModule)
- m_cache = cache;
- }
- }
- public void PostInitialise() { }
- public void Close() { }
-
- public SimianAssetServiceConnector() { }
- public string Name { get { return "SimianAssetServiceConnector"; } }
- public void AddRegion(Scene scene) { if (m_Enabled) { scene.RegisterModuleInterface(this); } }
- public void RemoveRegion(Scene scene) { if (m_Enabled) { scene.UnregisterModuleInterface(this); } }
-
- #endregion ISharedRegionModule
-
- public SimianAssetServiceConnector(IConfigSource source)
- {
- CommonInit(source);
- }
-
- public SimianAssetServiceConnector(string url)
- {
- if (!url.EndsWith("/") && !url.EndsWith("="))
- url = url + '/';
- m_serverUrl = url;
- }
-
- public void Initialise(IConfigSource source)
- {
- IConfig moduleConfig = source.Configs["Modules"];
- if (moduleConfig != null)
- {
- string name = moduleConfig.GetString("AssetServices", "");
- if (name == Name)
- CommonInit(source);
- }
- }
-
- private void CommonInit(IConfigSource source)
- {
- IConfig gridConfig = source.Configs["AssetService"];
- if (gridConfig != null)
- {
- string serviceUrl = gridConfig.GetString("AssetServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
- }
- }
-
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN ASSET CONNECTOR]: No AssetServerURI specified, disabling connector");
- else
- m_Enabled = true;
- }
-
-#region IAssetService
-
- public AssetBase Get(string id)
- {
- if (String.IsNullOrEmpty(m_serverUrl))
- {
- m_log.Error("[SIMIAN ASSET CONNECTOR]: No AssetServerURI configured");
- throw new InvalidOperationException();
- }
-
- // Cache fetch
- if (m_cache != null)
- {
- AssetBase asset;
- if (!m_cache.Get(id, out asset))
- return null;
- if (asset != null)
- return asset;
- }
-
- return SimianGetOperation(id);
- }
-
-
- public AssetBase GetCached(string id)
- {
- AssetBase asset;
- if (m_cache != null)
- m_cache.Get(id, out asset);
-
- return null;
- }
-
- ///
- /// Get an asset's metadata
- ///
- ///
- ///
- public AssetMetadata GetMetadata(string id)
- {
- if (String.IsNullOrEmpty(m_serverUrl))
- {
- m_log.Error("[SIMIAN ASSET CONNECTOR]: No AssetServerURI configured");
- throw new InvalidOperationException();
- }
-
- // Cache fetch
- if (m_cache != null)
- {
- AssetBase asset;
- if (!m_cache.Get(id, out asset))
- return null;
- if (asset != null)
- return asset.Metadata;
- }
-
- // return GetRemoteMetadata(id);
- return SimianGetMetadataOperation(id);
- }
-
- public byte[] GetData(string id)
- {
- if (String.IsNullOrEmpty(m_serverUrl))
- {
- m_log.Error("[SIMIAN ASSET CONNECTOR]: No AssetServerURI configured");
- throw new InvalidOperationException();
- }
-
- AssetBase asset = Get(id);
-
- if (asset != null)
- return asset.Data;
-
- return null;
- }
-
- ///
- /// Get an asset asynchronously
- ///
- /// The asset id
- /// Represents the requester. Passed back via the handler
- /// The handler to call back once the asset has been retrieved
- /// True if the id was parseable, false otherwise
- public bool Get(string id, Object sender, AssetRetrieved handler)
- {
- if (String.IsNullOrEmpty(m_serverUrl))
- {
- m_log.Error("[SIMIAN ASSET CONNECTOR]: No AssetServerURI configured");
- throw new InvalidOperationException();
- }
-
- // Cache fetch
- if (m_cache != null)
- {
- AssetBase asset;
- if (!m_cache.Get(id, out asset))
- return false;
-
- if (asset != null)
- {
- handler(id, sender, asset);
- return true;
- }
- }
-
- Util.FireAndForget(
- delegate(object o)
- {
- AssetBase asset = SimianGetOperation(id);
- handler(id, sender, asset);
- }, null, "SimianAssetServiceConnector.GetFromService"
- );
-
- return true;
- }
-
- public bool[] AssetsExist(string[] ids)
- {
- if (String.IsNullOrEmpty(m_serverUrl))
- {
- m_log.Error("[SIMIAN ASSET CONNECTOR]: No AssetServerURI configured");
- throw new InvalidOperationException();
- }
-
- bool[] exist = new bool[ids.Length];
-
- for (int i = 0; i < ids.Length; i++)
- {
- AssetMetadata metadata = GetMetadata(ids[i]);
- if (metadata != null)
- exist[i] = true;
- }
-
- return exist;
- }
-
- ///
- /// Creates a new asset
- ///
- /// Returns a random ID if none is passed into it
- ///
- ///
- public string Store(AssetBase asset)
- {
- if (String.IsNullOrEmpty(m_serverUrl))
- {
- m_log.Error("[SIMIAN ASSET CONNECTOR]: No AssetServerURI configured");
- throw new InvalidOperationException();
- }
-
- bool storedInCache = false;
-
- // AssetID handling
- if (String.IsNullOrEmpty(asset.ID) || asset.ID == ZeroID)
- {
- asset.FullID = UUID.Random();
- asset.ID = asset.FullID.ToString();
- }
-
- // Cache handling
- if (m_cache != null)
- {
- m_cache.Cache(asset);
- storedInCache = true;
- }
-
- // Local asset handling
- if (asset.Local)
- {
- if (!storedInCache)
- {
- m_log.Error("Cannot store local " + asset.Metadata.ContentType + " asset without an asset cache");
- asset.ID = null;
- asset.FullID = UUID.Zero;
- }
-
- return asset.ID;
- }
-
- return SimianStoreOperation(asset);
- }
-
- ///
- /// Update an asset's content
- ///
- /// Attachments and bare scripts need this!!
- ///
- ///
- ///
- public bool UpdateContent(string id, byte[] data)
- {
- if (String.IsNullOrEmpty(m_serverUrl))
- {
- m_log.Error("[SIMIAN ASSET CONNECTOR]: No AssetServerURI configured");
- throw new InvalidOperationException();
- }
-
- AssetBase asset = Get(id);
-
- if (asset == null)
- {
- m_log.WarnFormat("[SIMIAN ASSET CONNECTOR]: Failed to fetch asset {0} for updating", id);
- return false;
- }
-
- asset.Data = data;
-
- string result = Store(asset);
- return !String.IsNullOrEmpty(result);
- }
-
- ///
- /// Delete an asset
- ///
- ///
- ///
- public bool Delete(string id)
- {
- if (String.IsNullOrEmpty(m_serverUrl))
- {
- m_log.Error("[SIMIAN ASSET CONNECTOR]: No AssetServerURI configured");
- throw new InvalidOperationException();
- }
-
- if (m_cache != null)
- m_cache.Expire(id);
-
- return SimianDeleteOperation(id);
- }
-
-#endregion IAssetService
-
-#region SimianOperations
- ///
- /// Invokes the xRemoveAsset operation on the simian server to delete an asset
- ///
- ///
- ///
- private bool SimianDeleteOperation(string id)
- {
- try
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "xRemoveAsset" },
- { "AssetID", id }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl,requestArgs);
- if (! response["Success"].AsBoolean())
- {
- m_log.WarnFormat("[SIMIAN ASSET CONNECTOR]: failed to delete asset; {0}",response["Message"].AsString());
- return false;
- }
-
- return true;
-
- }
- catch (Exception ex)
- {
- m_log.WarnFormat("[SIMIAN ASSET CONNECTOR]: failed to delete asset {0}; {1}", id, ex.Message);
- }
-
- return false;
- }
-
- ///
- /// Invokes the xAddAsset operation on the simian server to create or update an asset
- ///
- ///
- ///
- private string SimianStoreOperation(AssetBase asset)
- {
- try
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "xAddAsset" },
- { "ContentType", asset.Metadata.ContentType },
- { "EncodedData", Convert.ToBase64String(asset.Data) },
- { "AssetID", asset.FullID.ToString() },
- { "CreatorID", asset.Metadata.CreatorID },
- { "Temporary", asset.Temporary ? "1" : "0" },
- { "Name", asset.Name }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl,requestArgs);
- if (! response["Success"].AsBoolean())
- {
- m_log.WarnFormat("[SIMIAN ASSET CONNECTOR] failed to store asset; {0}",response["Message"].AsString());
- return null;
- }
-
- // asset.ID is always set before calling this function
- return asset.ID;
-
- }
- catch (Exception ex)
- {
- m_log.ErrorFormat("[SIMIAN ASSET CONNECTOR] failed to store asset; {0}",ex.Message);
- }
-
- return null;
- }
-
- ///
- /// Invokes the xGetAsset operation on the simian server to get data associated with an asset
- ///
- ///
- ///
- private AssetBase SimianGetOperation(string id)
- {
- try
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "xGetAsset" },
- { "ID", id }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl,requestArgs);
- if (! response["Success"].AsBoolean())
- {
- m_log.WarnFormat("[SIMIAN ASSET CONNECTOR] Failed to get asset; {0}",response["Message"].AsString());
- return null;
- }
-
- AssetBase asset = new AssetBase();
-
- asset.ID = id;
- asset.Name = String.Empty;
- asset.Metadata.ContentType = response["ContentType"].AsString(); // this will also set the asset Type property
- asset.CreatorID = response["CreatorID"].AsString();
- asset.Data = System.Convert.FromBase64String(response["EncodedData"].AsString());
- asset.Local = false;
- asset.Temporary = response["Temporary"];
-
- return asset;
- }
- catch (Exception ex)
- {
- m_log.WarnFormat("[SIMIAN ASSET CONNECTOR]: failed to retrieve asset {0}; {1}", id, ex.Message);
- }
-
- return null;
- }
-
- ///
- /// Invokes the xGetAssetMetadata operation on the simian server to retrieve metadata for an asset
- /// This operation is generally used to determine if an asset exists in the database
- ///
- ///
- ///
- private AssetMetadata SimianGetMetadataOperation(string id)
- {
- try
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "xGetAssetMetadata" },
- { "ID", id }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl,requestArgs);
- if (! response["Success"].AsBoolean())
- {
- // this is not really an error, this call is used to test existence
- // m_log.DebugFormat("[SIMIAN ASSET CONNECTOR] Failed to get asset metadata; {0}",response["Message"].AsString());
- return null;
- }
-
- AssetMetadata metadata = new AssetMetadata();
- metadata.ID = id;
- metadata.ContentType = response["ContentType"].AsString();
- metadata.CreatorID = response["CreatorID"].AsString();
- metadata.Local = false;
- metadata.Temporary = response["Temporary"];
-
- string lastModifiedStr = response["Last-Modified"].AsString();
- if (! String.IsNullOrEmpty(lastModifiedStr))
- {
- DateTime lastModified;
- if (DateTime.TryParse(lastModifiedStr, out lastModified))
- metadata.CreationDate = lastModified;
- }
-
- return metadata;
- }
- catch (Exception ex)
- {
- m_log.WarnFormat("[SIMIAN ASSET CONNECTOR]: Failed to get asset metadata; {0}", ex.Message);
- }
-
- return null;
- }
-#endregion
-
- // private AssetMetadata GetRemoteMetadata(string id)
- // {
- // Uri url;
- // AssetMetadata metadata = null;
-
- // // Determine if id is an absolute URL or a grid-relative UUID
- // if (!Uri.TryCreate(id, UriKind.Absolute, out url))
- // url = new Uri(m_serverUrl + id);
-
- // try
- // {
- // HttpWebRequest request = UntrustedHttpWebRequest.Create(url);
- // request.Method = "HEAD";
-
- // using (WebResponse response = request.GetResponse())
- // {
- // using (Stream responseStream = response.GetResponseStream())
- // {
- // // Create the metadata object
- // metadata = new AssetMetadata();
- // metadata.ContentType = response.ContentType;
- // metadata.ID = id;
-
- // UUID uuid;
- // if (UUID.TryParse(id, out uuid))
- // metadata.FullID = uuid;
-
- // string lastModifiedStr = response.Headers.Get("Last-Modified");
- // if (!String.IsNullOrEmpty(lastModifiedStr))
- // {
- // DateTime lastModified;
- // if (DateTime.TryParse(lastModifiedStr, out lastModified))
- // metadata.CreationDate = lastModified;
- // }
- // }
- // }
- // }
- // catch (Exception ex)
- // {
- // m_log.Warn("[SIMIAN ASSET CONNECTOR]: Asset HEAD from " + url + " failed: " + ex.Message);
- // }
-
- // return metadata;
- // }
-
- // private AssetBase GetRemote(string id)
- // {
- // AssetBase asset = null;
- // Uri url;
-
- // // Determine if id is an absolute URL or a grid-relative UUID
- // if (!Uri.TryCreate(id, UriKind.Absolute, out url))
- // url = new Uri(m_serverUrl + id);
-
- // try
- // {
- // HttpWebRequest request = UntrustedHttpWebRequest.Create(url);
-
- // using (WebResponse response = request.GetResponse())
- // {
- // using (Stream responseStream = response.GetResponseStream())
- // {
- // string creatorID = response.Headers.GetOne("X-Asset-Creator-Id") ?? String.Empty;
-
- // // Create the asset object
- // asset = new AssetBase(id, String.Empty, SLUtil.ContentTypeToSLAssetType(response.ContentType), creatorID);
-
- // UUID assetID;
- // if (UUID.TryParse(id, out assetID))
- // asset.FullID = assetID;
-
- // // Grab the asset data from the response stream
- // using (MemoryStream stream = new MemoryStream())
- // {
- // responseStream.CopyStream(stream, Int32.MaxValue);
- // asset.Data = stream.ToArray();
- // }
- // }
- // }
-
- // // Cache store
- // if (m_cache != null && asset != null)
- // m_cache.Cache(asset);
-
- // return asset;
- // }
- // catch (Exception ex)
- // {
- // m_log.Warn("[SIMIAN ASSET CONNECTOR]: Asset GET from " + url + " failed: " + ex.Message);
- // return null;
- // }
- // }
-
- // private string StoreRemote(AssetBase asset)
- // {
- // // Distinguish public and private assets
- // bool isPublic = true;
- // switch ((AssetType)asset.Type)
- // {
- // case AssetType.CallingCard:
- // case AssetType.Gesture:
- // case AssetType.LSLBytecode:
- // case AssetType.LSLText:
- // isPublic = false;
- // break;
- // }
-
- // string errorMessage = null;
-
- // // Build the remote storage request
- // List postParameters = new List()
- // {
- // new MultipartForm.Parameter("AssetID", asset.FullID.ToString()),
- // new MultipartForm.Parameter("CreatorID", asset.Metadata.CreatorID),
- // new MultipartForm.Parameter("Temporary", asset.Temporary ? "1" : "0"),
- // new MultipartForm.Parameter("Public", isPublic ? "1" : "0"),
- // new MultipartForm.File("Asset", asset.Name, asset.Metadata.ContentType, asset.Data)
- // };
-
- // // Make the remote storage request
- // try
- // {
- // // Simian does not require the asset ID to be in the URL because it's in the post data.
- // // By appending it to the URL also, we allow caching proxies (squid) to invalidate asset URLs
- // HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(m_serverUrl + asset.FullID.ToString());
-
- // using (HttpWebResponse response = MultipartForm.Post(request, postParameters))
- // {
- // using (Stream responseStream = response.GetResponseStream())
- // {
- // string responseStr = null;
-
- // try
- // {
- // responseStr = responseStream.GetStreamString();
- // OSD responseOSD = OSDParser.Deserialize(responseStr);
- // if (responseOSD.Type == OSDType.Map)
- // {
- // OSDMap responseMap = (OSDMap)responseOSD;
- // if (responseMap["Success"].AsBoolean())
- // return asset.ID;
- // else
- // errorMessage = "Upload failed: " + responseMap["Message"].AsString();
- // }
- // else
- // {
- // errorMessage = "Response format was invalid:\n" + responseStr;
- // }
- // }
- // catch (Exception ex)
- // {
- // if (!String.IsNullOrEmpty(responseStr))
- // errorMessage = "Failed to parse the response:\n" + responseStr;
- // else
- // errorMessage = "Failed to retrieve the response: " + ex.Message;
- // }
- // }
- // }
- // }
- // catch (WebException ex)
- // {
- // errorMessage = ex.Message;
- // }
-
- // m_log.WarnFormat("[SIMIAN ASSET CONNECTOR]: Failed to store asset \"{0}\" ({1}, {2}): {3}",
- // asset.Name, asset.ID, asset.Metadata.ContentType, errorMessage);
-
- // return null;
- // }
- }
-}
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs
deleted file mode 100644
index c402907073..0000000000
--- a/OpenSim/Services/Connectors/SimianGrid/SimianAuthenticationServiceConnector.cs
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Specialized;
-using System.Reflection;
-using log4net;
-using Mono.Addins;
-using Nini.Config;
-using OpenMetaverse;
-using OpenMetaverse.StructuredData;
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Services.Interfaces;
-
-namespace OpenSim.Services.Connectors.SimianGrid
-{
- ///
- /// Connects authentication/authorization to the SimianGrid backend
- ///
- [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "SimianAuthenticationServiceConnector")]
- public class SimianAuthenticationServiceConnector : IAuthenticationService, ISharedRegionModule
- {
- private static readonly ILog m_log =
- LogManager.GetLogger(
- MethodBase.GetCurrentMethod().DeclaringType);
-
- private string m_serverUrl = String.Empty;
- private bool m_Enabled = false;
-
- #region ISharedRegionModule
-
- public Type ReplaceableInterface { get { return null; } }
- public void RegionLoaded(Scene scene) { }
- public void PostInitialise() { }
- public void Close() { }
-
- public SimianAuthenticationServiceConnector() { }
- public string Name { get { return "SimianAuthenticationServiceConnector"; } }
- public void AddRegion(Scene scene) { if (m_Enabled) { scene.RegisterModuleInterface(this); } }
- public void RemoveRegion(Scene scene) { if (m_Enabled) { scene.UnregisterModuleInterface(this); } }
-
- #endregion ISharedRegionModule
-
- public SimianAuthenticationServiceConnector(IConfigSource source)
- {
- CommonInit(source);
- }
-
- public void Initialise(IConfigSource source)
- {
- IConfig moduleConfig = source.Configs["Modules"];
- if (moduleConfig != null)
- {
- string name = moduleConfig.GetString("AuthenticationServices", "");
- if (name == Name)
- CommonInit(source);
- }
- }
-
- private void CommonInit(IConfigSource source)
- {
- IConfig gridConfig = source.Configs["AuthenticationService"];
- if (gridConfig != null)
- {
- string serviceUrl = gridConfig.GetString("AuthenticationServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
- m_Enabled = true;
- }
- }
-
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN AUTH CONNECTOR]: No AuthenticationServerURI specified, disabling connector");
- }
-
- public string Authenticate(UUID principalID, string password, int lifetime, out UUID realID)
- {
- realID = UUID.Zero;
- return Authenticate(principalID, password, lifetime);
- }
-
- public string Authenticate(UUID principalID, string password, int lifetime)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetIdentities" },
- { "UserID", principalID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean() && response["Identities"] is OSDArray)
- {
- bool md5hashFound = false;
-
- OSDArray identities = (OSDArray)response["Identities"];
- for (int i = 0; i < identities.Count; i++)
- {
- OSDMap identity = identities[i] as OSDMap;
- if (identity != null)
- {
- if (identity["Type"].AsString() == "md5hash")
- {
- string authorizeResult;
- if (CheckPassword(principalID, password, identity["Credential"].AsString(), out authorizeResult))
- return authorizeResult;
-
- md5hashFound = true;
- break;
- }
- }
- }
-
- if (!md5hashFound)
- m_log.Warn("[SIMIAN AUTH CONNECTOR]: Authentication failed for " + principalID + ", no md5hash identity found");
- }
- else
- {
- m_log.Warn("[SIMIAN AUTH CONNECTOR]: Failed to retrieve identities for " + principalID + ": " +
- response["Message"].AsString());
- }
-
- return String.Empty;
- }
-
- public bool Verify(UUID principalID, string token, int lifetime)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetSession" },
- { "SessionID", token }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean())
- {
- return true;
- }
- else
- {
- m_log.Warn("[SIMIAN AUTH CONNECTOR]: Could not verify session for " + principalID + ": " +
- response["Message"].AsString());
- }
-
- return false;
- }
-
- public bool Release(UUID principalID, string token)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "RemoveSession" },
- { "UserID", principalID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean())
- {
- return true;
- }
- else
- {
- m_log.Warn("[SIMIAN AUTH CONNECTOR]: Failed to remove session for " + principalID + ": " +
- response["Message"].AsString());
- }
-
- return false;
- }
-
- public bool SetPassword(UUID principalID, string passwd)
- {
- // Fetch the user name first
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetUser" },
- { "UserID", principalID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean() && response["User"] is OSDMap)
- {
- OSDMap userMap = (OSDMap)response["User"];
- string identifier = userMap["Name"].AsString();
-
- if (!String.IsNullOrEmpty(identifier))
- {
- // Add/update the md5hash identity
- // TODO: Support salts when AddIdentity does
- // TODO: Create an a1hash too for WebDAV logins
- requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddIdentity" },
- { "Identifier", identifier },
- { "Credential", "$1$" + Utils.MD5String(passwd) },
- { "Type", "md5hash" },
- { "UserID", principalID.ToString() }
- };
-
- response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- m_log.WarnFormat("[SIMIAN AUTH CONNECTOR]: Failed to set password for {0} ({1})", identifier, principalID);
-
- return success;
- }
- }
- else
- {
- m_log.Warn("[SIMIAN AUTH CONNECTOR]: Failed to retrieve identities for " + principalID + ": " +
- response["Message"].AsString());
- }
-
- return false;
- }
-
- public AuthInfo GetAuthInfo(UUID principalID)
- {
- throw new NotImplementedException();
- }
-
- public bool SetAuthInfo(AuthInfo info)
- {
- throw new NotImplementedException();
- }
-
- private bool CheckPassword(UUID userID, string password, string simianGridCredential, out string authorizeResult)
- {
- if (simianGridCredential.Contains(":"))
- {
- // Salted version
- int idx = simianGridCredential.IndexOf(':');
- string finalhash = simianGridCredential.Substring(0, idx);
- string salt = simianGridCredential.Substring(idx + 1);
-
- if (finalhash == Utils.MD5String(password + ":" + salt))
- {
- authorizeResult = Authorize(userID);
- return true;
- }
- else
- {
- m_log.Warn("[SIMIAN AUTH CONNECTOR]: Authentication failed for " + userID +
- " using md5hash " + Utils.MD5String(password) + ":" + salt);
- }
- }
- else
- {
- // Unsalted version
- if (password == simianGridCredential ||
- "$1$" + password == simianGridCredential ||
- "$1$" + Utils.MD5String(password) == simianGridCredential ||
- Utils.MD5String(password) == simianGridCredential ||
- "$1$" + Utils.MD5String(password + ":") == simianGridCredential)
- {
- authorizeResult = Authorize(userID);
- return true;
- }
- else
- {
- m_log.Warn("[SIMIAN AUTH CONNECTOR]: Authentication failed for " + userID +
- " using md5hash $1$" + Utils.MD5String(password));
- }
- }
-
- authorizeResult = null;
- return false;
- }
-
- private string Authorize(UUID userID)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddSession" },
- { "UserID", userID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean())
- return response["SessionID"].AsUUID().ToString();
- else
- return String.Empty;
- }
- }
-}
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs
deleted file mode 100644
index 34bb2742ac..0000000000
--- a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-// DEBUG ON
-using System.Diagnostics;
-// DEBUG OFF
-using System.Reflection;
-using log4net;
-using Mono.Addins;
-using Nini.Config;
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Services.Interfaces;
-using OpenMetaverse;
-using OpenMetaverse.StructuredData;
-
-namespace OpenSim.Services.Connectors.SimianGrid
-{
- ///
- /// Connects avatar appearance data to the SimianGrid backend
- ///
- [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "SimianAvatarServiceConnector")]
- public class SimianAvatarServiceConnector : IAvatarService, ISharedRegionModule
- {
- private static readonly ILog m_log =
- LogManager.GetLogger(
- MethodBase.GetCurrentMethod().DeclaringType);
-// private static string ZeroID = UUID.Zero.ToString();
-
- private string m_serverUrl = String.Empty;
- private bool m_Enabled = false;
-
- #region ISharedRegionModule
-
- public Type ReplaceableInterface { get { return null; } }
- public void RegionLoaded(Scene scene) { }
- public void PostInitialise() { }
- public void Close() { }
-
- public SimianAvatarServiceConnector() { }
- public string Name { get { return "SimianAvatarServiceConnector"; } }
- public void AddRegion(Scene scene) { if (m_Enabled) { scene.RegisterModuleInterface(this); } }
- public void RemoveRegion(Scene scene) { if (m_Enabled) { scene.UnregisterModuleInterface(this); } }
-
- #endregion ISharedRegionModule
-
- public SimianAvatarServiceConnector(IConfigSource source)
- {
- CommonInit(source);
- }
-
- public void Initialise(IConfigSource source)
- {
- IConfig moduleConfig = source.Configs["Modules"];
- if (moduleConfig != null)
- {
- string name = moduleConfig.GetString("AvatarServices", "");
- if (name == Name)
- CommonInit(source);
- }
- }
-
- private void CommonInit(IConfigSource source)
- {
- IConfig gridConfig = source.Configs["AvatarService"];
- if (gridConfig != null)
- {
- string serviceUrl = gridConfig.GetString("AvatarServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
- m_Enabled = true;
- }
- }
-
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN AVATAR CONNECTOR]: No AvatarServerURI specified, disabling connector");
- }
-
- #region IAvatarService
-
- //
- // Retrieves the LLPackedAppearance field from user data and unpacks
- // it into an AvatarAppearance structure
- //
- //
- public AvatarAppearance GetAppearance(UUID userID)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetUser" },
- { "UserID", userID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean())
- {
- OSDMap map = null;
- try { map = OSDParser.DeserializeJson(response["LLPackedAppearance"].AsString()) as OSDMap; }
- catch { }
-
- if (map != null)
- {
- AvatarAppearance appearance = new AvatarAppearance(map);
-// DEBUG ON
- m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR] retrieved appearance for {0}:\n{1}",userID,appearance.ToString());
-// DEBUG OFF
- return appearance;
- }
-
- m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to decode appearance for {0}",userID);
- return null;
- }
-
- m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to get appearance for {0}: {1}",
- userID,response["Message"].AsString());
- return null;
- }
-
- //
- //
- //
- public bool SetAppearance(UUID userID, AvatarAppearance appearance)
- {
- EntityTransferContext ctx = new EntityTransferContext();
- OSDMap map = appearance.Pack(ctx);
- if (map == null)
- {
- m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to encode appearance for {0}",userID);
- return false;
- }
-
- // m_log.DebugFormat("[SIMIAN AVATAR CONNECTOR] save appearance for {0}",userID);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddUserData" },
- { "UserID", userID.ToString() },
- { "LLPackedAppearance", OSDParser.SerializeJsonString(map) }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (! success)
- m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to save appearance for {0}: {1}",
- userID,response["Message"].AsString());
-
- return success;
- }
-
- //
- //
- //
- public AvatarData GetAvatar(UUID userID)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetUser" },
- { "UserID", userID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean())
- {
- OSDMap map = null;
- try { map = OSDParser.DeserializeJson(response["LLAppearance"].AsString()) as OSDMap; }
- catch { }
-
- if (map != null)
- {
- AvatarWearable[] wearables = new AvatarWearable[13];
- wearables[0] = new AvatarWearable(map["ShapeItem"].AsUUID(), map["ShapeAsset"].AsUUID());
- wearables[1] = new AvatarWearable(map["SkinItem"].AsUUID(), map["SkinAsset"].AsUUID());
- wearables[2] = new AvatarWearable(map["HairItem"].AsUUID(), map["HairAsset"].AsUUID());
- wearables[3] = new AvatarWearable(map["EyesItem"].AsUUID(), map["EyesAsset"].AsUUID());
- wearables[4] = new AvatarWearable(map["ShirtItem"].AsUUID(), map["ShirtAsset"].AsUUID());
- wearables[5] = new AvatarWearable(map["PantsItem"].AsUUID(), map["PantsAsset"].AsUUID());
- wearables[6] = new AvatarWearable(map["ShoesItem"].AsUUID(), map["ShoesAsset"].AsUUID());
- wearables[7] = new AvatarWearable(map["SocksItem"].AsUUID(), map["SocksAsset"].AsUUID());
- wearables[8] = new AvatarWearable(map["JacketItem"].AsUUID(), map["JacketAsset"].AsUUID());
- wearables[9] = new AvatarWearable(map["GlovesItem"].AsUUID(), map["GlovesAsset"].AsUUID());
- wearables[10] = new AvatarWearable(map["UndershirtItem"].AsUUID(), map["UndershirtAsset"].AsUUID());
- wearables[11] = new AvatarWearable(map["UnderpantsItem"].AsUUID(), map["UnderpantsAsset"].AsUUID());
- wearables[12] = new AvatarWearable(map["SkirtItem"].AsUUID(), map["SkirtAsset"].AsUUID());
-
- AvatarAppearance appearance = new AvatarAppearance();
- appearance.Wearables = wearables;
- appearance.AvatarHeight = (float)map["Height"].AsReal();
-
- AvatarData avatar = new AvatarData(appearance);
-
- // Get attachments
- map = null;
- try { map = OSDParser.DeserializeJson(response["LLAttachments"].AsString()) as OSDMap; }
- catch { }
-
- if (map != null)
- {
- foreach (KeyValuePair kvp in map)
- avatar.Data[kvp.Key] = kvp.Value.AsString();
- }
-
- return avatar;
- }
- else
- {
- m_log.Warn("[SIMIAN AVATAR CONNECTOR]: Failed to get user appearance for " + userID +
- ", LLAppearance is missing or invalid");
- return null;
- }
- }
- else
- {
- m_log.Warn("[SIMIAN AVATAR CONNECTOR]: Failed to get user appearance for " + userID + ": " +
- response["Message"].AsString());
- }
-
- return null;
- }
-
- //
- //
- //
- public bool SetAvatar(UUID userID, AvatarData avatar)
- {
- m_log.Debug("[SIMIAN AVATAR CONNECTOR]: SetAvatar called for " + userID);
-
- if (avatar.AvatarType == 1) // LLAvatar
- {
- AvatarAppearance appearance = avatar.ToAvatarAppearance();
-
- OSDMap map = new OSDMap();
-
- map["Height"] = OSD.FromReal(appearance.AvatarHeight);
-
- map["BodyItem"] = appearance.Wearables[AvatarWearable.BODY][0].ItemID.ToString();
- map["EyesItem"] = appearance.Wearables[AvatarWearable.EYES][0].ItemID.ToString();
- map["GlovesItem"] = appearance.Wearables[AvatarWearable.GLOVES][0].ItemID.ToString();
- map["HairItem"] = appearance.Wearables[AvatarWearable.HAIR][0].ItemID.ToString();
- map["JacketItem"] = appearance.Wearables[AvatarWearable.JACKET][0].ItemID.ToString();
- map["PantsItem"] = appearance.Wearables[AvatarWearable.PANTS][0].ItemID.ToString();
- map["ShirtItem"] = appearance.Wearables[AvatarWearable.SHIRT][0].ItemID.ToString();
- map["ShoesItem"] = appearance.Wearables[AvatarWearable.SHOES][0].ItemID.ToString();
- map["SkinItem"] = appearance.Wearables[AvatarWearable.SKIN][0].ItemID.ToString();
- map["SkirtItem"] = appearance.Wearables[AvatarWearable.SKIRT][0].ItemID.ToString();
- map["SocksItem"] = appearance.Wearables[AvatarWearable.SOCKS][0].ItemID.ToString();
- map["UnderPantsItem"] = appearance.Wearables[AvatarWearable.UNDERPANTS][0].ItemID.ToString();
- map["UnderShirtItem"] = appearance.Wearables[AvatarWearable.UNDERSHIRT][0].ItemID.ToString();
- map["BodyAsset"] = appearance.Wearables[AvatarWearable.BODY][0].AssetID.ToString();
- map["EyesAsset"] = appearance.Wearables[AvatarWearable.EYES][0].AssetID.ToString();
- map["GlovesAsset"] = appearance.Wearables[AvatarWearable.GLOVES][0].AssetID.ToString();
- map["HairAsset"] = appearance.Wearables[AvatarWearable.HAIR][0].AssetID.ToString();
- map["JacketAsset"] = appearance.Wearables[AvatarWearable.JACKET][0].AssetID.ToString();
- map["PantsAsset"] = appearance.Wearables[AvatarWearable.PANTS][0].AssetID.ToString();
- map["ShirtAsset"] = appearance.Wearables[AvatarWearable.SHIRT][0].AssetID.ToString();
- map["ShoesAsset"] = appearance.Wearables[AvatarWearable.SHOES][0].AssetID.ToString();
- map["SkinAsset"] = appearance.Wearables[AvatarWearable.SKIN][0].AssetID.ToString();
- map["SkirtAsset"] = appearance.Wearables[AvatarWearable.SKIRT][0].AssetID.ToString();
- map["SocksAsset"] = appearance.Wearables[AvatarWearable.SOCKS][0].AssetID.ToString();
- map["UnderPantsAsset"] = appearance.Wearables[AvatarWearable.UNDERPANTS][0].AssetID.ToString();
- map["UnderShirtAsset"] = appearance.Wearables[AvatarWearable.UNDERSHIRT][0].AssetID.ToString();
-
-
- OSDMap items = new OSDMap();
- foreach (KeyValuePair kvp in avatar.Data)
- {
- if (kvp.Key.StartsWith("_ap_"))
- items.Add(kvp.Key, OSD.FromString(kvp.Value));
- }
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddUserData" },
- { "UserID", userID.ToString() },
- { "LLAppearance", OSDParser.SerializeJsonString(map) },
- { "LLAttachments", OSDParser.SerializeJsonString(items) }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- m_log.Warn("[SIMIAN AVATAR CONNECTOR]: Failed saving appearance for " + userID + ": " + response["Message"].AsString());
-
- return success;
- }
- else
- {
- m_log.Error("[SIMIAN AVATAR CONNECTOR]: Can't save appearance for " + userID + ". Unhandled avatar type " + avatar.AvatarType);
- return false;
- }
- }
-
- public bool ResetAvatar(UUID userID)
- {
- m_log.Error("[SIMIAN AVATAR CONNECTOR]: ResetAvatar called for " + userID + ", implement this");
- return false;
- }
-
- public bool SetItems(UUID userID, string[] names, string[] values)
- {
- m_log.Error("[SIMIAN AVATAR CONNECTOR]: SetItems called for " + userID + " with " + names.Length + " names and " + values.Length + " values, implement this");
- return false;
- }
-
- public bool RemoveItems(UUID userID, string[] names)
- {
- m_log.Error("[SIMIAN AVATAR CONNECTOR]: RemoveItems called for " + userID + " with " + names.Length + " names, implement this");
- return false;
- }
-
- #endregion IAvatarService
- }
-}
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianExternalCapsModule.cs b/OpenSim/Services/Connectors/SimianGrid/SimianExternalCapsModule.cs
deleted file mode 100644
index 49bd9a449d..0000000000
--- a/OpenSim/Services/Connectors/SimianGrid/SimianExternalCapsModule.cs
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Reflection;
-using System.IO;
-using System.Web;
-
-using log4net;
-using Nini.Config;
-using Mono.Addins;
-
-using OpenMetaverse;
-using OpenMetaverse.StructuredData;
-
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Services.Interfaces;
-using Caps = OpenSim.Framework.Capabilities.Caps;
-
-namespace OpenSim.Services.Connectors.SimianGrid
-{
- [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "SimianExternalCapsModule")]
- public class SimianExternalCapsModule : INonSharedRegionModule, IExternalCapsModule
- {
- private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- private bool m_enabled = true;
- private Scene m_scene;
- private String m_simianURL;
-
-#region IRegionModule Members
-
- public string Name
- {
- get { return this.GetType().Name; }
- }
-
- public void Initialise(IConfigSource config)
- {
- try
- {
- IConfig m_config;
-
- if ((m_config = config.Configs["SimianExternalCaps"]) != null)
- {
- m_enabled = m_config.GetBoolean("Enabled", m_enabled);
- if ((m_config = config.Configs["SimianGrid"]) != null)
- {
- m_simianURL = m_config.GetString("SimianServiceURL");
- if (String.IsNullOrEmpty(m_simianURL))
- {
- //m_log.DebugFormat("[SimianGrid] service URL is not defined");
- m_enabled = false;
- return;
- }
- }
- }
- else
- m_enabled = false;
- }
- catch (Exception e)
- {
- m_log.ErrorFormat("[SimianExternalCaps] initialization error: {0}",e.Message);
- return;
- }
- }
-
- public void PostInitialise() { }
- public void Close() { }
-
- public void AddRegion(Scene scene)
- {
- if (! m_enabled)
- return;
-
- m_scene = scene;
- m_scene.RegisterModuleInterface(this);
- }
-
- public void RemoveRegion(Scene scene)
- {
- if (! m_enabled)
- return;
-
- m_scene.EventManager.OnRegisterCaps -= RegisterCapsEventHandler;
- m_scene.EventManager.OnDeregisterCaps -= DeregisterCapsEventHandler;
- }
-
- public void RegionLoaded(Scene scene)
- {
- if (! m_enabled)
- return;
-
- m_scene.EventManager.OnRegisterCaps += RegisterCapsEventHandler;
- m_scene.EventManager.OnDeregisterCaps += DeregisterCapsEventHandler;
- }
-
- public Type ReplaceableInterface
- {
- get { return null; }
- }
-
-#endregion
-
-#region IExternalCapsModule
- // Eg http://grid.sciencesim.com/GridPublic/%CAP%/%OP%/"
- public bool RegisterExternalUserCapsHandler(UUID agentID, Caps caps, String capName, String urlSkel)
- {
- UUID cap = UUID.Random();
-
- // Call to simian to register the cap we generated
- // NameValueCollection requestArgs = new NameValueCollection
- // {
- // { "RequestMethod", "AddCapability" },
- // { "Resource", "user" },
- // { "Expiration", 0 },
- // { "OwnerID", agentID.ToString() },
- // { "CapabilityID", cap.ToString() }
- // };
-
- // OSDMap response = SimianGrid.PostToService(m_simianURL, requestArgs);
-
- Dictionary subs = new Dictionary();
- subs["%OP%"] = capName;
- subs["%USR%"] = agentID.ToString();
- subs["%CAP%"] = cap.ToString();
- subs["%SIM%"] = m_scene.RegionInfo.RegionID.ToString();
-
- caps.RegisterHandler(capName,ExpandSkeletonURL(urlSkel,subs));
- return true;
- }
-
-#endregion
-
-#region EventHandlers
- public void RegisterCapsEventHandler(UUID agentID, Caps caps) { }
- public void DeregisterCapsEventHandler(UUID agentID, Caps caps) { }
-#endregion
-
- private String ExpandSkeletonURL(String urlSkel, Dictionary subs)
- {
- String result = urlSkel;
-
- foreach (KeyValuePair kvp in subs)
- {
- result = result.Replace(kvp.Key,kvp.Value);
- }
-
- return result;
- }
- }
-}
\ No newline at end of file
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs
deleted file mode 100644
index 9a8164c5bf..0000000000
--- a/OpenSim/Services/Connectors/SimianGrid/SimianFriendsServiceConnector.cs
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Reflection;
-using log4net;
-using Nini.Config;
-using OpenMetaverse;
-using OpenMetaverse.StructuredData;
-using OpenSim.Framework;
-using OpenSim.Services.Interfaces;
-
-using FriendInfo = OpenSim.Services.Interfaces.FriendInfo;
-
-namespace OpenSim.Services.Connectors.SimianGrid
-{
- ///
- /// Stores and retrieves friend lists from the SimianGrid backend
- ///
- public class SimianFriendsServiceConnector : IFriendsService
- {
- private static readonly ILog m_log =
- LogManager.GetLogger(
- MethodBase.GetCurrentMethod().DeclaringType);
-
- private string m_serverUrl = String.Empty;
-
- public SimianFriendsServiceConnector(IConfigSource source)
- {
- Initialise(source);
- }
-
- public void Initialise(IConfigSource source)
- {
- IConfig gridConfig = source.Configs["FriendsService"];
- if (gridConfig != null)
- {
- string serviceUrl = gridConfig.GetString("FriendsServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
- }
- }
-
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN FRIENDS CONNECTOR]: No FriendsServerURI specified, disabling connector");
- }
-
- #region IFriendsService
-
- public FriendInfo[] GetFriends(UUID principalID)
- {
- return GetFriends(principalID.ToString());
- }
-
- public FriendInfo[] GetFriends(string principalID)
- {
- if (String.IsNullOrEmpty(m_serverUrl))
- return new FriendInfo[0];
-
- Dictionary friends = new Dictionary();
-
- OSDArray friendsArray = GetFriended(principalID);
- OSDArray friendedMeArray = GetFriendedBy(principalID);
-
- // Load the list of friends and their granted permissions
- for (int i = 0; i < friendsArray.Count; i++)
- {
- OSDMap friendEntry = friendsArray[i] as OSDMap;
- if (friendEntry != null)
- {
- UUID friendID = friendEntry["Key"].AsUUID();
-
- FriendInfo friend = new FriendInfo();
- if (!UUID.TryParse(principalID, out friend.PrincipalID))
- {
- string tmp = string.Empty;
- if (!Util.ParseUniversalUserIdentifier(principalID, out friend.PrincipalID, out tmp, out tmp, out tmp, out tmp))
- // bad record. ignore this entry
- continue;
- }
-
- friend.Friend = friendID.ToString();
- friend.MyFlags = friendEntry["Value"].AsInteger();
- friend.TheirFlags = -1;
-
- friends[friendID] = friend;
- }
- }
-
- // Load the permissions those friends have granted to this user
- for (int i = 0; i < friendedMeArray.Count; i++)
- {
- OSDMap friendedMeEntry = friendedMeArray[i] as OSDMap;
- if (friendedMeEntry != null)
- {
- UUID friendID = friendedMeEntry["OwnerID"].AsUUID();
-
- FriendInfo friend;
- if (friends.TryGetValue(friendID, out friend))
- friend.TheirFlags = friendedMeEntry["Value"].AsInteger();
- }
- }
-
- // Convert the dictionary of friends to an array and return it
- FriendInfo[] array = new FriendInfo[friends.Count];
- int j = 0;
- foreach (FriendInfo friend in friends.Values)
- array[j++] = friend;
-
- return array;
- }
-
- public bool StoreFriend(string principalID, string friend, int flags)
- {
- if (String.IsNullOrEmpty(m_serverUrl))
- return true;
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddGeneric" },
- { "OwnerID", principalID.ToString() },
- { "Type", "Friend" },
- { "Key", friend },
- { "Value", flags.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- m_log.Error("[SIMIAN FRIENDS CONNECTOR]: Failed to store friend " + friend + " for user " + principalID + ": " + response["Message"].AsString());
-
- return success;
- }
-
- public bool Delete(UUID principalID, string friend)
- {
- return Delete(principalID.ToString(), friend);
- }
-
- public bool Delete(string principalID, string friend)
- {
- if (String.IsNullOrEmpty(m_serverUrl))
- return true;
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "RemoveGeneric" },
- { "OwnerID", principalID.ToString() },
- { "Type", "Friend" },
- { "Key", friend }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- m_log.Error("[SIMIAN FRIENDS CONNECTOR]: Failed to remove friend " + friend + " for user " + principalID + ": " + response["Message"].AsString());
-
- return success;
- }
-
- #endregion IFriendsService
-
- private OSDArray GetFriended(string ownerID)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetGenerics" },
- { "OwnerID", ownerID.ToString() },
- { "Type", "Friend" }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean() && response["Entries"] is OSDArray)
- {
- return (OSDArray)response["Entries"];
- }
- else
- {
- m_log.Warn("[SIMIAN FRIENDS CONNECTOR]: Failed to retrieve friends for user " + ownerID + ": " + response["Message"].AsString());
- return new OSDArray(0);
- }
- }
-
- private OSDArray GetFriendedBy(string ownerID)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetGenerics" },
- { "Key", ownerID.ToString() },
- { "Type", "Friend" }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean() && response["Entries"] is OSDArray)
- {
- return (OSDArray)response["Entries"];
- }
- else
- {
- m_log.Warn("[SIMIAN FRIENDS CONNECTOR]: Failed to retrieve reverse friends for user " + ownerID + ": " + response["Message"].AsString());
- return new OSDArray(0);
- }
- }
- }
-}
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianGrid.cs b/OpenSim/Services/Connectors/SimianGrid/SimianGrid.cs
deleted file mode 100644
index b29adb39f1..0000000000
--- a/OpenSim/Services/Connectors/SimianGrid/SimianGrid.cs
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Reflection;
-using log4net;
-using Mono.Addins;
-using Nini.Config;
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Services.Interfaces;
-using OpenMetaverse;
-using OpenMetaverse.StructuredData;
-
-[assembly: Addin("SimianGrid", OpenSim.VersionInfo.VersionNumber)]
-[assembly: AddinDependency("OpenSim.Region.Framework", OpenSim.VersionInfo.VersionNumber)]
-
-namespace OpenSim.Services.Connectors.SimianGrid
-{
- [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "SimianExternalCapsModule")]
- public class SimianGrid : ISharedRegionModule
- {
- private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- private IConfig m_config = null;
-
- private String m_simianURL;
-
-#region IRegionModule Members
-
- public string Name
- {
- get { return this.GetType().Name; }
- }
-
- public void Initialise(IConfigSource config)
- {
- try
- {
- m_config = config.Configs["SimianGrid"];
-
- if (m_config != null)
- {
- m_simianURL = m_config.GetString("SimianServiceURL");
- if (String.IsNullOrEmpty(m_simianURL))
- {
- // m_log.DebugFormat("[SimianGrid] service URL is not defined");
- return;
- }
-
- InitialiseSimCap();
- SimulatorCapability = SimulatorCapability.Trim();
- m_log.InfoFormat("[SimianExternalCaps] using {0} as simulator capability",SimulatorCapability);
- }
- }
- catch (Exception e)
- {
- m_log.ErrorFormat("[SimianExternalCaps] initialization error: {0}",e.Message);
- return;
- }
- }
-
- public void PostInitialise() { }
- public void Close() { }
- public void AddRegion(Scene scene) { }
- public void RemoveRegion(Scene scene) { }
- public void RegionLoaded(Scene scene) { }
-
- public Type ReplaceableInterface
- {
- get { return null; }
- }
-
- ///
- /// Try a variety of methods for finding the simian simulator capability; first check the
- /// configuration itself, then look for a file that contains the cap, then finally look
- /// for an environment variable that contains it.
- ///
- private void InitialiseSimCap()
- {
- if (m_config.Contains("SimulatorCapability"))
- {
- SimulatorCapability = m_config.GetString("SimulatorCapability");
- return;
- }
-
- if (m_config.Contains("SimulatorCapabilityFile"))
- {
- String filename = m_config.GetString("SimulatorCapabilityFile");
- if (System.IO.File.Exists(filename))
- {
- SimulatorCapability = System.IO.File.ReadAllText(filename);
- return;
- }
- }
-
- if (m_config.Contains("SimulatorCapabilityVariable"))
- {
- String envname = m_config.GetString("SimulatorCapabilityVariable");
- String envvalue = System.Environment.GetEnvironmentVariable(envname);
- if (envvalue != null)
- {
- SimulatorCapability = envvalue;
- return;
- }
- }
-
- m_log.WarnFormat("[SimianExternalCaps] no method specified for simulator capability");
- }
-
-#endregion
-
- public static String SimulatorCapability = UUID.Zero.ToString();
- public static OSDMap PostToService(string url, NameValueCollection data)
- {
- data["cap"] = SimulatorCapability;
- return WebUtil.PostToService(url, data);
- }
- }
-}
\ No newline at end of file
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianGridMaptileModule.cs b/OpenSim/Services/Connectors/SimianGrid/SimianGridMaptileModule.cs
deleted file mode 100644
index 4896d09df6..0000000000
--- a/OpenSim/Services/Connectors/SimianGrid/SimianGridMaptileModule.cs
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Reflection;
-using System.Net;
-using System.IO;
-using System.Timers;
-using System.Drawing;
-using System.Drawing.Imaging;
-
-using log4net;
-using Mono.Addins;
-using Nini.Config;
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using OpenMetaverse;
-using OpenMetaverse.StructuredData;
-
-//namespace OpenSim.Region.OptionalModules.Simian
-namespace OpenSim.Services.Connectors.SimianGrid
-{
- ///
- ///
- ///
- ///
-
- [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "SimianGridMaptile")]
- public class SimianGridMaptile : ISharedRegionModule
- {
- private static readonly ILog m_log =
- LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- private bool m_enabled = false;
- private string m_serverUrl = String.Empty;
- private Dictionary m_scenes = new Dictionary();
-
- private int m_refreshtime = 0;
- private int m_lastrefresh = 0;
- private System.Timers.Timer m_refreshTimer = new System.Timers.Timer();
-
- #region ISharedRegionModule
-
- public Type ReplaceableInterface { get { return null; } }
- public string Name { get { return "SimianGridMaptile"; } }
- public void RegionLoaded(Scene scene) { }
- public void Close() { }
-
- ///
- ///
- ///
- public void Initialise(IConfigSource source)
- {
- IConfig config = source.Configs["SimianGridMaptiles"];
- if (config == null)
- return;
-
- if (! config.GetBoolean("Enabled", false))
- return;
-
- m_serverUrl = config.GetString("MaptileURL");
- if (String.IsNullOrEmpty(m_serverUrl))
- return;
-
- int refreshseconds = Convert.ToInt32(config.GetString("RefreshTime"));
- if (refreshseconds <= 0)
- return;
-
- m_refreshtime = refreshseconds * 1000; // convert from seconds to ms
- m_log.InfoFormat("[SIMIAN MAPTILE] enabled with refresh timeout {0} and URL {1}",
- m_refreshtime,m_serverUrl);
-
- m_enabled = true;
- }
-
- ///
- ///
- ///
- public void PostInitialise()
- {
- if (m_enabled)
- {
- m_refreshTimer.Enabled = true;
- m_refreshTimer.AutoReset = true;
- m_refreshTimer.Interval = 5 * 60 * 1000; // every 5 minutes
- m_refreshTimer.Elapsed += new ElapsedEventHandler(HandleMaptileRefresh);
- }
- }
-
-
- ///
- ///
- ///
- public void AddRegion(Scene scene)
- {
- if (! m_enabled)
- return;
-
- // Every shared region module has to maintain an indepedent list of
- // currently running regions
- lock (m_scenes)
- m_scenes[scene.RegionInfo.RegionID] = scene;
- }
-
- ///
- ///
- ///
- public void RemoveRegion(Scene scene)
- {
- if (! m_enabled)
- return;
-
- lock (m_scenes)
- m_scenes.Remove(scene.RegionInfo.RegionID);
- }
-
- #endregion ISharedRegionModule
-
- ///
- ///
- ///
- private void HandleMaptileRefresh(object sender, EventArgs ea)
- {
- // this approach is a bit convoluted becase we want to wait for the
- // first upload to happen on startup but after all the objects are
- // loaded and initialized
- if (m_lastrefresh > 0 && Util.EnvironmentTickCountSubtract(m_lastrefresh) < m_refreshtime)
- return;
-
- m_log.DebugFormat("[SIMIAN MAPTILE] map refresh fired");
- lock (m_scenes)
- {
- foreach (IScene scene in m_scenes.Values)
- {
- try
- {
- UploadMapTile(scene);
- }
- catch (Exception ex)
- {
- m_log.WarnFormat("[SIMIAN MAPTILE] something bad happened {0}",ex.Message);
- }
- }
- }
-
- m_lastrefresh = Util.EnvironmentTickCount();
- }
-
- ///
- ///
- ///
- private void UploadMapTile(IScene scene)
- {
- m_log.DebugFormat("[SIMIAN MAPTILE]: upload maptile for {0}",scene.RegionInfo.RegionName);
-
- // Create a PNG map tile and upload it to the AddMapTile API
- IMapImageGenerator tileGenerator = scene.RequestModuleInterface();
- if (tileGenerator == null)
- {
- m_log.Warn("[SIMIAN MAPTILE]: Cannot upload PNG map tile without an ImageGenerator");
- return;
- }
-
- using (Bitmap mapTile = tileGenerator.CreateMapTile())
- {
- if (mapTile != null)
- {
- // If the region/maptile is legacy sized, just upload the one tile like it has always been done
- if (mapTile.Width == Constants.RegionSize && mapTile.Height == Constants.RegionSize)
- {
- ConvertAndUploadMaptile(mapTile, scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY);
- }
- else
- {
- // For larger regions (varregion) we must cut the region image into legacy sized
- // pieces since that is how the maptile system works.
- // Note the assumption that varregions are always a multiple of legacy size.
- for (uint xx = 0; xx < mapTile.Width; xx += Constants.RegionSize)
- {
- for (uint yy = 0; yy < mapTile.Height; yy += Constants.RegionSize)
- {
- // Images are addressed from the upper left corner so have to do funny
- // math to pick out the sub-tile since regions are numbered from
- // the lower left.
- Rectangle rect = new Rectangle(
- (int)xx,
- mapTile.Height - (int)yy - (int)Constants.RegionSize,
- (int)Constants.RegionSize, (int)Constants.RegionSize);
-
- using (Bitmap subMapTile = mapTile.Clone(rect, mapTile.PixelFormat))
- {
- uint locX = scene.RegionInfo.RegionLocX + (xx / Constants.RegionSize);
- uint locY = scene.RegionInfo.RegionLocY + (yy / Constants.RegionSize);
-
- ConvertAndUploadMaptile(subMapTile, locX, locY);
- }
- }
- }
- }
- }
- else
- {
- m_log.WarnFormat("[SIMIAN MAPTILE] Tile image generation failed");
- }
- }
-
- }
-
- ///
- ///
- ///
- private void ConvertAndUploadMaptile(Image mapTile, uint locX, uint locY)
- {
- //m_log.DebugFormat("[SIMIAN MAPTILE]: upload maptile for location {0}, {1}", locX, locY);
-
- byte[] pngData = Utils.EmptyBytes;
- using (MemoryStream stream = new MemoryStream())
- {
- mapTile.Save(stream, ImageFormat.Png);
- pngData = stream.ToArray();
- }
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "xAddMapTile" },
- { "X", locX.ToString() },
- { "Y", locY.ToString() },
- { "ContentType", "image/png" },
- { "EncodedData", System.Convert.ToBase64String(pngData) }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl,requestArgs);
- if (! response["Success"].AsBoolean())
- {
- m_log.WarnFormat("[SIMIAN MAPTILE] failed to store map tile; {0}",response["Message"].AsString());
- }
- }
- }
-}
\ No newline at end of file
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs
deleted file mode 100644
index a155a602d5..0000000000
--- a/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs
+++ /dev/null
@@ -1,501 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Drawing;
-using System.Drawing.Imaging;
-using System.IO;
-using System.Net;
-using System.Reflection;
-using log4net;
-using Mono.Addins;
-using Nini.Config;
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Services.Interfaces;
-using OpenMetaverse;
-using OpenMetaverse.StructuredData;
-
-using GridRegion = OpenSim.Services.Interfaces.GridRegion;
-
-namespace OpenSim.Services.Connectors.SimianGrid
-{
- ///
- /// Connects region registration and neighbor lookups to the SimianGrid
- /// backend
- ///
- public class SimianGridServiceConnector : IGridService
- {
- private static readonly ILog m_log =
- LogManager.GetLogger(
- MethodBase.GetCurrentMethod().DeclaringType);
-
- private string m_ServerURI = String.Empty;
-// private bool m_Enabled = false;
-
- public SimianGridServiceConnector() { }
- public SimianGridServiceConnector(string serverURI)
- {
- m_ServerURI = serverURI.TrimEnd('/');
- }
-
- public SimianGridServiceConnector(IConfigSource source)
- {
- CommonInit(source);
- }
-
- public void Initialise(IConfigSource source)
- {
- CommonInit(source);
- }
-
- private void CommonInit(IConfigSource source)
- {
- IConfig gridConfig = source.Configs["GridService"];
- if (gridConfig == null)
- {
- m_log.Error("[SIMIAN GRID CONNECTOR]: GridService missing from OpenSim.ini");
- throw new Exception("Grid connector init error");
- }
-
- string serviceUrl = gridConfig.GetString("GridServerURI");
- if (String.IsNullOrEmpty(serviceUrl))
- {
- m_log.Error("[SIMIAN GRID CONNECTOR]: No Server URI named in section GridService");
- throw new Exception("Grid connector init error");
- }
-
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_ServerURI = serviceUrl;
-// m_Enabled = true;
- }
-
- #region IGridService
-
- public string RegisterRegion(UUID scopeID, GridRegion regionInfo)
- {
- IPEndPoint ext = regionInfo.ExternalEndPoint;
- if (ext == null) return "Region registration for " + regionInfo.RegionName + " failed: Could not resolve EndPoint";
- // Generate and upload our map tile in PNG format to the SimianGrid AddMapTile service
-// Scene scene;
-// if (m_scenes.TryGetValue(regionInfo.RegionID, out scene))
-// UploadMapTile(scene);
-// else
-// m_log.Warn("Registering region " + regionInfo.RegionName + " (" + regionInfo.RegionID + ") that we are not tracking");
-
- Vector3d minPosition = new Vector3d(regionInfo.RegionLocX, regionInfo.RegionLocY, 0.0);
- Vector3d maxPosition = minPosition + new Vector3d(regionInfo.RegionSizeX, regionInfo.RegionSizeY, Constants.RegionHeight);
-
- OSDMap extraData = new OSDMap
- {
- { "ServerURI", OSD.FromString(regionInfo.ServerURI) },
- { "InternalAddress", OSD.FromString(regionInfo.InternalEndPoint.Address.ToString()) },
- { "InternalPort", OSD.FromInteger(regionInfo.InternalEndPoint.Port) },
- { "ExternalAddress", OSD.FromString(ext.Address.ToString()) },
- { "ExternalPort", OSD.FromInteger(regionInfo.ExternalEndPoint.Port) },
- { "MapTexture", OSD.FromUUID(regionInfo.TerrainImage) },
- { "Access", OSD.FromInteger(regionInfo.Access) },
- { "RegionSecret", OSD.FromString(regionInfo.RegionSecret) },
- { "EstateOwner", OSD.FromUUID(regionInfo.EstateOwner) },
- { "Token", OSD.FromString(regionInfo.Token) }
- };
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddScene" },
- { "SceneID", regionInfo.RegionID.ToString() },
- { "Name", regionInfo.RegionName },
- { "MinPosition", minPosition.ToString() },
- { "MaxPosition", maxPosition.ToString() },
- { "Address", regionInfo.ServerURI },
- { "Enabled", "1" },
- { "ExtraData", OSDParser.SerializeJsonString(extraData) }
- };
-
- OSDMap response = SimianGrid.PostToService(m_ServerURI, requestArgs);
- if (response["Success"].AsBoolean())
- return String.Empty;
- else
- return "Region registration for " + regionInfo.RegionName + " failed: " + response["Message"].AsString();
- }
-
- public bool DeregisterRegion(UUID regionID)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddScene" },
- { "SceneID", regionID.ToString() },
- { "Enabled", "0" }
- };
-
- OSDMap response = SimianGrid.PostToService(m_ServerURI, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- m_log.Warn("[SIMIAN GRID CONNECTOR]: Region deregistration for " + regionID + " failed: " + response["Message"].AsString());
-
- return success;
- }
-
- public List GetNeighbours(UUID scopeID, UUID regionID)
- {
- GridRegion region = GetRegionByUUID(scopeID, regionID);
-
- int NEIGHBOR_RADIUS = Math.Max(region.RegionSizeX, region.RegionSizeY) / 2;
-
- if (region != null)
- {
- List regions = GetRegionRange(scopeID,
- region.RegionLocX - NEIGHBOR_RADIUS, region.RegionLocX + region.RegionSizeX + NEIGHBOR_RADIUS,
- region.RegionLocY - NEIGHBOR_RADIUS, region.RegionLocY + region.RegionSizeY + NEIGHBOR_RADIUS);
-
- for (int i = 0; i < regions.Count; i++)
- {
- if (regions[i].RegionID == regionID)
- {
- regions.RemoveAt(i);
- break;
- }
- }
-
-// m_log.Debug("[SIMIAN GRID CONNECTOR]: Found " + regions.Count + " neighbors for region " + regionID);
- return regions;
- }
-
- return new List(0);
- }
-
- public GridRegion GetRegionByUUID(UUID scopeID, UUID regionID)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetScene" },
- { "SceneID", regionID.ToString() }
- };
-
- // m_log.DebugFormat("[SIMIAN GRID CONNECTOR] request region with uuid {0}",regionID.ToString());
-
- OSDMap response = SimianGrid.PostToService(m_ServerURI, requestArgs);
- if (response["Success"].AsBoolean())
- {
- // m_log.DebugFormat("[SIMIAN GRID CONNECTOR] uuid request successful {0}",response["Name"].AsString());
- return ResponseToGridRegion(response);
- }
- else
- {
- m_log.Warn("[SIMIAN GRID CONNECTOR]: Grid service did not find a match for region " + regionID);
- return null;
- }
- }
-
- public GridRegion GetRegionByPosition(UUID scopeID, int x, int y)
- {
- // Go one meter in from the requested x/y coords to avoid requesting a position
- // that falls on the border of two sims
- Vector3d position = new Vector3d(x + 1, y + 1, 0.0);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetScene" },
- { "Position", position.ToString() },
- { "Enabled", "1" }
- };
-
- // m_log.DebugFormat("[SIMIAN GRID CONNECTOR] request grid at {0}",position.ToString());
-
- OSDMap response = SimianGrid.PostToService(m_ServerURI, requestArgs);
- if (response["Success"].AsBoolean())
- {
- // m_log.DebugFormat("[SIMIAN GRID CONNECTOR] position request successful {0}",response["Name"].AsString());
- return ResponseToGridRegion(response);
- }
- else
- {
- // m_log.InfoFormat("[SIMIAN GRID CONNECTOR]: Grid service did not find a match for region at {0},{1}",
- // Util.WorldToRegionLoc(x), Util.WorldToRegionLoc(y));
- return null;
- }
- }
-
- public GridRegion GetRegionByNameSpecific(UUID scopeID, string regionName)
- {
-
- return null;
- }
-
- public GridRegion GetRegionByName(UUID scopeID, string regionName)
- {
- List regions = GetRegionsByName(scopeID, regionName, 1);
-
- m_log.Debug("[SIMIAN GRID CONNECTOR]: Got " + regions.Count + " matches for region name " + regionName);
-
- if (regions.Count > 0)
- return regions[0];
-
- return null;
- }
-
- public List GetRegionsByName(UUID scopeID, string name, int maxNumber)
- {
- List foundRegions = new List();
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetScenes" },
- { "NameQuery", name },
- { "Enabled", "1" }
- };
- if (maxNumber > 0)
- requestArgs["MaxNumber"] = maxNumber.ToString();
-
- // m_log.DebugFormat("[SIMIAN GRID CONNECTOR] request regions with name {0}",name);
-
- OSDMap response = SimianGrid.PostToService(m_ServerURI, requestArgs);
- if (response["Success"].AsBoolean())
- {
- // m_log.DebugFormat("[SIMIAN GRID CONNECTOR] found regions with name {0}",name);
-
- OSDArray array = response["Scenes"] as OSDArray;
- if (array != null)
- {
- for (int i = 0; i < array.Count; i++)
- {
- GridRegion region = ResponseToGridRegion(array[i] as OSDMap);
- if (region != null)
- foundRegions.Add(region);
- }
- }
- }
-
- return foundRegions;
- }
-
- public List GetRegionRange(UUID scopeID, int xmin, int xmax, int ymin, int ymax)
- {
- List foundRegions = new List();
-
- Vector3d minPosition = new Vector3d(xmin, ymin, 0.0);
- Vector3d maxPosition = new Vector3d(xmax, ymax, Constants.RegionHeight);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetScenes" },
- { "MinPosition", minPosition.ToString() },
- { "MaxPosition", maxPosition.ToString() },
- { "Enabled", "1" }
- };
-
- //m_log.DebugFormat("[SIMIAN GRID CONNECTOR] request regions by range {0} to {1}",minPosition.ToString(),maxPosition.ToString());
-
-
- OSDMap response = SimianGrid.PostToService(m_ServerURI, requestArgs);
- if (response["Success"].AsBoolean())
- {
- OSDArray array = response["Scenes"] as OSDArray;
- if (array != null)
- {
- for (int i = 0; i < array.Count; i++)
- {
- GridRegion region = ResponseToGridRegion(array[i] as OSDMap);
- if (region != null)
- foundRegions.Add(region);
- }
- }
- }
-
- return foundRegions;
- }
-
- public List GetDefaultRegions(UUID scopeID)
- {
- // TODO: Allow specifying the default grid location
- const int DEFAULT_X = 1000 * 256;
- const int DEFAULT_Y = 1000 * 256;
-
- GridRegion defRegion = GetNearestRegion(new Vector3d(DEFAULT_X, DEFAULT_Y, 0.0), true);
- if (defRegion != null)
- return new List(1) { defRegion };
- else
- return new List(0);
- }
-
- public List GetDefaultHypergridRegions(UUID scopeID)
- {
- // TODO: Allow specifying the default grid location
- return GetDefaultRegions(scopeID);
- }
-
- public List GetFallbackRegions(UUID scopeID, int x, int y)
- {
- GridRegion defRegion = GetNearestRegion(new Vector3d(x, y, 0.0), true);
- if (defRegion != null)
- return new List(1) { defRegion };
- else
- return new List(0);
- }
-
- public List GetHyperlinks(UUID scopeID)
- {
- List foundRegions = new List();
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetScenes" },
- { "HyperGrid", "true" },
- { "Enabled", "1" }
- };
-
- OSDMap response = SimianGrid.PostToService(m_ServerURI, requestArgs);
- if (response["Success"].AsBoolean())
- {
- // m_log.DebugFormat("[SIMIAN GRID CONNECTOR] found regions with name {0}",name);
-
- OSDArray array = response["Scenes"] as OSDArray;
- if (array != null)
- {
- for (int i = 0; i < array.Count; i++)
- {
- GridRegion region = ResponseToGridRegion(array[i] as OSDMap);
- if (region != null)
- foundRegions.Add(region);
- }
- }
- }
-
- return foundRegions;
- }
-
- public int GetRegionFlags(UUID scopeID, UUID regionID)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetScene" },
- { "SceneID", regionID.ToString() }
- };
-
- m_log.DebugFormat("[SIMIAN GRID CONNECTOR] request region flags for {0}",regionID.ToString());
-
- OSDMap response = SimianGrid.PostToService(m_ServerURI, requestArgs);
- if (response["Success"].AsBoolean())
- {
- OSDMap extraData = response["ExtraData"] as OSDMap;
- int enabled = response["Enabled"].AsBoolean() ? (int)OpenSim.Framework.RegionFlags.RegionOnline : 0;
- int hypergrid = extraData["HyperGrid"].AsBoolean() ? (int)OpenSim.Framework.RegionFlags.Hyperlink : 0;
- int flags = enabled | hypergrid;
- m_log.DebugFormat("[SGGC] enabled - {0} hg - {1} flags - {2}", enabled, hypergrid, flags);
- return flags;
- }
- else
- {
- m_log.Warn("[SIMIAN GRID CONNECTOR]: Grid service did not find a match for region " + regionID + " during region flags check");
- return -1;
- }
- }
-
- public Dictionary GetExtraFeatures()
- {
- /// See SimulatorFeaturesModule - Need to get map, search and destination guide
- Dictionary extraFeatures = new Dictionary();
- return extraFeatures;
- }
-
- #endregion IGridService
-
- private GridRegion GetNearestRegion(Vector3d position, bool onlyEnabled)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetScene" },
- { "Position", position.ToString() },
- { "FindClosest", "1" }
- };
- if (onlyEnabled)
- requestArgs["Enabled"] = "1";
-
- OSDMap response = SimianGrid.PostToService(m_ServerURI, requestArgs);
- if (response["Success"].AsBoolean())
- {
- return ResponseToGridRegion(response);
- }
- else
- {
- m_log.Warn("[SIMIAN GRID CONNECTOR]: Grid service did not find a match for region at " + position);
- return null;
- }
- }
-
- private GridRegion ResponseToGridRegion(OSDMap response)
- {
- if (response == null)
- return null;
-
- OSDMap extraData = response["ExtraData"] as OSDMap;
- if (extraData == null)
- return null;
-
- GridRegion region = new GridRegion();
-
- region.RegionID = response["SceneID"].AsUUID();
- region.RegionName = response["Name"].AsString();
-
- Vector3d minPosition = response["MinPosition"].AsVector3d();
- Vector3d maxPosition = response["MaxPosition"].AsVector3d();
- region.RegionLocX = (int)minPosition.X;
- region.RegionLocY = (int)minPosition.Y;
-
- region.RegionSizeX = (int)maxPosition.X - (int)minPosition.X;
- region.RegionSizeY = (int)maxPosition.Y - (int)minPosition.Y;
-
- if ( ! extraData["HyperGrid"] ) {
- Uri httpAddress = response["Address"].AsUri();
- region.ExternalHostName = httpAddress.Host;
- region.HttpPort = (uint)httpAddress.Port;
-
- IPAddress internalAddress;
- IPAddress.TryParse(extraData["InternalAddress"].AsString(), out internalAddress);
- if (internalAddress == null)
- internalAddress = IPAddress.Any;
-
- region.InternalEndPoint = new IPEndPoint(internalAddress, extraData["InternalPort"].AsInteger());
- region.TerrainImage = extraData["MapTexture"].AsUUID();
- region.Access = (byte)extraData["Access"].AsInteger();
- region.RegionSecret = extraData["RegionSecret"].AsString();
- region.EstateOwner = extraData["EstateOwner"].AsUUID();
- region.Token = extraData["Token"].AsString();
- region.ServerURI = extraData["ServerURI"].AsString();
- } else {
- region.ServerURI = response["Address"];
- }
-
- return region;
- }
- }
-}
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs
deleted file mode 100644
index 9eefd16d1f..0000000000
--- a/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs
+++ /dev/null
@@ -1,936 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Reflection;
-using log4net;
-using Mono.Addins;
-using Nini.Config;
-using OpenMetaverse;
-using OpenMetaverse.StructuredData;
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Services.Interfaces;
-using PermissionMask = OpenSim.Framework.PermissionMask;
-
-namespace OpenSim.Services.Connectors.SimianGrid
-{
- ///
- /// Permissions bitflags
- ///
- /*
- [Flags]
- public enum PermissionMask : uint
- {
- None = 0,
- Transfer = 1 << 13,
- Modify = 1 << 14,
- Copy = 1 << 15,
- Move = 1 << 19,
- Damage = 1 << 20,
- All = 0x7FFFFFFF
- }
- */
-
- ///
- /// Connects avatar inventories to the SimianGrid backend
- ///
- [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "SimianInventoryServiceConnector")]
- public class SimianInventoryServiceConnector : IInventoryService, ISharedRegionModule
- {
- private static readonly ILog m_log =
- LogManager.GetLogger(
- MethodBase.GetCurrentMethod().DeclaringType);
-
- private string m_serverUrl = String.Empty;
- private string m_userServerUrl = String.Empty;
-// private object m_gestureSyncRoot = new object();
- private bool m_Enabled = false;
-
- private const double CACHE_EXPIRATION_SECONDS = 20.0;
- private static ExpiringCache m_ItemCache;
-
- #region ISharedRegionModule
-
- public Type ReplaceableInterface { get { return null; } }
- public void RegionLoaded(Scene scene) { }
- public void PostInitialise() { }
- public void Close() { }
-
- public SimianInventoryServiceConnector() { }
- public string Name { get { return "SimianInventoryServiceConnector"; } }
- public void AddRegion(Scene scene) { if (m_Enabled) { scene.RegisterModuleInterface(this); } }
- public void RemoveRegion(Scene scene) { if (m_Enabled) { scene.UnregisterModuleInterface(this); } }
-
- #endregion ISharedRegionModule
-
- public SimianInventoryServiceConnector(IConfigSource source)
- {
- CommonInit(source);
- }
-
- public SimianInventoryServiceConnector(string url)
- {
- if (!url.EndsWith("/") && !url.EndsWith("="))
- url = url + '/';
- m_serverUrl = url;
-
- if (m_ItemCache == null)
- m_ItemCache = new ExpiringCache();
-
- }
-
- public void Initialise(IConfigSource source)
- {
- IConfig moduleConfig = source.Configs["Modules"];
- if (moduleConfig != null)
- {
- string name = moduleConfig.GetString("InventoryServices", "");
- if (name == Name)
- CommonInit(source);
- }
- }
-
- private void CommonInit(IConfigSource source)
- {
- IConfig gridConfig = source.Configs["InventoryService"];
- if (gridConfig != null)
- {
- string serviceUrl = gridConfig.GetString("InventoryServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
-
- gridConfig = source.Configs["UserAccountService"];
- if (gridConfig != null)
- {
- serviceUrl = gridConfig.GetString("UserAccountServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- m_userServerUrl = serviceUrl;
- m_Enabled = true;
- if (m_ItemCache == null)
- m_ItemCache = new ExpiringCache();
- }
- }
- }
- }
-
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN INVENTORY CONNECTOR]: No InventoryServerURI specified, disabling connector");
- else if (String.IsNullOrEmpty(m_userServerUrl))
- m_log.Info("[SIMIAN INVENTORY CONNECTOR]: No UserAccountServerURI specified, disabling connector");
- }
-
- ///
- /// Create the entire inventory for a given user
- ///
- ///
- ///
- public bool CreateUserInventory(UUID userID)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddInventory" },
- { "OwnerID", userID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Inventory creation for " + userID + " failed: " + response["Message"].AsString());
-
- return success;
- }
-
- ///
- /// Gets the skeleton of the inventory -- folders only
- ///
- ///
- ///
- public List GetInventorySkeleton(UUID userID)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetInventoryNode" },
- { "ItemID", userID.ToString() },
- { "OwnerID", userID.ToString() },
- { "IncludeFolders", "1" },
- { "IncludeItems", "0" },
- { "ChildrenOnly", "0" }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean() && response["Items"] is OSDArray)
- {
- OSDArray items = (OSDArray)response["Items"];
- return GetFoldersFromResponse(items, userID, true);
- }
- else
- {
- m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Failed to retrieve inventory skeleton for " + userID + ": " +
- response["Message"].AsString());
- return new List(0);
- }
- }
-
- ///
- /// Retrieve the root inventory folder for the given user.
- ///
- ///
- /// null if no root folder was found
- public InventoryFolderBase GetRootFolder(UUID userID)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetInventoryNode" },
- { "ItemID", userID.ToString() },
- { "OwnerID", userID.ToString() },
- { "IncludeFolders", "1" },
- { "IncludeItems", "0" },
- { "ChildrenOnly", "1" }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean() && response["Items"] is OSDArray)
- {
- OSDArray items = (OSDArray)response["Items"];
- List folders = GetFoldersFromResponse(items, userID, true);
-
- if (folders.Count > 0)
- return folders[0];
- }
-
- return null;
- }
-
- ///
- /// Gets the user folder for the given folder-type
- ///
- ///
- ///
- ///
- public InventoryFolderBase GetFolderForType(UUID userID, FolderType type)
- {
- string contentType = SLUtil.SLAssetTypeToContentType((int)type);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetFolderForType" },
- { "ContentType", contentType },
- { "OwnerID", userID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean() && response["Folder"] is OSDMap)
- {
- OSDMap folder = (OSDMap)response["Folder"];
-
- return new InventoryFolderBase(
- folder["ID"].AsUUID(),
- folder["Name"].AsString(),
- folder["OwnerID"].AsUUID(),
- (short)SLUtil.ContentTypeToSLAssetType(folder["ContentType"].AsString()),
- folder["ParentID"].AsUUID(),
- (ushort)folder["Version"].AsInteger()
- );
- }
- else
- {
- m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Default folder not found for content type " + contentType + ": " + response["Message"].AsString());
- return GetRootFolder(userID);
- }
- }
-
- ///
- /// Get an item, given by its UUID
- ///
- ///
- ///
- public InventoryItemBase GetItem(UUID principalID, UUID itemID)
- {
- InventoryItemBase retrieved = null;
- if (m_ItemCache.TryGetValue(itemID, out retrieved))
- return retrieved;
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetInventoryNode" },
- { "ItemID", itemID.ToString() },
- { "OwnerID", principalID.ToString() },
- { "IncludeFolders", "1" },
- { "IncludeItems", "1" },
- { "ChildrenOnly", "1" }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean() && response["Items"] is OSDArray)
- {
- List items = GetItemsFromResponse((OSDArray)response["Items"]);
- if (items.Count > 0)
- {
- // The requested item should be the first in this list, but loop through
- // and sanity check just in case
- for (int i = 0; i < items.Count; i++)
- {
- if (items[i].ID == itemID)
- {
- retrieved = items[i];
- m_ItemCache.AddOrUpdate(itemID, retrieved, CACHE_EXPIRATION_SECONDS);
- return retrieved;
- }
- }
- }
- }
-
- m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Item " + itemID + " owned by " + principalID + " not found");
- return null;
- }
-
- public InventoryItemBase[] GetMultipleItems(UUID principalID, UUID[] itemIDs)
- {
- InventoryItemBase[] result = new InventoryItemBase[itemIDs.Length];
- int i = 0;
- foreach (UUID id in itemIDs)
- result[i++] = GetItem(principalID, id);
-
- return result;
- }
-
- ///
- /// Get a folder, given by its UUID
- ///
- ///
- ///
- public InventoryFolderBase GetFolder(UUID principalID, UUID folderID)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetInventoryNode" },
- { "ItemID", folderID.ToString() },
- { "OwnerID", principalID.ToString() },
- { "IncludeFolders", "1" },
- { "IncludeItems", "0" },
- { "ChildrenOnly", "1" }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean() && response["Items"] is OSDArray)
- {
- OSDArray items = (OSDArray)response["Items"];
- List folders = GetFoldersFromResponse(items, folderID, true);
-
- if (folders.Count > 0)
- return folders[0];
- }
-
- return null;
- }
-
- ///
- /// Gets everything (folders and items) inside a folder
- ///
- ///
- ///
- ///
- public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
- {
- InventoryCollection inventory = new InventoryCollection();
- inventory.OwnerID = userID;
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetInventoryNode" },
- { "ItemID", folderID.ToString() },
- { "OwnerID", userID.ToString() },
- { "IncludeFolders", "1" },
- { "IncludeItems", "1" },
- { "ChildrenOnly", "1" }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean() && response["Items"] is OSDArray)
- {
- OSDArray items = (OSDArray)response["Items"];
-
- inventory.Folders = GetFoldersFromResponse(items, folderID, false);
- inventory.Items = GetItemsFromResponse(items);
- }
- else
- {
- m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Error fetching folder " + folderID + " content for " + userID + ": " +
- response["Message"].AsString());
- inventory.Folders = new List(0);
- inventory.Items = new List(0);
- }
-
- return inventory;
- }
-
- public virtual InventoryCollection[] GetMultipleFoldersContent(UUID principalID, UUID[] folderIDs)
- {
- InventoryCollection[] invColl = new InventoryCollection[folderIDs.Length];
- int i = 0;
- foreach (UUID fid in folderIDs)
- {
- invColl[i++] = GetFolderContent(principalID, fid);
- }
-
- return invColl;
- }
-
- ///
- /// Gets the items inside a folder
- ///
- ///
- ///
- ///
- public List GetFolderItems(UUID userID, UUID folderID)
- {
- InventoryCollection inventory = new InventoryCollection();
- inventory.OwnerID = userID;
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetInventoryNode" },
- { "ItemID", folderID.ToString() },
- { "OwnerID", userID.ToString() },
- { "IncludeFolders", "0" },
- { "IncludeItems", "1" },
- { "ChildrenOnly", "1" }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean() && response["Items"] is OSDArray)
- {
- OSDArray items = (OSDArray)response["Items"];
- return GetItemsFromResponse(items);
- }
- else
- {
- m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Error fetching folder " + folderID + " for " + userID + ": " +
- response["Message"].AsString());
- return new List(0);
- }
- }
-
- ///
- /// Add a new folder to the user's inventory
- ///
- ///
- /// true if the folder was successfully added
- public bool AddFolder(InventoryFolderBase folder)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddInventoryFolder" },
- { "FolderID", folder.ID.ToString() },
- { "ParentID", folder.ParentID.ToString() },
- { "OwnerID", folder.Owner.ToString() },
- { "Name", folder.Name },
- { "ContentType", SLUtil.SLAssetTypeToContentType(folder.Type) }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- {
- m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Error creating folder " + folder.Name + " for " + folder.Owner + ": " +
- response["Message"].AsString());
- }
-
- return success;
- }
-
- ///
- /// Update a folder in the user's inventory
- ///
- ///
- /// true if the folder was successfully updated
- public bool UpdateFolder(InventoryFolderBase folder)
- {
- return AddFolder(folder);
- }
-
- ///
- /// Move an inventory folder to a new location
- ///
- /// A folder containing the details of the new location
- /// true if the folder was successfully moved
- public bool MoveFolder(InventoryFolderBase folder)
- {
- return AddFolder(folder);
- }
-
- ///
- /// Delete an item from the user's inventory
- ///
- ///
- /// true if the item was successfully deleted
- //bool DeleteItem(InventoryItemBase item);
- public bool DeleteFolders(UUID userID, List folderIDs)
- {
- return DeleteItems(userID, folderIDs);
- }
-
- ///
- /// Delete an item from the user's inventory
- ///
- ///
- /// true if the item was successfully deleted
- public bool DeleteItems(UUID userID, List itemIDs)
- {
- // TODO: RemoveInventoryNode should be replaced with RemoveInventoryNodes
- bool allSuccess = true;
-
- for (int i = 0; i < itemIDs.Count; i++)
- {
- UUID itemID = itemIDs[i];
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "RemoveInventoryNode" },
- { "OwnerID", userID.ToString() },
- { "ItemID", itemID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- {
- m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Error removing item " + itemID + " for " + userID + ": " +
- response["Message"].AsString());
- allSuccess = false;
- }
- }
-
- return allSuccess;
- }
-
- ///
- /// Purge an inventory folder of all its items and subfolders.
- ///
- ///
- /// true if the folder was successfully purged
- public bool PurgeFolder(InventoryFolderBase folder)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "PurgeInventoryFolder" },
- { "OwnerID", folder.Owner.ToString() },
- { "FolderID", folder.ID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- {
- m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Error purging folder " + folder.ID + " for " + folder.Owner + ": " +
- response["Message"].AsString());
- }
-
- return success;
- }
-
- ///
- /// Add a new item to the user's inventory
- ///
- ///
- /// true if the item was successfully added
- public bool AddItem(InventoryItemBase item)
- {
- // A folder of UUID.Zero means we need to find the most appropriate home for this item
- if (item.Folder == UUID.Zero)
- {
- InventoryFolderBase folder = null;
- if (Enum.IsDefined(typeof(FolderType), (sbyte)item.AssetType))
- folder = GetFolderForType(item.Owner, (FolderType)item.AssetType);
- if (folder != null && folder.ID != UUID.Zero)
- item.Folder = folder.ID;
- else
- item.Folder = item.Owner; // Root folder
- }
-
- if ((AssetType)item.AssetType == AssetType.Gesture)
- UpdateGesture(item.Owner, item.ID, item.Flags == 1);
-
- if (item.BasePermissions == 0)
- m_log.WarnFormat("[SIMIAN INVENTORY CONNECTOR]: Adding inventory item {0} ({1}) with no base permissions", item.Name, item.ID);
-
- OSDMap permissions = new OSDMap
- {
- { "BaseMask", OSD.FromInteger(item.BasePermissions) },
- { "EveryoneMask", OSD.FromInteger(item.EveryOnePermissions) },
- { "GroupMask", OSD.FromInteger(item.GroupPermissions) },
- { "NextOwnerMask", OSD.FromInteger(item.NextPermissions) },
- { "OwnerMask", OSD.FromInteger(item.CurrentPermissions) }
- };
-
- OSDMap extraData = new OSDMap()
- {
- { "Flags", OSD.FromInteger(item.Flags) },
- { "GroupID", OSD.FromUUID(item.GroupID) },
- { "GroupOwned", OSD.FromBoolean(item.GroupOwned) },
- { "SalePrice", OSD.FromInteger(item.SalePrice) },
- { "SaleType", OSD.FromInteger(item.SaleType) },
- { "Permissions", permissions }
- };
-
- // Add different asset type only if it differs from inventory type
- // (needed for links)
- string invContentType = SLUtil.SLInvTypeToContentType(item.InvType);
- string assetContentType = SLUtil.SLAssetTypeToContentType(item.AssetType);
-
- if (invContentType != assetContentType)
- extraData["LinkedItemType"] = OSD.FromString(assetContentType);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddInventoryItem" },
- { "ItemID", item.ID.ToString() },
- { "AssetID", item.AssetID.ToString() },
- { "ParentID", item.Folder.ToString() },
- { "OwnerID", item.Owner.ToString() },
- { "Name", item.Name },
- { "Description", item.Description },
- { "CreatorID", item.CreatorId },
- { "CreatorData", item.CreatorData },
- { "ContentType", invContentType },
- { "ExtraData", OSDParser.SerializeJsonString(extraData) }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- {
- m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Error creating item " + item.Name + " for " + item.Owner + ": " +
- response["Message"].AsString());
- }
-
- return success;
- }
-
- ///
- /// Update an item in the user's inventory
- ///
- ///
- /// true if the item was successfully updated
- public bool UpdateItem(InventoryItemBase item)
- {
- if (item.AssetID != UUID.Zero)
- {
- return AddItem(item);
- }
- else
- {
- // This is actually a folder update
- InventoryFolderBase folder = new InventoryFolderBase(item.ID, item.Name, item.Owner, (short)item.AssetType, item.Folder, 0);
- return UpdateFolder(folder);
- }
- }
-
- public bool MoveItems(UUID ownerID, List items)
- {
- bool success = true;
-
- while (items.Count > 0)
- {
- List currentItems = new List();
- UUID destFolderID = items[0].Folder;
-
- // Find all of the items being moved to the current destination folder
- for (int i = 0; i < items.Count; i++)
- {
- InventoryItemBase item = items[i];
- if (item.Folder == destFolderID)
- currentItems.Add(item);
- }
-
- // Do the inventory move for the current items
- success &= MoveItems(ownerID, items, destFolderID);
-
- // Remove the processed items from the list
- for (int i = 0; i < currentItems.Count; i++)
- items.Remove(currentItems[i]);
- }
-
- return success;
- }
-
- ///
- /// Does the given user have an inventory structure?
- ///
- ///
- ///
- public bool HasInventoryForUser(UUID userID)
- {
- return GetRootFolder(userID) != null;
- }
-
- ///
- /// Get the active gestures of the agent.
- ///
- ///
- ///
- public List GetActiveGestures(UUID userID)
- {
- OSDArray items = FetchGestures(userID);
-
- string[] itemIDs = new string[items.Count];
- for (int i = 0; i < items.Count; i++)
- itemIDs[i] = items[i].AsUUID().ToString();
-
-// NameValueCollection requestArgs = new NameValueCollection
-// {
-// { "RequestMethod", "GetInventoryNodes" },
-// { "OwnerID", userID.ToString() },
-// { "Items", String.Join(",", itemIDs) }
-// };
-
- // FIXME: Implement this in SimianGrid
- return new List(0);
- }
-
- ///
- /// Get the union of permissions of all inventory items
- /// that hold the given assetID.
- ///
- ///
- ///
- /// The permissions or 0 if no such asset is found in
- /// the user's inventory
- public int GetAssetPermissions(UUID userID, UUID assetID)
- {
-// NameValueCollection requestArgs = new NameValueCollection
-// {
-// { "RequestMethod", "GetInventoryNodes" },
-// { "OwnerID", userID.ToString() },
-// { "AssetID", assetID.ToString() }
-// };
-
- // FIXME: Implement this in SimianGrid
- return (int)PermissionMask.All;
- }
-
- private List GetFoldersFromResponse(OSDArray items, UUID baseFolder, bool includeBaseFolder)
- {
- List invFolders = new List(items.Count);
-
- for (int i = 0; i < items.Count; i++)
- {
- OSDMap item = items[i] as OSDMap;
-
- if (item != null && item["Type"].AsString() == "Folder")
- {
- UUID folderID = item["ID"].AsUUID();
-
- if (folderID == baseFolder && !includeBaseFolder)
- continue;
-
- invFolders.Add(new InventoryFolderBase(
- folderID,
- item["Name"].AsString(),
- item["OwnerID"].AsUUID(),
- (short)SLUtil.ContentTypeToSLAssetType(item["ContentType"].AsString()),
- item["ParentID"].AsUUID(),
- (ushort)item["Version"].AsInteger()
- ));
- }
- }
-
-// m_log.Debug("[SIMIAN INVENTORY CONNECTOR]: Parsed " + invFolders.Count + " folders from SimianGrid response");
- return invFolders;
- }
-
- private List GetItemsFromResponse(OSDArray items)
- {
- List invItems = new List(items.Count);
-
- for (int i = 0; i < items.Count; i++)
- {
- OSDMap item = items[i] as OSDMap;
-
- if (item != null && item["Type"].AsString() == "Item")
- {
- InventoryItemBase invItem = new InventoryItemBase();
-
- invItem.AssetID = item["AssetID"].AsUUID();
- invItem.AssetType = SLUtil.ContentTypeToSLAssetType(item["ContentType"].AsString());
- invItem.CreationDate = item["CreationDate"].AsInteger();
- invItem.CreatorId = item["CreatorID"].AsString();
- invItem.CreatorData = item["CreatorData"].AsString();
- invItem.Description = item["Description"].AsString();
- invItem.Folder = item["ParentID"].AsUUID();
- invItem.ID = item["ID"].AsUUID();
- invItem.InvType = SLUtil.ContentTypeToSLInvType(item["ContentType"].AsString());
- invItem.Name = item["Name"].AsString();
- invItem.Owner = item["OwnerID"].AsUUID();
-
- OSDMap extraData = item["ExtraData"] as OSDMap;
- if (extraData != null && extraData.Count > 0)
- {
- invItem.Flags = extraData["Flags"].AsUInteger();
- invItem.GroupID = extraData["GroupID"].AsUUID();
- invItem.GroupOwned = extraData["GroupOwned"].AsBoolean();
- invItem.SalePrice = extraData["SalePrice"].AsInteger();
- invItem.SaleType = (byte)extraData["SaleType"].AsInteger();
-
- OSDMap perms = extraData["Permissions"] as OSDMap;
- if (perms != null)
- {
- invItem.BasePermissions = perms["BaseMask"].AsUInteger();
- invItem.CurrentPermissions = perms["OwnerMask"].AsUInteger();
- invItem.EveryOnePermissions = perms["EveryoneMask"].AsUInteger();
- invItem.GroupPermissions = perms["GroupMask"].AsUInteger();
- invItem.NextPermissions = perms["NextOwnerMask"].AsUInteger();
- }
-
- if (extraData.ContainsKey("LinkedItemType"))
- invItem.AssetType = SLUtil.ContentTypeToSLAssetType(extraData["LinkedItemType"].AsString());
- }
-
- if (invItem.BasePermissions == 0)
- {
- m_log.InfoFormat("[SIMIAN INVENTORY CONNECTOR]: Forcing item permissions to full for item {0} ({1})",
- invItem.Name, invItem.ID);
- invItem.BasePermissions = (uint)PermissionMask.All;
- invItem.CurrentPermissions = (uint)PermissionMask.All;
- invItem.EveryOnePermissions = (uint)PermissionMask.All;
- invItem.GroupPermissions = (uint)PermissionMask.All;
- invItem.NextPermissions = (uint)PermissionMask.All;
- }
-
- invItems.Add(invItem);
- }
- }
-
-// m_log.Debug("[SIMIAN INVENTORY CONNECTOR]: Parsed " + invItems.Count + " items from SimianGrid response");
- return invItems;
- }
-
- private bool MoveItems(UUID ownerID, List items, UUID destFolderID)
- {
- string[] itemIDs = new string[items.Count];
- for (int i = 0; i < items.Count; i++)
- itemIDs[i] = items[i].ID.ToString();
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "MoveInventoryNodes" },
- { "OwnerID", ownerID.ToString() },
- { "FolderID", destFolderID.ToString() },
- { "Items", String.Join(",", itemIDs) }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- {
- m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Failed to move " + items.Count + " items to " +
- destFolderID + ": " + response["Message"].AsString());
- }
-
- return success;
- }
-
- private void UpdateGesture(UUID userID, UUID itemID, bool enabled)
- {
- OSDArray gestures = FetchGestures(userID);
- OSDArray newGestures = new OSDArray();
-
- for (int i = 0; i < gestures.Count; i++)
- {
- UUID gesture = gestures[i].AsUUID();
- if (gesture != itemID)
- newGestures.Add(OSD.FromUUID(gesture));
- }
-
- if (enabled)
- newGestures.Add(OSD.FromUUID(itemID));
-
- SaveGestures(userID, newGestures);
- }
-
- private OSDArray FetchGestures(UUID userID)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetUser" },
- { "UserID", userID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_userServerUrl, requestArgs);
- if (response["Success"].AsBoolean())
- {
- OSDMap user = response["User"] as OSDMap;
- if (user != null && response.ContainsKey("Gestures"))
- {
- OSD gestures = OSDParser.DeserializeJson(response["Gestures"].AsString());
- if (gestures != null && gestures is OSDArray)
- return (OSDArray)gestures;
- else
- m_log.Error("[SIMIAN INVENTORY CONNECTOR]: Unrecognized active gestures data for " + userID);
- }
- }
- else
- {
- m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Failed to fetch active gestures for " + userID + ": " +
- response["Message"].AsString());
- }
-
- return new OSDArray();
- }
-
- private void SaveGestures(UUID userID, OSDArray gestures)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddUserData" },
- { "UserID", userID.ToString() },
- { "Gestures", OSDParser.SerializeJsonString(gestures) }
- };
-
- OSDMap response = SimianGrid.PostToService(m_userServerUrl, requestArgs);
- if (!response["Success"].AsBoolean())
- {
- m_log.Warn("[SIMIAN INVENTORY CONNECTOR]: Failed to save active gestures for " + userID + ": " +
- response["Message"].AsString());
- }
- }
- }
-}
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs
deleted file mode 100644
index 08efefb834..0000000000
--- a/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs
+++ /dev/null
@@ -1,459 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Reflection;
-using log4net;
-using Mono.Addins;
-using Nini.Config;
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Services.Interfaces;
-using OpenMetaverse;
-using OpenMetaverse.StructuredData;
-
-using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo;
-
-namespace OpenSim.Services.Connectors.SimianGrid
-{
- ///
- /// Connects avatar presence information (for tracking current location and
- /// message routing) to the SimianGrid backend
- ///
- [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "SimianPresenceServiceConnector")]
- public class SimianPresenceServiceConnector : IPresenceService, IGridUserService, ISharedRegionModule
- {
- private static readonly ILog m_log =
- LogManager.GetLogger(
- MethodBase.GetCurrentMethod().DeclaringType);
-
- private string m_serverUrl = String.Empty;
- private SimianActivityDetector m_activityDetector;
- private bool m_Enabled = false;
-
- #region ISharedRegionModule
-
- public Type ReplaceableInterface { get { return null; } }
- public void RegionLoaded(Scene scene) { }
- public void PostInitialise() { }
- public void Close() { }
-
- public SimianPresenceServiceConnector() { }
- public string Name { get { return "SimianPresenceServiceConnector"; } }
- public void AddRegion(Scene scene)
- {
- if (m_Enabled)
- {
- scene.RegisterModuleInterface(this);
- scene.RegisterModuleInterface(this);
-
- m_activityDetector.AddRegion(scene);
-
- LogoutRegionAgents(scene.RegionInfo.RegionID);
- }
- }
- public void RemoveRegion(Scene scene)
- {
- if (m_Enabled)
- {
- scene.UnregisterModuleInterface(this);
- scene.UnregisterModuleInterface(this);
-
- m_activityDetector.RemoveRegion(scene);
-
- LogoutRegionAgents(scene.RegionInfo.RegionID);
- }
- }
-
- #endregion ISharedRegionModule
-
- public SimianPresenceServiceConnector(IConfigSource source)
- {
- CommonInit(source);
- }
-
- public void Initialise(IConfigSource source)
- {
- IConfig moduleConfig = source.Configs["Modules"];
- if (moduleConfig != null)
- {
- string name = moduleConfig.GetString("PresenceServices", "");
- if (name == Name)
- CommonInit(source);
- }
- }
-
- private void CommonInit(IConfigSource source)
- {
- IConfig gridConfig = source.Configs["PresenceService"];
- if (gridConfig != null)
- {
- string serviceUrl = gridConfig.GetString("PresenceServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
- m_activityDetector = new SimianActivityDetector(this);
- m_Enabled = true;
- }
- }
-
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN PRESENCE CONNECTOR]: No PresenceServerURI specified, disabling connector");
- }
-
- #region IPresenceService
-
- public bool LoginAgent(string userID, UUID sessionID, UUID secureSessionID)
- {
- m_log.ErrorFormat("[SIMIAN PRESENCE CONNECTOR]: Login requested, UserID={0}, SessionID={1}, SecureSessionID={2}",
- userID, sessionID, secureSessionID);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddSession" },
- { "UserID", userID.ToString() }
- };
-
- if (sessionID != UUID.Zero)
- {
- requestArgs["SessionID"] = sessionID.ToString();
- requestArgs["SecureSessionID"] = secureSessionID.ToString();
- }
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- m_log.Warn("[SIMIAN PRESENCE CONNECTOR]: Failed to login agent " + userID + ": " + response["Message"].AsString());
-
- return success;
- }
-
- public bool LogoutAgent(UUID sessionID)
- {
- // m_log.InfoFormat("[SIMIAN PRESENCE CONNECTOR]: Logout requested for agent with sessionID " + sessionID);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "RemoveSession" },
- { "SessionID", sessionID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- m_log.Warn("[SIMIAN PRESENCE CONNECTOR]: Failed to logout agent with sessionID " + sessionID + ": " + response["Message"].AsString());
-
- return success;
- }
-
- public bool LogoutRegionAgents(UUID regionID)
- {
- // m_log.InfoFormat("[SIMIAN PRESENCE CONNECTOR]: Logout requested for all agents in region " + regionID);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "RemoveSessions" },
- { "SceneID", regionID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- m_log.Warn("[SIMIAN PRESENCE CONNECTOR]: Failed to logout agents from region " + regionID + ": " + response["Message"].AsString());
-
- return success;
- }
-
- public bool ReportAgent(UUID sessionID, UUID regionID)
- {
- // Not needed for SimianGrid
- return true;
- }
-
- public PresenceInfo GetAgent(UUID sessionID)
- {
- OSDMap sessionResponse = GetSessionDataFromSessionID(sessionID);
- if (sessionResponse == null)
- {
- m_log.WarnFormat("[SIMIAN PRESENCE CONNECTOR]: Failed to retrieve session {0}: {1}",sessionID.ToString(),sessionResponse["Message"].AsString());
- return null;
- }
-
- UUID userID = sessionResponse["UserID"].AsUUID();
- OSDMap userResponse = GetUserData(userID);
- if (userResponse == null)
- {
- m_log.WarnFormat("[SIMIAN PRESENCE CONNECTOR]: Failed to retrieve user data for {0}: {1}",userID.ToString(),userResponse["Message"].AsString());
- return null;
- }
-
- return ResponseToPresenceInfo(sessionResponse);
- }
-
- public PresenceInfo[] GetAgents(string[] userIDs)
- {
- List presences = new List();
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetSessions" },
- { "UserIDList", String.Join(",",userIDs) }
- };
-
- OSDMap sessionListResponse = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (! sessionListResponse["Success"].AsBoolean())
- {
- m_log.WarnFormat("[SIMIAN PRESENCE CONNECTOR]: Failed to retrieve sessions: {0}",sessionListResponse["Message"].AsString());
- return null;
- }
-
- OSDArray sessionList = sessionListResponse["Sessions"] as OSDArray;
- for (int i = 0; i < sessionList.Count; i++)
- {
- OSDMap sessionInfo = sessionList[i] as OSDMap;
- presences.Add(ResponseToPresenceInfo(sessionInfo));
- }
-
- return presences.ToArray();
- }
-
- #endregion IPresenceService
-
- #region IGridUserService
-
- public GridUserInfo LoggedIn(string userID)
- {
- // Never implemented at the sim
- return null;
- }
-
- public bool LoggedOut(string userID, UUID sessionID, UUID regionID, Vector3 lastPosition, Vector3 lastLookAt)
- {
- // m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Logging out user " + userID);
-
- // Remove the session to mark this user offline
- if (!LogoutAgent(sessionID))
- return false;
-
- // Save our last position as user data
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddUserData" },
- { "UserID", userID.ToString() },
- { "LastLocation", SerializeLocation(regionID, lastPosition, lastLookAt) }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- m_log.Warn("[SIMIAN PRESENCE CONNECTOR]: Failed to set last location for " + userID + ": " + response["Message"].AsString());
-
- return success;
- }
-
- public bool SetHome(string userID, UUID regionID, Vector3 position, Vector3 lookAt)
- {
- // m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Setting home location for user " + userID);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddUserData" },
- { "UserID", userID.ToString() },
- { "HomeLocation", SerializeLocation(regionID, position, lookAt) }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- m_log.Warn("[SIMIAN PRESENCE CONNECTOR]: Failed to set home location for " + userID + ": " + response["Message"].AsString());
-
- return success;
- }
-
- public bool SetLastPosition(string userID, UUID sessionID, UUID regionID, Vector3 lastPosition, Vector3 lastLookAt)
- {
- return UpdateSession(sessionID, regionID, lastPosition, lastLookAt);
- }
-
- public GridUserInfo GetGridUserInfo(string user)
- {
- // m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Requesting session data for agent " + user);
-
- UUID userID = new UUID(user);
- OSDMap userResponse = GetUserData(userID);
-
- if (userResponse == null)
- {
- m_log.WarnFormat("[SIMIAN PRESENCE CONNECTOR]: Failed to retrieve user data for {0}", userID);
- }
-
- // Note that ResponseToGridUserInfo properly checks for and returns a null if passed a null.
- return ResponseToGridUserInfo(userResponse);
-
- }
-
- #endregion
-
- #region Helpers
-
- private OSDMap GetUserData(UUID userID)
- {
- // m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Requesting user data for " + userID);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetUser" },
- { "UserID", userID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean() && response["User"] is OSDMap)
- return response;
-
- m_log.WarnFormat("[SIMIAN PRESENCE CONNECTOR]: Failed to retrieve user data for {0}; {1}",userID.ToString(),response["Message"].AsString());
- return null;
- }
-
- private OSDMap GetSessionDataFromSessionID(UUID sessionID)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetSession" },
- { "SessionID", sessionID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean())
- return response;
-
- m_log.WarnFormat("[SIMIAN PRESENCE CONNECTOR]: Failed to retrieve session data for {0}; {1}",sessionID.ToString(),response["Message"].AsString());
- return null;
- }
-
- private bool UpdateSession(UUID sessionID, UUID regionID, Vector3 lastPosition, Vector3 lastLookAt)
- {
- // Save our current location as session data
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "UpdateSession" },
- { "SessionID", sessionID.ToString() },
- { "SceneID", regionID.ToString() },
- { "ScenePosition", lastPosition.ToString() },
- { "SceneLookAt", lastLookAt.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- m_log.Warn("[SIMIAN PRESENCE CONNECTOR]: Failed to update agent session " + sessionID + ": " + response["Message"].AsString());
-
- return success;
- }
-
- private PresenceInfo ResponseToPresenceInfo(OSDMap sessionResponse)
- {
- if (sessionResponse == null)
- return null;
-
- PresenceInfo info = new PresenceInfo();
-
- info.UserID = sessionResponse["UserID"].AsUUID().ToString();
- info.RegionID = sessionResponse["SceneID"].AsUUID();
-
- return info;
- }
-
- private GridUserInfo ResponseToGridUserInfo(OSDMap userResponse)
- {
- if (userResponse != null && userResponse["User"] is OSDMap)
- {
- GridUserInfo info = new GridUserInfo();
-
- info.Online = true;
- info.UserID = userResponse["UserID"].AsUUID().ToString();
- info.LastRegionID = userResponse["SceneID"].AsUUID();
- info.LastPosition = userResponse["ScenePosition"].AsVector3();
- info.LastLookAt = userResponse["SceneLookAt"].AsVector3();
-
- OSDMap user = (OSDMap)userResponse["User"];
-
- info.Login = user["LastLoginDate"].AsDate();
- info.Logout = user["LastLogoutDate"].AsDate();
- DeserializeLocation(user["HomeLocation"].AsString(), out info.HomeRegionID, out info.HomePosition, out info.HomeLookAt);
-
- return info;
- }
-
- return null;
- }
-
- private string SerializeLocation(UUID regionID, Vector3 position, Vector3 lookAt)
- {
- return "{" + String.Format("\"SceneID\":\"{0}\",\"Position\":\"{1}\",\"LookAt\":\"{2}\"", regionID, position, lookAt) + "}";
- }
-
- private bool DeserializeLocation(string location, out UUID regionID, out Vector3 position, out Vector3 lookAt)
- {
- OSDMap map = null;
-
- try { map = OSDParser.DeserializeJson(location) as OSDMap; }
- catch { }
-
- if (map != null)
- {
- regionID = map["SceneID"].AsUUID();
- if (Vector3.TryParse(map["Position"].AsString(), out position) &&
- Vector3.TryParse(map["LookAt"].AsString(), out lookAt))
- {
- return true;
- }
- }
-
- regionID = UUID.Zero;
- position = Vector3.Zero;
- lookAt = Vector3.Zero;
- return false;
- }
-
- public GridUserInfo[] GetGridUserInfo(string[] userIDs)
- {
- return new GridUserInfo[0];
- }
- #endregion Helpers
- }
-}
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs b/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs
deleted file mode 100644
index a388bcc4a4..0000000000
--- a/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs
+++ /dev/null
@@ -1,478 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Reflection;
-using log4net;
-using Mono.Addins;
-using Nini.Config;
-using OpenMetaverse;
-using OpenMetaverse.StructuredData;
-using OpenSim.Framework;
-using OpenSim.Framework.Client;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Services.Interfaces;
-
-namespace OpenSim.Services.Connectors.SimianGrid
-{
- ///
- /// Avatar profile flags
- ///
- [Flags]
- public enum ProfileFlags : uint
- {
- AllowPublish = 1,
- MaturePublish = 2,
- Identified = 4,
- Transacted = 8,
- Online = 16
- }
-
- ///
- /// Connects avatar profile and classified queries to the SimianGrid
- /// backend
- ///
- [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "SimianProfiles")]
- public class SimianProfiles : INonSharedRegionModule
- {
- private static readonly ILog m_log =
- LogManager.GetLogger(
- MethodBase.GetCurrentMethod().DeclaringType);
-
- private string m_serverUrl = String.Empty;
- private bool m_Enabled = false;
-
- #region INonSharedRegionModule
-
- public Type ReplaceableInterface { get { return null; } }
- public void RegionLoaded(Scene scene) { }
- public void Close() { }
-
- public SimianProfiles() { }
- public string Name { get { return "SimianProfiles"; } }
-
- public void AddRegion(Scene scene)
- {
- if (m_Enabled)
- {
- CheckEstateManager(scene);
- scene.EventManager.OnClientConnect += ClientConnectHandler;
- }
- }
-
- public void RemoveRegion(Scene scene)
- {
- if (m_Enabled)
- {
- scene.EventManager.OnClientConnect -= ClientConnectHandler;
- }
- }
-
- #endregion INonSharedRegionModule
-
- public SimianProfiles(IConfigSource source)
- {
- Initialise(source);
- }
-
- public void Initialise(IConfigSource source)
- {
- IConfig profileConfig = source.Configs["Profiles"];
- if (profileConfig == null)
- return;
-
- if (profileConfig.GetString("Module", String.Empty) != Name)
- return;
-
- m_log.DebugFormat("[SIMIAN PROFILES] module enabled");
- m_Enabled = true;
-
- IConfig gridConfig = source.Configs["UserAccountService"];
- if (gridConfig != null)
- {
- string serviceUrl = gridConfig.GetString("UserAccountServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
- }
- }
-
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN PROFILES]: No UserAccountServerURI specified, disabling connector");
- }
-
- private void ClientConnectHandler(IClientCore clientCore)
- {
- if (clientCore is IClientAPI)
- {
- IClientAPI client = (IClientAPI)clientCore;
-
- // Classifieds
- client.AddGenericPacketHandler("avatarclassifiedsrequest", AvatarClassifiedsRequestHandler);
- client.OnClassifiedInfoRequest += ClassifiedInfoRequestHandler;
- client.OnClassifiedInfoUpdate += ClassifiedInfoUpdateHandler;
- client.OnClassifiedDelete += ClassifiedDeleteHandler;
-
- // Picks
- client.AddGenericPacketHandler("avatarpicksrequest", HandleAvatarPicksRequest);
- client.AddGenericPacketHandler("pickinforequest", HandlePickInfoRequest);
- client.OnPickInfoUpdate += PickInfoUpdateHandler;
- client.OnPickDelete += PickDeleteHandler;
-
- // Notes
- client.AddGenericPacketHandler("avatarnotesrequest", HandleAvatarNotesRequest);
- client.OnAvatarNotesUpdate += AvatarNotesUpdateHandler;
-
- // Profiles
- client.OnRequestAvatarProperties += RequestAvatarPropertiesHandler;
-
- client.OnUpdateAvatarProperties += UpdateAvatarPropertiesHandler;
- client.OnAvatarInterestUpdate += AvatarInterestUpdateHandler;
- client.OnUserInfoRequest += UserInfoRequestHandler;
- client.OnUpdateUserInfo += UpdateUserInfoHandler;
- }
- }
-
- #region Classifieds
-
- private void AvatarClassifiedsRequestHandler(Object sender, string method, List args)
- {
- if (!(sender is IClientAPI))
- return;
- IClientAPI client = (IClientAPI)sender;
-
- UUID targetAvatarID;
- if (args.Count < 1 || !UUID.TryParse(args[0], out targetAvatarID))
- {
- m_log.Error("[SIMIAN PROFILES]: Unrecognized arguments for " + method);
- return;
- }
-
- // FIXME: Query the generic key/value store for classifieds
- client.SendAvatarClassifiedReply(targetAvatarID, new Dictionary(0));
- }
-
- private void ClassifiedInfoRequestHandler(UUID classifiedID, IClientAPI client)
- {
- // FIXME: Fetch this info
- client.SendClassifiedInfoReply(classifiedID, UUID.Zero, 0, Utils.DateTimeToUnixTime(DateTime.UtcNow + TimeSpan.FromDays(1)),
- 0, String.Empty, String.Empty, UUID.Zero, 0, UUID.Zero, String.Empty, Vector3.Zero, String.Empty, 0, 0);
- }
-
- private void ClassifiedInfoUpdateHandler(UUID classifiedID, uint category, string name, string description,
- UUID parcelID, uint parentEstate, UUID snapshotID, Vector3 globalPos, byte classifiedFlags, int price,
- IClientAPI client)
- {
- // FIXME: Save this info
- }
-
- private void ClassifiedDeleteHandler(UUID classifiedID, IClientAPI client)
- {
- // FIXME: Delete the specified classified ad
- }
-
- #endregion Classifieds
-
- #region Picks
-
- private void HandleAvatarPicksRequest(Object sender, string method, List args)
- {
- if (!(sender is IClientAPI))
- return;
- IClientAPI client = (IClientAPI)sender;
-
- UUID targetAvatarID;
- if (args.Count < 1 || !UUID.TryParse(args[0], out targetAvatarID))
- {
- m_log.Error("[SIMIAN PROFILES]: Unrecognized arguments for " + method);
- return;
- }
-
- // FIXME: Fetch these
- client.SendAvatarPicksReply(targetAvatarID, new Dictionary(0));
- }
-
- private void HandlePickInfoRequest(Object sender, string method, List args)
- {
- if (!(sender is IClientAPI))
- return;
- IClientAPI client = (IClientAPI)sender;
-
- UUID avatarID;
- UUID pickID;
- if (args.Count < 2 || !UUID.TryParse(args[0], out avatarID) || !UUID.TryParse(args[1], out pickID))
- {
- m_log.Error("[SIMIAN PROFILES]: Unrecognized arguments for " + method);
- return;
- }
-
- // FIXME: Fetch this
- client.SendPickInfoReply(pickID, avatarID, false, UUID.Zero, String.Empty, String.Empty, UUID.Zero, String.Empty,
- String.Empty, String.Empty, Vector3.Zero, 0, false);
- }
-
- private void PickInfoUpdateHandler(IClientAPI client, UUID pickID, UUID creatorID, bool topPick, string name,
- string desc, UUID snapshotID, int sortOrder, bool enabled)
- {
- // FIXME: Save this
- }
-
- private void PickDeleteHandler(IClientAPI client, UUID pickID)
- {
- // FIXME: Delete
- }
-
- #endregion Picks
-
- #region Notes
-
- private void HandleAvatarNotesRequest(Object sender, string method, List args)
- {
- if (!(sender is IClientAPI))
- return;
- IClientAPI client = (IClientAPI)sender;
-
- UUID targetAvatarID;
- if (args.Count < 1 || !UUID.TryParse(args[0], out targetAvatarID))
- {
- m_log.Error("[SIMIAN PROFILES]: Unrecognized arguments for " + method);
- return;
- }
-
- // FIXME: Fetch this
- client.SendAvatarNotesReply(targetAvatarID, String.Empty);
- }
-
- private void AvatarNotesUpdateHandler(IClientAPI client, UUID targetID, string notes)
- {
- // FIXME: Save this
- }
-
- #endregion Notes
-
- #region Profiles
-
- private void RequestAvatarPropertiesHandler(IClientAPI client, UUID avatarID)
- {
- m_log.DebugFormat("[SIMIAN PROFILES]: Request avatar properties for {0}",avatarID);
-
- OSDMap user = FetchUserData(avatarID);
-
- ProfileFlags flags = ProfileFlags.AllowPublish | ProfileFlags.MaturePublish;
-
- if (user != null)
- {
- OSDMap about = null;
- if (user.ContainsKey("LLAbout"))
- {
- try
- {
- about = OSDParser.DeserializeJson(user["LLAbout"].AsString()) as OSDMap;
- }
- catch
- {
- m_log.WarnFormat("[SIMIAN PROFILES]: Unable to decode LLAbout");
- }
- }
-
- if (about == null)
- about = new OSDMap(0);
-
- // Check if this user is a grid operator
- byte[] membershipType;
- if (user["AccessLevel"].AsInteger() >= 200)
- membershipType = Utils.StringToBytes("Operator");
- else
- membershipType = Utils.EmptyBytes;
-
- // Check if the user is online
- if (client.Scene is Scene)
- {
- OpenSim.Services.Interfaces.PresenceInfo[] presences = ((Scene)client.Scene).PresenceService.GetAgents(new string[] { avatarID.ToString() });
- if (presences != null && presences.Length > 0)
- flags |= ProfileFlags.Online;
- }
-
- // Check if the user is identified
- if (user["Identified"].AsBoolean())
- flags |= ProfileFlags.Identified;
-
- client.SendAvatarProperties(avatarID, about["About"].AsString(), user["CreationDate"].AsDate().ToString("M/d/yyyy",
- System.Globalization.CultureInfo.InvariantCulture), membershipType, 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);
- }
- }
-
- private void UpdateAvatarPropertiesHandler(IClientAPI client, UserProfileData profileData)
- {
- OSDMap map = new OSDMap
- {
- { "About", OSD.FromString(profileData.AboutText) },
- { "Image", OSD.FromUUID(profileData.Image) },
- { "FLAbout", OSD.FromString(profileData.FirstLifeAboutText) },
- { "FLImage", OSD.FromUUID(profileData.FirstLifeImage) },
- { "URL", OSD.FromString(profileData.ProfileUrl) }
- };
-
- AddUserData(client.AgentId, "LLAbout", map);
- }
-
- private void AvatarInterestUpdateHandler(IClientAPI client, uint wantmask, string wanttext, uint skillsmask,
- string skillstext, string languages)
- {
- OSDMap map = new OSDMap
- {
- { "WantMask", OSD.FromInteger(wantmask) },
- { "WantText", OSD.FromString(wanttext) },
- { "SkillsMask", OSD.FromInteger(skillsmask) },
- { "SkillsText", OSD.FromString(skillstext) },
- { "Languages", OSD.FromString(languages) }
- };
-
- AddUserData(client.AgentId, "LLInterests", map);
- }
-
- private void UserInfoRequestHandler(IClientAPI client)
- {
- m_log.Error("[SIMIAN PROFILES]: UserInfoRequestHandler");
-
- // Fetch this user's e-mail address
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetUser" },
- { "UserID", client.AgentId.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- string email = response["Email"].AsString();
-
- if (!response["Success"].AsBoolean())
- m_log.Warn("[SIMIAN PROFILES]: GetUser failed during a user info request for " + client.Name);
-
- client.SendUserInfoReply(false, true, email);
- }
-
- private void UpdateUserInfoHandler(bool imViaEmail, bool visible, IClientAPI client)
- {
- m_log.Info("[SIMIAN PROFILES]: Ignoring user info update from " + client.Name);
- }
-
- #endregion Profiles
-
- ///
- /// Sanity checks regions for a valid estate owner at startup
- ///
- private void CheckEstateManager(Scene scene)
- {
- EstateSettings estate = scene.RegionInfo.EstateSettings;
-
- if (estate.EstateOwner == UUID.Zero)
- {
- // Attempt to lookup the grid admin
- UserAccount admin = scene.UserAccountService.GetUserAccount(scene.RegionInfo.ScopeID, UUID.Zero);
- if (admin != null)
- {
- m_log.InfoFormat("[SIMIAN PROFILES]: Setting estate {0} (ID: {1}) owner to {2}", estate.EstateName,
- estate.EstateID, admin.Name);
-
- estate.EstateOwner = admin.PrincipalID;
- scene.EstateDataService.StoreEstateSettings(estate);
- }
- else
- {
- m_log.WarnFormat("[SIMIAN PROFILES]: Estate {0} (ID: {1}) does not have an owner", estate.EstateName, estate.EstateID);
- }
- }
- }
-
- private bool AddUserData(UUID userID, string key, OSDMap value)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddUserData" },
- { "UserID", userID.ToString() },
- { key, OSDParser.SerializeJsonString(value) }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (!success)
- m_log.WarnFormat("[SIMIAN PROFILES]: Failed to add user data with key {0} for {1}: {2}", key, userID, response["Message"].AsString());
-
- return success;
- }
-
- private OSDMap FetchUserData(UUID userID)
- {
- m_log.DebugFormat("[SIMIAN PROFILES]: Fetch information about {0}",userID);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetUser" },
- { "UserID", userID.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean() && response["User"] is OSDMap)
- {
- return (OSDMap)response["User"];
- }
- else
- {
- m_log.Error("[SIMIAN PROFILES]: Failed to fetch user data for " + userID + ": " + response["Message"].AsString());
- }
-
- return null;
- }
- }
-}
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
deleted file mode 100644
index 115ae36ef4..0000000000
--- a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Reflection;
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Services.Interfaces;
-using log4net;
-using Mono.Addins;
-using Nini.Config;
-using OpenMetaverse;
-using OpenMetaverse.StructuredData;
-
-namespace OpenSim.Services.Connectors.SimianGrid
-{
- ///
- /// Connects user account data (creating new users, looking up existing
- /// users) to the SimianGrid backend
- ///
- [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "SimianUserAccountServiceConnector")]
- public class SimianUserAccountServiceConnector : IUserAccountService, ISharedRegionModule
- {
- private const double CACHE_EXPIRATION_SECONDS = 120.0;
-
- private static readonly ILog m_log =
- LogManager.GetLogger(
- MethodBase.GetCurrentMethod().DeclaringType);
-
- private string m_serverUrl = String.Empty;
- private ExpiringCache m_accountCache = new ExpiringCache();
- private bool m_Enabled;
-
- #region ISharedRegionModule
-
- public Type ReplaceableInterface { get { return null; } }
- public void RegionLoaded(Scene scene) { }
- public void PostInitialise() { }
- public void Close() { }
-
- public SimianUserAccountServiceConnector() { }
- public string Name { get { return "SimianUserAccountServiceConnector"; } }
- public void AddRegion(Scene scene) { if (m_Enabled) { scene.RegisterModuleInterface(this); } }
- public void RemoveRegion(Scene scene) { if (m_Enabled) { scene.UnregisterModuleInterface(this); } }
-
- #endregion ISharedRegionModule
-
- public SimianUserAccountServiceConnector(IConfigSource source)
- {
- CommonInit(source);
- }
-
- public void Initialise(IConfigSource source)
- {
- IConfig moduleConfig = source.Configs["Modules"];
- if (moduleConfig != null)
- {
- string name = moduleConfig.GetString("UserAccountServices", "");
- if (name == Name)
- CommonInit(source);
- }
- }
-
- private void CommonInit(IConfigSource source)
- {
- IConfig gridConfig = source.Configs["UserAccountService"];
- if (gridConfig != null)
- {
- string serviceUrl = gridConfig.GetString("UserAccountServerURI");
- if (!String.IsNullOrEmpty(serviceUrl))
- {
- if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("="))
- serviceUrl = serviceUrl + '/';
- m_serverUrl = serviceUrl;
- m_Enabled = true;
- }
- }
-
- if (String.IsNullOrEmpty(m_serverUrl))
- m_log.Info("[SIMIAN ACCOUNT CONNECTOR]: No UserAccountServerURI specified, disabling connector");
- }
-
- public UserAccount GetUserAccount(UUID scopeID, string firstName, string lastName)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetUser" },
- { "Name", firstName + ' ' + lastName }
- };
-
- return GetUser(requestArgs);
- }
-
- public UserAccount GetUserAccount(UUID scopeID, string email)
- {
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetUser" },
- { "Email", email }
- };
-
- return GetUser(requestArgs);
- }
-
- public UserAccount GetUserAccount(UUID scopeID, UUID userID)
- {
- // Cache check
- UserAccount account;
- if (m_accountCache.TryGetValue(userID, out account))
- return account;
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetUser" },
- { "UserID", userID.ToString() }
- };
-
- account = GetUser(requestArgs);
-
- if (account == null)
- {
- // Store null responses too, to avoid repeated lookups for missing accounts
- m_accountCache.AddOrUpdate(userID, null, CACHE_EXPIRATION_SECONDS);
- }
-
- return account;
- }
-
- public List GetUserAccounts(UUID scopeID, string query)
- {
- List accounts = new List();
-
-// m_log.DebugFormat("[SIMIAN ACCOUNT CONNECTOR]: Searching for user accounts with name query " + query);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "GetUsers" },
- { "NameQuery", query }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean())
- {
- OSDArray array = response["Users"] as OSDArray;
- if (array != null && array.Count > 0)
- {
- for (int i = 0; i < array.Count; i++)
- {
- UserAccount account = ResponseToUserAccount(array[i] as OSDMap);
- if (account != null)
- accounts.Add(account);
- }
- }
- else
- {
- m_log.Warn("[SIMIAN ACCOUNT CONNECTOR]: Account search failed, response data was in an invalid format");
- }
- }
- else
- {
- m_log.Warn("[SIMIAN ACCOUNT CONNECTOR]: Failed to search for account data by name " + query);
- }
-
- return accounts;
- }
-
- public void InvalidateCache(UUID userID)
- {
- m_accountCache.Remove(userID);
- }
-
- public List GetUserAccountsWhere(UUID scopeID, string query)
- {
- return null;
- }
-
- public List GetUserAccounts(UUID scopeID, List IDs)
- {
- return null;
- }
-
- public bool StoreUserAccount(UserAccount data)
- {
-// m_log.InfoFormat("[SIMIAN ACCOUNT CONNECTOR]: Storing user account for " + data.Name);
-
- NameValueCollection requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddUser" },
- { "UserID", data.PrincipalID.ToString() },
- { "Name", data.Name },
- { "Email", data.Email },
- { "AccessLevel", data.UserLevel.ToString() }
- };
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
-
- if (response["Success"].AsBoolean())
- {
- m_log.InfoFormat("[SIMIAN ACCOUNT CONNECTOR]: Storing user account data for " + data.Name);
-
- requestArgs = new NameValueCollection
- {
- { "RequestMethod", "AddUserData" },
- { "UserID", data.PrincipalID.ToString() },
- { "CreationDate", data.Created.ToString() },
- { "UserFlags", data.UserFlags.ToString() },
- { "UserTitle", data.UserTitle }
- };
-
- response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- bool success = response["Success"].AsBoolean();
-
- if (success)
- {
- // Cache the user account info
- m_accountCache.AddOrUpdate(data.PrincipalID, data, CACHE_EXPIRATION_SECONDS);
- }
- else
- {
- m_log.Warn("[SIMIAN ACCOUNT CONNECTOR]: Failed to store user account data for " + data.Name + ": " + response["Message"].AsString());
- }
-
- return success;
- }
- else
- {
- m_log.Warn("[SIMIAN ACCOUNT CONNECTOR]: Failed to store user account for " + data.Name + ": " + response["Message"].AsString());
- }
-
- return false;
- }
-
- ///
- /// Helper method for the various ways of retrieving a user account
- ///
- /// Service query parameters
- /// A UserAccount object on success, null on failure
- private UserAccount GetUser(NameValueCollection requestArgs)
- {
- string lookupValue = (requestArgs.Count > 1) ? requestArgs[1] : "(Unknown)";
-// m_log.DebugFormat("[SIMIAN ACCOUNT CONNECTOR]: Looking up user account with query: " + lookupValue);
-
- OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs);
- if (response["Success"].AsBoolean())
- {
- OSDMap user = response["User"] as OSDMap;
- if (user != null)
- return ResponseToUserAccount(user);
- else
- m_log.Warn("[SIMIAN ACCOUNT CONNECTOR]: Account search failed, response data was in an invalid format");
- }
- else
- {
- m_log.Warn("[SIMIAN ACCOUNT CONNECTOR]: Failed to lookup user account with query: " + lookupValue);
- }
-
- return null;
- }
-
- ///
- /// Convert a User object in LLSD format to a UserAccount
- ///
- /// LLSD containing user account data
- /// A UserAccount object on success, null on failure
- private UserAccount ResponseToUserAccount(OSDMap response)
- {
- if (response == null)
- return null;
-
- UserAccount account = new UserAccount();
- account.PrincipalID = response["UserID"].AsUUID();
- account.Created = response["CreationDate"].AsInteger();
- account.Email = response["Email"].AsString();
- account.ServiceURLs = new Dictionary(0);
- account.UserFlags = response["UserFlags"].AsInteger();
- account.UserLevel = response["AccessLevel"].AsInteger();
- account.UserTitle = response["UserTitle"].AsString();
- account.LocalToGrid = true;
- if (response.ContainsKey("LocalToGrid"))
- account.LocalToGrid = (response["LocalToGrid"].AsString() == "true" ? true : false);
-
- GetFirstLastName(response["Name"].AsString(), out account.FirstName, out account.LastName);
-
- // Cache the user account info
- m_accountCache.AddOrUpdate(account.PrincipalID, account, CACHE_EXPIRATION_SECONDS);
-
- return account;
- }
-
- ///
- /// Convert a name with a single space in it to a first and last name
- ///
- /// A full name such as "John Doe"
- /// First name
- /// Last name (surname)
- private static void GetFirstLastName(string name, out string firstName, out string lastName)
- {
- if (String.IsNullOrEmpty(name))
- {
- firstName = String.Empty;
- lastName = String.Empty;
- }
- else
- {
- string[] names = name.Split(' ');
-
- if (names.Length == 2)
- {
- firstName = names[0];
- lastName = names[1];
- }
- else
- {
- firstName = String.Empty;
- lastName = name;
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example
index 04a4f7d551..f424eacfb7 100644
--- a/bin/OpenSim.ini.example
+++ b/bin/OpenSim.ini.example
@@ -1249,5 +1249,3 @@
; Include-Architecture = "config-include/StandaloneHypergrid.ini"
; Include-Architecture = "config-include/Grid.ini"
; Include-Architecture = "config-include/GridHypergrid.ini"
- ; Include-Architecture = "config-include/SimianGrid.ini"
- ; Include-Architecture = "config-include/HyperSimianGrid.ini"
diff --git a/bin/config-include/HyperSimianGrid.ini b/bin/config-include/HyperSimianGrid.ini
deleted file mode 100644
index 24f9813c6b..0000000000
--- a/bin/config-include/HyperSimianGrid.ini
+++ /dev/null
@@ -1,97 +0,0 @@
-;;
-;; Please don't change this file.
-;; All optional settings are in GridCommon.ini.example,
-;; which you can copy and change.
-;;
-
-;;
-;; In GridCommon.ini, these are the URLs you would use if SimianGrid is
-;; installed at http://www.mygrid.com/Grid/
-;;
-; AssetServerURI = "http://www.mygrid.com/Grid/?id="
-; InventoryServerURI = "http://www.mygrid.com/Grid/"
-; AvatarServerURI = "http://www.mygrid.com/Grid/"
-; PresenceServerURI = "http://www.mygrid.com/Grid/"
-; UserAccountServerURI = "http://www.mygrid.com/Grid/"
-; AuthenticationServerURI = "http://www.mygrid.com/Grid/"
-; FriendsServerURI = "http://www.mygrid.com/Grid/"
-; GroupsServerURI = "http://www.mygrid.com/Grid/"
-
-[Includes]
- Include-Common = "config-include/GridCommon.ini"
-
-[Modules]
- GridServices = "RemoteGridServicesConnector"
- PresenceServices = "SimianPresenceServiceConnector"
- UserAccountServices = "SimianUserAccountServiceConnector"
- AuthenticationServices = "SimianAuthenticationServiceConnector"
- AssetServices = "HGAssetBroker"
- InventoryServices = "HGInventoryBroker"
- AvatarServices = "SimianAvatarServiceConnector"
-
- NeighbourServices = "NeighbourServicesOutConnector"
- SimulationServices = "RemoteSimulationConnectorModule"
- EntityTransferModule = "HGEntityTransferModule"
- InventoryAccessModule = "HGInventoryAccessModule"
-
- LandServiceInConnector = true
- NeighbourServiceInConnector = true
- SimulationServiceInConnector = true
- LibraryModule = false
-
- AssetCaching = "FlotsamAssetCache"
-
-[SimulationDataStore]
- LocalServiceModule = "OpenSim.Services.Connectors.dll:SimulationDataService"
-
-[EstateDataStore]
- LocalServiceModule = "OpenSim.Services.Connectors.dll:EstateDataService"
-
-[Friends]
- Connector = "OpenSim.Services.Connectors.dll:SimianFriendsServiceConnector"
-
-[GridService]
- LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
- StorageProvider = "OpenSim.Data.Null.dll:NullRegionData"
- NetworkConnector = "OpenSim.Services.Connectors.dll:SimianGridServiceConnector"
-
- HypergridLinker = true
- AllowHypergridMapSearch = true
-
-[LibraryService]
- LocalServiceModule = "OpenSim.Services.InventoryService.dll:LibraryService"
- LibraryName = "OpenSim Library"
- DefaultLibrary = "./inventory/Libraries.xml"
-
-[AssetService]
- DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
- LocalGridAssetService = "OpenSim.Services.Connectors.dll:SimianAssetServiceConnector"
- HypergridAssetService = "OpenSim.Services.Connectors.dll:HGAssetServiceConnector"
- AssetLoaderArgs = "assets/AssetSets.xml"
-
-[InventoryService]
- LocalGridInventoryService = "OpenSim.Services.Connectors.dll:SimianInventoryServiceConnector"
-
-[Groups]
- Enabled = true
- Module = GroupsModule
- DebugEnabled = false
- NoticesEnabled = true
- MessagingModule = GroupsMessagingModule
- MessagingEnabled = true
- ServicesConnectorModule = SimianGroupsServicesConnector
-
-[Profiles]
- Module = "SimianProfiles"
-
-[HGInventoryAccessModule]
- ;
- ; === HG ONLY ===
- ; Change this to your profile server
- ; accessible from other grids
- ;
- ProfileServerURI = "http://mygridserver.com:8002/user"
-
- ;; If you want to protect your assets from being copied by foreign visitors
- ;; uncomment the next line. You may want to do this on sims that have licensed content.
- ; OutboundPermission = False
diff --git a/bin/config-include/SimianGrid.ini b/bin/config-include/SimianGrid.ini
deleted file mode 100644
index fdf7ca23f4..0000000000
--- a/bin/config-include/SimianGrid.ini
+++ /dev/null
@@ -1,77 +0,0 @@
-;;
-;; Please don't change this file.
-;; All optional settings are in GridCommon.ini.example,
-;; which you can copy and change.
-;;
-
-;;
-;; In GridCommon.ini, these are the URLs you would use if SimianGrid is
-;; installed at http://www.mygrid.com/Grid/
-;;
-; AssetServerURI = "http://www.mygrid.com/Grid/?id="
-; InventoryServerURI = "http://www.mygrid.com/Grid/"
-; AvatarServerURI = "http://www.mygrid.com/Grid/"
-; PresenceServerURI = "http://www.mygrid.com/Grid/"
-; UserAccountServerURI = "http://www.mygrid.com/Grid/"
-; AuthenticationServerURI = "http://www.mygrid.com/Grid/"
-; FriendsServerURI = "http://www.mygrid.com/Grid/"
-; GroupsServerURI = "http://www.mygrid.com/Grid/"
-
-[Includes]
- Include-Common = "config-include/GridCommon.ini"
-
-[Modules]
- GridServices = "RemoteGridServicesConnector"
- PresenceServices = "SimianPresenceServiceConnector"
- UserAccountServices = "SimianUserAccountServiceConnector"
- AuthenticationServices = "SimianAuthenticationServiceConnector"
- AssetServices = "SimianAssetServiceConnector"
- InventoryServices = "SimianInventoryServiceConnector"
- AvatarServices = "SimianAvatarServiceConnector"
-
- NeighbourServices = "NeighbourServicesOutConnector"
- SimulationServices = "RemoteSimulationConnectorModule"
- EntityTransferModule = "BasicEntityTransferModule"
- InventoryAccessModule = "BasicInventoryAccessModule"
-
- LandServiceInConnector = true
- NeighbourServiceInConnector = true
- SimulationServiceInConnector = true
- LibraryModule = false
-
- AssetCaching = "FlotsamAssetCache"
-
-[SimulationDataStore]
- LocalServiceModule = "OpenSim.Services.SimulationService.dll:SimulationDataService"
-
-[EstateDataStore]
- LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService"
-
-[Friends]
- Connector = "OpenSim.Services.Connectors.dll:SimianFriendsServiceConnector"
-
-[GridService]
- LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
- StorageProvider = "OpenSim.Data.Null.dll:NullRegionData"
- NetworkConnector = "OpenSim.Services.Connectors.dll:SimianGridServiceConnector"
-
-[LibraryService]
- LocalServiceModule = "OpenSim.Services.InventoryService.dll:LibraryService"
- LibraryName = "OpenSim Library"
- DefaultLibrary = "./inventory/Libraries.xml"
-
-[AssetService]
- DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
- AssetLoaderArgs = "assets/AssetSets.xml"
-
-[Groups]
- Enabled = true
- Module = GroupsModule
- DebugEnabled = false
- NoticesEnabled = true
- MessagingModule = GroupsMessagingModule
- MessagingEnabled = true
- ServicesConnectorModule = SimianGroupsServicesConnector
-
-[Profiles]
- Module = "SimianProfiles"