From e8eb9b7e84b1475c6956ad611b09dca2921c9830 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sat, 31 Mar 2012 17:57:58 -0400 Subject: [PATCH 01/87] Add Integration Service Adding an integration service to provide base services at endpoints for external application integration. So far, landtool.php is converted to use the IntegrationService. Others will follow to provide coverage for the base helperuri applications needed in OpenSim. --- OpenSim/Data/IPresenceData.cs | 1 + OpenSim/Data/MSSQL/MSSQLPresenceData.cs | 11 +++++ OpenSim/Data/MySQL/MySQLPresenceData.cs | 11 +++++ OpenSim/Data/Null/NullPresenceData.cs | 13 ++++++ .../Presence/LocalPresenceServiceConnector.cs | 5 +++ .../RemotePresenceServiceConnector.cs | 5 +++ OpenSim/Server/Base/ServerUtils.cs | 32 ++++++++++++++ .../Presence/PresenceServerPostHandler.cs | 2 +- .../Presence/PresenceServiceConnector.cs | 43 +++++++++++++++++++ .../SimianPresenceServiceConnector.cs | 6 +++ .../IntegrationService/IntegrationService.cs | 29 +++++++++++++ .../IntegrationServiceBase.cs | 40 +++++++++++++++++ .../Interfaces/IIntegrationService.cs | 15 +++++++ .../Services/Interfaces/IPresenceService.cs | 1 + .../PresenceService/PresenceService.cs | 14 ++++++ bin/Robust.HG.ini.example | 8 +++- bin/Robust.ini.example | 9 +++- prebuild.xml | 35 +++++++++++++++ 18 files changed, 277 insertions(+), 3 deletions(-) create mode 100644 OpenSim/Services/IntegrationService/IntegrationService.cs create mode 100644 OpenSim/Services/IntegrationService/IntegrationServiceBase.cs create mode 100644 OpenSim/Services/Interfaces/IIntegrationService.cs diff --git a/OpenSim/Data/IPresenceData.cs b/OpenSim/Data/IPresenceData.cs index b871f5636c..70d3fd9129 100644 --- a/OpenSim/Data/IPresenceData.cs +++ b/OpenSim/Data/IPresenceData.cs @@ -49,6 +49,7 @@ namespace OpenSim.Data bool Store(PresenceData data); PresenceData Get(UUID sessionID); + PresenceData Verify(UUID s_sessionID); void LogoutRegionAgents(UUID regionID); bool ReportAgent(UUID sessionID, UUID regionID); PresenceData[] Get(string field, string data); diff --git a/OpenSim/Data/MSSQL/MSSQLPresenceData.cs b/OpenSim/Data/MSSQL/MSSQLPresenceData.cs index 8068d23bb1..358549bc97 100644 --- a/OpenSim/Data/MSSQL/MSSQLPresenceData.cs +++ b/OpenSim/Data/MSSQL/MSSQLPresenceData.cs @@ -61,6 +61,17 @@ namespace OpenSim.Data.MSSQL return ret[0]; } + public PresenceData Verify(UUID s_sessionID) + { + PresenceData[] ret = Get("SecureSessionID", + s_sessionID.ToString()); + + if (ret.Length == 0) + return null; + + return ret[0]; + } + public void LogoutRegionAgents(UUID regionID) { using (SqlConnection conn = new SqlConnection(m_ConnectionString)) diff --git a/OpenSim/Data/MySQL/MySQLPresenceData.cs b/OpenSim/Data/MySQL/MySQLPresenceData.cs index fc625f0057..100834e26d 100644 --- a/OpenSim/Data/MySQL/MySQLPresenceData.cs +++ b/OpenSim/Data/MySQL/MySQLPresenceData.cs @@ -61,6 +61,17 @@ namespace OpenSim.Data.MySQL return ret[0]; } + public PresenceData Verify(UUID s_sessionID) + { + PresenceData[] ret = Get("SecureSessionID", + s_sessionID.ToString()); + + if (ret.Length == 0) + return null; + + return ret[0]; + } + public void LogoutRegionAgents(UUID regionID) { MySqlCommand cmd = new MySqlCommand(); diff --git a/OpenSim/Data/Null/NullPresenceData.cs b/OpenSim/Data/Null/NullPresenceData.cs index c06c223a81..a39134d39f 100644 --- a/OpenSim/Data/Null/NullPresenceData.cs +++ b/OpenSim/Data/Null/NullPresenceData.cs @@ -79,6 +79,19 @@ namespace OpenSim.Data.Null return null; } + public PresenceData Verify(UUID s_sessionID) + { + if (Instance != this) + return Instance.Verify(s_sessionID); + + if (m_presenceData.ContainsKey(s_sessionID)) + { + return m_presenceData[s_sessionID]; + } + + return null; + } + public void LogoutRegionAgents(UUID regionID) { if (Instance != this) diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/LocalPresenceServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/LocalPresenceServiceConnector.cs index 49dd633be4..be7c33ff9d 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/LocalPresenceServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/LocalPresenceServiceConnector.cs @@ -193,6 +193,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence return m_PresenceService.GetAgents(userIDs); } + public PresenceInfo VerifyAgent(UUID s_sessionID) + { + return m_PresenceService.VerifyAgent(s_sessionID); + } + #endregion } diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/RemotePresenceServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/RemotePresenceServiceConnector.cs index bf4e9abf0d..2486085dea 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/RemotePresenceServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/RemotePresenceServiceConnector.cs @@ -153,6 +153,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence return m_RemoteConnector.GetAgents(userIDs); } + public PresenceInfo VerifyAgent(UUID sessionID) + { + return m_RemoteConnector.VerifyAgent(sessionID); + } + #endregion } diff --git a/OpenSim/Server/Base/ServerUtils.cs b/OpenSim/Server/Base/ServerUtils.cs index 8effdd2d1b..3cc31dfa4a 100644 --- a/OpenSim/Server/Base/ServerUtils.cs +++ b/OpenSim/Server/Base/ServerUtils.cs @@ -35,6 +35,7 @@ using System.Collections.Generic; using log4net; using OpenSim.Framework; using OpenMetaverse; +using OpenMetaverse.StructuredData; namespace OpenSim.Server.Base { @@ -330,5 +331,36 @@ namespace OpenSim.Server.Base return ret; } + + public static bool ParseStringToOSDMap(string input, out OSDMap map) + { + try + { + map = null; + OSD tmpbuff = null; + try + { + tmpbuff = OSDParser.DeserializeJson(input); + } + catch + { + m_log.DebugFormat("[ServerUtils]: Parse Caught Error Deserializei {0} ", input); + return false; + } + if (tmpbuff.Type == OSDType.Map) + { + map = (OSDMap)tmpbuff; + return true; + } + else + return false; + } + catch (NullReferenceException e) + { + m_log.ErrorFormat("[ServerUtils]: exception on ParseStringToJson {0}", e.Message); + map = null; + return false; + } + } } } diff --git a/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs b/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs index 6b6a552448..34610e2836 100644 --- a/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs +++ b/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs @@ -41,6 +41,7 @@ using OpenSim.Services.Interfaces; using OpenSim.Framework; using OpenSim.Framework.Servers.HttpServer; using OpenMetaverse; +using OpenMetaverse.StructuredData; namespace OpenSim.Server.Handlers.Presence { @@ -244,7 +245,6 @@ namespace OpenSim.Server.Handlers.Presence UTF8Encoding encoding = new UTF8Encoding(); return encoding.GetBytes(xmlString); } - private byte[] SuccessResult() { diff --git a/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs b/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs index f7d8c5379c..91153f1736 100644 --- a/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs +++ b/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs @@ -371,6 +371,49 @@ namespace OpenSim.Services.Connectors return rinfos.ToArray(); } + public PresenceInfo VerifyAgent(UUID s_sessionID) + { + Dictionary sendData = new Dictionary(); + //sendData["SCOPEID"] = scopeID.ToString(); + sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString(); + sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString(); + sendData["METHOD"] = "verifyagent"; + + sendData["SecureSessionID"] = s_sessionID.ToString(); + + string reply = string.Empty; + string reqString = ServerUtils.BuildQueryString(sendData); + string uri = m_ServerURI + "/presence"; + // m_log.DebugFormat("[PRESENCE CONNECTOR]: queryString = {0}", reqString); + try + { + reply = SynchronousRestFormsRequester.MakeRequest("POST", + uri, + reqString); + if (reply == null || (reply != null && reply == string.Empty)) + { + m_log.DebugFormat("[PRESENCE CONNECTOR]: VerifyAgent received null or empty reply"); + return null; + } + } + catch (Exception e) + { + m_log.DebugFormat("[PRESENCE CONNECTOR]: Exception when contacting presence server at {0}: {1}", uri, e.Message); + } + + Dictionary replyData = ServerUtils.ParseXmlResponse(reply); + PresenceInfo pinfo = null; + + if ((replyData != null) && replyData.ContainsKey("result") && (replyData["result"] != null)) + { + if (replyData["result"] is Dictionary) + { + pinfo = new PresenceInfo((Dictionary)replyData["result"]); + } + } + + return pinfo; + } #endregion diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs index ca1b64f2b7..e10b29c3f4 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs @@ -260,6 +260,12 @@ namespace OpenSim.Services.Connectors.SimianGrid return null; } + public PresenceInfo VerifyAgent(UUID s_sessionID) + { + // Not implemented + 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); diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs new file mode 100644 index 0000000000..4ee2999741 --- /dev/null +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -0,0 +1,29 @@ + +using OpenSim.Server.Base; +using OpenSim.Services.Interfaces; +using OpenSim.Framework; +using GridRegion = OpenSim.Services.Interfaces.GridRegion; +using OpenMetaverse; +using Nini.Config; + + + +namespace OpenSim.Services.IntegrationService +{ + public class IntegrationService : IntegrationServiceBase, IIntegrationService + { + + public IntegrationService(IConfigSource config) + : base(config) + { + + } + + #region IIntegrationService implementation + public PresenceInfo VerifyAgent(UUID SecureSessionID) + { + return m_PresenceService.VerifyAgent(SecureSessionID); + } + #endregion + } +} \ No newline at end of file diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs new file mode 100644 index 0000000000..2bf66e67e4 --- /dev/null +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -0,0 +1,40 @@ +using System; +using OpenSim.Services.Interfaces; +using OpenSim.Services.Base; +using System.Reflection; +using Nini.Config; +using OpenSim.Framework; +using GridRegion = OpenSim.Services.Interfaces.GridRegion; + +namespace OpenSim.Services.IntegrationService +{ + public class IntegrationServiceBase : ServiceBase + { + protected IPresenceService m_PresenceService; + protected IGridService m_GridService; + IConfig m_IntegrationServerConfig; + + public IntegrationServiceBase(IConfigSource config) + : base(config) + { + Object[] args = new Object[] { config }; + + m_IntegrationServerConfig = config.Configs["IntegrationService"]; + if (m_IntegrationServerConfig == null) + { + throw new Exception("[IntegrationService]: Missing configuration"); + return; + } + + string gridService = m_IntegrationServerConfig.GetString("GridService", String.Empty); + string presenceService = m_IntegrationServerConfig.GetString("PresenceService", String.Empty); + + + if (gridService != string.Empty) + m_GridService = LoadPlugin(gridService, args); + if (presenceService != string.Empty) + m_PresenceService = LoadPlugin(presenceService, args); + + } + } +} diff --git a/OpenSim/Services/Interfaces/IIntegrationService.cs b/OpenSim/Services/Interfaces/IIntegrationService.cs new file mode 100644 index 0000000000..37ab1f8320 --- /dev/null +++ b/OpenSim/Services/Interfaces/IIntegrationService.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using OpenMetaverse; +using OpenMetaverse.StructuredData; +using OpenSim.Framework; + +namespace OpenSim.Services.Interfaces +{ + public interface IIntegrationService + { + PresenceInfo VerifyAgent(UUID SecretSessionID); + } +} + diff --git a/OpenSim/Services/Interfaces/IPresenceService.cs b/OpenSim/Services/Interfaces/IPresenceService.cs index 8d583fff73..c87a5644b7 100644 --- a/OpenSim/Services/Interfaces/IPresenceService.cs +++ b/OpenSim/Services/Interfaces/IPresenceService.cs @@ -68,6 +68,7 @@ namespace OpenSim.Services.Interfaces bool ReportAgent(UUID sessionID, UUID regionID); PresenceInfo GetAgent(UUID sessionID); + PresenceInfo VerifyAgent(UUID s_sessionID); PresenceInfo[] GetAgents(string[] userIDs); } } diff --git a/OpenSim/Services/PresenceService/PresenceService.cs b/OpenSim/Services/PresenceService/PresenceService.cs index ed2703eda5..550fe48496 100644 --- a/OpenSim/Services/PresenceService/PresenceService.cs +++ b/OpenSim/Services/PresenceService/PresenceService.cs @@ -158,5 +158,19 @@ namespace OpenSim.Services.PresenceService return info.ToArray(); } + + public PresenceInfo VerifyAgent(UUID s_sessionID) + { + PresenceInfo ret = new PresenceInfo(); + + PresenceData data = m_Database.Verify(s_sessionID); + if (data == null) + return null; + + ret.UserID = data.UserID; + ret.RegionID = data.RegionID; + + return ret; + } } } \ No newline at end of file diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example index 2fd9f11ba6..6dba5b478d 100644 --- a/bin/Robust.HG.ini.example +++ b/bin/Robust.HG.ini.example @@ -21,7 +21,7 @@ ; * [[@]/][:] ; * [Startup] -ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:XInventoryInConnector,8004/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8002/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:GridUserServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector,8002/OpenSim.Server.Handlers.dll:GatekeeperServiceInConnector,8002/OpenSim.Server.Handlers.dll:UserAgentServerConnector,HGInventoryService@8002/OpenSim.Server.Handlers.dll:XInventoryInConnector,HGAssetService@8002/OpenSim.Server.Handlers.dll:AssetServiceConnector,8002/OpenSim.Server.Handlers.dll:HeloServiceInConnector,8002/OpenSim.Server.Handlers.dll:HGFriendsServerConnector,8002/OpenSim.Server.Handlers.dll:InstantMessageServerConnector,8003/OpenSim.Server.Handlers.dll:MapAddServiceConnector,8002/OpenSim.Server.Handlers.dll:MapGetServiceConnector" +ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:XInventoryInConnector,8004/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8002/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:GridUserServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector,8002/OpenSim.Server.Handlers.dll:GatekeeperServiceInConnector,8002/OpenSim.Server.Handlers.dll:UserAgentServerConnector,HGInventoryService@8002/OpenSim.Server.Handlers.dll:XInventoryInConnector,HGAssetService@8002/OpenSim.Server.Handlers.dll:AssetServiceConnector,8002/OpenSim.Server.Handlers.dll:HeloServiceInConnector,8002/OpenSim.Server.Handlers.dll:HGFriendsServerConnector,8002/OpenSim.Server.Handlers.dll:InstantMessageServerConnector,8003/OpenSim.Server.Handlers.dll:MapAddServiceConnector,8002/OpenSim.Server.Handlers.dll:MapGetServiceConnector,8002/OpenSim.Server.Handlers:IntegrationServiceConnector" ; * This is common for all services, it's the network setup for the entire ; * server instance, if none is specified above @@ -426,3 +426,9 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003 ;; This applies to the core groups module (Flotsam) only. ; ForwardOfflineGroupMessages = true +[IntegrationService] + LocalServiceModule = "OpenSim.Services.IntegrationService.dll:IntegrationService" + + GridService = "OpenSim.Services.GridService.dll:GridService" + PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService" + diff --git a/bin/Robust.ini.example b/bin/Robust.ini.example index 69e94a584a..f1858522a2 100644 --- a/bin/Robust.ini.example +++ b/bin/Robust.ini.example @@ -13,7 +13,7 @@ ; * [[@]/][:] ; * [Startup] -ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:XInventoryInConnector,8004/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8002/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:GridUserServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector,8003/OpenSim.Server.Handlers.dll:MapAddServiceConnector,8002/OpenSim.Server.Handlers.dll:MapGetServiceConnector" +ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:XInventoryInConnector,8004/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8002/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:GridUserServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector,8003/OpenSim.Server.Handlers.dll:MapAddServiceConnector,8002/OpenSim.Server.Handlers.dll:MapGetServiceConnector,8002/OpenSim.Server.Handlers:IntegrationServiceConnector" ; * This is common for all services, it's the network setup for the entire ; * server instance, if none is specified above @@ -294,3 +294,10 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003 ; password help: optional: page providing password assistance for users of your grid ;password = http://127.0.0.1/password + +[IntegrationService] + LocalServiceModule = "OpenSim.Services.IntegrationService.dll:IntegrationService" + + GridService = "OpenSim.Services.GridService.dll:GridService" + PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService" + diff --git a/prebuild.xml b/prebuild.xml index 4f04032e2a..9a0c94d676 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -787,6 +787,7 @@ + @@ -1150,6 +1151,40 @@ + + + + ../../../bin/ + + + + + ../../../bin/ + + + + ../../../bin/ + + + + + + + + + + + + + + + + + + + + + From ade1acc9d449e08855701770f22bb824e2b1026e Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 1 Apr 2012 09:38:59 -0400 Subject: [PATCH 02/87] Making IntegrationService pluggable First steps to making a pluggable IntegrationService. --- .../IntegrationServiceBase.cs | 18 +++++++++++++++++- prebuild.xml | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 2bf66e67e4..7d08576202 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -5,10 +5,21 @@ using System.Reflection; using Nini.Config; using OpenSim.Framework; using GridRegion = OpenSim.Services.Interfaces.GridRegion; +using Mono.Addins; + + +[assembly:AddinRoot ("IntegrationService", "1.0")] namespace OpenSim.Services.IntegrationService { - public class IntegrationServiceBase : ServiceBase + [TypeExtensionPoint (Path="/OpenSim/IntegrationService", Name="IntegrationService")] + public interface IntegrationPlugin + { + void run(); + } + + + public class IntegrationServiceBase : ServiceBase { protected IPresenceService m_PresenceService; protected IGridService m_GridService; @@ -19,6 +30,11 @@ namespace OpenSim.Services.IntegrationService { Object[] args = new Object[] { config }; + AddinManager.Initialize ("."); + AddinManager.Registry.Update (); + foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) + cmd.run (); + m_IntegrationServerConfig = config.Configs["IntegrationService"]; if (m_IntegrationServerConfig == null) { diff --git a/prebuild.xml b/prebuild.xml index 9a0c94d676..eca2083325 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -1179,6 +1179,7 @@ + From 4b90dcfb73190fe264c7ff0950f692e2561bf4cc Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 1 Apr 2012 11:05:05 -0400 Subject: [PATCH 03/87] Missed these files --- .../Integration/IntegrationServerConnector.cs | 39 ++++++ .../Integration/IntegrationServerHandler.cs | 127 ++++++++++++++++++ 2 files changed, 166 insertions(+) create mode 100644 OpenSim/Server/Handlers/Integration/IntegrationServerConnector.cs create mode 100644 OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs diff --git a/OpenSim/Server/Handlers/Integration/IntegrationServerConnector.cs b/OpenSim/Server/Handlers/Integration/IntegrationServerConnector.cs new file mode 100644 index 0000000000..69839d0299 --- /dev/null +++ b/OpenSim/Server/Handlers/Integration/IntegrationServerConnector.cs @@ -0,0 +1,39 @@ +using System; +using Nini.Config; +using OpenSim.Server.Base; +using OpenSim.Services.Interfaces; +using OpenSim.Framework.Servers.HttpServer; +using OpenSim.Server.Handlers.Base; +using OpenSim.Framework; + + +namespace OpenSim.Server.Handlers.Integration +{ + public class IntegrationServiceConnector : ServiceConnector + { + + private IIntegrationService m_IntegrationService; + private string m_ConfigName = "IntegrationService"; + + public IntegrationServiceConnector(IConfigSource config, IHttpServer server, string configName) : + base(config, server, configName) + { + IConfig serverConfig = config.Configs[m_ConfigName]; + if (serverConfig == null) + throw new Exception(String.Format("No section {0} in config file", m_ConfigName)); + + string service = serverConfig.GetString("LocalServiceModule", + String.Empty); + + if (service == String.Empty) + throw new Exception("No LocalServiceModule in config file"); + + Object[] args = new Object[] { config }; + m_IntegrationService = ServerUtils.LoadPlugin(service, args); + + server.AddStreamHandler(new IntegrationServerHandler(m_IntegrationService)); + + } + + } +} diff --git a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs new file mode 100644 index 0000000000..17fad09387 --- /dev/null +++ b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs @@ -0,0 +1,127 @@ +using OpenSim.Server.Base; +using OpenSim.Services.Interfaces; +using OpenSim.Framework; +using OpenSim.Framework.Servers.HttpServer; +using OpenMetaverse; +using OpenMetaverse.StructuredData; +using log4net; +using System; +using System.Reflection; +using System.IO; +using System.Net; +using System.Text; +using System.Text.RegularExpressions; +using System.Collections; +using System.Collections.Generic; + +namespace OpenSim.Server.Handlers.Integration +{ + public class IntegrationServerHandler : BaseStreamHandler + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + private IIntegrationService m_IntegrationService; + + public IntegrationServerHandler(IIntegrationService service) : + base("POST", "/integration") + { + m_IntegrationService = service; + } + + public override byte[] Handle(string path, Stream requestData, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) + { + StreamReader sr = new StreamReader(requestData); + string body = sr.ReadToEnd(); + sr.Close(); + body = body.Trim(); + + try + { + OSDMap request = null; + if (ServerUtils.ParseStringToOSDMap(body, out request) == false) + return FailureResult(); + + // Dictionary request = ServerUtils.ParseQueryString(body); + + if (!request.ContainsKey("command")) + return FailureResult("Error, no command defined!"); + string command = request["command"].AsString(); + + // command... + switch (command) + { + // agent + case "verify_agent_ssession": + return HandleVerifyAgentSession(request); + + case "verify_agent_region": + return FailureResult("Not Implemented"); + + default: + m_log.DebugFormat("[IntegrationHandler]: unknown method {0} request {1}", command.Length, command); + return FailureResult("IntegrationHandler: Unrecognized method requested!"); + } + } + catch (Exception e) + { + m_log.DebugFormat("[IntegrationHandler]: Exception {0}", e); + } + + return FailureResult(); + } + + #region Handlers + /// + /// Verifies the agent to external applications. + /// + /// + /// UUID of the agent. + /// + /// + /// request - Send SecureSessionID and optionally Encoding=xml for xml Output + /// + byte[] HandleVerifyAgentSession(OSDMap request) + { + UUID s_session = UUID.Zero; + + if (!request.ContainsKey("SecureSessionID")) + return FailureResult(); + + if (!UUID.TryParse(request["SecureSessionID"].AsString(), out s_session)) + return FailureResult(); + + PresenceInfo pinfo = m_IntegrationService.VerifyAgent(s_session); + + OSDMap result = new OSDMap(); + + if (pinfo == null) + result["agent_id"] = OSD.FromUUID(UUID.Zero); + else + result["agent_id"] = OSD.FromString(pinfo.UserID.ToString()); + + return Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(result)); + } + #endregion Handlers + + #region utility + private byte[] FailureResult() + { + return FailureResult(String.Empty); + } + + private byte[] FailureResult(string msg) + { + OSDMap doc = new OSDMap(2); + doc["Result"] = OSD.FromString("Failure"); + doc["Message"] = OSD.FromString(msg); + + return DocToBytes(doc); + } + + private byte[] DocToBytes(OSDMap doc) + { + return Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(doc)); + } + #endregion utility + } +} From 5c92aa262a8c3916847b0b7e317d2f17c6f0b3c0 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 1 Apr 2012 15:58:26 -0400 Subject: [PATCH 04/87] Pass server up to IntegrationService to allow pluggins to register their handlers --- .../Integration/IntegrationServerConnector.cs | 2 +- .../IntegrationService/IntegrationService.cs | 5 +++-- .../IntegrationService/IntegrationServiceBase.cs | 12 ++++++++++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/OpenSim/Server/Handlers/Integration/IntegrationServerConnector.cs b/OpenSim/Server/Handlers/Integration/IntegrationServerConnector.cs index 69839d0299..5b7b0175d7 100644 --- a/OpenSim/Server/Handlers/Integration/IntegrationServerConnector.cs +++ b/OpenSim/Server/Handlers/Integration/IntegrationServerConnector.cs @@ -28,7 +28,7 @@ namespace OpenSim.Server.Handlers.Integration if (service == String.Empty) throw new Exception("No LocalServiceModule in config file"); - Object[] args = new Object[] { config }; + Object[] args = new Object[] { config, server }; m_IntegrationService = ServerUtils.LoadPlugin(service, args); server.AddStreamHandler(new IntegrationServerHandler(m_IntegrationService)); diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 4ee2999741..549b88eaed 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -2,6 +2,7 @@ using OpenSim.Server.Base; using OpenSim.Services.Interfaces; using OpenSim.Framework; +using OpenSim.Framework.Servers.HttpServer; using GridRegion = OpenSim.Services.Interfaces.GridRegion; using OpenMetaverse; using Nini.Config; @@ -13,8 +14,8 @@ namespace OpenSim.Services.IntegrationService public class IntegrationService : IntegrationServiceBase, IIntegrationService { - public IntegrationService(IConfigSource config) - : base(config) + public IntegrationService(IConfigSource config, IHttpServer server) + : base(config, server) { } diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 7d08576202..551affb52a 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -1,6 +1,7 @@ using System; using OpenSim.Services.Interfaces; using OpenSim.Services.Base; +using OpenSim.Framework.Servers.HttpServer; using System.Reflection; using Nini.Config; using OpenSim.Framework; @@ -23,17 +24,24 @@ namespace OpenSim.Services.IntegrationService { protected IPresenceService m_PresenceService; protected IGridService m_GridService; + protected IHttpServer m_Server; IConfig m_IntegrationServerConfig; - public IntegrationServiceBase(IConfigSource config) + public IntegrationServiceBase(IConfigSource config, IHttpServer server) : base(config) { Object[] args = new Object[] { config }; + + m_Server = server; + AddinManager.Initialize ("."); AddinManager.Registry.Update (); foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) - cmd.run (); + { + cmd.run (); + server.AddStreamHandler((IRequestHandler)cmd); + } m_IntegrationServerConfig = config.Configs["IntegrationService"]; if (m_IntegrationServerConfig == null) From 36daea44806300cd35ae7bb3b8fe6808dfbecba8 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 1 Apr 2012 23:15:38 -0400 Subject: [PATCH 05/87] Added some utilities and copyright/license --- .../Integration/IntegrationServerConnector.cs | 29 ++++- .../Integration/IntegrationServerHandler.cs | 27 +++++ .../IntegrationService/IntegrationService.cs | 26 +++++ .../IntegrationServiceBase.cs | 31 +++++- .../IntegrationService/IntegrationUtils.cs | 101 ++++++++++++++++++ .../Interfaces/IIntegrationService.cs | 27 +++++ 6 files changed, 238 insertions(+), 3 deletions(-) create mode 100644 OpenSim/Services/IntegrationService/IntegrationUtils.cs diff --git a/OpenSim/Server/Handlers/Integration/IntegrationServerConnector.cs b/OpenSim/Server/Handlers/Integration/IntegrationServerConnector.cs index 5b7b0175d7..2b30ac9d40 100644 --- a/OpenSim/Server/Handlers/Integration/IntegrationServerConnector.cs +++ b/OpenSim/Server/Handlers/Integration/IntegrationServerConnector.cs @@ -1,3 +1,31 @@ +/* + * 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 Nini.Config; using OpenSim.Server.Base; @@ -34,6 +62,5 @@ namespace OpenSim.Server.Handlers.Integration server.AddStreamHandler(new IntegrationServerHandler(m_IntegrationService)); } - } } diff --git a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs index 17fad09387..8e933226d6 100644 --- a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs +++ b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs @@ -1,3 +1,30 @@ +/* + * 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 OpenSim.Server.Base; using OpenSim.Services.Interfaces; using OpenSim.Framework; diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 549b88eaed..32a6894bb6 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -1,3 +1,29 @@ +/* + * 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 OpenSim.Server.Base; using OpenSim.Services.Interfaces; diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 551affb52a..445827a124 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -1,3 +1,30 @@ +/* + * 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 OpenSim.Services.Interfaces; using OpenSim.Services.Base; @@ -16,7 +43,7 @@ namespace OpenSim.Services.IntegrationService [TypeExtensionPoint (Path="/OpenSim/IntegrationService", Name="IntegrationService")] public interface IntegrationPlugin { - void run(); + void Init(IConfigSource config); } @@ -39,7 +66,7 @@ namespace OpenSim.Services.IntegrationService AddinManager.Registry.Update (); foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) { - cmd.run (); + cmd.Init (config); server.AddStreamHandler((IRequestHandler)cmd); } diff --git a/OpenSim/Services/IntegrationService/IntegrationUtils.cs b/OpenSim/Services/IntegrationService/IntegrationUtils.cs new file mode 100644 index 0000000000..e4a78579e9 --- /dev/null +++ b/OpenSim/Services/IntegrationService/IntegrationUtils.cs @@ -0,0 +1,101 @@ +/* + * 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 System.Text; +using log4net; +using OpenMetaverse.StructuredData; + + +namespace OpenSim.Services.IntegrationService +{ + public static class IUtils + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + public static bool ParseStringToOSDMap(string input, out OSDMap json) + { + try + { + json = null; + OSD tmpbuff = null; + + try + { + tmpbuff = OSDParser.DeserializeJson(input.ToString()); + } + catch + { + return false; + } + + if (tmpbuff.Type == OSDType.Map) + { + json = (OSDMap)tmpbuff; + return true; + } else + return false; + } + catch (NullReferenceException e) + { + m_log.ErrorFormat("[IUtil]: exception on ParseStringToJson {0}", e.Message); + json = null; + return false; + } + } + + public static byte[] FailureResult() + { + return FailureResult(String.Empty); + } + + public static byte[] FailureResult(string msg) + { + OSDMap doc = new OSDMap(2); + doc["Result"] = OSD.FromString("Failure"); + doc["Message"] = OSD.FromString(msg); + + return DocToBytes(doc); + } + + public static byte[] ResponseMessage(string message) + { + OSDMap doc = new OSDMap(2); + doc["Result"] = OSD.FromString("Success"); + doc["Message"] = OSD.FromString(message); + + return DocToBytes(doc); + } + + public static byte[] DocToBytes(OSDMap doc) + { + return Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(doc)); + } + } +} \ No newline at end of file diff --git a/OpenSim/Services/Interfaces/IIntegrationService.cs b/OpenSim/Services/Interfaces/IIntegrationService.cs index 37ab1f8320..f38008d9e3 100644 --- a/OpenSim/Services/Interfaces/IIntegrationService.cs +++ b/OpenSim/Services/Interfaces/IIntegrationService.cs @@ -1,3 +1,30 @@ +/* + * 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; From 335d167eadd017539f4ee9ffe2536dac6a2f7d44 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Mon, 2 Apr 2012 00:48:36 -0400 Subject: [PATCH 06/87] Added some logging --- .../IntegrationService/IntegrationService.cs | 6 +++- .../IntegrationServiceBase.cs | 31 +++++++++++++++++++ prebuild.xml | 1 + 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 32a6894bb6..3a65c08d60 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -25,6 +25,8 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +using System; +using System.Reflection; using OpenSim.Server.Base; using OpenSim.Services.Interfaces; using OpenSim.Framework; @@ -32,17 +34,19 @@ using OpenSim.Framework.Servers.HttpServer; using GridRegion = OpenSim.Services.Interfaces.GridRegion; using OpenMetaverse; using Nini.Config; - +using log4net; namespace OpenSim.Services.IntegrationService { public class IntegrationService : IntegrationServiceBase, IIntegrationService { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public IntegrationService(IConfigSource config, IHttpServer server) : base(config, server) { + m_log.InfoFormat("[IntegrationService]: Loaded"); } diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 445827a124..200b90a401 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -26,6 +26,7 @@ */ using System; +using System.IO; using OpenSim.Services.Interfaces; using OpenSim.Services.Base; using OpenSim.Framework.Servers.HttpServer; @@ -34,6 +35,7 @@ using Nini.Config; using OpenSim.Framework; using GridRegion = OpenSim.Services.Interfaces.GridRegion; using Mono.Addins; +using log4net; [assembly:AddinRoot ("IntegrationService", "1.0")] @@ -44,11 +46,14 @@ namespace OpenSim.Services.IntegrationService public interface IntegrationPlugin { void Init(IConfigSource config); + string Name{ get; } } public class IntegrationServiceBase : ServiceBase { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + protected IPresenceService m_PresenceService; protected IGridService m_GridService; protected IHttpServer m_Server; @@ -60,14 +65,20 @@ namespace OpenSim.Services.IntegrationService Object[] args = new Object[] { config }; + AddinManager.AddinLoaded += on_addinloaded_; + m_Server = server; + suppress_console_output_(true); AddinManager.Initialize ("."); AddinManager.Registry.Update (); + suppress_console_output_(false); + foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) { cmd.Init (config); server.AddStreamHandler((IRequestHandler)cmd); + m_log.InfoFormat("[Integration]: Loading IntegrationService plugin {0}", cmd.Name); } m_IntegrationServerConfig = config.Configs["IntegrationService"]; @@ -87,5 +98,25 @@ namespace OpenSim.Services.IntegrationService m_PresenceService = LoadPlugin(presenceService, args); } + + private void on_addinloaded_(object sender, AddinEventArgs args) + { + m_log.Info ("[IntegrationService]: Plugin Loaded: " + args.AddinId); + } + + private static TextWriter prev_console_; + public void suppress_console_output_(bool save) + { + if (save) + { + prev_console_ = System.Console.Out; + System.Console.SetOut(new StreamWriter(Stream.Null)); + } + else + { + if (prev_console_ != null) + System.Console.SetOut(prev_console_); + } + } } } diff --git a/prebuild.xml b/prebuild.xml index 02315f621a..3f357b7a17 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -1169,6 +1169,7 @@ + From 4c5b3adb961875ba16e9dd78b9a8f404a151aa22 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Mon, 2 Apr 2012 17:06:31 -0400 Subject: [PATCH 07/87] Do some work on the plugin registry locations and configuration manager --- .../IntegrationService/IntegrationService.cs | 2 +- .../IntegrationServiceBase.cs | 29 +++++++++++++++---- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 3a65c08d60..1017ab5f3e 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -46,7 +46,7 @@ namespace OpenSim.Services.IntegrationService public IntegrationService(IConfigSource config, IHttpServer server) : base(config, server) { - m_log.InfoFormat("[IntegrationService]: Loaded"); + m_log.InfoFormat("[INTEGRATION SERVICE]: Loaded"); } diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 200b90a401..e44c01a0df 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -53,6 +53,8 @@ namespace OpenSim.Services.IntegrationService public class IntegrationServiceBase : ServiceBase { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + private string m_ConfigName = "IntegrationService"; protected IPresenceService m_PresenceService; protected IGridService m_GridService; @@ -62,15 +64,20 @@ namespace OpenSim.Services.IntegrationService public IntegrationServiceBase(IConfigSource config, IHttpServer server) : base(config) { - Object[] args = new Object[] { config }; + IConfig serverConfig = config.Configs[m_ConfigName]; + if (serverConfig == null) + throw new Exception(String.Format("No section {0} in config file", m_ConfigName)); + string RegistryLocation = serverConfig.GetString("PluginRegistryLocation", + "."); AddinManager.AddinLoaded += on_addinloaded_; + AddinManager.AddinLoadError += on_addinloaderror_; m_Server = server; suppress_console_output_(true); - AddinManager.Initialize ("."); + AddinManager.Initialize (RegistryLocation); AddinManager.Registry.Update (); suppress_console_output_(false); @@ -78,13 +85,13 @@ namespace OpenSim.Services.IntegrationService { cmd.Init (config); server.AddStreamHandler((IRequestHandler)cmd); - m_log.InfoFormat("[Integration]: Loading IntegrationService plugin {0}", cmd.Name); + m_log.InfoFormat("[INTEGRATION SERVICE]: Loading IntegrationService plugin {0}", cmd.Name); } m_IntegrationServerConfig = config.Configs["IntegrationService"]; if (m_IntegrationServerConfig == null) { - throw new Exception("[IntegrationService]: Missing configuration"); + throw new Exception("[INTEGRATION SERVICE]: Missing configuration"); return; } @@ -92,6 +99,7 @@ namespace OpenSim.Services.IntegrationService string presenceService = m_IntegrationServerConfig.GetString("PresenceService", String.Empty); + Object[] args = new Object[] { config }; if (gridService != string.Empty) m_GridService = LoadPlugin(gridService, args); if (presenceService != string.Empty) @@ -99,9 +107,20 @@ namespace OpenSim.Services.IntegrationService } + private void on_addinloaderror_(object sender, AddinErrorEventArgs args) + { + if (args.Exception == null) + m_log.Error ("[INTEGRATION SERVICE]: Plugin Error: " + + args.Message); + else + m_log.Error ("[INTEGRATION SERVICE]: Plugin Error: " + + args.Exception.Message + "\n" + + args.Exception.StackTrace); + } + private void on_addinloaded_(object sender, AddinEventArgs args) { - m_log.Info ("[IntegrationService]: Plugin Loaded: " + args.AddinId); + m_log.Info ("[INTEGRATION SERVICE]: Plugin Loaded: " + args.AddinId); } private static TextWriter prev_console_; From b3ecf935cd9f1f7a7e8c78ab1a30d33f6bc1b59a Mon Sep 17 00:00:00 2001 From: BlueWall Date: Mon, 2 Apr 2012 22:50:13 -0400 Subject: [PATCH 08/87] Update mono-addins --- bin/Mono.Addins.CecilReflector.dll | Bin 364032 -> 226816 bytes bin/Mono.Addins.Setup.dll | Bin 103424 -> 130560 bytes bin/Mono.Addins.dll | Bin 202752 -> 235008 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/bin/Mono.Addins.CecilReflector.dll b/bin/Mono.Addins.CecilReflector.dll index a1a638265cadfb76da851ff70a83701cfc7b6362..0a61eaae17ecf3fc01b32a595db5440f8fa42b64 100755 GIT binary patch literal 226816 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 literal 364032 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 diff --git a/bin/Mono.Addins.Setup.dll b/bin/Mono.Addins.Setup.dll index 8aa6d5f2cf1f1f4cae069eabea7c1a10a4d7c101..37ce9e7cb38e1fa0fe2491bd124de1d0b76018c6 100755 GIT binary patch literal 130560 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 IpQFJ40y2Ha!vFvP literal 103424 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 diff --git a/bin/Mono.Addins.dll b/bin/Mono.Addins.dll index ea330fdc9b7d3f098d3ccb58d877b5630a4199c0..9a6b7d4e82a133f7eb20de9be8f2a210630bd32e 100755 GIT binary patch literal 235008 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%0DH&nl#?;K3@8lq<4~zx)$@wzlm(0 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 literal 202752 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 From 639c6bdd625c229252efeeadb65b1b37568c3b61 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 3 Apr 2012 14:50:26 -0400 Subject: [PATCH 09/87] Add a delay to let regions load before calling PostInit Something is letting PostInit fire before the regions are loaded. This small delay "fixes" it. Will continue to look for a way to make sure they are loaded first. --- OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs | 5 ++++- .../Services/IntegrationService/IntegrationServiceBase.cs | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs index 45b8d6f4b9..cefaf2ff15 100644 --- a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs +++ b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs @@ -135,7 +135,10 @@ namespace OpenSim.ApplicationPlugins.LoadRegions } } } - + // Temporary fix for an issue after the mono-addis upgrade + // PostInilise can fire before the region is loaded, so need to + // track down the cause of that + Thread.Sleep(300); m_openSim.ModuleLoader.PostInitialise(); m_openSim.ModuleLoader.ClearCache(); } diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index e44c01a0df..d1ffc3ec76 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -69,8 +69,10 @@ namespace OpenSim.Services.IntegrationService if (serverConfig == null) throw new Exception(String.Format("No section {0} in config file", m_ConfigName)); + // defaults to the ./bin directory string RegistryLocation = serverConfig.GetString("PluginRegistryLocation", "."); + AddinManager.AddinLoaded += on_addinloaded_; AddinManager.AddinLoadError += on_addinloaderror_; @@ -98,7 +100,8 @@ namespace OpenSim.Services.IntegrationService string gridService = m_IntegrationServerConfig.GetString("GridService", String.Empty); string presenceService = m_IntegrationServerConfig.GetString("PresenceService", String.Empty); - + // These are here now, but will be gone soon. + // Each plugin will load it's own services Object[] args = new Object[] { config }; if (gridService != string.Empty) m_GridService = LoadPlugin(gridService, args); From d2cd39d0d80f577cba6947790b33990467b1c94c Mon Sep 17 00:00:00 2001 From: BlueWall Date: Wed, 4 Apr 2012 14:15:52 -0400 Subject: [PATCH 10/87] Adding configuration management to plugins --- .../LoadRegions/LoadRegionsPlugin.cs | 3 +- .../IntegrationServiceBase.cs | 68 ++++++++++++++++--- .../IntegrationService/IntegrationUtils.cs | 29 ++++++++ .../IntegrationService/PluginManager.cs | 36 ++++++++++ prebuild.xml | 2 + 5 files changed, 128 insertions(+), 10 deletions(-) create mode 100644 OpenSim/Services/IntegrationService/PluginManager.cs diff --git a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs index cefaf2ff15..a41a27349e 100644 --- a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs +++ b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs @@ -135,7 +135,8 @@ namespace OpenSim.ApplicationPlugins.LoadRegions } } } - // Temporary fix for an issue after the mono-addis upgrade + + //[TODO]: Temporary fix for an issue after the mono-addis upgrade // PostInilise can fire before the region is loaded, so need to // track down the cause of that Thread.Sleep(300); diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index d1ffc3ec76..fa27a62a7c 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -37,6 +37,7 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion; using Mono.Addins; using log4net; +using Ux = OpenSim.Services.IntegrationService.IUtils; [assembly:AddinRoot ("IntegrationService", "1.0")] @@ -47,9 +48,9 @@ namespace OpenSim.Services.IntegrationService { void Init(IConfigSource config); string Name{ get; } + string ConfigName { get; } } - public class IntegrationServiceBase : ServiceBase { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); @@ -59,7 +60,9 @@ namespace OpenSim.Services.IntegrationService protected IPresenceService m_PresenceService; protected IGridService m_GridService; protected IHttpServer m_Server; + protected string m_IntegrationConfig; IConfig m_IntegrationServerConfig; + string m_IntegrationConfigLoc; public IntegrationServiceBase(IConfigSource config, IHttpServer server) : base(config) @@ -73,11 +76,34 @@ namespace OpenSim.Services.IntegrationService string RegistryLocation = serverConfig.GetString("PluginRegistryLocation", "."); + // Deal with files only for now - will add url/environment later + m_IntegrationConfigLoc = serverConfig.GetString("IntegrationConfig", String.Empty); + if(String.IsNullOrEmpty(m_IntegrationConfigLoc)) + m_log.Error("[INTEGRATION SERVICE]: No IntegrationConfig defined in the Robust.ini"); + AddinManager.AddinLoaded += on_addinloaded_; AddinManager.AddinLoadError += on_addinloaderror_; m_Server = server; + m_IntegrationServerConfig = config.Configs["IntegrationService"]; + if (m_IntegrationServerConfig == null) + { + throw new Exception("[INTEGRATION SERVICE]: Missing configuration"); + return; + } + + // Add a command to the console + if (MainConsole.Instance != null) + { + MainConsole.Instance.Commands.AddCommand("Integration", true, + "show repos", + "show repos", + "Show list of registered plugin repositories", + String.Empty, + HandleShowRepos); + } + suppress_console_output_(true); AddinManager.Initialize (RegistryLocation); AddinManager.Registry.Update (); @@ -85,18 +111,16 @@ namespace OpenSim.Services.IntegrationService foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) { - cmd.Init (config); + IConfigSource ConfigSource = Ux.GetConfigSource(m_IntegrationConfigLoc, cmd.ConfigName); + + // We maintain a configuration per-plugin to enhance modularity + // If ConfigSource is null, we will get the default from the repo + // and write it to our directory + cmd.Init (ConfigSource); server.AddStreamHandler((IRequestHandler)cmd); m_log.InfoFormat("[INTEGRATION SERVICE]: Loading IntegrationService plugin {0}", cmd.Name); } - m_IntegrationServerConfig = config.Configs["IntegrationService"]; - if (m_IntegrationServerConfig == null) - { - throw new Exception("[INTEGRATION SERVICE]: Missing configuration"); - return; - } - string gridService = m_IntegrationServerConfig.GetString("GridService", String.Empty); string presenceService = m_IntegrationServerConfig.GetString("PresenceService", String.Empty); @@ -110,6 +134,11 @@ namespace OpenSim.Services.IntegrationService } + private IConfigSource GetConfig(string configName) + { + return new IniConfigSource(); + } + private void on_addinloaderror_(object sender, AddinErrorEventArgs args) { if (args.Exception == null) @@ -140,5 +169,26 @@ namespace OpenSim.Services.IntegrationService System.Console.SetOut(prev_console_); } } + + + + + #region console handlers + private void HandleShowRepos(string module, string[] cmd) + { + if ( cmd.Length < 2 ) + { + MainConsole.Instance.Output("Syntax: show repos"); + return; + } + +// List list = m_Database.ListNames(); +// +// foreach (UserData name in list) +// { +// MainConsole.Instance.Output(String.Format("{0} {1}",name.FirstName, name.LastName)); +// } + } + #endregion } } diff --git a/OpenSim/Services/IntegrationService/IntegrationUtils.cs b/OpenSim/Services/IntegrationService/IntegrationUtils.cs index e4a78579e9..a934b2a6bc 100644 --- a/OpenSim/Services/IntegrationService/IntegrationUtils.cs +++ b/OpenSim/Services/IntegrationService/IntegrationUtils.cs @@ -27,9 +27,11 @@ using System; +using System.IO; using System.Reflection; using System.Text; using log4net; +using Nini.Config; using OpenMetaverse.StructuredData; @@ -39,6 +41,7 @@ namespace OpenSim.Services.IntegrationService { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + #region web utils public static bool ParseStringToOSDMap(string input, out OSDMap json) { try @@ -97,5 +100,31 @@ namespace OpenSim.Services.IntegrationService { return Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(doc)); } + #endregion web utils + + #region config utils + public static IConfigSource GetConfigSource(string IniPath, string IniName) + { + string configFilePath = Path.GetFullPath( + Path.Combine(IniPath, IniName)); + + if (File.Exists(configFilePath)) + { + IConfigSource config = new IniConfigSource(configFilePath); + return config; + } + else + { + return new IniConfigSource(); + } + } + #endregion config utils + + public static T LoadPlugin(string dllName, Object[] args) where T:class + { + return OpenSim.Server.Base.ServerUtils.LoadPlugin(dllName, args); + + } + } } \ No newline at end of file diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs new file mode 100644 index 0000000000..f5dfa8d89b --- /dev/null +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -0,0 +1,36 @@ +/* + * 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 Mono.Addins; +using Mono.Addins.Setup; + +namespace OpenSim.Services.IntegrationService +{ + + +} \ No newline at end of file diff --git a/prebuild.xml b/prebuild.xml index 7efe17ae40..2cf807ab00 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -1181,6 +1181,8 @@ + + From 4fa5fa5e08b2be2f39e50b1e6a0d223a9d45e9d0 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Wed, 4 Apr 2012 15:07:19 -0400 Subject: [PATCH 11/87] Remove some old work + add to config/init --- .../Integration/IntegrationServerHandler.cs | 45 +++---------------- .../IntegrationService/IntegrationService.cs | 7 --- .../IntegrationServiceBase.cs | 7 ++- .../Interfaces/IIntegrationService.cs | 1 - 4 files changed, 11 insertions(+), 49 deletions(-) diff --git a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs index 8e933226d6..812d2ce65e 100644 --- a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs +++ b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs @@ -78,58 +78,25 @@ namespace OpenSim.Server.Handlers.Integration switch (command) { // agent - case "verify_agent_ssession": - return HandleVerifyAgentSession(request); + case "foo": + break; - case "verify_agent_region": - return FailureResult("Not Implemented"); + case "bar": + break; default: - m_log.DebugFormat("[IntegrationHandler]: unknown method {0} request {1}", command.Length, command); + m_log.DebugFormat("[INTEGRATION HANDLER]: unknown method {0} request {1}", command.Length, command); return FailureResult("IntegrationHandler: Unrecognized method requested!"); } } catch (Exception e) { - m_log.DebugFormat("[IntegrationHandler]: Exception {0}", e); + m_log.DebugFormat("[INTEGRATION HANDLER]: Exception {0}", e); } return FailureResult(); } - #region Handlers - ///

- /// Verifies the agent to external applications. - /// - /// - /// UUID of the agent. - /// - /// - /// request - Send SecureSessionID and optionally Encoding=xml for xml Output - /// - byte[] HandleVerifyAgentSession(OSDMap request) - { - UUID s_session = UUID.Zero; - - if (!request.ContainsKey("SecureSessionID")) - return FailureResult(); - - if (!UUID.TryParse(request["SecureSessionID"].AsString(), out s_session)) - return FailureResult(); - - PresenceInfo pinfo = m_IntegrationService.VerifyAgent(s_session); - - OSDMap result = new OSDMap(); - - if (pinfo == null) - result["agent_id"] = OSD.FromUUID(UUID.Zero); - else - result["agent_id"] = OSD.FromString(pinfo.UserID.ToString()); - - return Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(result)); - } - #endregion Handlers - #region utility private byte[] FailureResult() { diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 1017ab5f3e..07d527f118 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -49,12 +49,5 @@ namespace OpenSim.Services.IntegrationService m_log.InfoFormat("[INTEGRATION SERVICE]: Loaded"); } - - #region IIntegrationService implementation - public PresenceInfo VerifyAgent(UUID SecureSessionID) - { - return m_PresenceService.VerifyAgent(SecureSessionID); - } - #endregion } } \ No newline at end of file diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index fa27a62a7c..ed2d9d907c 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -46,7 +46,7 @@ namespace OpenSim.Services.IntegrationService [TypeExtensionPoint (Path="/OpenSim/IntegrationService", Name="IntegrationService")] public interface IntegrationPlugin { - void Init(IConfigSource config); + void Init(IConfigSource config, IConfig data); string Name{ get; } string ConfigName { get; } } @@ -93,6 +93,9 @@ namespace OpenSim.Services.IntegrationService return; } + // Send the default data service + IConfig DataService = config.Configs["DatabaseService"]; + // Add a command to the console if (MainConsole.Instance != null) { @@ -116,7 +119,7 @@ namespace OpenSim.Services.IntegrationService // We maintain a configuration per-plugin to enhance modularity // If ConfigSource is null, we will get the default from the repo // and write it to our directory - cmd.Init (ConfigSource); + cmd.Init (ConfigSource, DataService); server.AddStreamHandler((IRequestHandler)cmd); m_log.InfoFormat("[INTEGRATION SERVICE]: Loading IntegrationService plugin {0}", cmd.Name); } diff --git a/OpenSim/Services/Interfaces/IIntegrationService.cs b/OpenSim/Services/Interfaces/IIntegrationService.cs index f38008d9e3..0e080b941b 100644 --- a/OpenSim/Services/Interfaces/IIntegrationService.cs +++ b/OpenSim/Services/Interfaces/IIntegrationService.cs @@ -36,7 +36,6 @@ namespace OpenSim.Services.Interfaces { public interface IIntegrationService { - PresenceInfo VerifyAgent(UUID SecretSessionID); } } From f266e192431349a218f0290e4ce7cee183075500 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Wed, 4 Apr 2012 20:01:23 -0400 Subject: [PATCH 12/87] automatic creation of ini form repository --- .../IntegrationServiceBase.cs | 52 +++++++++++++------ .../IntegrationService/IntegrationUtils.cs | 25 ++++++++- .../IntegrationService/PluginManager.cs | 2 +- 3 files changed, 60 insertions(+), 19 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index ed2d9d907c..e965c7d16f 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -46,9 +46,10 @@ namespace OpenSim.Services.IntegrationService [TypeExtensionPoint (Path="/OpenSim/IntegrationService", Name="IntegrationService")] public interface IntegrationPlugin { - void Init(IConfigSource config, IConfig data); + void Init(IConfigSource PluginConfig); string Name{ get; } string ConfigName { get; } + string DefaultConfig { get; } } public class IntegrationServiceBase : ServiceBase @@ -93,8 +94,6 @@ namespace OpenSim.Services.IntegrationService return; } - // Send the default data service - IConfig DataService = config.Configs["DatabaseService"]; // Add a command to the console if (MainConsole.Instance != null) @@ -114,27 +113,46 @@ namespace OpenSim.Services.IntegrationService foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) { - IConfigSource ConfigSource = Ux.GetConfigSource(m_IntegrationConfigLoc, cmd.ConfigName); + string ConfigPath = String.Format("{0}/(1)", m_IntegrationConfigLoc,cmd.ConfigName); + IConfigSource PlugConfig = Ux.GetConfigSource(m_IntegrationConfigLoc, cmd.ConfigName); + + // Fetch the starter ini + if (PlugConfig == null) + { + + m_log.InfoFormat("[INTEGRATION SERVICE]: Fetching starter config for {0} from {1}", cmd.Name, cmd.DefaultConfig); + + // Send the default data service + IConfig DataService = config.Configs["DatabaseService"]; + m_log.InfoFormat("[INTEGRATION SERVICE]: Writing initial config to {0}", cmd.ConfigName); + // FileStream fs = File.Create(Path.Combine(m_IntegrationConfigLoc,cmd.ConfigName)); + // System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); + // Byte[] buf = enc.GetBytes("; Automatically Generated Configuration - Edit for your installation\n" ); + // fs.Write(buf, 0, buf.Length); + // fs.Close(); + + IniConfigSource source = new IniConfigSource(); + IConfig Init = source.AddConfig("DatabaseService"); + Init.Set("StorageProvider",(string)DataService.GetString("StorageProvider")); + Init.Set("ConnectionString", (string)DataService.GetString("ConnectionString")); + + + PlugConfig = Ux.LoadInitialConfig(cmd.DefaultConfig); + + source.Merge(PlugConfig); + + source.Save(Path.Combine(m_IntegrationConfigLoc, cmd.ConfigName)); + + PlugConfig = source; + } // We maintain a configuration per-plugin to enhance modularity // If ConfigSource is null, we will get the default from the repo // and write it to our directory - cmd.Init (ConfigSource, DataService); + cmd.Init (PlugConfig); server.AddStreamHandler((IRequestHandler)cmd); m_log.InfoFormat("[INTEGRATION SERVICE]: Loading IntegrationService plugin {0}", cmd.Name); } - - string gridService = m_IntegrationServerConfig.GetString("GridService", String.Empty); - string presenceService = m_IntegrationServerConfig.GetString("PresenceService", String.Empty); - - // These are here now, but will be gone soon. - // Each plugin will load it's own services - Object[] args = new Object[] { config }; - if (gridService != string.Empty) - m_GridService = LoadPlugin(gridService, args); - if (presenceService != string.Empty) - m_PresenceService = LoadPlugin(presenceService, args); - } private IConfigSource GetConfig(string configName) diff --git a/OpenSim/Services/IntegrationService/IntegrationUtils.cs b/OpenSim/Services/IntegrationService/IntegrationUtils.cs index a934b2a6bc..08daaf3112 100644 --- a/OpenSim/Services/IntegrationService/IntegrationUtils.cs +++ b/OpenSim/Services/IntegrationService/IntegrationUtils.cs @@ -30,6 +30,7 @@ using System; using System.IO; using System.Reflection; using System.Text; +using System.Xml; using log4net; using Nini.Config; using OpenMetaverse.StructuredData; @@ -115,9 +116,31 @@ namespace OpenSim.Services.IntegrationService } else { - return new IniConfigSource(); + return null; } } + + public static IConfigSource LoadInitialConfig(string url) + { + IConfigSource source = new XmlConfigSource(); + m_log.InfoFormat("[CONFIG]: {0} is a http:// URI, fetching ...", url); + + // The ini file path is a http URI + // Try to read it + try + { + XmlReader r = XmlReader.Create(url); + IConfigSource cs = new XmlConfigSource(r); + source.Merge(cs); + } + catch (Exception e) + { + m_log.FatalFormat("[CONFIG]: Exception reading config from URI {0}\n" + e.ToString(), url); + Environment.Exit(1); + } + + return source; + } #endregion config utils public static T LoadPlugin(string dllName, Object[] args) where T:class diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index f5dfa8d89b..39eb08ae0f 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -31,6 +31,6 @@ using Mono.Addins.Setup; namespace OpenSim.Services.IntegrationService { - + // This will maintain the plugin repositories and plugins } \ No newline at end of file From f494e6b0864d63156cee959487b37f2066d38505 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Thu, 5 Apr 2012 12:25:24 -0400 Subject: [PATCH 13/87] Working on plugin manager --- .../IntegrationService/IntegrationService.cs | 112 ++++++++++++++++++ .../IntegrationServiceBase.cs | 36 +----- .../IntegrationService/PluginManager.cs | 87 ++++++++++++++ 3 files changed, 202 insertions(+), 33 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 07d527f118..4560941d5f 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -48,6 +48,118 @@ namespace OpenSim.Services.IntegrationService { m_log.InfoFormat("[INTEGRATION SERVICE]: Loaded"); + // Add a command to the console + if (MainConsole.Instance != null) + { + AddConsoleCommands(); + } } + + private void AddConsoleCommands() + { + MainConsole.Instance.Commands.AddCommand("Integration", true, + "install", "install \"plugin name\"", "Install plugin from repository", + HandleInstallPlugin); + + MainConsole.Instance.Commands.AddCommand("Integration", true, + "uninstall", "uninstall \"plugin name\"", "Remove plugin from repository", + HandleUnInstallPlugin); + + MainConsole.Instance.Commands.AddCommand("Integration", true, "check installed", "check installed \"plugin name=\"", + HandleCheckInstalledPlugin); + + } + + #region console handlers + private void HandleInstallPlugin(string module, string[] cmd) + { + MainConsole.Instance.Output(m_PluginManager.Install()); + return; + } + + private void HandleUnInstallPlugin(string module, string[] cmd) + { + MainConsole.Instance.Output(m_PluginManager.UnInstall()); + return; + } + + private void HandleCheckInstalledPlugin(string module, string[] cmd) + { + MainConsole.Instance.Output(m_PluginManager.CheckInstalled()); + return; + } + + private void HandleListInstalledPlugin(string module, string[] cmd) + { + MainConsole.Instance.Output(m_PluginManager.ListInstalled()); + return; + } + + private void HandleListAvailablePlugin(string module, string[] cmd) + { + MainConsole.Instance.Output(m_PluginManager.ListAvailable()); + return; + } + + private void HandleListUpdates(string module, string[] cmd) + { + MainConsole.Instance.Output(m_PluginManager.ListUpdates()); + return; + } + + private void HandleUpdatePlugin(string module, string[] cmd) + { + MainConsole.Instance.Output(m_PluginManager.Update()); + return; + } + + private void HandleAddRepo(string module, string[] cmd) + { + MainConsole.Instance.Output(m_PluginManager.AddRepository()); + return; + } + + private void HandleGetRepo(string module, string[] cmd) + { + MainConsole.Instance.Output(m_PluginManager.GetRepository()); + return; + } + + private void HandleRemoveRepo(string module, string[] cmd) + { + MainConsole.Instance.Output(m_PluginManager.RemoveRepository()); + return; + } + + private void HandleEnableRepo(string module, string[] cmd) + { + MainConsole.Instance.Output(m_PluginManager.EnableRepository()); + return; + } + + private void HandleDisableRepo(string module, string[] cmd) + { + MainConsole.Instance.Output(m_PluginManager.DisableRepository()); + return; + } + + private void HandleListRepos(string module, string[] cmd) + { + MainConsole.Instance.Output(m_PluginManager.ListRepositories()); + return; + } + + private void HandleShowAddinInfo(string module, string[] cmd) + { + if ( cmd.Length < 2 ) + { + MainConsole.Instance.Output(m_PluginManager.AddinInfo()); + return; + } + + MainConsole.Instance.Output(String.Format("{0} {1}","Hello", "World!" )); + + } + #endregion } } \ No newline at end of file diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index e965c7d16f..c72a4e985f 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -62,6 +62,7 @@ namespace OpenSim.Services.IntegrationService protected IGridService m_GridService; protected IHttpServer m_Server; protected string m_IntegrationConfig; + protected PluginManager m_PluginManager; IConfig m_IntegrationServerConfig; string m_IntegrationConfigLoc; @@ -77,6 +78,8 @@ namespace OpenSim.Services.IntegrationService string RegistryLocation = serverConfig.GetString("PluginRegistryLocation", "."); + m_PluginManager = new PluginManager(RegistryLocation); + // Deal with files only for now - will add url/environment later m_IntegrationConfigLoc = serverConfig.GetString("IntegrationConfig", String.Empty); if(String.IsNullOrEmpty(m_IntegrationConfigLoc)) @@ -94,18 +97,6 @@ namespace OpenSim.Services.IntegrationService return; } - - // Add a command to the console - if (MainConsole.Instance != null) - { - MainConsole.Instance.Commands.AddCommand("Integration", true, - "show repos", - "show repos", - "Show list of registered plugin repositories", - String.Empty, - HandleShowRepos); - } - suppress_console_output_(true); AddinManager.Initialize (RegistryLocation); AddinManager.Registry.Update (); @@ -190,26 +181,5 @@ namespace OpenSim.Services.IntegrationService System.Console.SetOut(prev_console_); } } - - - - - #region console handlers - private void HandleShowRepos(string module, string[] cmd) - { - if ( cmd.Length < 2 ) - { - MainConsole.Instance.Output("Syntax: show repos"); - return; - } - -// List list = m_Database.ListNames(); -// -// foreach (UserData name in list) -// { -// MainConsole.Instance.Output(String.Format("{0} {1}",name.FirstName, name.LastName)); -// } - } - #endregion } } diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index 39eb08ae0f..bbf0f6b486 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -32,5 +32,92 @@ using Mono.Addins.Setup; namespace OpenSim.Services.IntegrationService { // This will maintain the plugin repositories and plugins + public class PluginManager + { + protected AddinRegistry m_Registry; + protected SetupService m_Manager; + public PluginManager(string registry_path) + { + m_Registry = new AddinRegistry(".", registry_path); + m_Manager = new SetupService(m_Registry); + + + } + + public string Install() + { + return "Install"; + } + + public string UnInstall() + { + return "UnInstall"; + } + + public string CheckInstalled() + { + return "CheckInstall"; + } + + public string ListInstalled() + { + return "ListInstalled"; + } + + public string ListAvailable() + { + return "ListAvailable"; + } + + public string ListUpdates() + { + return "ListUpdates"; + } + + public string Update() + { + return "Update"; + } + + public string AddRepository() + { + return "AddRepository"; + } + + public string GetRepository() + { + return "GetRepository"; + } + + public string RemoveRepository() + { + return "RemoveRepository"; + } + + public string EnableRepository() + { + return "EnableRepository"; + } + + public string DisableRepository() + { + return DisableRepository(); + } + + public string ListRepositories() + { + return "ListRepositories"; + } + + public string UpdateRegistry() + { + return "UpdateRegistry"; + } + + public string AddinInfo() + { + return "AddinInfo"; + } + } } \ No newline at end of file From de1d213117159c55acb0c7a660788a1d038264a2 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Thu, 5 Apr 2012 13:55:04 -0400 Subject: [PATCH 14/87] Adding command skeleton --- .../IntegrationService/IntegrationService.cs | 48 +++++++++++++++++-- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 4560941d5f..201bd9ebd0 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -65,9 +65,52 @@ namespace OpenSim.Services.IntegrationService "uninstall", "uninstall \"plugin name\"", "Remove plugin from repository", HandleUnInstallPlugin); - MainConsole.Instance.Commands.AddCommand("Integration", true, "check installed", "check installed \"plugin name=\"", + MainConsole.Instance.Commands.AddCommand("Integration", true, + "check installed", "check installed \"plugin name=\"","Check installed plugin", HandleCheckInstalledPlugin); + MainConsole.Instance.Commands.AddCommand("Integration", true, + "list installed", "list installed \"plugin name=\"","List install plugins", + HandleListInstalledPlugin); + + MainConsole.Instance.Commands.AddCommand("Integration", true, + "list available", "list available \"plugin name=\"","List available plugins", + HandleListAvailablePlugin); + + MainConsole.Instance.Commands.AddCommand("Integration", true, "list updates", "list updates","List availble updates", + HandleListUpdates); + + MainConsole.Instance.Commands.AddCommand("Integration", true, + "update", "update \"plugin name=\"","Update the plugin", + HandleUpdatePlugin); + + MainConsole.Instance.Commands.AddCommand("Integration", true, + "add repo", "add repo \"url\"","Add repository", + HandleAddRepo); + + MainConsole.Instance.Commands.AddCommand("Integration", true, "get repo", "get repo \"url\"", "Sync with a registered repository", + HandleGetRepo); + + MainConsole.Instance.Commands.AddCommand("Integration", true, + "remove repo", "remove repo \"[url | index]\"","Remove registered repository", + HandleRemoveRepo); + + MainConsole.Instance.Commands.AddCommand("Integration", true, + "enable repo", "enable repo \"[url | index]\"","Enable registered repository", + HandleEnableRepo); + + MainConsole.Instance.Commands.AddCommand("Integration", true, + "disable repo", "disable repo \"[url | index]\"","Disable registered repository", + HandleDisableRepo); + + MainConsole.Instance.Commands.AddCommand("Integration", true, + "list repos", "list repos","List registered repositories", + HandleListRepos); + + MainConsole.Instance.Commands.AddCommand("Integration", true, + "show info", "show info \"plugin name\"","Show detailed information for plugin", + HandleShowAddinInfo); + } #region console handlers @@ -156,9 +199,6 @@ namespace OpenSim.Services.IntegrationService MainConsole.Instance.Output(m_PluginManager.AddinInfo()); return; } - - MainConsole.Instance.Output(String.Format("{0} {1}","Hello", "World!" )); - } #endregion } From 1aab096a83d1dad1f5e1bbe8f83120d7028720de Mon Sep 17 00:00:00 2001 From: BlueWall Date: Thu, 5 Apr 2012 23:48:25 -0400 Subject: [PATCH 15/87] Start filling out commands --- .../IntegrationService/IntegrationService.cs | 18 +++-- .../IntegrationService/PluginManager.cs | 65 ++++++++++++++----- 2 files changed, 61 insertions(+), 22 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 201bd9ebd0..8945d94749 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -26,6 +26,7 @@ */ using System; +using System.Collections; using System.Reflection; using OpenSim.Server.Base; using OpenSim.Services.Interfaces; @@ -35,6 +36,7 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion; using OpenMetaverse; using Nini.Config; using log4net; +using Mono.Addins; namespace OpenSim.Services.IntegrationService @@ -48,7 +50,7 @@ namespace OpenSim.Services.IntegrationService { m_log.InfoFormat("[INTEGRATION SERVICE]: Loaded"); - // Add a command to the console + // Add commands to the console if (MainConsole.Instance != null) { AddConsoleCommands(); @@ -77,7 +79,8 @@ namespace OpenSim.Services.IntegrationService "list available", "list available \"plugin name=\"","List available plugins", HandleListAvailablePlugin); - MainConsole.Instance.Commands.AddCommand("Integration", true, "list updates", "list updates","List availble updates", + MainConsole.Instance.Commands.AddCommand("Integration", true, + "list updates", "list updates","List availble updates", HandleListUpdates); MainConsole.Instance.Commands.AddCommand("Integration", true, @@ -88,7 +91,8 @@ namespace OpenSim.Services.IntegrationService "add repo", "add repo \"url\"","Add repository", HandleAddRepo); - MainConsole.Instance.Commands.AddCommand("Integration", true, "get repo", "get repo \"url\"", "Sync with a registered repository", + MainConsole.Instance.Commands.AddCommand("Integration", true, + "get repo", "get repo \"url\"", "Sync with a registered repository", HandleGetRepo); MainConsole.Instance.Commands.AddCommand("Integration", true, @@ -134,13 +138,13 @@ namespace OpenSim.Services.IntegrationService private void HandleListInstalledPlugin(string module, string[] cmd) { - MainConsole.Instance.Output(m_PluginManager.ListInstalled()); + m_PluginManager.ListInstalledAddins(); return; } private void HandleListAvailablePlugin(string module, string[] cmd) { - MainConsole.Instance.Output(m_PluginManager.ListAvailable()); + m_PluginManager.ListAvailable(); return; } @@ -176,7 +180,7 @@ namespace OpenSim.Services.IntegrationService private void HandleEnableRepo(string module, string[] cmd) { - MainConsole.Instance.Output(m_PluginManager.EnableRepository()); + m_PluginManager.EnableRepository(cmd); return; } @@ -188,7 +192,7 @@ namespace OpenSim.Services.IntegrationService private void HandleListRepos(string module, string[] cmd) { - MainConsole.Instance.Output(m_PluginManager.ListRepositories()); + m_PluginManager.ListRepositories(); return; } diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index bbf0f6b486..2ff929dae9 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -26,8 +26,10 @@ */ using System; +using System.Collections; using Mono.Addins; using Mono.Addins.Setup; +using OpenSim.Framework; namespace OpenSim.Services.IntegrationService { @@ -35,14 +37,12 @@ namespace OpenSim.Services.IntegrationService public class PluginManager { protected AddinRegistry m_Registry; - protected SetupService m_Manager; + protected SetupService m_Service; public PluginManager(string registry_path) { - m_Registry = new AddinRegistry(".", registry_path); - m_Manager = new SetupService(m_Registry); - - + m_Registry = new AddinRegistry(registry_path); + m_Service = new SetupService(m_Registry); } public string Install() @@ -60,14 +60,28 @@ namespace OpenSim.Services.IntegrationService return "CheckInstall"; } - public string ListInstalled() + public void ListInstalledAddins() { - return "ListInstalled"; + ArrayList list = new ArrayList(); + list.AddRange(m_Registry.GetAddins()); + MainConsole.Instance.Output("Installed Plugins"); + foreach (Addin addin in list) + { + MainConsole.Instance.Output(" - " + addin.Name + " " + addin.Version); + } + + return; } - public string ListAvailable() + public void ListAvailable() { - return "ListAvailable"; + MainConsole.Instance.Output("Available Plugins"); + AddinRepositoryEntry[] addins = m_Service.Repositories.GetAvailableAddins (); + // foreach (PackageRepositoryEntry addin in addins) + foreach (AddinRepositoryEntry addin in addins) + { + MainConsole.Instance.OutputFormat("{0} - {1} ",addin.Addin.Name, addin.RepositoryName ); + } } public string ListUpdates() @@ -95,9 +109,9 @@ namespace OpenSim.Services.IntegrationService return "RemoveRepository"; } - public string EnableRepository() + public string EnableRepository(string[] args) { - return "EnableRepository"; + return "Test"; } public string DisableRepository() @@ -105,14 +119,35 @@ namespace OpenSim.Services.IntegrationService return DisableRepository(); } - public string ListRepositories() + public void ListRepositories() { - return "ListRepositories"; + AddinRepository[] reps = m_Service.Repositories.GetRepositories(); + Array.Sort (reps, (r1,r2) => r1.Title.CompareTo(r2.Title)); + if (reps.Length == 0) + { + MainConsole.Instance.Output("No repositories have been registered."); + return; + } + + int n = 0; + MainConsole.Instance.Output("Registered Repositories"); + + foreach (AddinRepository rep in reps) + { + string num = n.ToString (); + MainConsole.Instance.Output(num + ") "); + if (!rep.Enabled) + MainConsole.Instance.Output("(Disabled) "); + MainConsole.Instance.Output(rep.Title); + if (rep.Title != rep.Url) + MainConsole.Instance.Output(new string (' ', num.Length + 2) + rep.Url); + n++; + } } - public string UpdateRegistry() + public void UpdateRegistry() { - return "UpdateRegistry"; + m_Registry.Update(); } public string AddinInfo() From 90a22969836e5fc536ee4ac90bd5a6a7c3afbd9c Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 6 Apr 2012 19:22:34 -0400 Subject: [PATCH 16/87] Have some commands working Still rough, but making some progress. --- .../IntegrationService/IntegrationService.cs | 84 ++++++---- .../IntegrationServiceBase.cs | 4 +- .../IntegrationService/PluginManager.cs | 155 ++++++++++++++---- 3 files changed, 170 insertions(+), 73 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 8945d94749..4cce38f5f8 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -27,6 +27,7 @@ using System; using System.Collections; +using System.Collections.Generic; using System.Reflection; using OpenSim.Server.Base; using OpenSim.Services.Interfaces; @@ -61,142 +62,155 @@ namespace OpenSim.Services.IntegrationService { MainConsole.Instance.Commands.AddCommand("Integration", true, "install", "install \"plugin name\"", "Install plugin from repository", - HandleInstallPlugin); + HandleConsoleInstallPlugin); MainConsole.Instance.Commands.AddCommand("Integration", true, "uninstall", "uninstall \"plugin name\"", "Remove plugin from repository", - HandleUnInstallPlugin); + HandleConsoleUnInstallPlugin); MainConsole.Instance.Commands.AddCommand("Integration", true, "check installed", "check installed \"plugin name=\"","Check installed plugin", - HandleCheckInstalledPlugin); + HandleConsoleCheckInstalledPlugin); MainConsole.Instance.Commands.AddCommand("Integration", true, "list installed", "list installed \"plugin name=\"","List install plugins", - HandleListInstalledPlugin); + HandleConsoleListInstalledPlugin); MainConsole.Instance.Commands.AddCommand("Integration", true, "list available", "list available \"plugin name=\"","List available plugins", - HandleListAvailablePlugin); + HandleConsoleListAvailablePlugin); MainConsole.Instance.Commands.AddCommand("Integration", true, "list updates", "list updates","List availble updates", - HandleListUpdates); + HandleConsoleListUpdates); MainConsole.Instance.Commands.AddCommand("Integration", true, "update", "update \"plugin name=\"","Update the plugin", - HandleUpdatePlugin); + HandleConsoleUpdatePlugin); MainConsole.Instance.Commands.AddCommand("Integration", true, "add repo", "add repo \"url\"","Add repository", - HandleAddRepo); + HandleConsoleAddRepo); MainConsole.Instance.Commands.AddCommand("Integration", true, "get repo", "get repo \"url\"", "Sync with a registered repository", - HandleGetRepo); + HandleConsoleGetRepo); MainConsole.Instance.Commands.AddCommand("Integration", true, "remove repo", "remove repo \"[url | index]\"","Remove registered repository", - HandleRemoveRepo); + HandleConsoleRemoveRepo); MainConsole.Instance.Commands.AddCommand("Integration", true, "enable repo", "enable repo \"[url | index]\"","Enable registered repository", - HandleEnableRepo); + HandleConsoleEnableRepo); MainConsole.Instance.Commands.AddCommand("Integration", true, "disable repo", "disable repo \"[url | index]\"","Disable registered repository", - HandleDisableRepo); + HandleConsoleDisableRepo); MainConsole.Instance.Commands.AddCommand("Integration", true, "list repos", "list repos","List registered repositories", - HandleListRepos); + HandleConsoleListRepos); MainConsole.Instance.Commands.AddCommand("Integration", true, "show info", "show info \"plugin name\"","Show detailed information for plugin", - HandleShowAddinInfo); + HandleConsoleShowAddinInfo); } #region console handlers - private void HandleInstallPlugin(string module, string[] cmd) + private void HandleConsoleInstallPlugin(string module, string[] cmd) { - MainConsole.Instance.Output(m_PluginManager.Install()); + MainConsole.Instance.Output(m_PluginManager.InstallPlugin(cmd)); return; } - private void HandleUnInstallPlugin(string module, string[] cmd) + private void HandleConsoleUnInstallPlugin(string module, string[] cmd) { - MainConsole.Instance.Output(m_PluginManager.UnInstall()); + if (cmd.Length == 2) + { + m_PluginManager.UnInstall(cmd); + } return; } - private void HandleCheckInstalledPlugin(string module, string[] cmd) + private void HandleConsoleCheckInstalledPlugin(string module, string[] cmd) { MainConsole.Instance.Output(m_PluginManager.CheckInstalled()); return; } - private void HandleListInstalledPlugin(string module, string[] cmd) + private void HandleConsoleListInstalledPlugin(string module, string[] cmd) { m_PluginManager.ListInstalledAddins(); return; } - private void HandleListAvailablePlugin(string module, string[] cmd) + private void HandleConsoleListAvailablePlugin(string module, string[] cmd) { - m_PluginManager.ListAvailable(); + ArrayList list = m_PluginManager.ListAvailable(); + foreach (string entry in list) + MainConsole.Instance.Output(entry); + return; } - private void HandleListUpdates(string module, string[] cmd) + private void HandleConsoleListUpdates(string module, string[] cmd) { MainConsole.Instance.Output(m_PluginManager.ListUpdates()); return; } - private void HandleUpdatePlugin(string module, string[] cmd) + private void HandleConsoleUpdatePlugin(string module, string[] cmd) { MainConsole.Instance.Output(m_PluginManager.Update()); return; } - private void HandleAddRepo(string module, string[] cmd) + private void HandleConsoleAddRepo(string module, string[] cmd) { - MainConsole.Instance.Output(m_PluginManager.AddRepository()); + if ( cmd.Length == 3) + { + m_PluginManager.AddRepository(cmd); + } + return; } - private void HandleGetRepo(string module, string[] cmd) + private void HandleConsoleGetRepo(string module, string[] cmd) { MainConsole.Instance.Output(m_PluginManager.GetRepository()); return; } - private void HandleRemoveRepo(string module, string[] cmd) + private void HandleConsoleRemoveRepo(string module, string[] cmd) { - MainConsole.Instance.Output(m_PluginManager.RemoveRepository()); + MainConsole.Instance.Output(m_PluginManager.RemoveRepository(cmd)); return; } - private void HandleEnableRepo(string module, string[] cmd) + private void HandleConsoleEnableRepo(string module, string[] cmd) { m_PluginManager.EnableRepository(cmd); return; } - private void HandleDisableRepo(string module, string[] cmd) + private void HandleConsoleDisableRepo(string module, string[] cmd) { - MainConsole.Instance.Output(m_PluginManager.DisableRepository()); + m_PluginManager.DisableRepository(cmd); return; } - private void HandleListRepos(string module, string[] cmd) + private void HandleConsoleListRepos(string module, string[] cmd) { - m_PluginManager.ListRepositories(); + ArrayList list = m_PluginManager.ListRepositories(); + foreach (string entry in list) + MainConsole.Instance.Output(entry); + return; } - private void HandleShowAddinInfo(string module, string[] cmd) + private void HandleConsoleShowAddinInfo(string module, string[] cmd) { if ( cmd.Length < 2 ) { diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index c72a4e985f..950445d44d 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -77,8 +77,8 @@ namespace OpenSim.Services.IntegrationService // defaults to the ./bin directory string RegistryLocation = serverConfig.GetString("PluginRegistryLocation", "."); - - m_PluginManager = new PluginManager(RegistryLocation); + AddinRegistry registry = new AddinRegistry(RegistryLocation, "."); + m_PluginManager = new PluginManager(registry); // Deal with files only for now - will add url/environment later m_IntegrationConfigLoc = serverConfig.GetString("IntegrationConfig", String.Empty); diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index 2ff929dae9..83e088fc8b 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -26,33 +26,69 @@ */ using System; +using System.Text; using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; using Mono.Addins; using Mono.Addins.Setup; +using Mono.Addins.Description; using OpenSim.Framework; namespace OpenSim.Services.IntegrationService { // This will maintain the plugin repositories and plugins - public class PluginManager + public class PluginManager : SetupService { protected AddinRegistry m_Registry; - protected SetupService m_Service; +// protected SetupService m_Service; - public PluginManager(string registry_path) + internal PluginManager( AddinRegistry r): base (r) { - m_Registry = new AddinRegistry(registry_path); - m_Service = new SetupService(m_Registry); + m_Registry = r; } - public string Install() +// public PluginManager(string registry_path) +// { +// m_Registry = new AddinRegistry(registry_path); +// m_Service = new SetupService(m_Registry); +// } +// + public string InstallPlugin(string[] args) { - return "Install"; + PackageCollection pack = new PackageCollection(); + PackageCollection toUninstall; + DependencyCollection unresolved; + + IProgressStatus ps = new ConsoleProgressStatus(true); + + string name = Addin.GetIdName(args[1]); + string version = Addin.GetIdVersion(args[1]); + + AddinRepositoryEntry[] aentry = Repositories.GetAvailableAddin(name, version); + + foreach (AddinRepositoryEntry ae in aentry) + { + Package p = Package.FromRepository(ae); + pack.Add(p); + } + + + ResolveDependencies(ps, pack, out toUninstall, out unresolved); + + + if(Install(ps, pack) == true) + return "Install"; + else + return "Bomb"; } - public string UnInstall() + public void UnInstall(string[] args) { - return "UnInstall"; + IProgressStatus ps = new ConsoleProgressStatus(true); + Addin addin = m_Registry.GetAddin(args[1]); + Uninstall(ps, addin.Id); + return; } public string CheckInstalled() @@ -67,21 +103,24 @@ namespace OpenSim.Services.IntegrationService MainConsole.Instance.Output("Installed Plugins"); foreach (Addin addin in list) { - MainConsole.Instance.Output(" - " + addin.Name + " " + addin.Version); + MainConsole.Instance.OutputFormat("* {0} rev. {1}", addin.Name, addin.Version); } return; } - public void ListAvailable() + public ArrayList ListAvailable() { - MainConsole.Instance.Output("Available Plugins"); - AddinRepositoryEntry[] addins = m_Service.Repositories.GetAvailableAddins (); - // foreach (PackageRepositoryEntry addin in addins) + AddinRepositoryEntry[] addins = Repositories.GetAvailableAddins (); + ArrayList list = new ArrayList(); + foreach (AddinRepositoryEntry addin in addins) { - MainConsole.Instance.OutputFormat("{0} - {1} ",addin.Addin.Name, addin.RepositoryName ); + StringBuilder sb = new StringBuilder(); + sb.Append(String.Format("{0} rev. {1}, repo {2}", addin.Addin.Id, addin.Addin.Version, addin.RepositoryUrl)); + list.Add(sb.ToString()); } + return list; } public string ListUpdates() @@ -94,8 +133,9 @@ namespace OpenSim.Services.IntegrationService return "Update"; } - public string AddRepository() + public string AddRepository(string[] args) { + Repositories.RegisterRepository(null, args[2].ToString(), true); return "AddRepository"; } @@ -104,24 +144,14 @@ namespace OpenSim.Services.IntegrationService return "GetRepository"; } - public string RemoveRepository() + public string RemoveRepository(string[] args) { return "RemoveRepository"; } - public string EnableRepository(string[] args) + public void EnableRepository(string[] args) { - return "Test"; - } - - public string DisableRepository() - { - return DisableRepository(); - } - - public void ListRepositories() - { - AddinRepository[] reps = m_Service.Repositories.GetRepositories(); + AddinRepository[] reps = Repositories.GetRepositories(); Array.Sort (reps, (r1,r2) => r1.Title.CompareTo(r2.Title)); if (reps.Length == 0) { @@ -129,20 +159,73 @@ namespace OpenSim.Services.IntegrationService return; } - int n = 0; - MainConsole.Instance.Output("Registered Repositories"); + int n = Convert.ToInt16(args[2]); + if (n > (reps.Length -1)) + { + MainConsole.Instance.Output("Selection out of range"); + return; + } + AddinRepository rep = reps[n]; + //return "TEST"; + Repositories.SetRepositoryEnabled(rep.Url, true); + return; + //return DisableRepository(); + } + + public void DisableRepository(string[] args) + { + AddinRepository[] reps = Repositories.GetRepositories(); + Array.Sort (reps, (r1,r2) => r1.Title.CompareTo(r2.Title)); + if (reps.Length == 0) + { + MainConsole.Instance.Output("No repositories have been registered."); + return; + } + + int n = Convert.ToInt16(args[2]); + if (n > (reps.Length -1)) + { + MainConsole.Instance.Output("Selection out of range"); + return; + } + + AddinRepository rep = reps[n]; + //return "TEST"; + Repositories.SetRepositoryEnabled(rep.Url, false); + return; + //return DisableRepository(); + } + + public ArrayList ListRepositories() + { + AddinRepository[] reps = Repositories.GetRepositories(); + Array.Sort (reps, (r1,r2) => r1.Title.CompareTo(r2.Title)); + if (reps.Length == 0) + { + MainConsole.Instance.Output("No repositories have been registered."); + return null; + } + + ArrayList list = new ArrayList(); + + int n = 0; foreach (AddinRepository rep in reps) { - string num = n.ToString (); - MainConsole.Instance.Output(num + ") "); + StringBuilder sb = new StringBuilder(); + + sb.AppendFormat("{0}) ", n.ToString()); if (!rep.Enabled) - MainConsole.Instance.Output("(Disabled) "); - MainConsole.Instance.Output(rep.Title); + sb.AppendFormat("(Disabled) "); + sb.AppendFormat("{0}", rep.Title); if (rep.Title != rep.Url) - MainConsole.Instance.Output(new string (' ', num.Length + 2) + rep.Url); + sb.AppendFormat("{0}", rep.Url); + + list.Add(sb.ToString()); n++; } + + return list; } public void UpdateRegistry() From b8eafc6280a37dd67a4a2b20552a38d8126e30ae Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 6 Apr 2012 22:22:55 -0400 Subject: [PATCH 17/87] More work on commands Install is working now --- OpenSim/Services/IntegrationService/PluginManager.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index 83e088fc8b..56875aa009 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -46,6 +46,7 @@ namespace OpenSim.Services.IntegrationService internal PluginManager( AddinRegistry r): base (r) { m_Registry = r; + m_Registry.Update(); } // public PluginManager(string registry_path) @@ -62,6 +63,8 @@ namespace OpenSim.Services.IntegrationService IProgressStatus ps = new ConsoleProgressStatus(true); + m_Registry.Update(ps); + string name = Addin.GetIdName(args[1]); string version = Addin.GetIdVersion(args[1]); @@ -78,7 +81,10 @@ namespace OpenSim.Services.IntegrationService if(Install(ps, pack) == true) + { + m_Registry.Update(ps); return "Install"; + } else return "Bomb"; } @@ -88,6 +94,7 @@ namespace OpenSim.Services.IntegrationService IProgressStatus ps = new ConsoleProgressStatus(true); Addin addin = m_Registry.GetAddin(args[1]); Uninstall(ps, addin.Id); + m_Registry.Rebuild(null); return; } From 7a686ef124669501da848baa1671a22de36f7bd7 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sat, 7 Apr 2012 14:52:02 -0400 Subject: [PATCH 18/87] Some work on web interface Adding some web handlers to manage plugins. Returns json for integration into external processing. --- .../Integration/IntegrationServerHandler.cs | 20 ++++++++++++++++--- .../IntegrationService/IntegrationService.cs | 16 +++++++++++++-- .../IntegrationService/PluginManager.cs | 14 ------------- .../Interfaces/IIntegrationService.cs | 2 ++ 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs index 812d2ce65e..6e514928c3 100644 --- a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs +++ b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs @@ -78,10 +78,11 @@ namespace OpenSim.Server.Handlers.Integration switch (command) { // agent - case "foo": - break; + case "list_plugins": + return HandleListPlugins(request); - case "bar": + case "plugin_info": + return HandlePluginInfo(request); break; default: @@ -97,7 +98,20 @@ namespace OpenSim.Server.Handlers.Integration return FailureResult(); } + #region web handlers + private byte[] HandleListPlugins(OSDMap request) + { + return m_IntegrationService.HandleWebListPlugins(request); + } + + private byte[] HandlePluginInfo(OSDMap request) + { + return m_IntegrationService.HandleWebPluginInfo(request); + } + #endregion web handlers + #region utility + // These are in IntegrationUtils.cs for plugins private byte[] FailureResult() { return FailureResult(String.Empty); diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 4cce38f5f8..42f88ce318 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -35,10 +35,12 @@ using OpenSim.Framework; using OpenSim.Framework.Servers.HttpServer; using GridRegion = OpenSim.Services.Interfaces.GridRegion; using OpenMetaverse; +using OpenMetaverse.StructuredData; using Nini.Config; using log4net; using Mono.Addins; +using Ux = OpenSim.Services.IntegrationService.IUtils; namespace OpenSim.Services.IntegrationService { @@ -115,7 +117,6 @@ namespace OpenSim.Services.IntegrationService MainConsole.Instance.Commands.AddCommand("Integration", true, "show info", "show info \"plugin name\"","Show detailed information for plugin", HandleConsoleShowAddinInfo); - } #region console handlers @@ -173,7 +174,6 @@ namespace OpenSim.Services.IntegrationService { m_PluginManager.AddRepository(cmd); } - return; } @@ -219,5 +219,17 @@ namespace OpenSim.Services.IntegrationService } } #endregion + + #region web handlers + public byte[] HandleWebListPlugins(OSDMap request) + { + return Ux.FailureResult("Not Implemented"); + } + + public byte[] HandleWebPluginInfo(OSDMap request) + { + return Ux.FailureResult("Not Implemented"); + } + #endregion } } \ No newline at end of file diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index 56875aa009..be6533ba10 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -49,12 +49,6 @@ namespace OpenSim.Services.IntegrationService m_Registry.Update(); } -// public PluginManager(string registry_path) -// { -// m_Registry = new AddinRegistry(registry_path); -// m_Service = new SetupService(m_Registry); -// } -// public string InstallPlugin(string[] args) { PackageCollection pack = new PackageCollection(); @@ -76,10 +70,8 @@ namespace OpenSim.Services.IntegrationService pack.Add(p); } - ResolveDependencies(ps, pack, out toUninstall, out unresolved); - if(Install(ps, pack) == true) { m_Registry.Update(ps); @@ -112,7 +104,6 @@ namespace OpenSim.Services.IntegrationService { MainConsole.Instance.OutputFormat("* {0} rev. {1}", addin.Name, addin.Version); } - return; } @@ -174,10 +165,8 @@ namespace OpenSim.Services.IntegrationService } AddinRepository rep = reps[n]; - //return "TEST"; Repositories.SetRepositoryEnabled(rep.Url, true); return; - //return DisableRepository(); } public void DisableRepository(string[] args) @@ -198,10 +187,8 @@ namespace OpenSim.Services.IntegrationService } AddinRepository rep = reps[n]; - //return "TEST"; Repositories.SetRepositoryEnabled(rep.Url, false); return; - //return DisableRepository(); } public ArrayList ListRepositories() @@ -231,7 +218,6 @@ namespace OpenSim.Services.IntegrationService list.Add(sb.ToString()); n++; } - return list; } diff --git a/OpenSim/Services/Interfaces/IIntegrationService.cs b/OpenSim/Services/Interfaces/IIntegrationService.cs index 0e080b941b..6dbaf52eb0 100644 --- a/OpenSim/Services/Interfaces/IIntegrationService.cs +++ b/OpenSim/Services/Interfaces/IIntegrationService.cs @@ -36,6 +36,8 @@ namespace OpenSim.Services.Interfaces { public interface IIntegrationService { + byte[] HandleWebListPlugins(OSDMap request); + byte[] HandleWebPluginInfo(OSDMap request); } } From 0591a85787562ace4bf1c720d56b25dfc353325f Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sat, 7 Apr 2012 23:39:15 -0400 Subject: [PATCH 19/87] More work on commands --- .../IntegrationService/IntegrationService.cs | 13 ++-- .../IntegrationService/PluginManager.cs | 69 ++++++++++++++++--- 2 files changed, 66 insertions(+), 16 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 42f88ce318..fe0b754a06 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -158,7 +158,7 @@ namespace OpenSim.Services.IntegrationService private void HandleConsoleListUpdates(string module, string[] cmd) { - MainConsole.Instance.Output(m_PluginManager.ListUpdates()); + m_PluginManager.ListUpdates(); return; } @@ -179,16 +179,18 @@ namespace OpenSim.Services.IntegrationService private void HandleConsoleGetRepo(string module, string[] cmd) { - MainConsole.Instance.Output(m_PluginManager.GetRepository()); + m_PluginManager.GetRepository(); return; } private void HandleConsoleRemoveRepo(string module, string[] cmd) { - MainConsole.Instance.Output(m_PluginManager.RemoveRepository(cmd)); + if (cmd.Length == 3) + m_PluginManager.RemoveRepository(cmd); return; } + // Enable repo private void HandleConsoleEnableRepo(string module, string[] cmd) { m_PluginManager.EnableRepository(cmd); @@ -201,6 +203,7 @@ namespace OpenSim.Services.IntegrationService return; } + // List repositories private void HandleConsoleListRepos(string module, string[] cmd) { ArrayList list = m_PluginManager.ListRepositories(); @@ -212,9 +215,9 @@ namespace OpenSim.Services.IntegrationService private void HandleConsoleShowAddinInfo(string module, string[] cmd) { - if ( cmd.Length < 2 ) + if ( cmd.Length >= 3 ) { - MainConsole.Instance.Output(m_PluginManager.AddinInfo()); + m_PluginManager.AddinInfo(cmd); return; } } diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index be6533ba10..8f260a741d 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -81,6 +81,7 @@ namespace OpenSim.Services.IntegrationService return "Bomb"; } + // Remove plugin public void UnInstall(string[] args) { IProgressStatus ps = new ConsoleProgressStatus(true); @@ -95,6 +96,7 @@ namespace OpenSim.Services.IntegrationService return "CheckInstall"; } + // List instaled addins public void ListInstalledAddins() { ArrayList list = new ArrayList(); @@ -102,11 +104,13 @@ namespace OpenSim.Services.IntegrationService MainConsole.Instance.Output("Installed Plugins"); foreach (Addin addin in list) { + if(addin.Description.Category == "IntegrationPlugin") MainConsole.Instance.OutputFormat("* {0} rev. {1}", addin.Name, addin.Version); } return; } + // List compatible plugins in registered repositories public ArrayList ListAvailable() { AddinRepositoryEntry[] addins = Repositories.GetAvailableAddins (); @@ -121,32 +125,66 @@ namespace OpenSim.Services.IntegrationService return list; } - public string ListUpdates() + // List available updates + public void ListUpdates() { - return "ListUpdates"; + IProgressStatus ps = new ConsoleProgressStatus(true); + Console.WriteLine ("Looking for updates..."); + Repositories.UpdateAllRepositories (ps); + Console.WriteLine ("Available add-in updates:"); + bool found = false; + AddinRepositoryEntry[] entries = Repositories.GetAvailableUpdates (); + + foreach (AddinRepositoryEntry entry in entries) + { + Console.WriteLine(String.Format("{0}",entry.Addin.Id)); + } } + // Sync to repositories public string Update() { + IProgressStatus ps = new ConsoleProgressStatus(true); + Repositories.UpdateAllRepositories (ps); return "Update"; } + // Register a repository public string AddRepository(string[] args) { Repositories.RegisterRepository(null, args[2].ToString(), true); return "AddRepository"; } - public string GetRepository() + public void GetRepository() { - return "GetRepository"; + Repositories.UpdateAllRepositories (new ConsoleProgressStatus (true)); } - public string RemoveRepository(string[] args) + // Remove a repository from the list + public void RemoveRepository(string[] args) { - return "RemoveRepository"; + AddinRepository[] reps = Repositories.GetRepositories(); + Array.Sort (reps, (r1,r2) => r1.Title.CompareTo(r2.Title)); + if (reps.Length == 0) + { + MainConsole.Instance.Output("No repositories have been registered."); + return; + } + + int n = Convert.ToInt16(args[2]); + if (n > (reps.Length -1)) + { + MainConsole.Instance.Output("Selection out of range"); + return; + } + + AddinRepository rep = reps[n]; + Repositories.RemoveRepository (rep.Url); + return; } + // Enable repository public void EnableRepository(string[] args) { AddinRepository[] reps = Repositories.GetRepositories(); @@ -169,6 +207,7 @@ namespace OpenSim.Services.IntegrationService return; } + // Disable a repository public void DisableRepository(string[] args) { AddinRepository[] reps = Repositories.GetRepositories(); @@ -191,6 +230,7 @@ namespace OpenSim.Services.IntegrationService return; } + // List registered repositories public ArrayList ListRepositories() { AddinRepository[] reps = Repositories.GetRepositories(); @@ -208,12 +248,12 @@ namespace OpenSim.Services.IntegrationService { StringBuilder sb = new StringBuilder(); - sb.AppendFormat("{0}) ", n.ToString()); + sb.AppendFormat("{0})", n.ToString()); if (!rep.Enabled) - sb.AppendFormat("(Disabled) "); - sb.AppendFormat("{0}", rep.Title); + sb.AppendFormat(" (Disabled)"); + sb.AppendFormat(" {0}", rep.Title); if (rep.Title != rep.Url) - sb.AppendFormat("{0}", rep.Url); + sb.AppendFormat(" {0}", rep.Url); list.Add(sb.ToString()); n++; @@ -226,8 +266,15 @@ namespace OpenSim.Services.IntegrationService m_Registry.Update(); } - public string AddinInfo() + public string AddinInfo(string[] args) { + + string id = args[2]; + Addin addin = Registry.GetAddin(id, true); + MainConsole.Instance.OutputFormat("Name: {0}\nURL: {1}\n{2}", + addin.Name, addin.Description.Url, + addin.Description.FileName); + return "AddinInfo"; } } From 952ad59c1f34709725e37ef6b449d321a2ccc0b0 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 8 Apr 2012 17:38:44 -0400 Subject: [PATCH 20/87] Work on commands --- .../IntegrationService/IntegrationService.cs | 24 +++++++++ .../IntegrationServiceBase.cs | 15 ++++-- .../IntegrationService/PluginManager.cs | 51 +++++++++++++++---- 3 files changed, 75 insertions(+), 15 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index fe0b754a06..700530471b 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -117,6 +117,14 @@ namespace OpenSim.Services.IntegrationService MainConsole.Instance.Commands.AddCommand("Integration", true, "show info", "show info \"plugin name\"","Show detailed information for plugin", HandleConsoleShowAddinInfo); + + MainConsole.Instance.Commands.AddCommand("Integration", true, + "disable plugin", "disable plugin \"plugin name\"","disable the plugin", + HandleConsoleDisablePlugin); + + MainConsole.Instance.Commands.AddCommand("Integration", true, + "enable plugin", "enable plugin \"plugin name\"","enable the plugin", + HandleConsoleEnablePlugin); } #region console handlers @@ -197,6 +205,7 @@ namespace OpenSim.Services.IntegrationService return; } + // Disable repository private void HandleConsoleDisableRepo(string module, string[] cmd) { m_PluginManager.DisableRepository(cmd); @@ -213,6 +222,7 @@ namespace OpenSim.Services.IntegrationService return; } + // Show description information private void HandleConsoleShowAddinInfo(string module, string[] cmd) { if ( cmd.Length >= 3 ) @@ -221,6 +231,20 @@ namespace OpenSim.Services.IntegrationService return; } } + + // Disable plugin + private void HandleConsoleDisablePlugin(string module, string[] cmd) + { + m_PluginManager.DisablePlugin(cmd); + return; + } + + // Enable plugin + private void HandleConsoleEnablePlugin(string module, string[] cmd) + { + m_PluginManager.EnablePlugin(cmd); + return; + } #endregion #region web handlers diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 950445d44d..6d6c777229 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -87,7 +87,7 @@ namespace OpenSim.Services.IntegrationService AddinManager.AddinLoaded += on_addinloaded_; AddinManager.AddinLoadError += on_addinloaderror_; - + AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; m_Server = server; m_IntegrationServerConfig = config.Configs["IntegrationService"]; @@ -107,6 +107,9 @@ namespace OpenSim.Services.IntegrationService string ConfigPath = String.Format("{0}/(1)", m_IntegrationConfigLoc,cmd.ConfigName); IConfigSource PlugConfig = Ux.GetConfigSource(m_IntegrationConfigLoc, cmd.ConfigName); + // We maintain a configuration per-plugin to enhance modularity + // If ConfigSource is null, we will get the default from the repo + // and write it to our directory // Fetch the starter ini if (PlugConfig == null) { @@ -137,9 +140,8 @@ namespace OpenSim.Services.IntegrationService PlugConfig = source; } - // We maintain a configuration per-plugin to enhance modularity - // If ConfigSource is null, we will get the default from the repo - // and write it to our directory + // Initialise and bring up the plugin + // Need to take down the plugin when disabling it. cmd.Init (PlugConfig); server.AddStreamHandler((IRequestHandler)cmd); m_log.InfoFormat("[INTEGRATION SERVICE]: Loading IntegrationService plugin {0}", cmd.Name); @@ -151,6 +153,11 @@ namespace OpenSim.Services.IntegrationService return new IniConfigSource(); } + void HandleAddinManagerAddinUnloaded (object sender, AddinEventArgs args) + { + MainConsole.Instance.Output("Plugin Unloaded"); + } + private void on_addinloaderror_(object sender, AddinErrorEventArgs args) { if (args.Exception == null) diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index 8f260a741d..6ca355f8a8 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -99,13 +99,17 @@ namespace OpenSim.Services.IntegrationService // List instaled addins public void ListInstalledAddins() { + int count = 0; ArrayList list = new ArrayList(); list.AddRange(m_Registry.GetAddins()); MainConsole.Instance.Output("Installed Plugins"); foreach (Addin addin in list) { if(addin.Description.Category == "IntegrationPlugin") - MainConsole.Instance.OutputFormat("* {0} rev. {1}", addin.Name, addin.Version); + MainConsole.Instance.OutputFormat("{0}) {1} {2} rev. {3}", count.ToString(), + addin.Enabled == false ? "[X]" : "[ ]", + addin.Name, addin.Version ); + count++; } return; } @@ -246,16 +250,7 @@ namespace OpenSim.Services.IntegrationService int n = 0; foreach (AddinRepository rep in reps) { - StringBuilder sb = new StringBuilder(); - - sb.AppendFormat("{0})", n.ToString()); - if (!rep.Enabled) - sb.AppendFormat(" (Disabled)"); - sb.AppendFormat(" {0}", rep.Title); - if (rep.Title != rep.Url) - sb.AppendFormat(" {0}", rep.Url); - - list.Add(sb.ToString()); + list.Add(String.Format("{0}) {1} {2} {3}",n.ToString(), rep.Enabled == true ? "[ ]" : "[X]", rep.Name, rep.Url)); n++; } return list; @@ -277,5 +272,39 @@ namespace OpenSim.Services.IntegrationService return "AddinInfo"; } + + // Disable a plugin + public void DisablePlugin(string[] args) + { + +// AddinRepository[] reps = Repositories.GetRepositories(); +// Array.Sort (reps, (r1,r2) => r1.Title.CompareTo(r2.Title)); +// if (reps.Length == 0) +// { +// MainConsole.Instance.Output("No repositories have been registered."); +// return; +// } +// +// int n = Convert.ToInt16(args[2]); +// if (n > (reps.Length -1)) +// { +// MainConsole.Instance.Output("Selection out of range"); +// return; +// } + + Addin addin = m_Registry.GetAddin(args[2]); + AddinManager.Registry.DisableAddin(addin.Id); + addin.Enabled = false; + return; + } + + // Enable plugin + public void EnablePlugin(string[] args) + { + Addin addin = m_Registry.GetAddin(args[2]); + AddinManager.Registry.EnableAddin(addin.Id); + addin.Enabled = true; + return; + } } } \ No newline at end of file From 74776c4ee0266fc37056be4d906767b52df700c9 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 8 Apr 2012 20:09:54 -0400 Subject: [PATCH 21/87] More command work Start working toward using list entry numbers to select instead of the plugin id --- .../IntegrationService/PluginManager.cs | 55 ++++++++++++++++--- 1 file changed, 47 insertions(+), 8 deletions(-) diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index 6ca355f8a8..5cccebd397 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -99,13 +99,13 @@ namespace OpenSim.Services.IntegrationService // List instaled addins public void ListInstalledAddins() { - int count = 0; - ArrayList list = new ArrayList(); - list.AddRange(m_Registry.GetAddins()); + Addin[] addins = GetSortedAddinList("IntegrationPlugin"); + MainConsole.Instance.Output("Installed Plugins"); - foreach (Addin addin in list) + + int count = 0; + foreach (Addin addin in addins) { - if(addin.Description.Category == "IntegrationPlugin") MainConsole.Instance.OutputFormat("{0}) {1} {2} rev. {3}", count.ToString(), addin.Enabled == false ? "[X]" : "[ ]", addin.Name, addin.Version ); @@ -292,7 +292,17 @@ namespace OpenSim.Services.IntegrationService // return; // } - Addin addin = m_Registry.GetAddin(args[2]); + Addin[] addins = GetSortedAddinList("IntegrationPlugin"); + + int n = Convert.ToInt16(args[2]); + if (n > (addins.Length -1)) + { + MainConsole.Instance.Output("Selection out of range"); + return; + } + + Addin addin = addins[n]; + // Addin addin = m_Registry.GetAddin(args[2]); AddinManager.Registry.DisableAddin(addin.Id); addin.Enabled = false; return; @@ -301,10 +311,39 @@ namespace OpenSim.Services.IntegrationService // Enable plugin public void EnablePlugin(string[] args) { - Addin addin = m_Registry.GetAddin(args[2]); - AddinManager.Registry.EnableAddin(addin.Id); + Addin[] addins = GetSortedAddinList("IntegrationPlugin"); + + int n = Convert.ToInt16(args[2]); + if (n > (addins.Length -1)) + { + MainConsole.Instance.Output("Selection out of range"); + return; + } + + Addin addin = addins[n]; + // Addin addin = m_Registry.GetAddin(args[2]); addin.Enabled = true; return; } + + #region Util + private Addin[] GetSortedAddinList(string category) + { + ArrayList list = new ArrayList(); + list.AddRange(m_Registry.GetAddins()); + ArrayList xlist = new ArrayList(); + + foreach (Addin addin in list) + { + if (addin.Description.Category == category) + xlist.Add(addin); + } + + Addin[] addins = xlist.ToArray(typeof(Addin)) as Addin[]; + Array.Sort(addins,(r1,r2) => r1.Id.CompareTo(r2.Id)); + + return addins; + } + #endregion Util } } \ No newline at end of file From fb18476032daed0b2b11f831ca6cfd59787051c7 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 8 Apr 2012 20:25:28 -0400 Subject: [PATCH 22/87] More work on comands Getting this framed up. Will make generic returns so as to interface with external web service to manage plugins. --- .../IntegrationService/PluginManager.cs | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index 5cccebd397..c226fa77ea 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -41,7 +41,6 @@ namespace OpenSim.Services.IntegrationService public class PluginManager : SetupService { protected AddinRegistry m_Registry; -// protected SetupService m_Service; internal PluginManager( AddinRegistry r): base (r) { @@ -276,22 +275,6 @@ namespace OpenSim.Services.IntegrationService // Disable a plugin public void DisablePlugin(string[] args) { - -// AddinRepository[] reps = Repositories.GetRepositories(); -// Array.Sort (reps, (r1,r2) => r1.Title.CompareTo(r2.Title)); -// if (reps.Length == 0) -// { -// MainConsole.Instance.Output("No repositories have been registered."); -// return; -// } -// -// int n = Convert.ToInt16(args[2]); -// if (n > (reps.Length -1)) -// { -// MainConsole.Instance.Output("Selection out of range"); -// return; -// } - Addin[] addins = GetSortedAddinList("IntegrationPlugin"); int n = Convert.ToInt16(args[2]); @@ -302,7 +285,6 @@ namespace OpenSim.Services.IntegrationService } Addin addin = addins[n]; - // Addin addin = m_Registry.GetAddin(args[2]); AddinManager.Registry.DisableAddin(addin.Id); addin.Enabled = false; return; @@ -321,7 +303,6 @@ namespace OpenSim.Services.IntegrationService } Addin addin = addins[n]; - // Addin addin = m_Registry.GetAddin(args[2]); addin.Enabled = true; return; } From 35fa8b454dab41fd54f846a3e58b79c13dd11fce Mon Sep 17 00:00:00 2001 From: BlueWall Date: Mon, 9 Apr 2012 17:53:55 -0400 Subject: [PATCH 23/87] Working on run-time init Working on build-up and tear-down for loading/unloading pluggins --- .../IntegrationServiceBase.cs | 54 +++++++++++++++++-- .../IntegrationService/PluginManager.cs | 30 ++++++++++- 2 files changed, 77 insertions(+), 7 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 6d6c777229..55d8c5446c 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -52,19 +52,28 @@ namespace OpenSim.Services.IntegrationService string DefaultConfig { get; } } - public class IntegrationServiceBase : ServiceBase + // Hide the nasty stuff in here, let the IntegrationService be clean for + // our command and request handlers + public class IntegrationServiceBase : ServiceBase { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private string m_ConfigName = "IntegrationService"; - protected IPresenceService m_PresenceService; - protected IGridService m_GridService; + // protected IPresenceService m_PresenceService; + // protected IGridService m_GridService; protected IHttpServer m_Server; + protected string m_IntegrationConfig; protected PluginManager m_PluginManager; - IConfig m_IntegrationServerConfig; - string m_IntegrationConfigLoc; + AddinManager am; + + // Our individual pluggin configs + protected IConfig m_IntegrationServerConfig; + protected string m_IntegrationConfigLoc; + + // Our server config + IConfigSource m_ConfigSource; public IntegrationServiceBase(IConfigSource config, IHttpServer server) : base(config) @@ -77,6 +86,7 @@ namespace OpenSim.Services.IntegrationService // defaults to the ./bin directory string RegistryLocation = serverConfig.GetString("PluginRegistryLocation", "."); + AddinRegistry registry = new AddinRegistry(RegistryLocation, "."); m_PluginManager = new PluginManager(registry); @@ -88,6 +98,7 @@ namespace OpenSim.Services.IntegrationService AddinManager.AddinLoaded += on_addinloaded_; AddinManager.AddinLoadError += on_addinloaderror_; AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; + AddinManager.AddinEngine.ExtensionChanged += HandleAddinManagerAddinEngineExtensionChanged; m_Server = server; m_IntegrationServerConfig = config.Configs["IntegrationService"]; @@ -102,6 +113,10 @@ namespace OpenSim.Services.IntegrationService AddinManager.Registry.Update (); suppress_console_output_(false); + + AddinManager.AddExtensionNodeHandler ("/OpenSim/IntegrationService", OnExtensionChanged); + + foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) { string ConfigPath = String.Format("{0}/(1)", m_IntegrationConfigLoc,cmd.ConfigName); @@ -148,6 +163,11 @@ namespace OpenSim.Services.IntegrationService } } + void HandleAddinManagerAddinEngineExtensionChanged (object sender, ExtensionEventArgs args) + { + MainConsole.Instance.Output("Plugin Extension Change"); + } + private IConfigSource GetConfig(string configName) { return new IniConfigSource(); @@ -169,6 +189,30 @@ namespace OpenSim.Services.IntegrationService + args.Exception.StackTrace); } + // This is out init + // We can do build-up and tear-down of our plugin + void OnExtensionChanged (object s, ExtensionNodeEventArgs args) + { + IntegrationPlugin ip = (IntegrationPlugin) args.ExtensionObject; + + m_log.Info ("[INTEGRATION SERVICE]: Plugin Change"); + + switch (args.Change) + { + // Build up + case ExtensionChange.Add: + + m_log.InfoFormat("[INTEGRATION SERVICE]: Plugin Added {0}", ip.Name); + return; + + // Tear down + case ExtensionChange.Remove: + + m_log.InfoFormat("[INTEGRATION SERVICE]: Plugin Remove {0}", ip.Name); + return; + } + } + private void on_addinloaded_(object sender, AddinEventArgs args) { m_log.Info ("[INTEGRATION SERVICE]: Plugin Loaded: " + args.AddinId); diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index c226fa77ea..ecfee9842f 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -27,6 +27,7 @@ using System; using System.Text; +using System.Linq; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -260,11 +261,19 @@ namespace OpenSim.Services.IntegrationService m_Registry.Update(); } + // Show plugin info public string AddinInfo(string[] args) { + Addin[] addins = GetSortedAddinList("IntegrationPlugin"); - string id = args[2]; - Addin addin = Registry.GetAddin(id, true); + int n = Convert.ToInt16(args[2]); + if (n > (addins.Length -1)) + { + MainConsole.Instance.Output("Selection out of range"); + return "XXX"; + } + + Addin addin = addins[n]; MainConsole.Instance.OutputFormat("Name: {0}\nURL: {1}\n{2}", addin.Name, addin.Description.Url, addin.Description.FileName); @@ -304,16 +313,33 @@ namespace OpenSim.Services.IntegrationService Addin addin = addins[n]; addin.Enabled = true; + AddinManager.Registry.EnableAddin(addin.Id); + AddinManager.Registry.Update(); + AddinManager.AddinEngine.LoadAddin(null, addin.Id); return; } #region Util + private void Testing() + { + Addin[] list = Registry.GetAddins(); + + var addins = list.Where( a => a.Description.Category == "IntegrationPlugin"); + + foreach (Addin addin in addins) + { + MainConsole.Instance.OutputFormat("Addin {0}", addin.Name); + } + } + private Addin[] GetSortedAddinList(string category) { ArrayList list = new ArrayList(); list.AddRange(m_Registry.GetAddins()); ArrayList xlist = new ArrayList(); + + foreach (Addin addin in list) { if (addin.Description.Category == category) From 0838c5288f23eee2a8b443fa29e8757cc5784468 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Mon, 9 Apr 2012 21:59:21 -0400 Subject: [PATCH 24/87] Add method for plugin teardown/unloading --- .../IntegrationServiceBase.cs | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 55d8c5446c..e3915da654 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -39,7 +39,7 @@ using log4net; using Ux = OpenSim.Services.IntegrationService.IUtils; -[assembly:AddinRoot ("IntegrationService", "1.0")] +[assembly:AddinRoot ("IntegrationService", "1.1")] namespace OpenSim.Services.IntegrationService { @@ -47,6 +47,7 @@ namespace OpenSim.Services.IntegrationService public interface IntegrationPlugin { void Init(IConfigSource PluginConfig); + void Unload(); string Name{ get; } string ConfigName { get; } string DefaultConfig { get; } @@ -95,10 +96,6 @@ namespace OpenSim.Services.IntegrationService if(String.IsNullOrEmpty(m_IntegrationConfigLoc)) m_log.Error("[INTEGRATION SERVICE]: No IntegrationConfig defined in the Robust.ini"); - AddinManager.AddinLoaded += on_addinloaded_; - AddinManager.AddinLoadError += on_addinloaderror_; - AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; - AddinManager.AddinEngine.ExtensionChanged += HandleAddinManagerAddinEngineExtensionChanged; m_Server = server; m_IntegrationServerConfig = config.Configs["IntegrationService"]; @@ -108,12 +105,23 @@ namespace OpenSim.Services.IntegrationService return; } - suppress_console_output_(true); + AddinManager.Initialize (RegistryLocation); + + suppress_console_output_(true); + + + AddinManager.AddinLoaded += on_addinloaded_; + AddinManager.AddinLoadError += on_addinloaderror_; + AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; + AddinManager.AddinEngine.ExtensionChanged += HandleAddinManagerAddinEngineExtensionChanged; + AddinManager.Registry.Update (); + suppress_console_output_(false); + AddinManager.AddExtensionNodeHandler ("/OpenSim/IntegrationService", OnExtensionChanged); From a798b98f856ca33926b69352fc6035ffdc0faca3 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 10 Apr 2012 00:20:55 -0400 Subject: [PATCH 25/87] More work on dynamic loading/unloading --- .../IntegrationServiceBase.cs | 142 +++++++++++------- .../IntegrationService/PluginManager.cs | 11 +- 2 files changed, 99 insertions(+), 54 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index e3915da654..7216db25d8 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -46,7 +46,7 @@ namespace OpenSim.Services.IntegrationService [TypeExtensionPoint (Path="/OpenSim/IntegrationService", Name="IntegrationService")] public interface IntegrationPlugin { - void Init(IConfigSource PluginConfig); + void Init(IConfigSource PluginConfig, IHttpServer server); void Unload(); string Name{ get; } string ConfigName { get; } @@ -69,18 +69,18 @@ namespace OpenSim.Services.IntegrationService protected PluginManager m_PluginManager; AddinManager am; - // Our individual pluggin configs + // protected IConfig m_IntegrationServerConfig; protected string m_IntegrationConfigLoc; - - // Our server config IConfigSource m_ConfigSource; public IntegrationServiceBase(IConfigSource config, IHttpServer server) : base(config) { + m_ConfigSource = config; + m_Server = server; - IConfig serverConfig = config.Configs[m_ConfigName]; + IConfig serverConfig = m_ConfigSource.Configs[m_ConfigName]; if (serverConfig == null) throw new Exception(String.Format("No section {0} in config file", m_ConfigName)); @@ -96,9 +96,8 @@ namespace OpenSim.Services.IntegrationService if(String.IsNullOrEmpty(m_IntegrationConfigLoc)) m_log.Error("[INTEGRATION SERVICE]: No IntegrationConfig defined in the Robust.ini"); - m_Server = server; - m_IntegrationServerConfig = config.Configs["IntegrationService"]; + m_IntegrationServerConfig = m_ConfigSource.Configs["IntegrationService"]; if (m_IntegrationServerConfig == null) { throw new Exception("[INTEGRATION SERVICE]: Missing configuration"); @@ -121,54 +120,48 @@ namespace OpenSim.Services.IntegrationService suppress_console_output_(false); - AddinManager.AddExtensionNodeHandler ("/OpenSim/IntegrationService", OnExtensionChanged); - - foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) - { - string ConfigPath = String.Format("{0}/(1)", m_IntegrationConfigLoc,cmd.ConfigName); - IConfigSource PlugConfig = Ux.GetConfigSource(m_IntegrationConfigLoc, cmd.ConfigName); - - // We maintain a configuration per-plugin to enhance modularity - // If ConfigSource is null, we will get the default from the repo - // and write it to our directory - // Fetch the starter ini - if (PlugConfig == null) - { - - m_log.InfoFormat("[INTEGRATION SERVICE]: Fetching starter config for {0} from {1}", cmd.Name, cmd.DefaultConfig); - - // Send the default data service - IConfig DataService = config.Configs["DatabaseService"]; - m_log.InfoFormat("[INTEGRATION SERVICE]: Writing initial config to {0}", cmd.ConfigName); - // FileStream fs = File.Create(Path.Combine(m_IntegrationConfigLoc,cmd.ConfigName)); - // System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); - // Byte[] buf = enc.GetBytes("; Automatically Generated Configuration - Edit for your installation\n" ); - // fs.Write(buf, 0, buf.Length); - // fs.Close(); - - IniConfigSource source = new IniConfigSource(); - IConfig Init = source.AddConfig("DatabaseService"); - Init.Set("StorageProvider",(string)DataService.GetString("StorageProvider")); - Init.Set("ConnectionString", (string)DataService.GetString("ConnectionString")); - - - PlugConfig = Ux.LoadInitialConfig(cmd.DefaultConfig); - - source.Merge(PlugConfig); - - source.Save(Path.Combine(m_IntegrationConfigLoc, cmd.ConfigName)); - - PlugConfig = source; - } - - // Initialise and bring up the plugin - // Need to take down the plugin when disabling it. - cmd.Init (PlugConfig); - server.AddStreamHandler((IRequestHandler)cmd); - m_log.InfoFormat("[INTEGRATION SERVICE]: Loading IntegrationService plugin {0}", cmd.Name); - } + // **** Moving this +// foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) +// { +// string ConfigPath = String.Format("{0}/(1)", m_IntegrationConfigLoc,cmd.ConfigName); +// IConfigSource PlugConfig = Ux.GetConfigSource(m_IntegrationConfigLoc, cmd.ConfigName); +// +// // We maintain a configuration per-plugin to enhance modularity +// // If ConfigSource is null, we will get the default from the repo +// // and write it to our directory +// // Fetch the starter ini +// if (PlugConfig == null) +// { +// +// m_log.InfoFormat("[INTEGRATION SERVICE]: Fetching starter config for {0} from {1}", cmd.Name, cmd.DefaultConfig); +// +// // Send the default data service +// IConfig DataService = m_ConfigSource.Configs["DatabaseService"]; +// m_log.InfoFormat("[INTEGRATION SERVICE]: Writing initial config to {0}", cmd.ConfigName); +// +// IniConfigSource source = new IniConfigSource(); +// IConfig Init = source.AddConfig("DatabaseService"); +// Init.Set("StorageProvider",(string)DataService.GetString("StorageProvider")); +// Init.Set("ConnectionString", (string)DataService.GetString("ConnectionString")); +// +// +// PlugConfig = Ux.LoadInitialConfig(cmd.DefaultConfig); +// +// source.Merge(PlugConfig); +// +// source.Save(Path.Combine(m_IntegrationConfigLoc, cmd.ConfigName)); +// +// PlugConfig = source; +// } +// +// // Initialise and bring up the plugin +// // Need to take down the plugin when disabling it. +// cmd.Init (PlugConfig); +// server.AddStreamHandler((IRequestHandler)cmd); +// m_log.InfoFormat("[INTEGRATION SERVICE]: Loading IntegrationService plugin {0}", cmd.Name); +// } } void HandleAddinManagerAddinEngineExtensionChanged (object sender, ExtensionEventArgs args) @@ -211,12 +204,14 @@ namespace OpenSim.Services.IntegrationService case ExtensionChange.Add: m_log.InfoFormat("[INTEGRATION SERVICE]: Plugin Added {0}", ip.Name); + LoadingPlugin(ip); return; // Tear down case ExtensionChange.Remove: m_log.InfoFormat("[INTEGRATION SERVICE]: Plugin Remove {0}", ip.Name); + UnLoadingPlugin(ip); return; } } @@ -240,5 +235,46 @@ namespace OpenSim.Services.IntegrationService System.Console.SetOut(prev_console_); } } + + private void LoadingPlugin(IntegrationPlugin plugin) + { + string ConfigPath = String.Format("{0}/(1)", m_IntegrationConfigLoc,plugin.ConfigName); + IConfigSource PlugConfig = Ux.GetConfigSource(m_IntegrationConfigLoc, plugin.ConfigName); + + // We maintain a configuration per-plugin to enhance modularity + // If ConfigSource is null, we will get the default from the repo + // and write it to our directory + // Fetch the starter ini + if (PlugConfig == null) + { + m_log.InfoFormat("[INTEGRATION SERVICE]: Fetching starter config for {0} from {1}", plugin.Name, plugin.DefaultConfig); + + // Send the default data service + IConfig DataService = m_ConfigSource.Configs["DatabaseService"]; + m_log.InfoFormat("[INTEGRATION SERVICE]: Writing initial config to {0}", plugin.ConfigName); + + IniConfigSource source = new IniConfigSource(); + IConfig Init = source.AddConfig("DatabaseService"); + Init.Set("StorageProvider",(string)DataService.GetString("StorageProvider")); + Init.Set("ConnectionString", (string)DataService.GetString("ConnectionString")); + + + PlugConfig = Ux.LoadInitialConfig(plugin.DefaultConfig); + + source.Merge(PlugConfig); + + source.Save(Path.Combine(m_IntegrationConfigLoc, plugin.ConfigName)); + + PlugConfig = source; + } + + m_log.InfoFormat("[INTEGRATION SERVICE]: In Loading Plugin {0}", plugin.Name); + plugin.Init(PlugConfig, m_Server); + } + + private void UnLoadingPlugin(IntegrationPlugin plugin) + { + + } } } diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index ecfee9842f..89f7beea18 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -84,8 +84,17 @@ namespace OpenSim.Services.IntegrationService // Remove plugin public void UnInstall(string[] args) { + Addin[] addins = GetSortedAddinList("IntegrationPlugin"); + + int n = Convert.ToInt16(args[2]); + if (n > (addins.Length -1)) + { + MainConsole.Instance.Output("Selection out of range"); + return; + } + + Addin addin = addins[n]; IProgressStatus ps = new ConsoleProgressStatus(true); - Addin addin = m_Registry.GetAddin(args[1]); Uninstall(ps, addin.Id); m_Registry.Rebuild(null); return; From 679533f632110d432889d81e0931a529fe1d12e5 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 10 Apr 2012 14:36:24 -0400 Subject: [PATCH 26/87] Work on loading new addins --- .../IntegrationServiceBase.cs | 57 ++----------------- .../IntegrationService/PluginManager.cs | 25 ++++++-- 2 files changed, 27 insertions(+), 55 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 7216db25d8..fd310ae188 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -89,7 +89,10 @@ namespace OpenSim.Services.IntegrationService "."); AddinRegistry registry = new AddinRegistry(RegistryLocation, "."); + + suppress_console_output_(true); m_PluginManager = new PluginManager(registry); + suppress_console_output_(false); // Deal with files only for now - will add url/environment later m_IntegrationConfigLoc = serverConfig.GetString("IntegrationConfig", String.Empty); @@ -104,64 +107,16 @@ namespace OpenSim.Services.IntegrationService return; } - AddinManager.Initialize (RegistryLocation); - - suppress_console_output_(true); - + AddinManager.Registry.Update (); AddinManager.AddinLoaded += on_addinloaded_; AddinManager.AddinLoadError += on_addinloaderror_; AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; AddinManager.AddinEngine.ExtensionChanged += HandleAddinManagerAddinEngineExtensionChanged; - AddinManager.Registry.Update (); - - suppress_console_output_(false); - - AddinManager.AddExtensionNodeHandler ("/OpenSim/IntegrationService", OnExtensionChanged); - // **** Moving this -// foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) -// { -// string ConfigPath = String.Format("{0}/(1)", m_IntegrationConfigLoc,cmd.ConfigName); -// IConfigSource PlugConfig = Ux.GetConfigSource(m_IntegrationConfigLoc, cmd.ConfigName); -// -// // We maintain a configuration per-plugin to enhance modularity -// // If ConfigSource is null, we will get the default from the repo -// // and write it to our directory -// // Fetch the starter ini -// if (PlugConfig == null) -// { -// -// m_log.InfoFormat("[INTEGRATION SERVICE]: Fetching starter config for {0} from {1}", cmd.Name, cmd.DefaultConfig); -// -// // Send the default data service -// IConfig DataService = m_ConfigSource.Configs["DatabaseService"]; -// m_log.InfoFormat("[INTEGRATION SERVICE]: Writing initial config to {0}", cmd.ConfigName); -// -// IniConfigSource source = new IniConfigSource(); -// IConfig Init = source.AddConfig("DatabaseService"); -// Init.Set("StorageProvider",(string)DataService.GetString("StorageProvider")); -// Init.Set("ConnectionString", (string)DataService.GetString("ConnectionString")); -// -// -// PlugConfig = Ux.LoadInitialConfig(cmd.DefaultConfig); -// -// source.Merge(PlugConfig); -// -// source.Save(Path.Combine(m_IntegrationConfigLoc, cmd.ConfigName)); -// -// PlugConfig = source; -// } -// -// // Initialise and bring up the plugin -// // Need to take down the plugin when disabling it. -// cmd.Init (PlugConfig); -// server.AddStreamHandler((IRequestHandler)cmd); -// m_log.InfoFormat("[INTEGRATION SERVICE]: Loading IntegrationService plugin {0}", cmd.Name); -// } } void HandleAddinManagerAddinEngineExtensionChanged (object sender, ExtensionEventArgs args) @@ -268,13 +223,13 @@ namespace OpenSim.Services.IntegrationService PlugConfig = source; } - m_log.InfoFormat("[INTEGRATION SERVICE]: In Loading Plugin {0}", plugin.Name); + m_log.InfoFormat("[INTEGRATION SERVICE]: ****** In Loading Plugin {0}", plugin.Name); plugin.Init(PlugConfig, m_Server); } private void UnLoadingPlugin(IntegrationPlugin plugin) { - + plugin.Unload(); } } } diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index 89f7beea18..7f18407b68 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -86,7 +86,7 @@ namespace OpenSim.Services.IntegrationService { Addin[] addins = GetSortedAddinList("IntegrationPlugin"); - int n = Convert.ToInt16(args[2]); + int n = Convert.ToInt16(args[1]); if (n > (addins.Length -1)) { MainConsole.Instance.Output("Selection out of range"); @@ -94,9 +94,12 @@ namespace OpenSim.Services.IntegrationService } Addin addin = addins[n]; + MainConsole.Instance.OutputFormat("Uninstalling plugin {0}", addin.Id); + AddinManager.Registry.DisableAddin(addin.Id); + addin.Enabled = false; IProgressStatus ps = new ConsoleProgressStatus(true); Uninstall(ps, addin.Id); - m_Registry.Rebuild(null); + // m_Registry.Rebuild(null); return; } @@ -321,10 +324,24 @@ namespace OpenSim.Services.IntegrationService } Addin addin = addins[n]; + addin.Enabled = true; AddinManager.Registry.EnableAddin(addin.Id); - AddinManager.Registry.Update(); - AddinManager.AddinEngine.LoadAddin(null, addin.Id); + // AddinManager.Registry.Update(); + if(m_Registry.IsAddinEnabled(addin.Id)) + { + ConsoleProgressStatus ps = new ConsoleProgressStatus(true); + if (!AddinManager.AddinEngine.IsAddinLoaded(addin.Id)) + { + AddinManager.Registry.Rebuild(ps); + AddinManager.AddinEngine.LoadAddin(ps, addin.Id); + } + + } + else + { + MainConsole.Instance.OutputFormat("Not Enabled in this domain {0}", addin.Name); + } return; } From d95e6ca0c62b113819d5aac87412520c9abb77e7 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 10 Apr 2012 19:01:22 -0400 Subject: [PATCH 27/87] More work on install/loading/unloading Moved troublesome openjpeg libs - testing to see if opensim region can run with the change --- .../IntegrationServiceBase.cs | 32 +++++++++---------- .../IntegrationService/IntegrationUtils.cs | 15 +++++++++ .../IntegrationService/PluginManager.cs | 17 ++++++---- 3 files changed, 41 insertions(+), 23 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index fd310ae188..531c724860 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -90,9 +90,9 @@ namespace OpenSim.Services.IntegrationService AddinRegistry registry = new AddinRegistry(RegistryLocation, "."); - suppress_console_output_(true); + Ux.suppress_console_output_(true); m_PluginManager = new PluginManager(registry); - suppress_console_output_(false); + Ux.suppress_console_output_(false); // Deal with files only for now - will add url/environment later m_IntegrationConfigLoc = serverConfig.GetString("IntegrationConfig", String.Empty); @@ -176,20 +176,20 @@ namespace OpenSim.Services.IntegrationService m_log.Info ("[INTEGRATION SERVICE]: Plugin Loaded: " + args.AddinId); } - private static TextWriter prev_console_; - public void suppress_console_output_(bool save) - { - if (save) - { - prev_console_ = System.Console.Out; - System.Console.SetOut(new StreamWriter(Stream.Null)); - } - else - { - if (prev_console_ != null) - System.Console.SetOut(prev_console_); - } - } +// private static TextWriter prev_console_; +// public void suppress_console_output_(bool save) +// { +// if (save) +// { +// prev_console_ = System.Console.Out; +// System.Console.SetOut(new StreamWriter(Stream.Null)); +// } +// else +// { +// if (prev_console_ != null) +// System.Console.SetOut(prev_console_); +// } +// } private void LoadingPlugin(IntegrationPlugin plugin) { diff --git a/OpenSim/Services/IntegrationService/IntegrationUtils.cs b/OpenSim/Services/IntegrationService/IntegrationUtils.cs index 08daaf3112..640cb97a67 100644 --- a/OpenSim/Services/IntegrationService/IntegrationUtils.cs +++ b/OpenSim/Services/IntegrationService/IntegrationUtils.cs @@ -149,5 +149,20 @@ namespace OpenSim.Services.IntegrationService } + private static TextWriter prev_console_; + public static void suppress_console_output_(bool save) + { + if (save) + { + prev_console_ = System.Console.Out; + System.Console.SetOut(new StreamWriter(Stream.Null)); + } + else + { + if (prev_console_ != null) + System.Console.SetOut(prev_console_); + } + } + } } \ No newline at end of file diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index 7f18407b68..e37fa958dd 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -36,6 +36,8 @@ using Mono.Addins.Setup; using Mono.Addins.Description; using OpenSim.Framework; +using Ux = OpenSim.Services.IntegrationService.IUtils; + namespace OpenSim.Services.IntegrationService { // This will maintain the plugin repositories and plugins @@ -55,13 +57,14 @@ namespace OpenSim.Services.IntegrationService PackageCollection toUninstall; DependencyCollection unresolved; - IProgressStatus ps = new ConsoleProgressStatus(true); + IProgressStatus ps = new ConsoleProgressStatus(false); - m_Registry.Update(ps); + // m_Registry.Update(ps); string name = Addin.GetIdName(args[1]); string version = Addin.GetIdVersion(args[1]); + AddinRepositoryEntry[] aentry = Repositories.GetAvailableAddin(name, version); foreach (AddinRepositoryEntry ae in aentry) @@ -78,7 +81,9 @@ namespace OpenSim.Services.IntegrationService return "Install"; } else + { return "Bomb"; + } } // Remove plugin @@ -97,9 +102,8 @@ namespace OpenSim.Services.IntegrationService MainConsole.Instance.OutputFormat("Uninstalling plugin {0}", addin.Id); AddinManager.Registry.DisableAddin(addin.Id); addin.Enabled = false; - IProgressStatus ps = new ConsoleProgressStatus(true); + IProgressStatus ps = new ConsoleProgressStatus(false); Uninstall(ps, addin.Id); - // m_Registry.Rebuild(null); return; } @@ -174,7 +178,7 @@ namespace OpenSim.Services.IntegrationService public void GetRepository() { - Repositories.UpdateAllRepositories (new ConsoleProgressStatus (true)); + Repositories.UpdateAllRepositories (new ConsoleProgressStatus (false)); } // Remove a repository from the list @@ -330,13 +334,12 @@ namespace OpenSim.Services.IntegrationService // AddinManager.Registry.Update(); if(m_Registry.IsAddinEnabled(addin.Id)) { - ConsoleProgressStatus ps = new ConsoleProgressStatus(true); + ConsoleProgressStatus ps = new ConsoleProgressStatus(false); if (!AddinManager.AddinEngine.IsAddinLoaded(addin.Id)) { AddinManager.Registry.Rebuild(ps); AddinManager.AddinEngine.LoadAddin(ps, addin.Id); } - } else { From bb3aa1440df254afc2901233d75484b5b7117fa1 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Wed, 11 Apr 2012 06:24:56 -0400 Subject: [PATCH 28/87] Tell git to remove these files (moved) These are now living in lib32/lib64 directories. --- bin/openjpeg-dotnet-x86_64.dll | Bin 843776 -> 0 bytes bin/openjpeg-dotnet.dll | Bin 187392 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100755 bin/openjpeg-dotnet-x86_64.dll delete mode 100755 bin/openjpeg-dotnet.dll diff --git a/bin/openjpeg-dotnet-x86_64.dll b/bin/openjpeg-dotnet-x86_64.dll deleted file mode 100755 index 97729fffa0763558b7e511f78dec94e89c184456..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 843776 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�NeQv(vir;;Q09N`OL@HBYD>m0-b8m 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

WP|%De6a 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

h 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 afmDH1fmDH1fmDH1fmDH1fmDJ2N`XIDTaVxX From 0a949a20ca9db6f291291335d3e81fa8d597ba4a Mon Sep 17 00:00:00 2001 From: BlueWall Date: Wed, 11 Apr 2012 09:19:16 -0400 Subject: [PATCH 29/87] Send the service so the pluggin can load other assemblies --- OpenSim/Services/IntegrationService/IntegrationServiceBase.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 531c724860..2c67d48fec 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -46,7 +46,7 @@ namespace OpenSim.Services.IntegrationService [TypeExtensionPoint (Path="/OpenSim/IntegrationService", Name="IntegrationService")] public interface IntegrationPlugin { - void Init(IConfigSource PluginConfig, IHttpServer server); + void Init(IConfigSource PluginConfig, IHttpServer server, ServiceBase service); void Unload(); string Name{ get; } string ConfigName { get; } @@ -224,7 +224,7 @@ namespace OpenSim.Services.IntegrationService } m_log.InfoFormat("[INTEGRATION SERVICE]: ****** In Loading Plugin {0}", plugin.Name); - plugin.Init(PlugConfig, m_Server); + plugin.Init(PlugConfig, m_Server, this); } private void UnLoadingPlugin(IntegrationPlugin plugin) From a57ec18fb5741ee73dbc56c1b5cb5bbb2db502c0 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Wed, 11 Apr 2012 23:24:17 -0400 Subject: [PATCH 30/87] Add a development mode Pluggin development needs the pluggin to be directly loaded so the running program may be stopped for inspection and modifications. This is controlled by a configuration switch in the Robust.ini --- .../IntegrationServiceBase.cs | 99 +++++++++++++------ 1 file changed, 70 insertions(+), 29 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 2c67d48fec..1bdbafa08d 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -83,40 +83,81 @@ namespace OpenSim.Services.IntegrationService IConfig serverConfig = m_ConfigSource.Configs[m_ConfigName]; if (serverConfig == null) throw new Exception(String.Format("No section {0} in config file", m_ConfigName)); - - // defaults to the ./bin directory - string RegistryLocation = serverConfig.GetString("PluginRegistryLocation", - "."); - - AddinRegistry registry = new AddinRegistry(RegistryLocation, "."); - - Ux.suppress_console_output_(true); - m_PluginManager = new PluginManager(registry); - Ux.suppress_console_output_(false); - - // Deal with files only for now - will add url/environment later + m_IntegrationConfigLoc = serverConfig.GetString("IntegrationConfig", String.Empty); - if(String.IsNullOrEmpty(m_IntegrationConfigLoc)) - m_log.Error("[INTEGRATION SERVICE]: No IntegrationConfig defined in the Robust.ini"); + AddinRegistry registry ; + bool DEVELOPMENT = serverConfig.GetBoolean("DevelopmentMode", false); - - m_IntegrationServerConfig = m_ConfigSource.Configs["IntegrationService"]; - if (m_IntegrationServerConfig == null) + // Are we developing plugins? We will load them now + if (DEVELOPMENT == true) { - throw new Exception("[INTEGRATION SERVICE]: Missing configuration"); - return; + AddinManager.Initialize ("."); + registry = new AddinRegistry(".", "."); + registry.Update (); + + AddinManager.AddinLoaded += on_addinloaded_; + AddinManager.AddinLoadError += on_addinloaderror_; + AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; + AddinManager.AddinEngine.ExtensionChanged += HandleAddinManagerAddinEngineExtensionChanged; + // AddinManager.GetExtensionObjects("/OpenSim/IntegrationService"); + + registry.Update (); + foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) + { + m_log.InfoFormat("[INTEGRATION SERVICE]: Processing _Addin {0}", cmd.Name); + LoadingPlugin(cmd); + } + + Addin[] addins = registry.GetAddins(); + + foreach (Addin addin in addins) + { + if (addin.Description.Category == "IntegrationPlugin") + { + m_log.InfoFormat("[INTEGRATION SERVICE]: Processing O Addin {0}", addin.Name); + addin.Enabled = true; + registry.EnableAddin(addin.Id); + registry.Update(); + AddinManager.AddinEngine.LoadAddin(null, addin.Id); + } + } } + else + { + // defaults to the ./bin directory + string RegistryLocation = serverConfig.GetString("PluginRegistryLocation", + "."); + + registry = new AddinRegistry(RegistryLocation, "."); + + Ux.suppress_console_output_(true); + m_PluginManager = new PluginManager(registry); + Ux.suppress_console_output_(false); + + // Deal with files only for now - will add url/environment later + m_IntegrationConfigLoc = serverConfig.GetString("IntegrationConfig", String.Empty); + if(String.IsNullOrEmpty(m_IntegrationConfigLoc)) + m_log.Error("[INTEGRATION SERVICE]: No IntegrationConfig defined in the Robust.ini"); + + + m_IntegrationServerConfig = m_ConfigSource.Configs["IntegrationService"]; + if (m_IntegrationServerConfig == null) + { + throw new Exception("[INTEGRATION SERVICE]: Missing configuration"); + return; + } + + AddinManager.Initialize (RegistryLocation); + AddinManager.Registry.Update (); + + AddinManager.AddinLoaded += on_addinloaded_; + AddinManager.AddinLoadError += on_addinloaderror_; + AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; + AddinManager.AddinEngine.ExtensionChanged += HandleAddinManagerAddinEngineExtensionChanged; + + AddinManager.AddExtensionNodeHandler ("/OpenSim/IntegrationService", OnExtensionChanged); - AddinManager.Initialize (RegistryLocation); - AddinManager.Registry.Update (); - - AddinManager.AddinLoaded += on_addinloaded_; - AddinManager.AddinLoadError += on_addinloaderror_; - AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; - AddinManager.AddinEngine.ExtensionChanged += HandleAddinManagerAddinEngineExtensionChanged; - - AddinManager.AddExtensionNodeHandler ("/OpenSim/IntegrationService", OnExtensionChanged); - + } } void HandleAddinManagerAddinEngineExtensionChanged (object sender, ExtensionEventArgs args) From 30fff0e78e12ff5db728f2733cb585b011033c32 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 13 Apr 2012 20:12:27 -0400 Subject: [PATCH 31/87] Load new ini after writing to ensure proper settings --- .../Services/IntegrationService/IntegrationServiceBase.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 1bdbafa08d..f5010c73f3 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -48,7 +48,7 @@ namespace OpenSim.Services.IntegrationService { void Init(IConfigSource PluginConfig, IHttpServer server, ServiceBase service); void Unload(); - string Name{ get; } + string Name { get; } string ConfigName { get; } string DefaultConfig { get; } } @@ -252,7 +252,7 @@ namespace OpenSim.Services.IntegrationService IniConfigSource source = new IniConfigSource(); IConfig Init = source.AddConfig("DatabaseService"); Init.Set("StorageProvider",(string)DataService.GetString("StorageProvider")); - Init.Set("ConnectionString", (string)DataService.GetString("ConnectionString")); + Init.Set("ConnectionString", String.Format ("\"{0}\"",DataService.GetString("ConnectionString"))); PlugConfig = Ux.LoadInitialConfig(plugin.DefaultConfig); @@ -261,7 +261,8 @@ namespace OpenSim.Services.IntegrationService source.Save(Path.Combine(m_IntegrationConfigLoc, plugin.ConfigName)); - PlugConfig = source; + PlugConfig = Ux.GetConfigSource(m_IntegrationConfigLoc, plugin.ConfigName); + // PlugConfig = source; } m_log.InfoFormat("[INTEGRATION SERVICE]: ****** In Loading Plugin {0}", plugin.Name); From 083dd0c17cc0e7b744974a12af8897f23f4e68b9 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 20 Apr 2012 09:58:24 -0400 Subject: [PATCH 32/87] A little bit of clean up --- .../IntegrationServiceBase.cs | 19 +------------------ .../IntegrationService/IntegrationUtils.cs | 16 ---------------- 2 files changed, 1 insertion(+), 34 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index f5010c73f3..3703a4e19e 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -130,9 +130,7 @@ namespace OpenSim.Services.IntegrationService registry = new AddinRegistry(RegistryLocation, "."); - Ux.suppress_console_output_(true); m_PluginManager = new PluginManager(registry); - Ux.suppress_console_output_(false); // Deal with files only for now - will add url/environment later m_IntegrationConfigLoc = serverConfig.GetString("IntegrationConfig", String.Empty); @@ -186,7 +184,7 @@ namespace OpenSim.Services.IntegrationService + args.Exception.StackTrace); } - // This is out init + // This is our init // We can do build-up and tear-down of our plugin void OnExtensionChanged (object s, ExtensionNodeEventArgs args) { @@ -217,21 +215,6 @@ namespace OpenSim.Services.IntegrationService m_log.Info ("[INTEGRATION SERVICE]: Plugin Loaded: " + args.AddinId); } -// private static TextWriter prev_console_; -// public void suppress_console_output_(bool save) -// { -// if (save) -// { -// prev_console_ = System.Console.Out; -// System.Console.SetOut(new StreamWriter(Stream.Null)); -// } -// else -// { -// if (prev_console_ != null) -// System.Console.SetOut(prev_console_); -// } -// } - private void LoadingPlugin(IntegrationPlugin plugin) { string ConfigPath = String.Format("{0}/(1)", m_IntegrationConfigLoc,plugin.ConfigName); diff --git a/OpenSim/Services/IntegrationService/IntegrationUtils.cs b/OpenSim/Services/IntegrationService/IntegrationUtils.cs index 640cb97a67..32f2cf2ee5 100644 --- a/OpenSim/Services/IntegrationService/IntegrationUtils.cs +++ b/OpenSim/Services/IntegrationService/IntegrationUtils.cs @@ -148,21 +148,5 @@ namespace OpenSim.Services.IntegrationService return OpenSim.Server.Base.ServerUtils.LoadPlugin(dllName, args); } - - private static TextWriter prev_console_; - public static void suppress_console_output_(bool save) - { - if (save) - { - prev_console_ = System.Console.Out; - System.Console.SetOut(new StreamWriter(Stream.Null)); - } - else - { - if (prev_console_ != null) - System.Console.SetOut(prev_console_); - } - } - } } \ No newline at end of file From 70808d6d54d42ae2312988aa4081d83b604ddf64 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 20 Apr 2012 13:16:44 -0400 Subject: [PATCH 33/87] Making plugins disposable --- .../IntegrationService/IntegrationServiceBase.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 3703a4e19e..d76c5b6906 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -39,18 +39,19 @@ using log4net; using Ux = OpenSim.Services.IntegrationService.IUtils; -[assembly:AddinRoot ("IntegrationService", "1.1")] +[assembly:AddinRoot ("IntegrationService", "2.0")] namespace OpenSim.Services.IntegrationService { [TypeExtensionPoint (Path="/OpenSim/IntegrationService", Name="IntegrationService")] - public interface IntegrationPlugin + public interface IntegrationPlugin: IDisposable { void Init(IConfigSource PluginConfig, IHttpServer server, ServiceBase service); void Unload(); string Name { get; } string ConfigName { get; } string DefaultConfig { get; } + void Dispose(); } // Hide the nasty stuff in here, let the IntegrationService be clean for @@ -151,7 +152,7 @@ namespace OpenSim.Services.IntegrationService AddinManager.AddinLoaded += on_addinloaded_; AddinManager.AddinLoadError += on_addinloaderror_; AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; - AddinManager.AddinEngine.ExtensionChanged += HandleAddinManagerAddinEngineExtensionChanged; + // AddinManager.AddinEngine.ExtensionChanged += HandleAddinManagerAddinEngineExtensionChanged; AddinManager.AddExtensionNodeHandler ("/OpenSim/IntegrationService", OnExtensionChanged); @@ -160,7 +161,7 @@ namespace OpenSim.Services.IntegrationService void HandleAddinManagerAddinEngineExtensionChanged (object sender, ExtensionEventArgs args) { - MainConsole.Instance.Output("Plugin Extension Change"); + MainConsole.Instance.Output(String.Format ("Plugin Extension Change Path:{0}", args.Path)); } private IConfigSource GetConfig(string configName) @@ -254,6 +255,7 @@ namespace OpenSim.Services.IntegrationService private void UnLoadingPlugin(IntegrationPlugin plugin) { + MainConsole.Instance.Output(plugin.Name); plugin.Unload(); } } From 040412857ce6f5d3d301be01ae3df3d1fd837c9e Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 20 Apr 2012 14:13:32 -0400 Subject: [PATCH 34/87] Undo the disposable --- OpenSim/Services/IntegrationService/IntegrationServiceBase.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index d76c5b6906..ae7587dcd4 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -44,14 +44,13 @@ using Ux = OpenSim.Services.IntegrationService.IUtils; namespace OpenSim.Services.IntegrationService { [TypeExtensionPoint (Path="/OpenSim/IntegrationService", Name="IntegrationService")] - public interface IntegrationPlugin: IDisposable + public interface IntegrationPlugin { void Init(IConfigSource PluginConfig, IHttpServer server, ServiceBase service); void Unload(); string Name { get; } string ConfigName { get; } string DefaultConfig { get; } - void Dispose(); } // Hide the nasty stuff in here, let the IntegrationService be clean for From 027d313703adaab13c9f9953d4e29fa245910179 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 20 Apr 2012 21:52:02 -0400 Subject: [PATCH 35/87] Cleanup and formatting --- .../IntegrationService/IntegrationService.cs | 4 +- .../IntegrationServiceBase.cs | 44 +++++++++---------- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 700530471b..4943b980b5 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -51,7 +51,7 @@ namespace OpenSim.Services.IntegrationService public IntegrationService(IConfigSource config, IHttpServer server) : base(config, server) { - m_log.InfoFormat("[INTEGRATION SERVICE]: Loaded"); + m_log.DebugFormat("[INTEGRATION SERVICE]: Loaded"); // Add commands to the console if (MainConsole.Instance != null) @@ -60,6 +60,7 @@ namespace OpenSim.Services.IntegrationService } } + // Our console commands private void AddConsoleCommands() { MainConsole.Instance.Commands.AddCommand("Integration", true, @@ -128,6 +129,7 @@ namespace OpenSim.Services.IntegrationService } #region console handlers + // Handle our console commands private void HandleConsoleInstallPlugin(string module, string[] cmd) { MainConsole.Instance.Output(m_PluginManager.InstallPlugin(cmd)); diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index ae7587dcd4..83a5f8960b 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -40,7 +40,6 @@ using log4net; using Ux = OpenSim.Services.IntegrationService.IUtils; [assembly:AddinRoot ("IntegrationService", "2.0")] - namespace OpenSim.Services.IntegrationService { [TypeExtensionPoint (Path="/OpenSim/IntegrationService", Name="IntegrationService")] @@ -99,22 +98,20 @@ namespace OpenSim.Services.IntegrationService AddinManager.AddinLoadError += on_addinloaderror_; AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; AddinManager.AddinEngine.ExtensionChanged += HandleAddinManagerAddinEngineExtensionChanged; - // AddinManager.GetExtensionObjects("/OpenSim/IntegrationService"); registry.Update (); foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) { - m_log.InfoFormat("[INTEGRATION SERVICE]: Processing _Addin {0}", cmd.Name); + m_log.DebugFormat("[INTEGRATION SERVICE]: Processing _Addin {0}", cmd.Name); LoadingPlugin(cmd); } Addin[] addins = registry.GetAddins(); - foreach (Addin addin in addins) { if (addin.Description.Category == "IntegrationPlugin") { - m_log.InfoFormat("[INTEGRATION SERVICE]: Processing O Addin {0}", addin.Name); + m_log.DebugFormat("[INTEGRATION SERVICE]: Processing O Addin {0}", addin.Name); addin.Enabled = true; registry.EnableAddin(addin.Id); registry.Update(); @@ -125,11 +122,9 @@ namespace OpenSim.Services.IntegrationService else { // defaults to the ./bin directory - string RegistryLocation = serverConfig.GetString("PluginRegistryLocation", - "."); + string RegistryLocation = serverConfig.GetString("PluginRegistryLocation", "."); registry = new AddinRegistry(RegistryLocation, "."); - m_PluginManager = new PluginManager(registry); // Deal with files only for now - will add url/environment later @@ -147,12 +142,11 @@ namespace OpenSim.Services.IntegrationService AddinManager.Initialize (RegistryLocation); AddinManager.Registry.Update (); - + AddinManager.AddinLoaded += on_addinloaded_; AddinManager.AddinLoadError += on_addinloaderror_; AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; - // AddinManager.AddinEngine.ExtensionChanged += HandleAddinManagerAddinEngineExtensionChanged; - + AddinManager.AddExtensionNodeHandler ("/OpenSim/IntegrationService", OnExtensionChanged); } @@ -189,7 +183,6 @@ namespace OpenSim.Services.IntegrationService void OnExtensionChanged (object s, ExtensionNodeEventArgs args) { IntegrationPlugin ip = (IntegrationPlugin) args.ExtensionObject; - m_log.Info ("[INTEGRATION SERVICE]: Plugin Change"); switch (args.Change) @@ -197,14 +190,14 @@ namespace OpenSim.Services.IntegrationService // Build up case ExtensionChange.Add: - m_log.InfoFormat("[INTEGRATION SERVICE]: Plugin Added {0}", ip.Name); + m_log.DebugFormat("[INTEGRATION SERVICE]: Plugin Added {0}", ip.Name); LoadingPlugin(ip); return; // Tear down case ExtensionChange.Remove: - m_log.InfoFormat("[INTEGRATION SERVICE]: Plugin Remove {0}", ip.Name); + m_log.DebugFormat("[INTEGRATION SERVICE]: Plugin Remove {0}", ip.Name); UnLoadingPlugin(ip); return; } @@ -226,36 +219,39 @@ namespace OpenSim.Services.IntegrationService // Fetch the starter ini if (PlugConfig == null) { - m_log.InfoFormat("[INTEGRATION SERVICE]: Fetching starter config for {0} from {1}", plugin.Name, plugin.DefaultConfig); + m_log.DebugFormat("[INTEGRATION SERVICE]: Fetching starter config for {0} from {1}", plugin.Name, plugin.DefaultConfig); // Send the default data service IConfig DataService = m_ConfigSource.Configs["DatabaseService"]; - m_log.InfoFormat("[INTEGRATION SERVICE]: Writing initial config to {0}", plugin.ConfigName); + m_log.DebugFormat("[INTEGRATION SERVICE]: Writing initial config to {0}", plugin.ConfigName); IniConfigSource source = new IniConfigSource(); IConfig Init = source.AddConfig("DatabaseService"); Init.Set("StorageProvider",(string)DataService.GetString("StorageProvider")); Init.Set("ConnectionString", String.Format ("\"{0}\"",DataService.GetString("ConnectionString"))); - PlugConfig = Ux.LoadInitialConfig(plugin.DefaultConfig); - source.Merge(PlugConfig); - source.Save(Path.Combine(m_IntegrationConfigLoc, plugin.ConfigName)); - PlugConfig = Ux.GetConfigSource(m_IntegrationConfigLoc, plugin.ConfigName); - // PlugConfig = source; } - m_log.InfoFormat("[INTEGRATION SERVICE]: ****** In Loading Plugin {0}", plugin.Name); + m_log.DebugFormat("[INTEGRATION SERVICE]: ****** In Loading Plugin {0}", plugin.Name); plugin.Init(PlugConfig, m_Server, this); } private void UnLoadingPlugin(IntegrationPlugin plugin) { - MainConsole.Instance.Output(plugin.Name); - plugin.Unload(); + try + { + plugin.Unload(); + } + catch(Exception e) + { + // Getting some "Error Object reference not set to an instance of an object" + // when the plugins are unloaded. This keeps things quiet for now + // m_log.DebugFormat("[INTEGRATION SERVICE]: Error {0}", e.Message); + } } } } From bd0dfc1d6d44a5bf7e9a45255097451e5286c172 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sat, 21 Apr 2012 17:51:44 -0400 Subject: [PATCH 36/87] Make sorted lists for selecting plugins for operations --- .../IntegrationServiceBase.cs | 9 ++-- .../IntegrationService/PluginManager.cs | 52 ++++++++++++++----- 2 files changed, 46 insertions(+), 15 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 83a5f8960b..86887d746e 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -87,7 +87,10 @@ namespace OpenSim.Services.IntegrationService AddinRegistry registry ; bool DEVELOPMENT = serverConfig.GetBoolean("DevelopmentMode", false); - // Are we developing plugins? We will load them now + // Are we developing plugins? We will load them now. + // This will allow debugging of the modules and will + // use the runtime directory for the registry. Will not + // be able to use the repo/registry commands ... if (DEVELOPMENT == true) { AddinManager.Initialize ("."); @@ -146,12 +149,11 @@ namespace OpenSim.Services.IntegrationService AddinManager.AddinLoaded += on_addinloaded_; AddinManager.AddinLoadError += on_addinloaderror_; AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; - AddinManager.AddExtensionNodeHandler ("/OpenSim/IntegrationService", OnExtensionChanged); - } } + #region addin event handlers void HandleAddinManagerAddinEngineExtensionChanged (object sender, ExtensionEventArgs args) { MainConsole.Instance.Output(String.Format ("Plugin Extension Change Path:{0}", args.Path)); @@ -207,6 +209,7 @@ namespace OpenSim.Services.IntegrationService { m_log.Info ("[INTEGRATION SERVICE]: Plugin Loaded: " + args.AddinId); } + #endregion addin-event handlers private void LoadingPlugin(IntegrationPlugin plugin) { diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index e37fa958dd..9a10180a67 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -59,19 +59,22 @@ namespace OpenSim.Services.IntegrationService IProgressStatus ps = new ConsoleProgressStatus(false); - // m_Registry.Update(ps); - string name = Addin.GetIdName(args[1]); string version = Addin.GetIdVersion(args[1]); + AddinRepositoryEntry[] available = GetSortedAvailbleAddins(); - AddinRepositoryEntry[] aentry = Repositories.GetAvailableAddin(name, version); - - foreach (AddinRepositoryEntry ae in aentry) + int n = Convert.ToInt16(args[1]); + if (n > (available.Length -1)) { - Package p = Package.FromRepository(ae); - pack.Add(p); + MainConsole.Instance.Output("Selection out of range"); + return "Error"; } + + AddinRepositoryEntry aentry = available[n]; + + Package p = Package.FromRepository(aentry); + pack.Add(p); ResolveDependencies(ps, pack, out toUninstall, out unresolved); @@ -133,14 +136,16 @@ namespace OpenSim.Services.IntegrationService // List compatible plugins in registered repositories public ArrayList ListAvailable() { - AddinRepositoryEntry[] addins = Repositories.GetAvailableAddins (); + AddinRepositoryEntry[] addins = GetSortedAvailbleAddins(); ArrayList list = new ArrayList(); + int count = 0; foreach (AddinRepositoryEntry addin in addins) { StringBuilder sb = new StringBuilder(); - sb.Append(String.Format("{0} rev. {1}, repo {2}", addin.Addin.Id, addin.Addin.Version, addin.RepositoryUrl)); + sb.Append(String.Format("{0}) {1} rev. {2}, repo {3}", count.ToString(), addin.Addin.Name, addin.Addin.Version, addin.RepositoryName)); list.Add(sb.ToString()); + count++; } return list; } @@ -178,7 +183,7 @@ namespace OpenSim.Services.IntegrationService public void GetRepository() { - Repositories.UpdateAllRepositories (new ConsoleProgressStatus (false)); + Repositories.UpdateAllRepositories(new ConsoleProgressStatus(false)); } // Remove a repository from the list @@ -361,14 +366,37 @@ namespace OpenSim.Services.IntegrationService } } + // These will let us deal with numbered lists instead + // of needing to type in the full ids + private AddinRepositoryEntry[] GetSortedAvailbleAddins() + { + ArrayList list = new ArrayList(); + list.AddRange(Repositories.GetAvailableAddins()); + + AddinRepositoryEntry[] addins = list.ToArray(typeof(AddinRepositoryEntry)) as AddinRepositoryEntry[]; + + Array.Sort(addins,(r1,r2) => r1.Addin.Id.CompareTo(r2.Addin.Id)); + + return addins; + } + + private AddinRepository[] GetSortedAddinRepo() + { + ArrayList list = new ArrayList(); + list.AddRange(Repositories.GetRepositories()); + + AddinRepository[] repos = list.ToArray(typeof(AddinRepository)) as AddinRepository[]; + Array.Sort (repos,(r1,r2) => r1.Name.CompareTo(r2.Name)); + + return repos; + } + private Addin[] GetSortedAddinList(string category) { ArrayList list = new ArrayList(); list.AddRange(m_Registry.GetAddins()); ArrayList xlist = new ArrayList(); - - foreach (Addin addin in list) { if (addin.Description.Category == category) From 3e546ebbc5a6e9a5b1751a55298e3dbf53ba9ae0 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 22 Apr 2012 19:31:51 -0400 Subject: [PATCH 37/87] Adding framework to handle web requests for plugin management --- .../Integration/IntegrationServerHandler.cs | 15 +++++++++++++++ .../IntegrationService/IntegrationService.cs | 15 +++++++++++++++ .../Services/Interfaces/IIntegrationService.cs | 5 +++++ 3 files changed, 35 insertions(+) diff --git a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs index 6e514928c3..39bcca2832 100644 --- a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs +++ b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs @@ -108,6 +108,21 @@ namespace OpenSim.Server.Handlers.Integration { return m_IntegrationService.HandleWebPluginInfo(request); } + + public byte[] HandleWebListAvailablePlugins(OSDMap request) + { + return m_IntegrationService.HandleWebListAvailablePlugins(request); + } + + public byte[] HandleWebInstallPlugin(OSDMap request) + { + return m_IntegrationService.HandleWebInstallPlugin(request); + } + + public byte[] HnadleWebUnInstallPlugin(OSDMap request) + { + return m_IntegrationService.HandleWebUnInstallPlugin(request); + } #endregion web handlers #region utility diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 4943b980b5..2a8f3e0d24 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -259,6 +259,21 @@ namespace OpenSim.Services.IntegrationService { return Ux.FailureResult("Not Implemented"); } + + public byte[] HandleWebListAvailablePlugins(OSDMap request) + { + return Ux.FailureResult("Not Implemented"); + } + + public byte[] HandleWebInstallPlugin(OSDMap request) + { + return Ux.FailureResult("Not Implemented"); + } + + public byte[] HandleWebUnInstallPlugin(OSDMap request) + { + return Ux.FailureResult("Not Implemented"); + } #endregion } } \ No newline at end of file diff --git a/OpenSim/Services/Interfaces/IIntegrationService.cs b/OpenSim/Services/Interfaces/IIntegrationService.cs index 6dbaf52eb0..8b5d35b81c 100644 --- a/OpenSim/Services/Interfaces/IIntegrationService.cs +++ b/OpenSim/Services/Interfaces/IIntegrationService.cs @@ -36,8 +36,13 @@ namespace OpenSim.Services.Interfaces { public interface IIntegrationService { + #region Web handlers byte[] HandleWebListPlugins(OSDMap request); byte[] HandleWebPluginInfo(OSDMap request); + byte[] HandleWebListAvailablePlugins(OSDMap request); + byte[] HandleWebInstallPlugin(OSDMap request); + byte[] HandleWebUnInstallPlugin(OSDMap request); + #endregion } } From 6a69c3ac04ab0b9b2a64d2823731bfbc5dd35f97 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 22 Apr 2012 22:47:29 -0400 Subject: [PATCH 38/87] Filling in some more web handlers --- .../Integration/IntegrationServerHandler.cs | 109 +++++++++++++++--- .../IntegrationService/IntegrationService.cs | 74 +++++++++++- .../Interfaces/IIntegrationService.cs | 7 ++ 3 files changed, 170 insertions(+), 20 deletions(-) diff --git a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs index 39bcca2832..45dcad7115 100644 --- a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs +++ b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs @@ -66,31 +66,65 @@ namespace OpenSim.Server.Handlers.Integration { OSDMap request = null; if (ServerUtils.ParseStringToOSDMap(body, out request) == false) + { return FailureResult(); - - // Dictionary request = ServerUtils.ParseQueryString(body); + } if (!request.ContainsKey("command")) + { return FailureResult("Error, no command defined!"); - string command = request["command"].AsString(); + } + + string command = request["command"].AsString (); - // command... switch (command) { - // agent case "list_plugins": return HandleListPlugins(request); + + case "list_available": + return HandleListAvailablePlugins(request); + case "install_plugin": + return HandleInstallPlugin(request); + + case "uninstall_plugin": + return HandleUnInstallPlugin(request); + + case "enable_plugin": + return HandleEnablePlugin (request); + + case "disable_plugin": + return HandleDisblePlugin(request); + case "plugin_info": return HandlePluginInfo(request); - break; + case "list_repos": + return HandleListRepositories (request); + + case "add_repo": + return HandleAddRepository(request); + + case "remove_repo": + return HandleRemoveRepository(request); + + case "enable_repo": + return HandleEnablePlugin(request); + + case "disable_repo": + return HandleDisableRepository(request); + default: - m_log.DebugFormat("[INTEGRATION HANDLER]: unknown method {0} request {1}", command.Length, command); - return FailureResult("IntegrationHandler: Unrecognized method requested!"); + m_log.DebugFormat( + "[INTEGRATION HANDLER]: unknown method {0} request {1}", + command.Length, + command + ); + return FailureResult ("IntegrationHandler: Unrecognized method requested!"); } - } - catch (Exception e) + } + catch (Exception e) { m_log.DebugFormat("[INTEGRATION HANDLER]: Exception {0}", e); } @@ -99,30 +133,77 @@ namespace OpenSim.Server.Handlers.Integration } #region web handlers + // List installed plugins private byte[] HandleListPlugins(OSDMap request) { return m_IntegrationService.HandleWebListPlugins(request); } + // Show plugin info private byte[] HandlePluginInfo(OSDMap request) { return m_IntegrationService.HandleWebPluginInfo(request); } - public byte[] HandleWebListAvailablePlugins(OSDMap request) + // Enable plugin + private byte[] HandleEnablePlugin(OSDMap request) { - return m_IntegrationService.HandleWebListAvailablePlugins(request); + return m_IntegrationService.HandleWebEnablePlugin(request); } - public byte[] HandleWebInstallPlugin(OSDMap request) + // Disable plugin + private byte[] HandleDisblePlugin(OSDMap request) + { + return m_IntegrationService.HandleWebDisablePlugin(request); + } + + // Install plugin + public byte[] HandleInstallPlugin(OSDMap request) { return m_IntegrationService.HandleWebInstallPlugin(request); } - public byte[] HnadleWebUnInstallPlugin(OSDMap request) + // Uninstall plugin + public byte[] HandleUnInstallPlugin(OSDMap request) { return m_IntegrationService.HandleWebUnInstallPlugin(request); } + + // List available plugins + public byte[] HandleListAvailablePlugins(OSDMap request) + { + return m_IntegrationService.HandleWebListAvailablePlugins(request); + } + + // List repositories + public byte[] HandleListRepositories(OSDMap request) + { + return m_IntegrationService.HandleWebListRepositories(request); + } + + // Add repository + public byte[] HandleAddRepository(OSDMap request) + { + return m_IntegrationService.HandleWebAddRepository(request); + } + + // Remove repository + public byte[] HandleRemoveRepository(OSDMap request) + { + return m_IntegrationService.HandleWebRemoveRepositroy(request); + } + + // Enable repository + public byte[] HandleEnableRepository(OSDMap request) + { + return m_IntegrationService.HandleEnableRepository(request); + } + + // Disable repository + public byte[] HandleDisableRepository(OSDMap request) + { + return m_IntegrationService.HandleWebDisableRepository(request); + } #endregion web handlers #region utility diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 2a8f3e0d24..e3e23cf7d9 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -249,28 +249,90 @@ namespace OpenSim.Services.IntegrationService } #endregion - #region web handlers - public byte[] HandleWebListPlugins(OSDMap request) +// #region web handlers +// public byte[] HandleWebListPlugins(OSDMap request) +// { +// return Ux.FailureResult("Not Implemented"); +// } +// +// public byte[] HandleWebPluginInfo(OSDMap request) +// { +// return Ux.FailureResult("Not Implemented"); +// } +// +// public byte[] HandleWebListAvailablePlugins(OSDMap request) +// { +// return Ux.FailureResult("Not Implemented"); +// } +// +// public byte[] HandleWebInstallPlugin(OSDMap request) +// { +// return Ux.FailureResult("Not Implemented"); +// } +// +// public byte[] HandleWebUnInstallPlugin(OSDMap request) +// { +// return Ux.FailureResult("Not Implemented"); +// } +// #endregion + + #region IIntegrationService implementation + public byte[] HandleWebListRepositories (OSDMap request) { return Ux.FailureResult("Not Implemented"); } - public byte[] HandleWebPluginInfo(OSDMap request) + public byte[] HandleWebAddRepository (OSDMap request) { return Ux.FailureResult("Not Implemented"); } - public byte[] HandleWebListAvailablePlugins(OSDMap request) + public byte[] HandleWebRemoveRepositroy (OSDMap request) { return Ux.FailureResult("Not Implemented"); } - public byte[] HandleWebInstallPlugin(OSDMap request) + public byte[] HandleEnableRepository (OSDMap request) { return Ux.FailureResult("Not Implemented"); } - public byte[] HandleWebUnInstallPlugin(OSDMap request) + public byte[] HandleWebDisableRepository (OSDMap request) + { + return Ux.FailureResult("Not Implemented"); + } + + public byte[] HandleWebListPlugins (OSDMap request) + { + return Ux.FailureResult("Not Implemented"); + } + + public byte[] HandleWebPluginInfo (OSDMap request) + { + return Ux.FailureResult("Not Implemented"); + } + + public byte[] HandleWebListAvailablePlugins (OSDMap request) + { + return Ux.FailureResult("Not Implemented"); + } + + public byte[] HandleWebInstallPlugin (OSDMap request) + { + return Ux.FailureResult("Not Implemented"); + } + + public byte[] HandleWebUnInstallPlugin (OSDMap request) + { + return Ux.FailureResult("Not Implemented"); + } + + public byte[] HandleWebEnablePlugin (OSDMap request) + { + return Ux.FailureResult("Not Implemented"); + } + + public byte[] HandleWebDisablePlugin (OSDMap request) { return Ux.FailureResult("Not Implemented"); } diff --git a/OpenSim/Services/Interfaces/IIntegrationService.cs b/OpenSim/Services/Interfaces/IIntegrationService.cs index 8b5d35b81c..1b5e803ba3 100644 --- a/OpenSim/Services/Interfaces/IIntegrationService.cs +++ b/OpenSim/Services/Interfaces/IIntegrationService.cs @@ -37,11 +37,18 @@ namespace OpenSim.Services.Interfaces public interface IIntegrationService { #region Web handlers + byte[] HandleWebListRepositories(OSDMap request); + byte[] HandleWebAddRepository(OSDMap request); + byte[] HandleWebRemoveRepositroy(OSDMap request); + byte[] HandleEnableRepository(OSDMap request); + byte[] HandleWebDisableRepository(OSDMap request); byte[] HandleWebListPlugins(OSDMap request); byte[] HandleWebPluginInfo(OSDMap request); byte[] HandleWebListAvailablePlugins(OSDMap request); byte[] HandleWebInstallPlugin(OSDMap request); byte[] HandleWebUnInstallPlugin(OSDMap request); + byte[] HandleWebEnablePlugin(OSDMap request); + byte[] HandleWebDisablePlugin(OSDMap request); #endregion } } From 3c03418e06e234ee2e0d576821f1f1d83c6752b2 Mon Sep 17 00:00:00 2001 From: Talun Date: Sun, 22 Apr 2012 23:07:50 +0100 Subject: [PATCH 39/87] Mantis 5977 Corrections to llRegionSayTo Signed-off-by: BlueWall --- OpenSim/Framework/OSChatMessage.cs | 20 +++++ .../CoreModules/Avatar/Chat/ChatModule.cs | 52 ++++++++----- .../Scripting/WorldComm/WorldCommModule.cs | 76 +++++++++---------- .../Region/Framework/Interfaces/IWorldComm.cs | 2 +- .../Framework/Scenes/Scene.PacketHandlers.cs | 26 ++++++- .../Shared/Api/Implementation/LSL_Api.cs | 8 +- 6 files changed, 123 insertions(+), 61 deletions(-) diff --git a/OpenSim/Framework/OSChatMessage.cs b/OpenSim/Framework/OSChatMessage.cs index 54fa2756d2..455756db71 100644 --- a/OpenSim/Framework/OSChatMessage.cs +++ b/OpenSim/Framework/OSChatMessage.cs @@ -51,10 +51,12 @@ namespace OpenSim.Framework protected object m_senderObject; protected ChatTypeEnum m_type; protected UUID m_fromID; + protected UUID m_toID; public OSChatMessage() { m_position = new Vector3(); + m_toID = UUID.Zero; } ///

@@ -102,6 +104,15 @@ namespace OpenSim.Framework set { m_from = value; } } + /// + /// The name of the sender (needed for scripts) + /// + public string To + { + get { return m_from; } + set { m_from = value; } + } + #region IEventArgs Members /// TODO: Sender and SenderObject should just be Sender and of @@ -131,6 +142,15 @@ namespace OpenSim.Framework set { m_fromID = value; } } + /// + /// The single recipient or all if not set. + /// + public UUID TargetUUID + { + get { return m_toID; } + set { m_toID = value; } + } + /// /// /// diff --git a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs index 10b4c37f05..e4452fbb87 100644 --- a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs @@ -186,6 +186,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat { string fromName = c.From; UUID fromID = UUID.Zero; + UUID targetID = c.TargetUUID; string message = c.Message; IScene scene = c.Scene; Vector3 fromPos = c.Position; @@ -221,24 +222,38 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat message = message.Substring(0, 1000); // m_log.DebugFormat( -// "[CHAT]: DCTA: fromID {0} fromName {1}, region{2}, cType {3}, sType {4}", -// fromID, fromName, scene.RegionInfo.RegionName, c.Type, sourceType); +// "[CHAT]: DCTA: fromID {0} fromName {1}, region{2}, cType {3}, sType {4}, targetID {5}", +// fromID, fromName, scene.RegionInfo.RegionName, c.Type, sourceType, targetID); HashSet receiverIDs = new HashSet(); - + foreach (Scene s in m_scenes) { - // This should use ForEachClient, but clients don't have a position. - // If camera is moved into client, then camera position can be used - s.ForEachRootScenePresence( - delegate(ScenePresence presence) + if (targetID == UUID.Zero) + { + // This should use ForEachClient, but clients don't have a position. + // If camera is moved into client, then camera position can be used + s.ForEachRootScenePresence( + delegate(ScenePresence presence) + { + if (TrySendChatMessage(presence, fromPos, regionPos, fromID, fromName, c.Type, message, sourceType, false)) + receiverIDs.Add(presence.UUID); + } + ); + } + else + { + // This is a send to a specific client eg from llRegionSayTo + // no need to check distance etc, jand send is as say + ScenePresence presence = s.GetScenePresence(targetID); + if (presence != null && !presence.IsChildAgent) { - if (TrySendChatMessage(presence, fromPos, regionPos, fromID, fromName, c.Type, message, sourceType)) - receiverIDs.Add(presence.UUID); + if (TrySendChatMessage(presence, fromPos, regionPos, fromID, fromName, ChatTypeEnum.Say, message, sourceType, true)) + receiverIDs.Add(presence.UUID); } - ); + } } - + (scene as Scene).EventManager.TriggerOnChatToClients( fromID, receiverIDs, message, c.Type, fromPos, fromName, sourceType, ChatAudibleLevel.Fully); } @@ -315,7 +330,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat /// precondition protected virtual bool TrySendChatMessage(ScenePresence presence, Vector3 fromPos, Vector3 regionPos, UUID fromAgentID, string fromName, ChatTypeEnum type, - string message, ChatSourceType src) + string message, ChatSourceType src, bool ignoreDistance) { // don't send stuff to child agents if (presence.IsChildAgent) return false; @@ -326,12 +341,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat presence.Scene.RegionInfo.RegionLocY * Constants.RegionSize, 0); int dis = (int)Util.GetDistanceTo(toRegionPos, fromRegionPos); - - if (type == ChatTypeEnum.Whisper && dis > m_whisperdistance || - type == ChatTypeEnum.Say && dis > m_saydistance || - type == ChatTypeEnum.Shout && dis > m_shoutdistance) + + if (!ignoreDistance) { - return false; + if (type == ChatTypeEnum.Whisper && dis > m_whisperdistance || + type == ChatTypeEnum.Say && dis > m_saydistance || + type == ChatTypeEnum.Shout && dis > m_shoutdistance) + { + return false; + } } // TODO: should change so the message is sent through the avatar rather than direct to the ClientView diff --git a/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs b/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs index 176c86de12..8358bc0c64 100644 --- a/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs +++ b/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs @@ -308,56 +308,56 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm /// /// Message. /// - public bool DeliverMessageTo(UUID target, int channel, Vector3 pos, string name, UUID id, string msg, out string error) + public void DeliverMessageTo(UUID target, int channel, Vector3 pos, string name, UUID id, string msg) { - error = null; // Is id an avatar? ScenePresence sp = m_scene.GetScenePresence(target); if (sp != null) { - // Send message to avatar + // ignore if a child agent this is restricted to inside one region + if (sp.IsChildAgent) + return; + + // Send message to the avatar. + // Channel zero only goes to the avatar + // non zero channel messages only go to the attachments if (channel == 0) { - m_scene.SimChatBroadcast(Utils.StringToBytes(msg), ChatTypeEnum.Broadcast, 0, pos, name, id, false); - } - - List attachments = sp.GetAttachments(); - - if (attachments.Count == 0) - return true; - - // Get uuid of attachments - List targets = new List(); - foreach (SceneObjectGroup sog in attachments) + m_scene.SimChatToAgent(target, Utils.StringToBytes(msg), pos, name, id, false); + } + else { - if (!sog.IsDeleted) - targets.Add(sog.UUID); + List attachments = sp.GetAttachments(); + if (attachments.Count == 0) + return; + + // Get uuid of attachments + List targets = new List(); + foreach (SceneObjectGroup sog in attachments) + { + if (!sog.IsDeleted) + targets.Add(sog.UUID); + } + + // Need to check each attachment + foreach (ListenerInfo li in m_listenerManager.GetListeners(UUID.Zero, channel, name, id, msg)) + { + if (li.GetHostID().Equals(id)) + continue; + + if (m_scene.GetSceneObjectPart(li.GetHostID()) == null) + continue; + + if (targets.Contains(li.GetHostID())) + QueueMessage(new ListenerInfo(li, name, id, msg)); + } } - // Need to check each attachment - foreach (ListenerInfo li in m_listenerManager.GetListeners(UUID.Zero, channel, name, id, msg)) - { - if (li.GetHostID().Equals(id)) - continue; - - if (m_scene.GetSceneObjectPart(li.GetHostID()) == null) - continue; - - if (targets.Contains(li.GetHostID())) - QueueMessage(new ListenerInfo(li, name, id, msg)); - } - - return true; - } - - // Need to toss an error here - if (channel == 0) - { - error = "Cannot use llRegionSayTo to message objects on channel 0"; - return false; + return; } + // No avatar found so look for an object foreach (ListenerInfo li in m_listenerManager.GetListeners(UUID.Zero, channel, name, id, msg)) { // Dont process if this message is from yourself! @@ -375,7 +375,7 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm } } - return true; + return; } protected void QueueMessage(ListenerInfo li) diff --git a/OpenSim/Region/Framework/Interfaces/IWorldComm.cs b/OpenSim/Region/Framework/Interfaces/IWorldComm.cs index e8e375e037..4e74781b9b 100644 --- a/OpenSim/Region/Framework/Interfaces/IWorldComm.cs +++ b/OpenSim/Region/Framework/Interfaces/IWorldComm.cs @@ -103,7 +103,7 @@ namespace OpenSim.Region.Framework.Interfaces /// /// Message. /// - bool DeliverMessageTo(UUID target, int channel, Vector3 pos, string name, UUID id, string msg, out string error); + void DeliverMessageTo(UUID target, int channel, Vector3 pos, string name, UUID id, string msg); /// /// Are there any listen events ready to be dispatched? diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs index 87ffc74acd..2701d6ef8a 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs @@ -38,8 +38,9 @@ namespace OpenSim.Region.Framework.Scenes { public partial class Scene { + protected void SimChat(byte[] message, ChatTypeEnum type, int channel, Vector3 fromPos, string fromName, - UUID fromID, bool fromAgent, bool broadcast) + UUID fromID, UUID targetID, bool fromAgent, bool broadcast) { OSChatMessage args = new OSChatMessage(); @@ -63,14 +64,20 @@ namespace OpenSim.Region.Framework.Scenes } args.From = fromName; - //args. + args.TargetUUID = targetID; if (broadcast) EventManager.TriggerOnChatBroadcast(this, args); else EventManager.TriggerOnChatFromWorld(this, args); } - + + protected void SimChat(byte[] message, ChatTypeEnum type, int channel, Vector3 fromPos, string fromName, + UUID fromID, bool fromAgent, bool broadcast) + { + SimChat(message, type, channel, fromPos, fromName, fromID, UUID.Zero, fromAgent, broadcast); + } + /// /// /// @@ -108,6 +115,19 @@ namespace OpenSim.Region.Framework.Scenes { SimChat(message, type, channel, fromPos, fromName, fromID, fromAgent, true); } + /// + /// + /// + /// + /// + /// + /// + /// + /// + public void SimChatToAgent(UUID targetID, byte[] message, Vector3 fromPos, string fromName, UUID fromID, bool fromAgent) + { + SimChat(message, ChatTypeEnum.Say, 0, fromPos, fromName, fromID, targetID, fromAgent, false); + } /// /// Invoked when the client requests a prim. diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 36c9d5e74e..a2176ba8a6 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -839,13 +839,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api m_host.AddScriptLPS(1); + if (channel == ScriptBaseClass.DEBUG_CHANNEL) + { + return; + } + UUID TargetID; UUID.TryParse(target, out TargetID); IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface(); if (wComm != null) - if (!wComm.DeliverMessageTo(TargetID, channel, m_host.AbsolutePosition, m_host.Name, m_host.UUID, msg, out error)) - LSLError(error); + wComm.DeliverMessageTo(TargetID, channel, m_host.AbsolutePosition, m_host.Name, m_host.UUID, msg); } public LSL_Integer llListen(int channelID, string name, string ID, string msg) From 40828910e7892c7f7a875b2cdca019c8e1d22f5c Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 24 Apr 2012 02:27:23 -0400 Subject: [PATCH 40/87] Plugin manager generic result for use by command line or rest interface --- .../Integration/IntegrationServerHandler.cs | 10 +-- .../IntegrationService/IntegrationService.cs | 65 ++++++++++--------- .../IntegrationService/IntegrationUtils.cs | 5 ++ .../IntegrationService/PluginManager.cs | 33 ++++++---- 4 files changed, 65 insertions(+), 48 deletions(-) diff --git a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs index 45dcad7115..320b5030c6 100644 --- a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs +++ b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs @@ -81,7 +81,7 @@ namespace OpenSim.Server.Handlers.Integration { case "list_plugins": return HandleListPlugins(request); - + case "list_available": return HandleListAvailablePlugins(request); @@ -96,7 +96,7 @@ namespace OpenSim.Server.Handlers.Integration case "disable_plugin": return HandleDisblePlugin(request); - + case "plugin_info": return HandlePluginInfo(request); @@ -114,7 +114,7 @@ namespace OpenSim.Server.Handlers.Integration case "disable_repo": return HandleDisableRepository(request); - + default: m_log.DebugFormat( "[INTEGRATION HANDLER]: unknown method {0} request {1}", @@ -123,8 +123,8 @@ namespace OpenSim.Server.Handlers.Integration ); return FailureResult ("IntegrationHandler: Unrecognized method requested!"); } - } - catch (Exception e) + } + catch (Exception e) { m_log.DebugFormat("[INTEGRATION HANDLER]: Exception {0}", e); } diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index e3e23cf7d9..97286595c5 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -29,6 +29,7 @@ using System; using System.Collections; using System.Collections.Generic; using System.Reflection; +using System.Linq; using OpenSim.Server.Base; using OpenSim.Services.Interfaces; using OpenSim.Framework; @@ -130,12 +131,15 @@ namespace OpenSim.Services.IntegrationService #region console handlers // Handle our console commands + // + // Install plugin from registered repository private void HandleConsoleInstallPlugin(string module, string[] cmd) { MainConsole.Instance.Output(m_PluginManager.InstallPlugin(cmd)); return; } + // Remove installed plugin private void HandleConsoleUnInstallPlugin(string module, string[] cmd) { if (cmd.Length == 2) @@ -145,18 +149,36 @@ namespace OpenSim.Services.IntegrationService return; } + // Check installed plugins **not working private void HandleConsoleCheckInstalledPlugin(string module, string[] cmd) { MainConsole.Instance.Output(m_PluginManager.CheckInstalled()); return; } + // List installed plugins private void HandleConsoleListInstalledPlugin(string module, string[] cmd) { - m_PluginManager.ListInstalledAddins(); + Dictionary result = new Dictionary(); + m_PluginManager.ListInstalledAddins(out result); + + ArrayList s = new ArrayList(); + s.AddRange(result.Keys); + s.Sort(); + + foreach (string k in s) + { + Dictionary plugin = (Dictionary)result[k]; + bool enabled = (bool)plugin["enabled"]; + MainConsole.Instance.OutputFormat("{0}) {1} {2} rev. {3}", + k, + enabled == true ? "[ ]" : "[X]", + plugin["name"], plugin["version"]); + } return; } + // List available plugins on registered repositories private void HandleConsoleListAvailablePlugin(string module, string[] cmd) { ArrayList list = m_PluginManager.ListAvailable(); @@ -166,18 +188,21 @@ namespace OpenSim.Services.IntegrationService return; } + // List available updates **not ready private void HandleConsoleListUpdates(string module, string[] cmd) { m_PluginManager.ListUpdates(); return; } + // Update plugin **not ready private void HandleConsoleUpdatePlugin(string module, string[] cmd) { MainConsole.Instance.Output(m_PluginManager.Update()); return; } + // Register repository private void HandleConsoleAddRepo(string module, string[] cmd) { if ( cmd.Length == 3) @@ -187,12 +212,14 @@ namespace OpenSim.Services.IntegrationService return; } + // Get repository status **not working private void HandleConsoleGetRepo(string module, string[] cmd) { m_PluginManager.GetRepository(); return; } + // Remove registered repository private void HandleConsoleRemoveRepo(string module, string[] cmd) { if (cmd.Length == 3) @@ -200,7 +227,7 @@ namespace OpenSim.Services.IntegrationService return; } - // Enable repo + // Enable repository private void HandleConsoleEnableRepo(string module, string[] cmd) { m_PluginManager.EnableRepository(cmd); @@ -249,33 +276,6 @@ namespace OpenSim.Services.IntegrationService } #endregion -// #region web handlers -// public byte[] HandleWebListPlugins(OSDMap request) -// { -// return Ux.FailureResult("Not Implemented"); -// } -// -// public byte[] HandleWebPluginInfo(OSDMap request) -// { -// return Ux.FailureResult("Not Implemented"); -// } -// -// public byte[] HandleWebListAvailablePlugins(OSDMap request) -// { -// return Ux.FailureResult("Not Implemented"); -// } -// -// public byte[] HandleWebInstallPlugin(OSDMap request) -// { -// return Ux.FailureResult("Not Implemented"); -// } -// -// public byte[] HandleWebUnInstallPlugin(OSDMap request) -// { -// return Ux.FailureResult("Not Implemented"); -// } -// #endregion - #region IIntegrationService implementation public byte[] HandleWebListRepositories (OSDMap request) { @@ -302,9 +302,12 @@ namespace OpenSim.Services.IntegrationService return Ux.FailureResult("Not Implemented"); } - public byte[] HandleWebListPlugins (OSDMap request) + public byte[] HandleWebListPlugins(OSDMap request) { - return Ux.FailureResult("Not Implemented"); + Dictionary result = new Dictionary(); + m_PluginManager.ListInstalledAddins(out result); + string json = LitJson.JsonMapper.ToJson(result); + return Ux.DocToBytes(json); } public byte[] HandleWebPluginInfo (OSDMap request) diff --git a/OpenSim/Services/IntegrationService/IntegrationUtils.cs b/OpenSim/Services/IntegrationService/IntegrationUtils.cs index 32f2cf2ee5..1b0ce33d1d 100644 --- a/OpenSim/Services/IntegrationService/IntegrationUtils.cs +++ b/OpenSim/Services/IntegrationService/IntegrationUtils.cs @@ -101,6 +101,11 @@ namespace OpenSim.Services.IntegrationService { return Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(doc)); } + + public static byte[] DocToBytes(string json) + { + return Encoding.UTF8.GetBytes(json); + } #endregion web utils #region config utils diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index 9a10180a67..4b18ea514a 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -35,7 +35,6 @@ using Mono.Addins; using Mono.Addins.Setup; using Mono.Addins.Description; using OpenSim.Framework; - using Ux = OpenSim.Services.IntegrationService.IUtils; namespace OpenSim.Services.IntegrationService @@ -65,12 +64,12 @@ namespace OpenSim.Services.IntegrationService AddinRepositoryEntry[] available = GetSortedAvailbleAddins(); int n = Convert.ToInt16(args[1]); - if (n > (available.Length -1)) + if (n > (available.Length - 1)) { MainConsole.Instance.Output("Selection out of range"); return "Error"; } - + AddinRepositoryEntry aentry = available[n]; Package p = Package.FromRepository(aentry); @@ -78,9 +77,13 @@ namespace OpenSim.Services.IntegrationService ResolveDependencies(ps, pack, out toUninstall, out unresolved); - if(Install(ps, pack) == true) + // Attempt to install the plugin disabled + if (Install(ps, pack) == true) { m_Registry.Update(ps); + Addin addin = m_Registry.GetAddin(aentry.Addin.Id); + m_Registry.DisableAddin(addin.Id); + addin.Enabled = false; return "Install"; } else @@ -116,20 +119,26 @@ namespace OpenSim.Services.IntegrationService } // List instaled addins - public void ListInstalledAddins() + public void ListInstalledAddins(out Dictionary result) { - Addin[] addins = GetSortedAddinList("IntegrationPlugin"); + Dictionary res = new Dictionary(); - MainConsole.Instance.Output("Installed Plugins"); + Addin[] addins = GetSortedAddinList("IntegrationPlugin"); int count = 0; foreach (Addin addin in addins) { - MainConsole.Instance.OutputFormat("{0}) {1} {2} rev. {3}", count.ToString(), - addin.Enabled == false ? "[X]" : "[ ]", - addin.Name, addin.Version ); + Dictionary r = new Dictionary(); + r["enabled"] = addin.Enabled == true ? true : false; + r["name"] = addin.LocalId; + r["version"] = addin.Version; + + res.Add(count.ToString(), r); + count++; } + + result = res; return; } @@ -158,7 +167,7 @@ namespace OpenSim.Services.IntegrationService Repositories.UpdateAllRepositories (ps); Console.WriteLine ("Available add-in updates:"); bool found = false; - AddinRepositoryEntry[] entries = Repositories.GetAvailableUpdates (); + AddinRepositoryEntry[] entries = Repositories.GetAvailableUpdates(); foreach (AddinRepositoryEntry entry in entries) { @@ -367,7 +376,7 @@ namespace OpenSim.Services.IntegrationService } // These will let us deal with numbered lists instead - // of needing to type in the full ids + // of needing to type in the full ids private AddinRepositoryEntry[] GetSortedAvailbleAddins() { ArrayList list = new ArrayList(); From 578ec6cc2608132ee1e82fc6dd9fb9b9bcdd01bd Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 24 Apr 2012 19:26:44 -0400 Subject: [PATCH 41/87] Add OAuth support lib to provide authentication for endpoints --- bin/DevDefined.OAuth.dll | Bin 0 -> 129024 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 bin/DevDefined.OAuth.dll diff --git a/bin/DevDefined.OAuth.dll b/bin/DevDefined.OAuth.dll new file mode 100755 index 0000000000000000000000000000000000000000..3754489920749c7d58949a7489232a7aa256aaa3 GIT binary patch literal 129024 zcmdqK349#I(Kg(=&7M@{g;SQYsGj&O1uofh&JK;=j8$i0JC3Z&jCZRV#sH68zXMrE2A0xf)R7 zlxk>JN-A!))ayEfi7}TROJ#;)-WOEctW+|Rat+`EBJi}6*Pebd-~)b-HX=^iYUmD= z0ljisu~a;U(WDJDN<;q(c_P0arFy0n*RBtcP-q3sie>$IyL59S*(CVR9Zc8Q9@lT*ZdsnHD zsx^SwZx3WGH8^tN|50qNJ*}pj$}JxO*DAt4$tv|%DSIFdYOG>Y1p$@=0RatDfTuu! z%OL{P1JPeWKxl#ZbOqrE;=u|6LV*;&sUT8I!0~3IctKEc;Xt2|=7#L7){# zad8DvEr?qxh#EmWQbA;iD4|8Jk2u=|fenM8D-3!FwkdV0)t^JIE-*^z^aF%77V#6T zm>>{j+EK&O64qFgmI#v;H4G`2u+>lBq%}d7TQ@8%VU0Cui7@42@DC}Mu+>lBq%}b` z-s&$9%Qi>=Z2+zz#7RKo^29Z^*Q*Z!2IoCwA~_1Jc;}sWw$(HFDZo}u&UPY~N(D&oK5OX;{P7lq z6^W#cbH?hS&N}vhTLi}f_yhft4A;?2&bCQF$BhYb5&&+x)lY#A&cJ9O|Mt>wEEv!T z#B+>9;|WLODVfoD!qIq+plCedXgtSHG@fuYp2H~`PdFOS(G`s+9F6BdiN+I-#&f7e z;|Z7J!N*3x!bb^!NBdbmM940_h><1T3C7Kj;9}CfZR9Q0NwjRj<+2e^MG%cA9F2z% z42dTkjpvAt<|iDDr%s5*6OP7HMMUEXm*c5Br=Y#)FwgQa8tfAK-gUJs`^}KawC(s~ za1FpT$Udrf+f=SSt9C~|GJv2)xT};NAjU1+(DuQ&*@-FfZ^h1 zI*vfm$pG5P&DsIRw40xeCZV=exnR34=0i=m{%AIs1QaoeX;Kgc{zRiH1SR!2-^y_g z2C1YB@T4B#cD|TnAsC}>s~uoix^3b3J`Rc3!~Fz~8Tlh`55{!|ebNNdHjNA0ynngP zL|6f6$l_0h2bs>bJ8ClO!hrUC2tODO2HKOmFalL;{$jA8DgZa3^?X!- zo@1VwY9aWFL5#kK6xjZFM0JvxdZP8gYI~#Q?=&oq6KEI*ZkT)!I8|%`hx`>f8|biw zftJ4yf+Z+H$_FIN?rdcxJ~J0*F-tRR29=o9B!LJ;04YKSj3hgZV>lWIV#{$1N8>p1 zJ1N~LlVOS5gf?n1I{+vxW<&{Iiy3RRH-TE6?m(uS0Nfx^f)6GFg!qzvGu$RIlRp-n zns(aM{2C)R;^*;2E+bOmDri?Cu0Nb_W0Y;;3$2e$gmbsS|D@{du z{}3Rgj=j|PP)7=NNS?G43wB`w)+f20n7^1|3@;mz;H2vxMg;N@u`3W#KEmzgNT?}B z?p8*CK-+O+!E`2vaJc!t+1;oa#FbG$)#D{s#@az0!g+nUWL>Za^0n#=`MzLJK$;-i zUy5{SP$PK8zIMs8(q0I-;ApTn0{)>$lHP^_mFO5fL~N~NAUZ14DPWy~rc#i)h)!u% z=L1G7Dtzi-sfVM~kWY&kHhk(tWXPf}hS>#V03(_*!30nsIe757@Mm$!9yxLR2!fB^USN0p#7yC5j7C zY-xXnZO`@+0aS+DiHem#2QtF(oM1iz!9nmEW}`2ZZBT^(BghR7hG#Gh6$~ZcZE9|s z5-emQ2!)#}EX$^nm#phP74wgcF`Q8>jz24asJq1zK#z~+OzA`eRLl~DZg-xOGPJKu zcXq76F~BmC3ao=>0ndvUAbaui@M3zT-w(qPef1zN!4vRe0VIcArS>bnie#2fhGEAE zW5445@$GTvjez^ncDQN9ngm!WB{jC^)F5c86*&Mm-BYHZJ6yZ74_GT8CcrpyW!$74 z88w;WSX-Sm25TsGoE>0ha<89Uu!Cg?Tm)58b^YW9JLnbk=;ZbOa)hkXk?^x(vddU= zWIA$;!QPfC&)?AJ3Z10_ILN2`rWJ2Rl|u7I@B`st{IH6P95D1WcqOuuJhF;kChlhu zT&~?!>@NPSVoeg!o$##ST;#EWv*G(kfzGguX~hc>t$8)SxF&_9F`YnnM6SJ7^fAO8 zr`g>;}TSEYgb z4!jUItvDeQ(pI#JUj$IR7aodaGi3fStWeX6qqAY!X~j>K!$(`i#{d-n1TP|pZNTqc z4g3;#QT*!d@bS_Q*c`MGG)h@tL>{4WBi2d918P8#^nEnVIITR;l9Z|iA_psw`48huSLOZTL>R(;9UD0bqcs%&vr?c;3{^Yu$~iy)z8X0$4XGDmsA=ZEJE52 z$QzPX;)270HHC@tDD_D%*ui>SlP2a$go6!4qz#60)j3BBBke&%&Y;7UQ_R$3B0dSJ zoJbBay!GM}J9>5pbT*9tPlLhI2(f(~gOC-Qq?%r-=2BKm9U7K;IS@mtVT#~nc&6G5 zm?O^|0eBb12FHP~nis*LOhwy8r;_Q^6!3LK>AfHJNh4%yF0P~42Z6|z9UPB>PUh5= z-bT6G#z_RbM;}4El65i5-^>P{#wsktq&B`iW*e?5wDB0`Z=7+=j=HKEF<-zOP@o=l z!Ca&9!m{+rOoDc>4tQIPvh=n|NGieLc|>w&QRPa#vL&hk$L)QK?%nG;+V8wVSJ3t%H4*%e5pr8lF~ z5D}ataUWrj5?I{8;oz_&_K}v2VKKS5gJl);vl~Ezx?-%r^t=o?y+jGh)79N+`In>E zdLLR-&+nj%n0yK9(hZ;*(bNyJsZ!HkH)M{8eqC~x4}4s zK`Yj}XVxJdi-5C(5^{G!Z<*jF>+-X^MlQFX<-!)$d4e;_~NnR zQ||*ik6^A^bttQQyga1NFG!dm*@8^L@4j9egf|PxyDBJgf;*q(y#VmtDrB(mnAo z8~V@W^S{MxmHw2(5%?3jo-WAed8j7%8Ip^>=XRRgHm!6w5QB$MSCdauOx^EoRM8AO zU+U%_)ZCC}DHfB+LX-%D3v*>WMpMx3qAD(a988RrFlMof<^KcO^?iUsKcs3+>%G{)*@$tBEW*wBb<*tFKCwd_?V6GD=>5v4f8UBd*H{Qe*VloNz5$f z&gQ`4N^nUfxRk+76qkV`7&P7O=P71!zkwIn{$qGe_+tf3__esUsgIz3(Ju+{t2I!a z@Ud*M4b^2DQ<8-?2~1kfhndPAH9G!A1`r;~uj z9U0;zpm9fqI0<9Ba7`0Kz$jf50&1c4u|f|0<1^-$Z)egV1nJ??hUT2k1bV%b!Gv(! zz|>=VAzc%BKO6IdYsUtD4JKK3KQHlwzcVu0Z`<97EM1O4=*O_%hbh}{Mg;8~ma#L+ zXr^9}+A!w)HpD`S^x#s-=32Pv!SYBOZ5n7a`C0x1pkrc-AlDq`+RVys2md#%1|@PQ zZf=MlBuem-!tx7<@oz%n;79PF*IhLeB|~3%r5MQGI=wyInaZlHw4 z#Dbsbax${_F@fdGHRZgBa_s8(z)QTw2VO20tLaCv`wS@-h<%46<_$qaD%SMF&ZzgN zf*9d%qk?i&6Ukp6R-;||Bv|9hJ~A{T#*V&K1!I?Cy)%9sLRSA$&?d_?EG!rn*>~hT zNi6sdiV|Z>-;t5o%8>&saczT*c+=I1-f!)~dW)kj=Fb*lEAXr`%zC5o8m`217)RqZ zT#4r(j>clNKj=HlfM|lN(r&`&EF&|S12M5mR*rm^#E}H_q_CUD+3axlwFKqS3*v5tK|{+6LGKd8FK!EP$dnYveu! z+OZFE=4abTXp4~{_5k`Pt``hiR=8e(EXaBx{%*^Im=phZmIsuHaD6~SjCMy4Ts<6r zl$|7)VKaAKYugy!R58VTX%NQTeR;a-NZHfOFC3}3^rKMEr{xQ@YM2S!71gHCY-FOjl>JAioFbG=pybV%QXB0`@n;_b~izc+eHc z;Q~4G6znh5Ojrx|O-b zKb2Lp|JR2+mjFr!?!*u$0gc-b;v}GPL5P!p#+?-6B%pC03~>?wt`TiM9akUy8k4(l zvVwIJvV)T_TaLxU**mkSsydO_Es;cCvCIKj^W#7g(Uhm{vRjBC;fe#pyV z1#>@+tZdx|4{NONBj&KYxgSRqe~@2sOo*XVC3EzLkP>}~H7!pA;HLUOk?jC~`DtA)m4*Zuy(gTtj3Jn%hxFA|u%F{93NPS{-8Y8fsCL*)guPH>7Jc;`C-zGdoh` zx6;Ni6-gA{rBxTo-dV;wG>u!DigAT$ryZBH|7BqG21Ds92xdyR!_TIi;H$VMQ^D7G zk#Zcl4~n3N^Dkcqy7?;(_AUygZy?Og3Ar8iO^hP2F7S3vkN7jX|j z2+<=DjB|aGj}^xT4oN|$CcnkMmmD~YMSPc`=Mb{&!gly=m5R>}D}Je5F;Sc7>58XG#d|aueh#k~%P>^@ z6V~LQrXL~D#_Bxc(3)0gXE& z#7RKo211+!G;ULflK^nJ_W5cv3HGTb7yP-09iOltX(0MoqLU6(Z+bW3Asb8G5Q!PDpvcx7x|ddDd2QB>lngsOpfTE#`D;#U9V1^f_>xBN*myb>$pX z>(vErxw}5*+9}kT*w&>L8Rhb4jlLM{wkGFG ze+Nl8;8c29t_`I>@#?=$LXnR9Esc^xilR|0hA&jnn+U_C{k^1o?{t4K>GXNg>6FXE zW!)Vc_&o{lC$U(wFXD>(F_7$IqM3rz6wndMX|wy8N=~V8p0uH~Dt*smD>zdT>jxbFK9sXHHq6{Xwoga&#fCfzF?C>_f-SIVVf9hUocxm=!$num0|qYd$(3Z-ac z8*3<-u}p7z3TV4fdRp>1c?V}re~xf6c!m*N8;B7= zd-n?PUF-`92!Hyo3~>_BxKD*R2?(xS#+EQn0y_PtL!1OO?y3+c0gbyl#7RKowuU$f z2+p5?)?sWV)F5E~8ZL$e;SirZ2mlc;K80Sme(*ZvZ49HHB??i$lxu@dGI@0I1%byD zUy&@=Bg-c7Za_$Eor$Qe^emV)NYo~JK4z6EehS{;wE#g&jXDE#?8Sb7hH>3|x`XqX z(cf^k*3o2sbGrz9A`Tn3v0hGK}d4l$uS+Dc-D;5+1ba7FL+T{kv+l80B=K z>`jz#%GyjIY-dZxO3KmyPM;Me^(pAF3=0bivpM@&1r0Um6VYu>0fJ{kknRNe7S}!X z9AAy?W8_@;4Af(u!|BAD6-Cv9`gF&9gdKTiX2;eA?4|;nN+B=)l|3QiZUf%{)b_T= z7eT`I$7;8;J#wgf1zZs>v^_}grGUYTGQFDsTfr+N;WzNo9R~steK2pwcF}e;gPl+^ zBhY*^X$DV5e1xw|dU+oc4ObjDr@}E8f7Blfah(O)$M!*2 zOxbi}m~3)68Bv1w(@gQ%Fhwg{GhiQ*8X;Bc<{xeMbcb&EoGPeNb&tY0jDdYX?IjNfcZQw-7@4MAT%<(k3yX@39bV! z)SWm}0-?o@RHY2q68ae}%zIwFYvnKP+6g(VOV$-;k2itdi!pAiT&rN`iSPAeAftoI z8K8-?5%lB0bMmImMwyt$c3rYAcFDRKoTu|`c~_q&wl9s@ml_;qMvN8AOD{pv3ZUmG zbv9CiFW9?#dld9#Red_2vHIEMU=K7tYr;6=#!X@!u_u5T6!hXD6e%dsjMJD*aBmQXG+d*Gio_XS+(ZDDSw^ zeL+mRDJ8s~{5S+8?&AoGn@c)g(w~M%eSXOuqfQ!H2<#*MkfUh{cy70LKyPC&Tbi~v zOCF(_bATVhTiwhE2el3FCvc-j^P0?15qBcDFeK#JjNb}@PV^VdgN-K>3B;TXbp>hr#Xyn{=Ja?F!52gHHmh+H(-NXA#H*+>PrscdW zayw||jzw-Lg;ZQ&rQ7jV%lWD0O0!<}U3ptwSG^r?v+u#%p@Q<&a$Pk>P-?vzEhx1^ z1*Ilh?g#_rUB=G{sWT&wHk_dtX%JSAjKD$f)$g_sC(EhhpKu17t2X`7;_RYZUC46<*pgQ zR@p(<{I_KaX6yg|Wr}miNHT?E$6BU-7~0*JtSc3O9QXoeHmje0ENGx`Y9JWR$j<|f z`y5t31CfYct{<33lEKWDa~E52JrFuAkK13IW73x2!Ko&hY&vsAkAv7`c3VF$fN2qr znY}xp;%(*eneYfeGy#+kCP9wq5#zzO25%&1iJaEM-R^mR$8N(Ul^e*DPB=?uLtK?=U7LH1D3!~dL);-WqP*8;Z*F67zVMpIHS4h6kk zrQ1|cHzCczl{OhUa2jWDL0McD_IV~*JRM=khj48?%Fu?bHZeo4X(@6#CG*W;W(dqL zM$9}!IP$r8L@W}fk%>qn*%MrE^GCV(Fx=vF&uEB9FV>GC=Wi1>TikgVD6ah zSOC2>UVVRL9*of}7&G3C?SG#I^TQ%4+W`MlEQq%MMzrhZX!}Qx)c$&PEz)3bBOJS- zoR8M+KR+b?Uuu7}CM@b@+y+e;8mU5W){$Gt#jl{`a`(Ou0gtxrEYM6D59NDqLs&_4 z43AeoM4CglZ(Dpi5LozFQP6VU{`js_1LXh~rwUKIiq8xQx4_-Jmb z`)8QpJv*0-sDqSI2dSt!NDi4Ne}xKOiSP;cobG}>!F$hgsE#^6dhTwv!Q=ELSR8Mg zYsC`!44pwBeIM`s-;GjmdhIE&BxnYqIyuiuNj{#(*cEB#iVU8E#9}947y7rzp%dwy z`W9r?Q(w57EaguCS{JVq2NQv4Q#iVdUUsc!zP0XR+}Wub_!8)}3In&2T&x`&#Wo)< z^^TM@h8vd!ED*Vw4O9$Gz7A_~1G zr{2L{T+V3;LGoITa%;KI>!_te7-Xc#e%~ zZlG)4*fHrRd-GPkS1rl9e~B)D0OxQ&@*;HgqH?)~zS2TW$ZqKn`01FwsfX=sx3(&u ziRn8PO}q49jj0Nmn7(7%o9(y(a4aSFF*w4T+PkS{5$K%7r5-V`wL5$rp3{w+8bmIi zRbw!{P3|%zpdr$H<|nUIEG6EZ23Xuu?#N303CXq=FA;#{=AQ*x{R`-wL#i=hB)i4l zk3`8dl1k28ik4T(*$L%1!l0<=4HuveXvh(g4VTd2Lo1(4bg-eiBfNyJ$V+VAiem-K za#*@Jx;LHyO_mPp!N_NocSpZ0F87Ot`w$Js=pl8=g!> z@@7|rJgi}J=Z{6O$-e`J@-J?<7k_Ww&EhgI4i3E+6XXAHuuyX+s{j5Srcz&C3C1iL zB9oC0d0%oD_7o3<$W1sId`?XCQ?JW&9(H~v@234bG;V0#6}^7(v6$Q@KaTs2di!P& zCOywTC1lOH6!bSWySQnW?!auMAmeGLFx#alBD}ftRceS##~L7#_DpKJB;J;o#fnPw zm*vGbZ?K!XSFGj;POZ!(fbkMC1A2+3<~3QICW0>W;!gMDC@O^+kdlg~p-z!4%SoNM zl}%0By_sZw)@CH*Bd*ZLak=k*gr+f{Mvjb7nJgfsp%P(3WwrwvLZ$4P)SD^1SI@?n z?#soI0=j1^kQUU9P`gInvjycy1L6pK_KDO-$bbV+GPF~6Z#I>mbt5~092&81 zKH30!6KX!L%Rq1JSBI@GtD4nFsmm#Js*Noxj6K2K4*8hh}DWWRalcv zb#jz@@zjb=?f}uGq&y~RQPQyS9H?o~MibId$4N8kCHx~W$+X50_%H&sRgSKz7dJG) z#niCsH{{$XrlEK9hFsbZw=9?OGD3PT+c5=_ix*REsm-XsUyI0qX=GUS5bzYs9>3$JOyliO+8l20;yc+*Zgk;Li)$0Ri zrk?tke;yOnd-YzVKa0Tzbp>*R0UVhdiZ@=?S+_Oao<#UC&2oWM1K% z6}*Q0%;!*a2MyCORer09EQo-0zrX~Xd*Wt_)pL)jL*^cxHLO+7JsQ%lfYX+Bf+DjF zj0njTIZGJgl3oGCX|f6lJqjpiLR*+3ar4Y^Q{q8ayPFGE8fm9uRJ zeVC@E3DW?7G&&SBDAX!NI*ceRlMxVt90XLeN97z-h*K$~uq_wrw@gOk`O`uXHF zqGL^yw2Acf7Oc{c#@$$a9YJ>!1`dw?;B-M!#BWGV6wX36DRpJG*{o(8JS9txTwGrg zF})DU*-1UBduU1P((;?Nf!;bnos{ml9C-b5bZiG;BKD60y`Gkz{N^Ti4%dlg_#!TR z9X=V4Lu3@tXwqI;z+41tKTP7qGp7DoS3{ygTDZ6<({e5%QhI-?4HP+YDvoc%uIwT2 zgD}@Y3*p#ctb_2bt)x7ceiW$F{h>!>q4#5?u{aH7@vRs*^Clc<=uLM}d*i`Kj%Y`x znjWT-T46uIn90w43MA?CANA@Z=(7*7&$jOgStDR^V^-J&SxC7&uEZL)>oiNcEbd

?48zsAcuH!(@ZXxEwIt&-756Vg$=O(N94<0v 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 z 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

noCxlX z5QF?-TJ6wLJ%pK_>}WI3_tA|WM8F2`TyIkleD~tjM5ugi*w@jFTO$-1u+%ug0rQlo zfRi63MR#jK#{`JRQVZvGw2BVAO@ncG6=oP+TT4z?Mq^Xgu&C|`pwGBDc;g2>jgBG8 z(EQ?&PUOZu^pY4n(&2AHk#Jj!GX3%x9ES5Vs0hHrE)GBe5r2E2lVXt|)saLIVA-)z zO&jd-c$8K@+)3dJ>3t9Ld@HnB9v-g8N%5i^(mFa%{Wz)1i-eHxX(AC04wz+df>W#g zxY7lYa8ON%0PFoQ9^MBmGCDRqfyRTb&6cOI zVp-DzEG3m;C~DH5Bup3w^vH|W{tXSH!S6h^2?Ja7$qFULx|Nf~@ynHvSahBC>v(ix;p6+C^hj@-wHVj{I5^JP~R?hl*61KRnUv^v&*yUP^CmY}pb6P#XD>&seSu-5a~^5#UDy##C9wE_i-m$7K3J{qjzFCj zFUPWxo@#CYD4};V;JVRju^Pur_=)m!$F{O4bao{4w7<<0Ua`Q?K)VfE7sYjJ;Q~B0 z-pd&d?`1kMx5Ou*?zi&euC@US2IZ$EfL-M0WX1t5XeZ@r&{OyR5SL2p9Q$09w$S=P zHPH~#^2t5y^6x$N2_ox5Wg|tLleM|*&5!oE)}gH~#*(NxQ3nc;uOQy`hSf2jlDq0j z>lJJy@SY=kSV9nVz7*yfz3|r+g0~*!`qeOW;ES-R`XP!N8~KH=tH!;0l0AN*^`0+X z9NXutr&8mk1PPiKw#WOsY91eGX{or76{KUCtNNxSOGT6i#n5G15{Ba0;$YR0+CYAl z&b7}bYh=}drIzZ|_r9zkhaE8yTuEFDaPAzFle6qyfJJjiKfsOYskFt{w6Zdcx5+?p z3Rdjam0sK^p@)2e(l`>}B?jz9#K;U!MCx9e(Wd?1gfw$AtfY))wx9Unk% z9YQTyTtUd>JnX2@%T9FDQPyja$WQ@ISf^ichns;|8dII=EgI0kKO@;IhF1>Tc{ zW`%H%2#;34jfhSxQvxQR4!nX02btEJK%6M1bZ%tCzl`5_>x7awiVs;TqS*;T;oeq$ z65H`B^DXOGfoE+h{LQclIR2&{WqvQ-355HaP4sdXetn&OQ;!p~KKdIgYePy4(hD9vLAGyRC?$9O}Utpy{>{bqK5G(Q9 z8Iwm7@(bYqGW<3nh8XJ3123pU9!*Fm(%t^B@{1J+@uDUjC>i0oCl7DnT2Q@%IB<^6 zErQ&rj+iEqV=JE3i>?Kkk*Mx%F)eib8;};}NUljlh*Wo7G?%Ex)D|(;9Y(3Je=uPU zsGS#an!%6Q7BAy^Z669yIOYk-{I=-@hpm@Cwp*zk75rLtBdrx5XAXmt8kE&=KK z5mM=isRlu5?^fqgo=PC4N>^i&~ zTl9DHKn#qohv-8+8W6%a8@2E=FPcRL@(F@cD`2BTz8T!}0etHsLwpDC)V>72ezac4 z^8#JOt?;9*8F(8vNve*a``O6VkQStfAm6CEavl5v(=I~VQ3pSIm!wVi;slt*bHPda zp9}dXj<&+3Yfh3v(%+0)g3q2ag&0!DoXEwOG=liQ68V7BsTbm_AWOj$`a(HDFk zBh2C|+T#YnZvhbQow43^n`UR#`xQHY1d1SbF zDVDhV)six58S%i)iwv~i>8BjzOtqr2y(pRbX*FD7ciuDWnFo|x1|&-N-YB@K&KdBf zo`wkxF3KSU^7Y8KrdON!m~ z73=!WMj=!^3Z|wmKxY=?k7zDlrZ*QIUMJ|oEf;|{;Dan*rwCXi(N$D14eAJ7dT=}C zSjv@})q(CHp{IJRMm?x|THq#SMrw;#N@|5@GyeM#qQ#g7c?N1qoz-cCiP+QxKU`tr zJSlby!l>a|fscYaUU)>;#^|w6a-l0lqr&g%|7eNH!}oYj;bv-WPSv$Wj~?3-F}5iV zv6z}b5@E^HBok)o#~B>+JNOFDB|@A{qs=`BWtb*7lGcHS5)*VyeQ0Pq8jM+LMLm~C zU3wyo)*Bn#^6}NB;1fq#@erFyyAs9h) zAPER{qI(1_Gb|#7N!?B3p^h27!cbi$V&xi+Lt{y+C>nj1^3Wrxw=t8!v1t*|$wH*Z zSgiV>1(6<~#6(MDPU|sRU1=rZjzN7O<`g5GR%WC;tl3#>UQ%AT?vJqO(V*vn z3?9L4s2`OrR(+j(oSHf9Cp}>0Lapjuxly-~9&$8^I716atKppPrZ|c1`njb5sGuf} zZ1t#KVvyX>;*N@rX9aZug~fJ&HGDE4C0Z7BZdyKDxfwou6pWM$EdxnPC?C@FB+)df z(sWDmi(B^Gg&}-6Ol0-mEH|5k*J@LIt$OR66SqtYS8R8q7F|CmMWx#CH8YaUWsn3~ z!Rhq|4bElUD4I?vG0o95RQ1GVtq1flwqok(CU#(3D}@v4?;+0Kf%=x12x(hnF~AA6 z))q8^qUBZVIbuS9YfBPFT|iysCvOjHPxuD`IC>jF0K8OB^9NaoLu(=kli# z*WLRlXPi(=iNm@)+N;r8l~Z9P&}uq*9ZB{5HvTN_Ad0QF#mA23mnA}RIgE7lR|9i0 zD*uJCbAz6X+d1Y%s4wZ0Fj_~vkIh?a9!obm928x*EVA`Ci5;zmXw*1*+*uTp5+fEl z)uizkzY4QhNjh9BXsS}gjCA*=#>uI-MS}QVdL+nm2;FSj<%}12-veVuRM2wBK|ZOERyO8a0*{ht$wKm-NtXLif-j zNXfFeFsdUdt_&=C^|-bcq}F)SYw;CkZLe#qr&U@tP+wcK4u$DG1noFz43i$GU#$|Y zS&noCE^#A_G>YcWa`2SeN)s^Emr{^2)PjIpBEVEbYyUR`UsRmHT&J;3F?Fk3;ag(z zr*N9ts9fUG1bmq>ACq=IT=`gY5~c4m63277p2P_nNrZ6uA1+#B=AnhOCe8)_sFqrO z^SF)en4Lw}73HV|buF=k5>W%FqX@@O;BMKo7HZCtFIvUvxx?ACQgf*!YBH5TB{>R9 z)LFwndYf*U3wo39_;r^a%+ztbJ+1t2^3-BXwRe`jVoC2gX@&0?L;kB;o*-{hgS60Owk2xxn&S0&o`rX_>;>uxg*Dhi3Mu{f<(RAFdW;#1D` z_@L)vGRh3pio{y~igZh{Sd05o$cUCjS|1DV|K2omHtI%$$uj9gU<4sk(sB%p=~&TJ zva6b9(=szQBTTQ`*(})c)p2NuI~zwm5z?}OIAdvaz53D<9C4At^!l6(NzHH*Uo1nR z=radgBSRKW-M~q5mkZIS7G@^+o))_l4GXdGJmi7LB#{f%fO;mnY*KtQf$QyXEn-AZ z%v4uBQEL@QN>unP=_g*$LP~Rq@~8UJV#89#)SJDxnpCHig4(V3Mr0=lLos1ZcfnVc za`L?OmYs5TRI)4g#A+x;(N~XY;*aor2gb_`HkG+I?{g7GQ`$`Yi6Jz3)uXP~)X%<| z(Y|#^VHssjy73gF6#OAx)4F}7DMwGOdSPVZCT7q^XQErT5}(}5tOn#j{BoxjDS9eK zOZt$pZyA0kf{*z^oT}|ZuH9agshG5+vqX+I6-S4Wxvv>|kn{%1nc%LYmSXp!4)6X% ze3yA}@>j=?U1*83+-a;G4;f1+XPV|3?D0X<9F^Y=2@+9d^`0);M2<9xWbP3j`s)wP zqz#0*Fck9E^Rx;WYm3ouEI^N4E|tZ=<66jg=eM^DY_Og=JwGpahm?s3kOrT6l*yl`dTiu$1?+e6QD1s{g(Aj zOs<6Fko<)3UoR8LCSlFK6h>p1wB5yU<-sjx*2QUlXLC%ly#O(-1s=_nE8JUOd}%1Y z#CQ%>Lbj}VNzX52Ta2nlX?dIxp$79w8RC(wPr~1HEQRv%I}!gUgUeI!*=a)7pP1TP zZEB&VNS;Wttq~tp^4Yzm(&OqY)0X#^wieu{<($@;x=e~kE2Ip3!jm*>7%^y^b03@) z+ji=Kd|pnUtarp&U$^uaUeD|;oz>#_y2qq0{hy}prNuL2TbzNToD=nSJ}-i)=cjOA z_ulR@$Wt9gurt%qf;_6Hi+ij2|D?C{2y<488JMd{u2*0Tl7+n7j0T#G$d`LJH#&}9 zNmAYPXs7v6Z;kOl0oEwxJbLwpNVkP#MISV1SrVDOwIiyf>GAxXXRik^>L`TLCclBsWLt)&mD zm=_a!>+k4zF)b>H&$k9z&@z+s-q&1KuNv*E)5es4YAyIca%;~`XZ(NdoqKFt)t$%h z-0^tsj6FA=>lgyegh>d95R&+vxDZ;$dDu>3$BCW9*;X`;?Ia}56X$`7I%6djv|$BH zkV;E;i&V5AmECrC(@iB%1r^#-(N)=Pt5nOjEG=7A>MmuaO3OdXe!l0-^~~4~p;cGv z?#AP}k8^(KcYd#P&hMPxxp#7eBWI?DZD46Q%664QXcU(`?PxwuAAW?Hix#L4bF_Yv z!f9LF{-b3HaHuJQ1m#xjLMtwzxo&f^kZQfhX$GV z?BIv4ck$a`yYX~rDbeM8`CaPRF3secX4}b_@gLM5Sx-YftnReT2ZufCy(VY_vVyRc zhAR`LAod7csUOZc_wbe9bGo9B2h*lrQe}ODwM#(i3si47+p$ZFVYpH&A<7XhN2j8dwj6}Y{eR{`6>QFOHMQJ$cifs|4#1-fpfWD~GWK)3U0F%+)?QoN|VIMLl6 zU<74pUB#7F&&Ej;rB31fRzP@Ik7N;?4nC5HR4k3ICQY@;sHOTQ;Kf@bcQQc?K&n!v zKC1x`QW0Y3a)5!H6L!5-mqke`gF}9bIYFV~z*i~DxE(T=L zVyw-OD%I`u^sYLeP!nf6MBI+eZ zrH=q5mC3YJLbTZ$q&Cqh>ZDrHsE=@qS{c65WcuP?3Y1{Qty-O$!D{lQ1}RaB5-z2w z)sK@V@!KZQ2DB6>vy$|r78%eece)mCnX8OahNvD%1}*ba4QkKgL=seswmMX+mgy+n z_EyrB_!g|RDif0V3xlNOB;-J>(U4V>q?XdP90-%n0*YM{x4Cqii;@gZnm}6@+;*nA zvrYsM4LRp-hAO))XFY@2J?hG-VY;@PLgyr0>XajBV+KxH9I-sL6yPaKosI&QFO`%a zD|ZQ&4-b_~fpU>F7@uH3)9|K2Nc;*@X$jaa2x$q(x=QeLi-vu>`zl<3vGKNXq@kgT z2x$JL&?BA=tdUJ)sjcV;WAUh&)mqH7+~0O5mD# z=`3=N7dGIGWvf<0CKxZqV zyTDSmn17S7+PdzgF6|Eqoh;{;66VrWat6#$sFBKAtSMQ%rLtN=6`Xp$QjD{*4UVdf zuDK1W!o7!DYQ6g6>l);v2?mRzpLu!<{%Q~YtAdC zbc(J?`2)t&?KGW57sm;{{P-%LUaIfp%$|2XM<^xu&G^3u@P-vl*$~K8Uy6iYL8{E^rgMTkxGHP{;tSMf7yS>MEerDX(Q7xQT9Z zJJ5~PGz{bp(zLtq5Oi&Xqh0vs>$sXkpl$f-rwBr-<30}D4q(LHX1>dS7%?SRLun^a zgTS^x`)2Ci2c9i(v<*z#xaN0$p-GSjG4e?u#=$oPB~9Gz=B!3CYA|cKo}hN#cmt1v zhO+%gy&YWL@XAZcpk@Rrd%?O5zSoj+1`2kWnZrILw9nN00Ceqx4#~F@TwUA^b2kj! z4)AELdB|*tJqcY3pl*e#Gw?WQcvrk=5~{nw+`$#^4FX3qaA!z82?Z;`p<(D4nE2%i z=-2{|qd-gIgOuT^cci)jOv^ZLq|_!F zIZyDJL_&Lk+d_?P(6fU(9`7Pu@?D42hpDX#h!OZ)2HqwpI8B~ry?x~FqPElMXAB)Q z!Lz!iVdTA)Qr*zL-#|+;qPr1}_8JQNs9o|tOj;YYZ=#N7@NS0IeNfwHn$iibdX1bl z2k)ew0W_tVm$Y$)>j83ys7qRqC%E0DAEGYVZ3n!l&+b8n$H3hT{3a;qKwgbV=K)je zB$Oy-(q*J77wHu8+d(bE@F5@J$dbWZ00i<>xW%{6DFT5WE=N3xvatiY9ho<#duz2sJ#3}0PCr9l=vXR~t zSKUfkML64_sSn(m^{(P58EwR#hsYTQas%)q)V7k;-G;YuQU;OYL9obbc7kh=>rPVE zf@K-JZ9r%DK}9b-Z-WLom4`X*1J5#WOAiN0SKrl4>0Wr<4i##L%P6biz7g4JK-Y!? z$@o4vJOflWDe4Kjz$2GJGLU`tgQXLQ-CV7Mk|W?-Wh}0p^EU3(OEiIPANWQL1?uMx zqBYH)C6#UPvWu^rUf$pP>-sS$-3LbAn?p%C%l8>M$fCue9M;{& zBHKw>O^WDg1fKV8aHZLtW?ub#`>@vmWYdG(HXEzuSI?=fnH;S{s<$5}Ph0)_v4(Mu z4^aOJY8r;>7O0cGw1VLXv@E0c-ROKfSTu6Tb>55~wJl@}oeY9kJ?wrU8p&V7$2t3N zS^}~kb(31`GOdLgngV(Q9@m3IOGj- z{lP=t5VhE$QHtCK>!(N=fX#K7g>7saINMO;Zj7K029kz0Et~B@b!||whn%&rr!Kw| zmNf{8d48V?j>Uw}}0gv1OVI2U62BB7R z`#4LrS}ImIw-yRycf#sB@B(eoATp)B@#@f!1Kw3x;7Rc!2byP`(Wcc7XX5UxlkCjUKmB zRF>TJhAH3vEcjoJaIk|&{94N7x1b#*dL*_<>m1crm)Y@)g#K;7w2?Z@w;#*ckA-eV3!9){L;nD{xqMuc)o$w7%8?S<;vEr;b^JrJSx_L(2iq))hDgHC<4yR@V>p0K*v6oQ5hrb*2t?H_{k_2Q~X7R1Z>m5-h#QL=9atZq46inLEL^ z5={MIQk&q_h~zecc_-Y;?T|0L8W^nvv|>5x6x;anYp1{*qULt$>IaXyEX`8YNs0C@ zFh~nK!E+FbG%!kPz2qICv>c^P;L~v1Yp}}|kY)B_8=CK{8&hYv5#H1}tCOCDLwV>& zDA@#88W@HtJqq`|-1Smp*l#VTrao%CdavcgH4|XwlG6Mr+?e6Cgn@D!NDsH8@WZdv zuc_rqU@JX;r)eX6orEi`{p^I=olw^er+a{IguY2Q)Fw^d6-bSTSp}$^nG`9xsWP>K zu8D9?Q`+un_pHy{B3C)fu~TTRK9oOKr1@28emKY6olQffnO~8*gIA`Y9QyZC|E!>P z<@TDz#vV%B0xg9+33x*}B^C0!Nq2G+Z0NijT_~(0_uWZX&i2^Kv}|Td_`K*`JBH`h zh-^grJx@`SmK1(F9XLEZ8*b|j^*ocN((^;VV;w22%V?6I&16nXNx$l6)C-7yS^LcG zVK!ImH|Ktrn2eSIwE(J>82KOvXfpEdH0RWCb&TrO)Fx?E>gdkUytG)S1v+&S@)PB8 zt#tIrBD-Vwi{_k&_qPvxe8&x~Z$3PIL8>2fB0<9UzV^|3Kb`(z@*`C_Cukr&QAH``3&XL`L9=t)NCd$4F&n9r4n=! zqq*k43GR9dRZA7V>*d^fx8A82&-oVta}5PA0p$hxSEn^sjV0v2Cxghwe9GoukD%#D z@L-Ta0r?+B46hzZ>HLpbu zs>7jBAx+t!kn#*C>B1s|xUf`63fW{X$}wG7o^cblaFBmt9x__!1l`lvk|2LUbqA?v zb-j~n2nwTB;uyZ8q(u0-e4`1*mY~ptY~tZL=Snu=eWaM~7SBrmftl-f`#=)xkxn{@jS1_ zanpq!q|84ymjZ^XR6;T@Y)Kae(j{vVJ+v(Zp7cGVEP zuvp~y$jxtTeiJ_<$J$=2TgNO<*>e_&-{rN%R6~sj^n#m*_ zY4yc);niq0ZAjXPC9oDRTklWSt(bug@!*{_U?I$_VR5_S_8vPeF z`(}dfHeGmID9ky?zlpL7zm!n{@A;mwFH8SWFz+ahUx3{RMuR_8+7Go?5F`ImyQTaN+#1&OC>vrF_Mjb@_%|$ zd~NxHczgLx=!ac>OK$Vki-o%ztm}5dxx2E6ecyxP5S4ExsEi$G+p%W0H-^tT%r3C7 z9PjK0S2E?uUZ7xI+FUtMd6XmM=DKnKc~5qq?uznc z%{vss6KWe9nz;qLLI-n$%jFAqfN7oj#>yHL zmekAN`1uWA_@}mKzyEl0;(I$k(bDlZw|((aedDpW&i#4vJ1@Qb_io=8mgXNi^dpu9 ziA(sbe42BRiYrEQJ{T*WCz2*3$iEUCW9eL3`B!{ayifB@@Fn!&)|!=WyF%>Na1+Lv zs)*>s67i}a5j6P0BGw*>HpSiG*0OL{JQCcx5Rj#%G%eIyZ1z|cXFWX?CoB}kwg_1f zSu^X@RktfDbvqSBZ+Cp%rMPe@6Qp#gt){}-pf=8F68huusBTSUCqYR-5(Hut?~2B4 zz$XzrsFXx7k&b&of_Q=N`2?9BA$k?pDs>{LWrdiilVleIL;mwBkbl}N#pj>)%uSGg zt_H^P&j*u=P=$%-K_O5-On9T#i578jirccoRn4kHniYs zP1;7Z(&U+N141gsxZ*^*w4xp4FHi(bT%AW_>ryPL2kW>AM#+n@(42q8LptcVU}Jvk zYFU%-4k0KrDr(N_a6xq|GRE1yL)hzorOqXyx5bNrqX4tYpC6&wlbG@ zCI1|PBiBcu`R4@NEwiKI3nntEYFGh>F|r#BuY4Zr_f+CnYOXOSON$^_8;J$XiK<_RYp9O}JA)9_3&nm|R+2J!(w;A$#)>v?B0JM!Juh<3mK?(IL2=tD`Mg`%K2G0DFpi zS6JV$rQa~p%)em*OZhiU@i&lnZM76b|Ar|RQc^F?>$P-YjnQ2PHl8Fng|G-~al>^| zH~Ak=vvG+lOT;DB_Y@W+{;(kRY)={O>6V6N*m=ql^pqjtscQNI!dhruZ3?__sU9<~ zNEI1aD-z@)S!}<6)F`b8z9b$C65-92&UBST&j{isF$qQr0=eow4PHO4hOG*U?OMD^ zyJ`@ZYT_|u5)?kcztMS*F9O*$q4=x`_@Z&5Yy^I#`DfwW7}I{P5e#V1&L!1bm<$SI z*;sfv0SZcx8fFs=E))n}s&6!*-|~UcPn*Psvfyf5!yZw`l;y-``SVpe9O&%Wll2$O zPPE_&${LigRmCX9DXNYSoJL|cbABi`duxxTw@PSuUTXTgI&Gl{*gOzc9+SN;WpFMH z%~trcu%vvk5N=_ijj5A3WR6G4Lc!CSB8A(^5gx;ozBCvwg(KfqAf#pDs&brQk->R? zie^*le$?!qF-BQqeV5%d|6f?V;^)=Oh*s8Um4S4_E=V~zYAXz-+Rcpn_ZrBmHmCx zuSeZyQaV>%dUlTASBE17cJ<1h5%aj<4kI0fL=>}H!zMDl{3`s~7jWrSWZ^S-Yk(Rv zF)hVR4;dV@U*$7c3}OhQ9v9ZLtM(b#cBG;QsawIKoy;A`=t{CnvM*Hn*$3TLKhmUr z=u-5Tzhz$!|0p!1N1SX7cQM=Ftn63LDSK-Hg1}qG=g8`tpn)W-=niXa7k?R>R1?Tw zW{-y#i%0GD6zy&?TL|!;*|9>m>SYt2hmEpj$E!)m_|26DXUfha%wo~lzbMx7mHP0{F9oBCxsMz6<&^>0;qB2y%-M<)C$HDHlVv1H;h6F=EX~+B$0w}!ptHZEX|A8cyib-(>Od@jhTuH8%@xtJmFbjFPT(k zu`b3Mi=M)`nBjG?jF-?TI^T|>^L4$zUN6vf#$IRC%6z5+`Co_L)0-?1FxF?#$(tBz zx{x!Vc{W=aFBwqH+_mir2>wlaVLmRhvFl5wWnU_KU3o4pnVnX4Qx+4C9^uoLEbwvC zKckzy!ZSB;jQ2Qw{EIX;{o&7P=9l$xQAyCAs#^9|8N_Cb*7Q|fJ!nlf8@Gz*I=Rq= zI{uk-^N&MDCjX`mrSNb3kUDc@AD8$R3pqrABX2!OE}k|iX7;Jc6cr|)K4%i@Vt!k=MF4fc`3c1qP)FR`U z9+NXT36ZqlXR0`1)EMo>EQ8RzxO7(9;)*$kdrDC|b1DuI9b6r>?-(gPTddVCBv8Fy zt0_w8h*Et*O9aN@lt$7L>Zf$b>u^?whZ-VI-MX=p{BYHQ!(*c>`a37@=eH$pi#Ut= zkB%L-KUSABskzMuMvn8-%enC*$8#(C_(4PG`iK*h3Ii~4fFJDQrzs-NlIfod%f0+u zZZ=Sk-x=rKL@{kwaB3sGq;o~1J`Nj6Sw&$Qzs&ch*M>L zwa|I^o!!0fOkM7N@sB_D&Xe!HaPHvQb*~=()m^{5Wkc01?WwnaI`l{9e)Fa8F4!OW z$v=PY3IFJ8>2I|Bn(4>ARnrzvS-8<>zkxMc3FZD}MCIm#KVs=p4YmUvmS8oH;^w@z4KpMJh$IsVNU$|m-(yWsFn8e zzjfS1z^a{&8}Oa=Tu%?4yk7O8za?6a=efA>T_*O&D(sv<`JZ;aR`s7CjX;y0e$kF9 zJsv$1(+>=c-gBdO#OS>{dZUfQV<;|Vw^CAj>?WCo+z&PK=EIqX!~8^YsRynLD7}zY zPu84)bGtW_Y@S@x1}PoOUkkPwI_%q5v~9}5rDxT5H9RYjZ@BqYI1V9|2+!Ktm$d1T zcs+b`#&EC4a_G?JNXt3T!O4fAGsj#@lA>D!Ui3;McJ^X-50)sN3*St7Hya$GPEtSr=nw#JDrUZ9DDj+(m@$U-m9&?^%3deKmBdTFO-ma-%J6DYDU zy=`R$dNj{b!7+~BwC&8a0*CowIQ!IDR@nf2KUlP}RhFmuU&yEKMB&`FQ7)qu*oIzh rpuanfJ(hH9Eq@d|nnNCE1D?2bj7^%0@ Date: Wed, 25 Apr 2012 10:05:41 -0400 Subject: [PATCH 42/87] Some more handlers added/converted --- .../IntegrationService/IntegrationService.cs | 54 +++++++++++++++---- .../IntegrationService/PluginManager.cs | 51 +++++++++++------- 2 files changed, 75 insertions(+), 30 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 97286595c5..b761411b1b 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -166,7 +166,9 @@ namespace OpenSim.Services.IntegrationService s.AddRange(result.Keys); s.Sort(); - foreach (string k in s) + var list = result.Keys.ToList(); + list.Sort(); + foreach (var k in list) { Dictionary plugin = (Dictionary)result[k]; bool enabled = (bool)plugin["enabled"]; @@ -181,10 +183,20 @@ namespace OpenSim.Services.IntegrationService // List available plugins on registered repositories private void HandleConsoleListAvailablePlugin(string module, string[] cmd) { - ArrayList list = m_PluginManager.ListAvailable(); - foreach (string entry in list) - MainConsole.Instance.Output(entry); + Dictionary result = new Dictionary(); + m_PluginManager.ListAvailable(out result); + var list = result.Keys.ToList(); + list.Sort(); + foreach (var k in list) + { + // name, version, repository + Dictionary plugin = (Dictionary)result[k]; + MainConsole.Instance.OutputFormat("{0} rev. {1} {2}", + plugin["name"], + plugin["version"], + plugin["repository"]); + } return; } @@ -244,9 +256,23 @@ namespace OpenSim.Services.IntegrationService // List repositories private void HandleConsoleListRepos(string module, string[] cmd) { - ArrayList list = m_PluginManager.ListRepositories(); - foreach (string entry in list) - MainConsole.Instance.Output(entry); + Dictionary result = new Dictionary(); + m_PluginManager.ListRepositories(out result); + + var list = result.Keys.ToList(); + list.Sort(); + foreach (var k in list) + { + Dictionary repo = (Dictionary)result[k]; + bool enabled = (bool)repo["enabled"]; + MainConsole.Instance.OutputFormat("{0}) {1} {2}", + k, + enabled == true ? "[ ]" : "[X]", + repo["name"], repo["url"]); + } + //ArrayList list = m_PluginManager.ListRepositories(); + //foreach (string entry in list) + // MainConsole.Instance.Output(entry); return; } @@ -277,9 +303,12 @@ namespace OpenSim.Services.IntegrationService #endregion #region IIntegrationService implementation - public byte[] HandleWebListRepositories (OSDMap request) + public byte[] HandleWebListRepositories(OSDMap request) { - return Ux.FailureResult("Not Implemented"); + Dictionary result = new Dictionary(); + m_PluginManager.ListRepositories(out result); + string json = LitJson.JsonMapper.ToJson(result); + return Ux.DocToBytes(json); } public byte[] HandleWebAddRepository (OSDMap request) @@ -315,9 +344,12 @@ namespace OpenSim.Services.IntegrationService return Ux.FailureResult("Not Implemented"); } - public byte[] HandleWebListAvailablePlugins (OSDMap request) + public byte[] HandleWebListAvailablePlugins(OSDMap request) { - return Ux.FailureResult("Not Implemented"); + Dictionary result = new Dictionary(); + m_PluginManager.ListAvailable(out result); + string json = LitJson.JsonMapper.ToJson(result); + return Ux.DocToBytes(json); } public byte[] HandleWebInstallPlugin (OSDMap request) diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index 4b18ea514a..4ea99b4f66 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -133,33 +133,37 @@ namespace OpenSim.Services.IntegrationService r["name"] = addin.LocalId; r["version"] = addin.Version; - res.Add(count.ToString(), r); + result.Add(count.ToString(), r); count++; } - result = res; return; } // List compatible plugins in registered repositories - public ArrayList ListAvailable() + public void ListAvailable(out Dictionary result) { + Dictionary res = new Dictionary(); + AddinRepositoryEntry[] addins = GetSortedAvailbleAddins(); - ArrayList list = new ArrayList(); int count = 0; foreach (AddinRepositoryEntry addin in addins) { - StringBuilder sb = new StringBuilder(); - sb.Append(String.Format("{0}) {1} rev. {2}, repo {3}", count.ToString(), addin.Addin.Name, addin.Addin.Version, addin.RepositoryName)); - list.Add(sb.ToString()); + Dictionary r = new Dictionary(); + r["name"] = addin.Addin.Name; + r["version"] = addin.Addin.Version; + r["repository"] = addin.RepositoryName; + + res.Add(count.ToString(), r); count++; } - return list; + result = res; + return; } - // List available updates + // List available updates ** 1 public void ListUpdates() { IProgressStatus ps = new ConsoleProgressStatus(true); @@ -265,25 +269,30 @@ namespace OpenSim.Services.IntegrationService } // List registered repositories - public ArrayList ListRepositories() + public void ListRepositories(out Dictionary result) { - AddinRepository[] reps = Repositories.GetRepositories(); - Array.Sort (reps, (r1,r2) => r1.Title.CompareTo(r2.Title)); + Dictionary res = new Dictionary(); + result = res; + + AddinRepository[] reps = GetSortedAddinRepo(); if (reps.Length == 0) { MainConsole.Instance.Output("No repositories have been registered."); - return null; + return; } - ArrayList list = new ArrayList(); - - int n = 0; + int count = 0; foreach (AddinRepository rep in reps) { - list.Add(String.Format("{0}) {1} {2} {3}",n.ToString(), rep.Enabled == true ? "[ ]" : "[X]", rep.Name, rep.Url)); - n++; + Dictionary r = new Dictionary(); + r["enabled"] = rep.Enabled == true ? true : false; + r["name"] = rep.Name; + r["url"] = rep.Url; + + res.Add(count.ToString(), r); + count++; } - return list; + return; } public void UpdateRegistry() @@ -418,5 +427,9 @@ namespace OpenSim.Services.IntegrationService return addins; } #endregion Util + + #region Notes + // ** 1 Not working + #endregion Notes } } \ No newline at end of file From cca3c5f66ef8432bf0c0fde7fdf065aecbc6c617 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Wed, 25 Apr 2012 10:50:33 -0400 Subject: [PATCH 43/87] Fromatting output, cleanup --- OpenSim/Services/IntegrationService/IntegrationService.cs | 3 ++- OpenSim/Services/IntegrationService/PluginManager.cs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index b761411b1b..a406299834 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -192,7 +192,8 @@ namespace OpenSim.Services.IntegrationService { // name, version, repository Dictionary plugin = (Dictionary)result[k]; - MainConsole.Instance.OutputFormat("{0} rev. {1} {2}", + MainConsole.Instance.OutputFormat("{0}) {1} rev. {2} {3}", + k, plugin["name"], plugin["version"], plugin["repository"]); diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index 4ea99b4f66..f1cf1e4ba7 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -133,7 +133,7 @@ namespace OpenSim.Services.IntegrationService r["name"] = addin.LocalId; r["version"] = addin.Version; - result.Add(count.ToString(), r); + res.Add(count.ToString(), r); count++; } From def8012ec107c9a2b8e4aff9d9047badf984b57f Mon Sep 17 00:00:00 2001 From: BlueWall Date: Thu, 26 Apr 2012 22:12:10 -0400 Subject: [PATCH 44/87] Changing more methods to work with console and rest --- .../Integration/IntegrationServerHandler.cs | 5 +- .../IntegrationService/IntegrationService.cs | 47 ++++-- .../IntegrationService/PluginManager.cs | 159 +++++++++++++++--- 3 files changed, 176 insertions(+), 35 deletions(-) diff --git a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs index 320b5030c6..7a60ff1034 100644 --- a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs +++ b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs @@ -75,7 +75,7 @@ namespace OpenSim.Server.Handlers.Integration return FailureResult("Error, no command defined!"); } - string command = request["command"].AsString (); + string command = request["command"].AsString(); switch (command) { @@ -85,6 +85,9 @@ namespace OpenSim.Server.Handlers.Integration case "list_available": return HandleListAvailablePlugins(request); + case "show_info": + return HandlePluginInfo(request); + case "install_plugin": return HandleInstallPlugin(request); diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index a406299834..20f106d581 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -135,7 +135,11 @@ namespace OpenSim.Services.IntegrationService // Install plugin from registered repository private void HandleConsoleInstallPlugin(string module, string[] cmd) { - MainConsole.Instance.Output(m_PluginManager.InstallPlugin(cmd)); + if (cmd.Length == 2) + { + int ndx = Convert.ToInt16(cmd[1]); + MainConsole.Instance.Output(m_PluginManager.InstallPlugin(ndx)); + } return; } @@ -144,7 +148,8 @@ namespace OpenSim.Services.IntegrationService { if (cmd.Length == 2) { - m_PluginManager.UnInstall(cmd); + int ndx = Convert.ToInt16(cmd[1]); + m_PluginManager.UnInstall(ndx); } return; } @@ -220,7 +225,7 @@ namespace OpenSim.Services.IntegrationService { if ( cmd.Length == 3) { - m_PluginManager.AddRepository(cmd); + m_PluginManager.AddRepository(cmd[2]); } return; } @@ -271,9 +276,6 @@ namespace OpenSim.Services.IntegrationService enabled == true ? "[ ]" : "[X]", repo["name"], repo["url"]); } - //ArrayList list = m_PluginManager.ListRepositories(); - //foreach (string entry in list) - // MainConsole.Instance.Output(entry); return; } @@ -281,9 +283,22 @@ namespace OpenSim.Services.IntegrationService // Show description information private void HandleConsoleShowAddinInfo(string module, string[] cmd) { - if ( cmd.Length >= 3 ) + if (cmd.Length >= 3) { - m_PluginManager.AddinInfo(cmd); + + Dictionary result = new Dictionary(); + + int ndx = Convert.ToInt16(cmd[2]); + m_PluginManager.AddinInfo(ndx, out result); + + MainConsole.Instance.OutputFormat("Name: {0}\nURL: {1}\n{2}\n{3}", + result["name"], + result["url"], + result["file_name"], + result["author"], + result["category"], + result["description"]); + return; } } @@ -340,9 +355,21 @@ namespace OpenSim.Services.IntegrationService return Ux.DocToBytes(json); } - public byte[] HandleWebPluginInfo (OSDMap request) + public byte[] HandleWebPluginInfo(OSDMap request) { - return Ux.FailureResult("Not Implemented"); + Dictionary result = new Dictionary(); + + if(!String.IsNullOrEmpty(request["index"].ToString())) + { + int ndx = Convert.ToInt16(request["index"].ToString()); + m_PluginManager.AddinInfo(ndx, out result); + string json = LitJson.JsonMapper.ToJson(result); + return Ux.DocToBytes(json); + } + else + { + return Ux.FailureResult("No index supplied"); + } } public byte[] HandleWebListAvailablePlugins(OSDMap request) diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index f1cf1e4ba7..e18aeea700 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -44,13 +44,28 @@ namespace OpenSim.Services.IntegrationService { protected AddinRegistry m_Registry; + ///

+ /// Initializes a new instance of the class. + /// + /// + /// R. + /// internal PluginManager( AddinRegistry r): base (r) { m_Registry = r; m_Registry.Update(); } - public string InstallPlugin(string[] args) + /// + /// Installs the plugin. + /// + /// + /// The plugin. + /// + /// + /// Arguments. + /// + public string InstallPlugin(int ndx) { PackageCollection pack = new PackageCollection(); PackageCollection toUninstall; @@ -58,19 +73,15 @@ namespace OpenSim.Services.IntegrationService IProgressStatus ps = new ConsoleProgressStatus(false); - string name = Addin.GetIdName(args[1]); - string version = Addin.GetIdVersion(args[1]); - AddinRepositoryEntry[] available = GetSortedAvailbleAddins(); - int n = Convert.ToInt16(args[1]); - if (n > (available.Length - 1)) + if (ndx > (available.Length - 1)) { MainConsole.Instance.Output("Selection out of range"); return "Error"; } - AddinRepositoryEntry aentry = available[n]; + AddinRepositoryEntry aentry = available[ndx]; Package p = Package.FromRepository(aentry); pack.Add(p); @@ -93,18 +104,23 @@ namespace OpenSim.Services.IntegrationService } // Remove plugin - public void UnInstall(string[] args) + /// + /// Uns the install. + /// + /// + /// Arguments. + /// + public void UnInstall(int ndx) { Addin[] addins = GetSortedAddinList("IntegrationPlugin"); - int n = Convert.ToInt16(args[1]); - if (n > (addins.Length -1)) + if (ndx > (addins.Length -1)) { MainConsole.Instance.Output("Selection out of range"); return; } - Addin addin = addins[n]; + Addin addin = addins[ndx]; MainConsole.Instance.OutputFormat("Uninstalling plugin {0}", addin.Id); AddinManager.Registry.DisableAddin(addin.Id); addin.Enabled = false; @@ -113,12 +129,23 @@ namespace OpenSim.Services.IntegrationService return; } + /// + /// Checks the installed. + /// + /// + /// The installed. + /// public string CheckInstalled() { return "CheckInstall"; } - // List instaled addins + /// + /// Lists the installed addins. + /// + /// + /// Result. + /// public void ListInstalledAddins(out Dictionary result) { Dictionary res = new Dictionary(); @@ -142,6 +169,12 @@ namespace OpenSim.Services.IntegrationService } // List compatible plugins in registered repositories + /// + /// Lists the available. + /// + /// + /// Result. + /// public void ListAvailable(out Dictionary result) { Dictionary res = new Dictionary(); @@ -164,6 +197,9 @@ namespace OpenSim.Services.IntegrationService } // List available updates ** 1 + /// + /// Lists the updates. + /// public void ListUpdates() { IProgressStatus ps = new ConsoleProgressStatus(true); @@ -180,6 +216,9 @@ namespace OpenSim.Services.IntegrationService } // Sync to repositories + /// + /// Update this instance. + /// public string Update() { IProgressStatus ps = new ConsoleProgressStatus(true); @@ -188,18 +227,36 @@ namespace OpenSim.Services.IntegrationService } // Register a repository - public string AddRepository(string[] args) + /// + /// Register a repository with our server. + /// + /// + /// result of the action + /// + /// + /// The URL of the repository we want to add + /// + public bool AddRepository(string repo) { - Repositories.RegisterRepository(null, args[2].ToString(), true); - return "AddRepository"; + Repositories.RegisterRepository(null, repo, true); + return true; } + /// + /// Gets the repository. + /// public void GetRepository() { Repositories.UpdateAllRepositories(new ConsoleProgressStatus(false)); } // Remove a repository from the list + /// + /// Removes the repository. + /// + /// + /// Arguments. + /// public void RemoveRepository(string[] args) { AddinRepository[] reps = Repositories.GetRepositories(); @@ -223,6 +280,12 @@ namespace OpenSim.Services.IntegrationService } // Enable repository + /// + /// Enables the repository. + /// + /// + /// Arguments. + /// public void EnableRepository(string[] args) { AddinRepository[] reps = Repositories.GetRepositories(); @@ -246,6 +309,12 @@ namespace OpenSim.Services.IntegrationService } // Disable a repository + /// + /// Disables the repository. + /// + /// + /// Arguments. + /// public void DisableRepository(string[] args) { AddinRepository[] reps = Repositories.GetRepositories(); @@ -269,6 +338,12 @@ namespace OpenSim.Services.IntegrationService } // List registered repositories + /// + /// Lists the repositories. + /// + /// + /// Result. + /// public void ListRepositories(out Dictionary result) { Dictionary res = new Dictionary(); @@ -295,32 +370,62 @@ namespace OpenSim.Services.IntegrationService return; } + /// + /// Updates the registry. + /// public void UpdateRegistry() { m_Registry.Update(); } // Show plugin info - public string AddinInfo(string[] args) + /// + /// Addins the info. + /// + /// + /// The info. + /// + /// + /// Arguments. + /// + public bool AddinInfo(int ndx, out Dictionary result) { + Dictionary res = new Dictionary(); + result = res; + Addin[] addins = GetSortedAddinList("IntegrationPlugin"); - int n = Convert.ToInt16(args[2]); - if (n > (addins.Length -1)) + if (ndx > (addins.Length - 1)) { MainConsole.Instance.Output("Selection out of range"); - return "XXX"; + return false; } + // author category description + Addin addin = addins[ndx]; - Addin addin = addins[n]; - MainConsole.Instance.OutputFormat("Name: {0}\nURL: {1}\n{2}", - addin.Name, addin.Description.Url, - addin.Description.FileName); + res["author"] = addin.Description.Author; + res["category"] = addin.Description.Category; + res["description"] = addin.Description.Description; + res["name"] = addin.Name; + res["url"] = addin.Description.Url; + res["file_name"] = addin.Description.FileName; - return "AddinInfo"; +// MainConsole.Instance.OutputFormat("Name: {0}\nURL: {1}\n{2}", +// addin.Name, addin.Description.Url, +// addin.Description.FileName); + + result = res; + + return true; } // Disable a plugin + /// + /// Disables the plugin. + /// + /// + /// Arguments. + /// public void DisablePlugin(string[] args) { Addin[] addins = GetSortedAddinList("IntegrationPlugin"); @@ -339,6 +444,12 @@ namespace OpenSim.Services.IntegrationService } // Enable plugin + /// + /// Enables the plugin. + /// + /// + /// Arguments. + /// public void EnablePlugin(string[] args) { Addin[] addins = GetSortedAddinList("IntegrationPlugin"); From d00df295d6c87cfc5b2d8551921721cf5c5b3e45 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 27 Apr 2012 15:41:21 -0400 Subject: [PATCH 45/87] Converting more functions to new style for REST/Console --- .../IntegrationService/IntegrationService.cs | 49 +++++++++++++++++-- .../IntegrationService/PluginManager.cs | 21 ++++---- 2 files changed, 55 insertions(+), 15 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 20f106d581..e229edd041 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -133,12 +133,41 @@ namespace OpenSim.Services.IntegrationService // Handle our console commands // // Install plugin from registered repository + /// + /// Handles the console install plugin command. Attempts to install the selected plugin + /// and + /// + /// + /// Module. + /// + /// + /// Cmd. + /// private void HandleConsoleInstallPlugin(string module, string[] cmd) { + Dictionary result = new Dictionary(); + if (cmd.Length == 2) { int ndx = Convert.ToInt16(cmd[1]); - MainConsole.Instance.Output(m_PluginManager.InstallPlugin(ndx)); + if (m_PluginManager.InstallPlugin(ndx, out result) == true) + { + ArrayList s = new ArrayList(); + s.AddRange(result.Keys); + s.Sort(); + + var list = result.Keys.ToList(); + list.Sort(); + foreach (var k in list) + { + Dictionary plugin = (Dictionary)result[k]; + bool enabled = (bool)plugin["enabled"]; + MainConsole.Instance.OutputFormat("{0}) {1} {2} rev. {3}", + k, + enabled == true ? "[ ]" : "[X]", + plugin["name"], plugin["version"]); + } + } } return; } @@ -287,11 +316,11 @@ namespace OpenSim.Services.IntegrationService { Dictionary result = new Dictionary(); - + int ndx = Convert.ToInt16(cmd[2]); m_PluginManager.AddinInfo(ndx, out result); - MainConsole.Instance.OutputFormat("Name: {0}\nURL: {1}\n{2}\n{3}", + MainConsole.Instance.OutputFormat("Name: {0}\nURL: {1}\nFile: {2}\nAuthor: {3}\nCategory: {4}\nDesc: {5}", result["name"], result["url"], result["file_name"], @@ -380,9 +409,19 @@ namespace OpenSim.Services.IntegrationService return Ux.DocToBytes(json); } - public byte[] HandleWebInstallPlugin (OSDMap request) + public byte[] HandleWebInstallPlugin(OSDMap request) { - return Ux.FailureResult("Not Implemented"); + Dictionary result = new Dictionary(); + int ndx = Convert.ToInt16(request["index"].ToString()); + if (m_PluginManager.InstallPlugin(ndx, out result) == true) + { + string json = LitJson.JsonMapper.ToJson(result); + return Ux.DocToBytes(json); + } + else + { + return Ux.FailureResult("No index supplied"); + } } public byte[] HandleWebUnInstallPlugin (OSDMap request) diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index e18aeea700..85637003fd 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -65,8 +65,10 @@ namespace OpenSim.Services.IntegrationService /// /// Arguments. /// - public string InstallPlugin(int ndx) + public bool InstallPlugin(int ndx, out Dictionary result) { + Dictionary res = new Dictionary(); + PackageCollection pack = new PackageCollection(); PackageCollection toUninstall; DependencyCollection unresolved; @@ -78,7 +80,8 @@ namespace OpenSim.Services.IntegrationService if (ndx > (available.Length - 1)) { MainConsole.Instance.Output("Selection out of range"); - return "Error"; + result = res; + return false; } AddinRepositoryEntry aentry = available[ndx]; @@ -95,11 +98,14 @@ namespace OpenSim.Services.IntegrationService Addin addin = m_Registry.GetAddin(aentry.Addin.Id); m_Registry.DisableAddin(addin.Id); addin.Enabled = false; - return "Install"; - } + ListInstalledAddins(out res); + result = res; + return true; + } else { - return "Bomb"; + result = res; + return false; } } @@ -410,12 +416,7 @@ namespace OpenSim.Services.IntegrationService res["url"] = addin.Description.Url; res["file_name"] = addin.Description.FileName; -// MainConsole.Instance.OutputFormat("Name: {0}\nURL: {1}\n{2}", -// addin.Name, addin.Description.Url, -// addin.Description.FileName); - result = res; - return true; } From c36714a9bd0400fe24cefe81e46999a79e71a84a Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 4 May 2012 21:34:56 -0400 Subject: [PATCH 46/87] Update version for plugins since required updates --- OpenSim/Services/IntegrationService/IntegrationServiceBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 86887d746e..e8957e1947 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -39,7 +39,7 @@ using log4net; using Ux = OpenSim.Services.IntegrationService.IUtils; -[assembly:AddinRoot ("IntegrationService", "2.0")] +[assembly:AddinRoot ("IntegrationService", "2.1")] namespace OpenSim.Services.IntegrationService { [TypeExtensionPoint (Path="/OpenSim/IntegrationService", Name="IntegrationService")] From ed2afb8454969c34ef497d5a99fa94013c582864 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 8 May 2012 08:57:58 -0400 Subject: [PATCH 47/87] Update Robust configuration examples for IntegrationService --- bin/Robust.HG.ini.example | 9 +++++++++ bin/Robust.ini.example | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example index 28d2c5bcb9..4ca6d1067f 100644 --- a/bin/Robust.HG.ini.example +++ b/bin/Robust.HG.ini.example @@ -454,8 +454,17 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003 ; ForwardOfflineGroupMessages = true [IntegrationService] + LocalServiceModule = "OpenSim.Services.IntegrationService.dll:IntegrationService" + ;; Location for plugin management data, default is "." + PluginRegistryLocation="/home/opensim/var/run/addin/Integration" + ;; + ;; Each plugin uses it's own ini (for now these are files only) + ;; The initial files are supplied by the plugin when it is installed + ;; and this is the location for the directory for these. + IntegrationConfig = "/home/opensim/etc/Integration" + GridService = "OpenSim.Services.GridService.dll:GridService" PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService" diff --git a/bin/Robust.ini.example b/bin/Robust.ini.example index c58307b38f..6a18f34016 100644 --- a/bin/Robust.ini.example +++ b/bin/Robust.ini.example @@ -325,8 +325,17 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003 ;password = http://127.0.0.1/password [IntegrationService] + LocalServiceModule = "OpenSim.Services.IntegrationService.dll:IntegrationService" + ;; Location for plugin management data, default is "." + PluginRegistryLocation="/home/opensim/var/run/addin/Integration" + ;; + ;; Each plugin uses it's own ini (for now these are files only) + ;; The initial files are supplied by the plugin when it is installed + ;; and this is the location for the directory for these. + IntegrationConfig = "/home/opensim/etc/Integration" + GridService = "OpenSim.Services.GridService.dll:GridService" PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService" From 293a2873b4138d0fc7ff01d9f83204559782d765 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 8 May 2012 09:53:28 -0400 Subject: [PATCH 48/87] Correction: add dll to end of file name in exmapl configurations --- bin/Robust.HG.ini.example | 2 +- bin/Robust.ini.example | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example index 4ca6d1067f..578f77e273 100644 --- a/bin/Robust.HG.ini.example +++ b/bin/Robust.HG.ini.example @@ -21,7 +21,7 @@ ; * [[@]/][:] ; * [Startup] -ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:XInventoryInConnector,8004/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8002/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:GridUserServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector,8002/OpenSim.Server.Handlers.dll:GatekeeperServiceInConnector,8002/OpenSim.Server.Handlers.dll:UserAgentServerConnector,HGInventoryService@8002/OpenSim.Server.Handlers.dll:XInventoryInConnector,HGAssetService@8002/OpenSim.Server.Handlers.dll:AssetServiceConnector,8002/OpenSim.Server.Handlers.dll:HeloServiceInConnector,8002/OpenSim.Server.Handlers.dll:HGFriendsServerConnector,8002/OpenSim.Server.Handlers.dll:InstantMessageServerConnector,8003/OpenSim.Server.Handlers.dll:MapAddServiceConnector,8002/OpenSim.Server.Handlers.dll:MapGetServiceConnector,8002/OpenSim.Server.Handlers:IntegrationServiceConnector" +ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:XInventoryInConnector,8004/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8002/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:GridUserServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector,8002/OpenSim.Server.Handlers.dll:GatekeeperServiceInConnector,8002/OpenSim.Server.Handlers.dll:UserAgentServerConnector,HGInventoryService@8002/OpenSim.Server.Handlers.dll:XInventoryInConnector,HGAssetService@8002/OpenSim.Server.Handlers.dll:AssetServiceConnector,8002/OpenSim.Server.Handlers.dll:HeloServiceInConnector,8002/OpenSim.Server.Handlers.dll:HGFriendsServerConnector,8002/OpenSim.Server.Handlers.dll:InstantMessageServerConnector,8003/OpenSim.Server.Handlers.dll:MapAddServiceConnector,8002/OpenSim.Server.Handlers.dll:MapGetServiceConnector,8002/OpenSim.Server.Handlers.dll:IntegrationServiceConnector" ; * This is common for all services, it's the network setup for the entire ; * server instance, if none is specified above diff --git a/bin/Robust.ini.example b/bin/Robust.ini.example index 6a18f34016..3b22cb5e2f 100644 --- a/bin/Robust.ini.example +++ b/bin/Robust.ini.example @@ -13,7 +13,7 @@ ; * [[@]/][:] ; * [Startup] -ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:XInventoryInConnector,8004/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8002/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:GridUserServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector,8003/OpenSim.Server.Handlers.dll:MapAddServiceConnector,8002/OpenSim.Server.Handlers.dll:MapGetServiceConnector,8002/OpenSim.Server.Handlers:IntegrationServiceConnector" +ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:XInventoryInConnector,8004/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8002/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:GridUserServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector,8003/OpenSim.Server.Handlers.dll:MapAddServiceConnector,8002/OpenSim.Server.Handlers.dll:MapGetServiceConnector,8002/OpenSim.Server.Handlers.dll:IntegrationServiceConnector" ; * This is common for all services, it's the network setup for the entire ; * server instance, if none is specified above From d3a88263cb9fdbd3945531bc41fedbe8c1c355b4 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 13 May 2012 13:07:44 -0400 Subject: [PATCH 49/87] Fix indexer to spawnpoints --- OpenSim/Region/Framework/Scenes/Scene.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 3d2213a9cc..21c528f13b 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -3571,7 +3571,7 @@ namespace OpenSim.Region.Framework.Scenes if ( spawnpoints.Count > 1) { // We have multiple SpawnPoints, Route the agent to a random one - agent.startpos = spawnpoints[Util.RandomClass.Next(spawnpoints.Count)].GetLocation(telehub.AbsolutePosition, telehub.GroupRotation); + agent.startpos = spawnpoints[Util.RandomClass.Next(spawnpoints.Count) - 1].GetLocation(telehub.AbsolutePosition, telehub.GroupRotation); } else { From a4d75e37cf1a101eb362eaa8c183b625a25ff826 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 13 May 2012 13:20:35 -0400 Subject: [PATCH 50/87] Formatting fix --- OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs index f59ebfe37c..427dca59f9 100644 --- a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs +++ b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs @@ -125,7 +125,7 @@ namespace OpenSim.ApplicationPlugins.LoadRegions bool changed = m_openSim.PopulateRegionEstateInfo(regionsToLoad[i]); m_openSim.CreateRegion(regionsToLoad[i], true, out scene); if (changed) - regionsToLoad[i].EstateSettings.Save(); + regionsToLoad[i].EstateSettings.Save(); if (scene != null) { From 8ff97699e2f4ee3e051e3ad1f5991e248f84eccb Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 13 May 2012 17:11:44 -0400 Subject: [PATCH 51/87] Add configurable SpawnPointRouting Will use one of three selected methods to route avatar landing points when using Telehubs. The setting is in [Startup] using SpawnPointRouting = closest/random/sequence closest: The default setting. Routes avatar to the nearest SpawnPoint to the location. random: Picks random SpawnPoints to land the avatar. sequence: Follows a sequence to place the avatar on the next available SpawnPoint location --- OpenSim/Region/Framework/Scenes/Scene.cs | 81 ++++++++++---- .../Region/Framework/Scenes/ScenePresence.cs | 103 ++++++++++++++---- 2 files changed, 146 insertions(+), 38 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 21c528f13b..2a2830f47d 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -569,6 +569,15 @@ namespace OpenSim.Region.Framework.Scenes get { return m_sceneGraph.Entities; } } + // can be closest/random/sequence + private string m_SpawnPointRouting = "closest"; + // used in sequence see: SpawnPoint() + private int m_SpawnPoint; + public string SpawnPointRouting + { + get { return m_SpawnPointRouting; } + } + #endregion Properties #region Constructors @@ -586,7 +595,7 @@ namespace OpenSim.Region.Framework.Scenes Random random = new Random(); - m_lastAllocatedLocalId = (uint)(random.NextDouble() * (double)(uint.MaxValue/2))+(uint)(uint.MaxValue/4); + m_lastAllocatedLocalId = (uint)(random.NextDouble() * (double)(uint.MaxValue / 2)) + (uint)(uint.MaxValue / 4); m_moduleLoader = moduleLoader; m_authenticateHandler = authen; m_sceneGridService = sceneGridService; @@ -678,7 +687,7 @@ namespace OpenSim.Region.Framework.Scenes { IConfig startupConfig = m_config.Configs["Startup"]; - m_defaultDrawDistance = startupConfig.GetFloat("DefaultDrawDistance",m_defaultDrawDistance); + m_defaultDrawDistance = startupConfig.GetFloat("DefaultDrawDistance", m_defaultDrawDistance); m_useBackup = startupConfig.GetBoolean("UseSceneBackup", m_useBackup); if (!m_useBackup) m_log.InfoFormat("[SCENE]: Backup has been disabled for {0}", RegionInfo.RegionName); @@ -711,7 +720,7 @@ namespace OpenSim.Region.Framework.Scenes m_clampPrimSize = true; } - m_useTrashOnDelete = startupConfig.GetBoolean("UseTrashOnDelete",m_useTrashOnDelete); + m_useTrashOnDelete = startupConfig.GetBoolean("UseTrashOnDelete", m_useTrashOnDelete); m_trustBinaries = startupConfig.GetBoolean("TrustBinaries", m_trustBinaries); m_allowScriptCrossings = startupConfig.GetBoolean("AllowScriptCrossing", m_allowScriptCrossings); m_dontPersistBefore = @@ -723,6 +732,8 @@ namespace OpenSim.Region.Framework.Scenes m_defaultScriptEngine = startupConfig.GetString("DefaultScriptEngine", "XEngine"); + m_SpawnPointRouting = startupConfig.GetString("SpawnPointRouting", "closest"); + IConfig packetConfig = m_config.Configs["PacketPool"]; if (packetConfig != null) { @@ -3389,7 +3400,7 @@ namespace OpenSim.Region.Framework.Scenes public bool NewUserConnection(AgentCircuitData agent, uint teleportFlags, out string reason, bool requirePresenceLookup) { bool vialogin = ((teleportFlags & (uint)TPFlags.ViaLogin) != 0 || - (teleportFlags & (uint)TPFlags.ViaHGLogin) != 0); + (teleportFlags & (uint)TPFlags.ViaHGLogin) != 0); bool viahome = ((teleportFlags & (uint)TPFlags.ViaHome) != 0); bool godlike = ((teleportFlags & (uint)TPFlags.Godlike) != 0); @@ -3405,8 +3416,17 @@ namespace OpenSim.Region.Framework.Scenes // Don't disable this log message - it's too helpful m_log.DebugFormat( "[SCENE]: Region {0} told of incoming {1} agent {2} {3} {4} (circuit code {5}, IP {6}, viewer {7}, teleportflags ({8}), position {9})", - RegionInfo.RegionName, (agent.child ? "child" : "root"),agent.firstname, agent.lastname, - agent.AgentID, agent.circuitcode, agent.IPAddress, agent.Viewer, ((TPFlags)teleportFlags).ToString(), agent.startpos); + RegionInfo.RegionName, + (agent.child ? "child" : "root"), + agent.firstname, + agent.lastname, + agent.AgentID, + agent.circuitcode, + agent.IPAddress, + agent.Viewer, + ((TPFlags)teleportFlags).ToString(), + agent.startpos + ); if (LoginsDisabled) { @@ -3421,7 +3441,11 @@ namespace OpenSim.Region.Framework.Scenes // We have a zombie from a crashed session. // Or the same user is trying to be root twice here, won't work. // Kill it. - m_log.DebugFormat("[SCENE]: Zombie scene presence detected for {0} in {1}", agent.AgentID, RegionInfo.RegionName); + m_log.DebugFormat( + "[SCENE]: Zombie scene presence detected for {0} in {1}", + agent.AgentID, + RegionInfo.RegionName + ); sp.ControllingClient.Close(); sp = null; } @@ -3445,8 +3469,7 @@ namespace OpenSim.Region.Framework.Scenes { if (!VerifyUserPresence(agent, out reason)) return false; - } - catch (Exception e) + } catch (Exception e) { m_log.ErrorFormat( "[SCENE]: Exception verifying presence {0}{1}", e.Message, e.StackTrace); @@ -3458,8 +3481,7 @@ namespace OpenSim.Region.Framework.Scenes { if (!AuthorizeUser(agent, out reason)) return false; - } - catch (Exception e) + } catch (Exception e) { m_log.ErrorFormat( "[SCENE]: Exception authorizing user {0}{1}", e.Message, e.StackTrace); @@ -3476,8 +3498,7 @@ namespace OpenSim.Region.Framework.Scenes CapsModule.SetAgentCapsSeeds(agent); CapsModule.CreateCaps(agent.AgentID); } - } - else + } else { // Let the SP know how we got here. This has a lot of interesting // uses down the line. @@ -3500,7 +3521,7 @@ namespace OpenSim.Region.Framework.Scenes agent.teleportFlags = teleportFlags; m_authenticateHandler.AddNewCircuit(agent.circuitcode, agent); - if (vialogin) + if (vialogin) { // CleanDroppedAttachments(); @@ -3541,8 +3562,7 @@ namespace OpenSim.Region.Framework.Scenes agent.startpos.Z = 720; } } - } - else + } else { if (agent.startpos.X > EastBorders[0].BorderLine.Z) { @@ -3568,10 +3588,19 @@ namespace OpenSim.Region.Framework.Scenes SceneObjectGroup telehub = GetSceneObjectGroup(RegionInfo.RegionSettings.TelehubObject); // Can have multiple SpawnPoints List spawnpoints = RegionInfo.RegionSettings.SpawnPoints(); - if ( spawnpoints.Count > 1) + if (spawnpoints.Count > 1) { - // We have multiple SpawnPoints, Route the agent to a random one - agent.startpos = spawnpoints[Util.RandomClass.Next(spawnpoints.Count) - 1].GetLocation(telehub.AbsolutePosition, telehub.GroupRotation); + // We have multiple SpawnPoints, Route the agent to a random or sequential one + if (SpawnPointRouting == "random") + agent.startpos = spawnpoints[Util.RandomClass.Next(spawnpoints.Count) - 1].GetLocation( + telehub.AbsolutePosition, + telehub.GroupRotation + ); + else + agent.startpos = spawnpoints[SpawnPoint()].GetLocation( + telehub.AbsolutePosition, + telehub.GroupRotation + ); } else { @@ -5257,5 +5286,19 @@ namespace OpenSim.Region.Framework.Scenes } } } + + // manage and select spawn points in sequence + public int SpawnPoint() + { + int spawnpoints = RegionInfo.RegionSettings.SpawnPoints().Count; + + if (spawnpoints == 0) + return 0; + + m_SpawnPoint++; + if (m_SpawnPoint > spawnpoints) + m_SpawnPoint = 1; + return m_SpawnPoint - 1; + } } } diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index b737f91f0f..bdcef71159 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -3934,28 +3934,93 @@ namespace OpenSim.Region.Framework.Scenes if (spawnPoints.Length == 0) return; - float distance = 9999; - int closest = -1; + int index; + bool selected = false; - for (int i = 0 ; i < spawnPoints.Length ; i++) + switch (m_scene.SpawnPointRouting) { - Vector3 spawnPosition = spawnPoints[i].GetLocation(telehub.AbsolutePosition, telehub.GroupRotation); - Vector3 offset = spawnPosition - pos; - float d = Vector3.Mag(offset); - if (d >= distance) - continue; - ILandObject land = m_scene.LandChannel.GetLandObject(spawnPosition.X, spawnPosition.Y); - if (land == null) - continue; - if (land.IsEitherBannedOrRestricted(UUID)) - continue; - distance = d; - closest = i; - } - if (closest == -1) - return; + case "closest": - pos = spawnPoints[closest].GetLocation(telehub.AbsolutePosition, telehub.GroupRotation); + float distance = 9999; + int closest = -1; + + for (int i = 0; i < spawnPoints.Length; i++) + { + Vector3 spawnPosition = spawnPoints[i].GetLocation( + telehub.AbsolutePosition, + telehub.GroupRotation + ); + Vector3 offset = spawnPosition - pos; + float d = Vector3.Mag(offset); + if (d >= distance) + continue; + ILandObject land = m_scene.LandChannel.GetLandObject(spawnPosition.X, spawnPosition.Y); + if (land == null) + continue; + if (land.IsEitherBannedOrRestricted(UUID)) + continue; + distance = d; + closest = i; + } + if (closest == -1) + return; + + pos = spawnPoints[closest].GetLocation(telehub.AbsolutePosition, telehub.GroupRotation); + return; + + case "random": + + do + { + index = Util.RandomClass.Next(spawnPoints.Length - 1); + + Vector3 spawnPosition = spawnPoints[index].GetLocation( + telehub.AbsolutePosition, + telehub.GroupRotation + ); + // SpawnPoint sp = spawnPoints[index]; + + ILandObject land = m_scene.LandChannel.GetLandObject(spawnPosition.X, spawnPosition.Y); + if (land == null || land.IsEitherBannedOrRestricted(UUID)) + selected = false; + else + selected = true; + + } while ( selected == false); + + pos = spawnPoints[index].GetLocation( + telehub.AbsolutePosition, + telehub.GroupRotation + ); + return; + + case "sequence": + + do + { + index = m_scene.SpawnPoint(); + + Vector3 spawnPosition = spawnPoints[index].GetLocation( + telehub.AbsolutePosition, + telehub.GroupRotation + ); + // SpawnPoint sp = spawnPoints[index]; + + ILandObject land = m_scene.LandChannel.GetLandObject(spawnPosition.X, spawnPosition.Y); + if (land == null || land.IsEitherBannedOrRestricted(UUID)) + selected = false; + else + selected = true; + + } while (selected == false); + + pos = spawnPoints[index].GetLocation(telehub.AbsolutePosition, telehub.GroupRotation); + ; + return; + + default: + return; + } } } } From cf93f39b9f1b380a7c2adba8d3255dd5145dbe4f Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 18 May 2012 17:47:00 -0400 Subject: [PATCH 52/87] Provide Telehub setting to allow use of landmarks Setting to allow use of landmarks to override telehub routing. Default is off. --- OpenSim/Region/Framework/Scenes/Scene.cs | 7 +++++++ OpenSim/Region/Framework/Scenes/ScenePresence.cs | 3 ++- bin/OpenSim.ini.example | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 3cce370262..d09b8957cf 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -577,6 +577,12 @@ namespace OpenSim.Region.Framework.Scenes { get { return m_SpawnPointRouting; } } + // allow landmarks to pass + private bool m_TelehubAllowLandmarks; + public bool TelehubAllowLandmarks + { + get { return m_TelehubAllowLandmarks; } + } #endregion Properties @@ -733,6 +739,7 @@ namespace OpenSim.Region.Framework.Scenes m_defaultScriptEngine = startupConfig.GetString("DefaultScriptEngine", "XEngine"); m_SpawnPointRouting = startupConfig.GetString("SpawnPointRouting", "closest"); + m_TelehubAllowLandmarks = startupConfig.GetBoolean("TelehubAllowLandmark", false); IConfig packetConfig = m_config.Configs["PacketPool"]; if (packetConfig != null) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 0c66e49ff8..602217596c 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -3929,7 +3929,8 @@ namespace OpenSim.Region.Framework.Scenes { if ((m_teleportFlags & (TeleportFlags.ViaLogin | TeleportFlags.ViaRegionID)) == (TeleportFlags.ViaLogin | TeleportFlags.ViaRegionID) || - (m_teleportFlags & TeleportFlags.ViaLandmark) != 0 || + // (m_teleportFlags & TeleportFlags.ViaLandmark) != 0 || + (m_scene.TelehubAllowLandmarks == true ? false : ((m_teleportFlags & TeleportFlags.ViaLandmark) != 0 )) || (m_teleportFlags & TeleportFlags.ViaLocation) != 0 || (m_teleportFlags & Constants.TeleportFlags.ViaHGLogin) != 0) { diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 9f418a40dd..aa29c079ca 100755 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -249,6 +249,11 @@ ;; "sequence" will place the avatar on the next sequential SpawnPoint ; SpawnPointRouting = closest + ;# {TelehubAllowLandmark} {} {Allow users with landmarks to override telehub routing} {true false} false + ;; TelehubAllowLandmark allows users with landmarks to override telehub routing and land at the landmark coordinates when set to true + ;; default is false + ; TelehubAllowLandmark = false + [Estates] ; If these values are commented out then the user will be asked for estate details when required (this is the normal case). ; If these values are uncommented then they will be used to create a default estate as necessary. From c990cfe4811fad0a7c767a752bbefc2ec6f85818 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 18 May 2012 19:32:26 -0400 Subject: [PATCH 53/87] Cleanup + change properties to set fields with private set : Thanks Justin for the tip. --- OpenSim/Region/Framework/Scenes/Scene.cs | 6 ++++-- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index d09b8957cf..29eed677bd 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -576,12 +576,14 @@ namespace OpenSim.Region.Framework.Scenes public string SpawnPointRouting { get { return m_SpawnPointRouting; } + private set { m_SpawnPointRouting = value; } } // allow landmarks to pass private bool m_TelehubAllowLandmarks; public bool TelehubAllowLandmarks { get { return m_TelehubAllowLandmarks; } + private set { m_TelehubAllowLandmarks = value; } } #endregion Properties @@ -738,8 +740,8 @@ namespace OpenSim.Region.Framework.Scenes m_defaultScriptEngine = startupConfig.GetString("DefaultScriptEngine", "XEngine"); - m_SpawnPointRouting = startupConfig.GetString("SpawnPointRouting", "closest"); - m_TelehubAllowLandmarks = startupConfig.GetBoolean("TelehubAllowLandmark", false); + SpawnPointRouting = startupConfig.GetString("SpawnPointRouting", "closest"); + TelehubAllowLandmarks = startupConfig.GetBoolean("TelehubAllowLandmark", false); IConfig packetConfig = m_config.Configs["PacketPool"]; if (packetConfig != null) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 602217596c..3adafc1b74 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -3929,7 +3929,6 @@ namespace OpenSim.Region.Framework.Scenes { if ((m_teleportFlags & (TeleportFlags.ViaLogin | TeleportFlags.ViaRegionID)) == (TeleportFlags.ViaLogin | TeleportFlags.ViaRegionID) || - // (m_teleportFlags & TeleportFlags.ViaLandmark) != 0 || (m_scene.TelehubAllowLandmarks == true ? false : ((m_teleportFlags & TeleportFlags.ViaLandmark) != 0 )) || (m_teleportFlags & TeleportFlags.ViaLocation) != 0 || (m_teleportFlags & Constants.TeleportFlags.ViaHGLogin) != 0) From 477b67e1e6758c8b39ea2831961d8061991290ea Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 18 May 2012 19:56:46 -0400 Subject: [PATCH 54/87] Further refinement on properties --- OpenSim/Region/Framework/Scenes/Scene.cs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 29eed677bd..5a0f56441f 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -569,21 +569,18 @@ namespace OpenSim.Region.Framework.Scenes get { return m_sceneGraph.Entities; } } - // can be closest/random/sequence - private string m_SpawnPointRouting = "closest"; + // used in sequence see: SpawnPoint() private int m_SpawnPoint; + // can be closest/random/sequence public string SpawnPointRouting { - get { return m_SpawnPointRouting; } - private set { m_SpawnPointRouting = value; } + get; private set; } // allow landmarks to pass - private bool m_TelehubAllowLandmarks; public bool TelehubAllowLandmarks { - get { return m_TelehubAllowLandmarks; } - private set { m_TelehubAllowLandmarks = value; } + get; private set; } #endregion Properties From e289006611c3b4127b94b650e5a591c037cf78e3 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Wed, 23 May 2012 14:37:26 -0400 Subject: [PATCH 55/87] Adding main config to the plugin init --- .../IntegrationService/IntegrationServiceBase.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index e8957e1947..f30ddbd85f 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -45,9 +45,9 @@ namespace OpenSim.Services.IntegrationService [TypeExtensionPoint (Path="/OpenSim/IntegrationService", Name="IntegrationService")] public interface IntegrationPlugin { - void Init(IConfigSource PluginConfig, IHttpServer server, ServiceBase service); + void Init(IConfigSource MainConfig, IConfigSource PluginConfig, IHttpServer server, ServiceBase service); void Unload(); - string Name { get; } + string PluginName { get; } string ConfigName { get; } string DefaultConfig { get; } } @@ -105,7 +105,7 @@ namespace OpenSim.Services.IntegrationService registry.Update (); foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) { - m_log.DebugFormat("[INTEGRATION SERVICE]: Processing _Addin {0}", cmd.Name); + m_log.DebugFormat("[INTEGRATION SERVICE]: Processing _Addin {0}", cmd.PluginName); LoadingPlugin(cmd); } @@ -192,14 +192,14 @@ namespace OpenSim.Services.IntegrationService // Build up case ExtensionChange.Add: - m_log.DebugFormat("[INTEGRATION SERVICE]: Plugin Added {0}", ip.Name); + m_log.DebugFormat("[INTEGRATION SERVICE]: Plugin Added {0}", ip.PluginName); LoadingPlugin(ip); return; // Tear down case ExtensionChange.Remove: - m_log.DebugFormat("[INTEGRATION SERVICE]: Plugin Remove {0}", ip.Name); + m_log.DebugFormat("[INTEGRATION SERVICE]: Plugin Remove {0}", ip.PluginName); UnLoadingPlugin(ip); return; } @@ -222,7 +222,7 @@ namespace OpenSim.Services.IntegrationService // Fetch the starter ini if (PlugConfig == null) { - m_log.DebugFormat("[INTEGRATION SERVICE]: Fetching starter config for {0} from {1}", plugin.Name, plugin.DefaultConfig); + m_log.DebugFormat("[INTEGRATION SERVICE]: Fetching starter config for {0} from {1}", plugin.PluginName, plugin.DefaultConfig); // Send the default data service IConfig DataService = m_ConfigSource.Configs["DatabaseService"]; @@ -239,8 +239,8 @@ namespace OpenSim.Services.IntegrationService PlugConfig = Ux.GetConfigSource(m_IntegrationConfigLoc, plugin.ConfigName); } - m_log.DebugFormat("[INTEGRATION SERVICE]: ****** In Loading Plugin {0}", plugin.Name); - plugin.Init(PlugConfig, m_Server, this); + m_log.DebugFormat("[INTEGRATION SERVICE]: ****** In Loading Plugin {0}", plugin.PluginName); + plugin.Init(m_ConfigSource, PlugConfig, m_Server, this); } private void UnLoadingPlugin(IntegrationPlugin plugin) From b8a0a65435c18939b24ca4e05c066aff77e6c496 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Wed, 23 May 2012 15:07:03 -0400 Subject: [PATCH 56/87] Fix llGetSimulatorHostname to return configured hostname --- OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs | 4 ++++ OpenSim/Region/Framework/Interfaces/IUrlModule.cs | 1 + .../Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 3 ++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs index d58fc0feac..d2cd163eba 100644 --- a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs +++ b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs @@ -84,6 +84,10 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp private IHttpServer m_HttpsServer = null; private string m_ExternalHostNameForLSL = ""; + public string ExternalHostNameForLSL + { + get { return m_ExternalHostNameForLSL; } + } public Type ReplaceableInterface { diff --git a/OpenSim/Region/Framework/Interfaces/IUrlModule.cs b/OpenSim/Region/Framework/Interfaces/IUrlModule.cs index 1b911666e4..457444cd83 100644 --- a/OpenSim/Region/Framework/Interfaces/IUrlModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IUrlModule.cs @@ -34,6 +34,7 @@ namespace OpenSim.Region.Framework.Interfaces { public interface IUrlModule { + string ExternalHostNameForLSL { get; } UUID RequestURL(IScriptModule engine, SceneObjectPart host, UUID itemID); UUID RequestSecureURL(IScriptModule engine, SceneObjectPart host, UUID itemID); void ReleaseURL(string url); diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index d213c353ef..4b2880837e 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -8743,7 +8743,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public LSL_String llGetSimulatorHostname() { m_host.AddScriptLPS(1); - return System.Environment.MachineName; + IUrlModule UrlModule = World.RequestModuleInterface(); + return UrlModule.ExternalHostNameForLSL; } // From 78a98b8a28b337e787109f1c8a54a238b6b440d4 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Mon, 4 Jun 2012 17:22:46 -0400 Subject: [PATCH 57/87] Add replaceable region modules to the "show modules" command --- OpenSim/Region/Application/OpenSim.cs | 78 +++++++++++++++++---------- 1 file changed, 49 insertions(+), 29 deletions(-) diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index c0913c5296..76ac82797b 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -971,8 +971,7 @@ namespace OpenSim if (showParams.Length > 1 && showParams[1] == "full") { agents = m_sceneManager.GetCurrentScenePresences(); - } - else + } else { agents = m_sceneManager.GetCurrentSceneAvatars(); } @@ -981,7 +980,8 @@ namespace OpenSim MainConsole.Instance.Output( String.Format("{0,-16} {1,-16} {2,-37} {3,-11} {4,-16} {5,-30}", "Firstname", "Lastname", - "Agent ID", "Root/Child", "Region", "Position")); + "Agent ID", "Root/Child", "Region", "Position") + ); foreach (ScenePresence presence in agents) { @@ -991,8 +991,7 @@ namespace OpenSim if (regionInfo == null) { regionName = "Unresolvable"; - } - else + } else { regionName = regionInfo.RegionName; } @@ -1005,7 +1004,8 @@ namespace OpenSim presence.UUID, presence.IsChildAgent ? "Child" : "Root", regionName, - presence.AbsolutePosition.ToString())); + presence.AbsolutePosition.ToString()) + ); } MainConsole.Instance.Output(String.Empty); @@ -1014,16 +1014,20 @@ namespace OpenSim case "connections": System.Text.StringBuilder connections = new System.Text.StringBuilder("Connections:\n"); m_sceneManager.ForEachScene( - delegate(Scene scene) - { - scene.ForEachClient( - delegate(IClientAPI client) - { - connections.AppendFormat("{0}: {1} ({2}) from {3} on circuit {4}\n", - scene.RegionInfo.RegionName, client.Name, client.AgentId, client.RemoteEndPoint, client.CircuitCode); - } + delegate(Scene scene) { + scene.ForEachClient( + delegate(IClientAPI client) { + connections.AppendFormat( + "{0}: {1} ({2}) from {3} on circuit {4}\n", + scene.RegionInfo.RegionName, + client.Name, + client.AgentId, + client.RemoteEndPoint, + client.CircuitCode ); } + ); + } ); MainConsole.Instance.Output(connections.ToString()); @@ -1032,13 +1036,17 @@ namespace OpenSim case "circuits": System.Text.StringBuilder acd = new System.Text.StringBuilder("Agent Circuits:\n"); m_sceneManager.ForEachScene( - delegate(Scene scene) - { - //this.HttpServer. - acd.AppendFormat("{0}:\n", scene.RegionInfo.RegionName); - foreach (AgentCircuitData aCircuit in scene.AuthenticateHandler.GetAgentCircuits().Values) - acd.AppendFormat("\t{0} {1} ({2})\n", aCircuit.firstname, aCircuit.lastname, (aCircuit.child ? "Child" : "Root")); - } + delegate(Scene scene) { + //this.HttpServer. + acd.AppendFormat("{0}:\n", scene.RegionInfo.RegionName); + foreach (AgentCircuitData aCircuit in scene.AuthenticateHandler.GetAgentCircuits().Values) + acd.AppendFormat( + "\t{0} {1} ({2})\n", + aCircuit.firstname, + aCircuit.lastname, + (aCircuit.child ? "Child" : "Root") + ); + } ); MainConsole.Instance.Output(acd.ToString()); @@ -1079,17 +1087,29 @@ namespace OpenSim } m_sceneManager.ForEachScene( - delegate(Scene scene) + delegate(Scene scene) { + m_log.Error("The currently loaded modules in " + scene.RegionInfo.RegionName + " are:"); + foreach (IRegionModule module in scene.Modules.Values) { - m_log.Error("The currently loaded modules in " + scene.RegionInfo.RegionName + " are:"); - foreach (IRegionModule module in scene.Modules.Values) + if (!module.IsSharedModule) { - if (!module.IsSharedModule) - { - m_log.Error("Region Module: " + module.Name); - } + m_log.Error("Region Module: " + module.Name); } - }); + } + } + ); + + m_sceneManager.ForEachScene( + delegate(Scene scene) { + MainConsole.Instance.Output("Loaded new region modules in" + scene.RegionInfo.RegionName + " are:"); + foreach (IRegionModuleBase module in scene.RegionModules.Values) + { + Type type = module.GetType().GetInterface("ISharedRegionModule"); + string module_type = type != null ? "Shared" : "Non-Shared"; + MainConsole.Instance.OutputFormat("New Region Module ({0}): {1}", module_type, module.Name); + } + } + ); MainConsole.Instance.Output(""); break; From 21f6572bf33309fa926dfb6fdab7be795c74e379 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Thu, 7 Jun 2012 10:15:40 -0400 Subject: [PATCH 58/87] Make change to fix Windows builds --- OpenSim/Framework/Servers/HttpServer/OSHttpRequest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Framework/Servers/HttpServer/OSHttpRequest.cs b/OpenSim/Framework/Servers/HttpServer/OSHttpRequest.cs index fc8daf3732..3171759aa3 100644 --- a/OpenSim/Framework/Servers/HttpServer/OSHttpRequest.cs +++ b/OpenSim/Framework/Servers/HttpServer/OSHttpRequest.cs @@ -107,7 +107,7 @@ namespace OpenSim.Framework.Servers.HttpServer public bool IsSecured { - get { return _context.Secured; } + get { return _context.IsSecured; } } public bool KeepAlive From 94118f11801a9530ba1d8a5cb6f0b923a1c298bb Mon Sep 17 00:00:00 2001 From: Talun Date: Thu, 7 Jun 2012 16:00:00 +0100 Subject: [PATCH 59/87] Mantis 6044 Building master currently fails. Add missing reference to System.Core Signed-off-by: BlueWall --- prebuild.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/prebuild.xml b/prebuild.xml index 0c20b87435..d7b7a86dfd 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -126,6 +126,7 @@ ../../../../bin/ + From e460663fec5e3b117e782b4c1b4bfcbe87cbcc64 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sat, 9 Jun 2012 23:52:47 -0400 Subject: [PATCH 60/87] Add a note about securing web interface --- OpenSim/Services/IntegrationService/IntegrationService.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index e229edd041..022acd84da 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -348,6 +348,8 @@ namespace OpenSim.Services.IntegrationService #endregion #region IIntegrationService implementation + // Will hold back on implementing things here that can actually make changes + // Need to secure it first public byte[] HandleWebListRepositories(OSDMap request) { Dictionary result = new Dictionary(); From 466f0b096f0d7c49d704e147cc1fe6a01340d705 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 10 Jun 2012 01:32:57 -0400 Subject: [PATCH 61/87] Cleanup some commented code --- OpenSim/Services/IntegrationService/IntegrationServiceBase.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index f30ddbd85f..fb3fbe8fa4 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -60,15 +60,12 @@ namespace OpenSim.Services.IntegrationService private string m_ConfigName = "IntegrationService"; - // protected IPresenceService m_PresenceService; - // protected IGridService m_GridService; protected IHttpServer m_Server; protected string m_IntegrationConfig; protected PluginManager m_PluginManager; AddinManager am; - // protected IConfig m_IntegrationServerConfig; protected string m_IntegrationConfigLoc; IConfigSource m_ConfigSource; From 04d132e78bb88e3d227d1048af416fdf0886388c Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 12 Jun 2012 17:07:10 -0400 Subject: [PATCH 62/87] Add variable timer configureation for the timer_Script Added "timer_Interval" to the OpenSimDefaults.ini, leaving the default value set to 1200, as the previous default setting. The value represents seconds. To change the default, copy the entry to OpenSim.ini and multiply the number of minutes for the interval by 60. --- OpenSim/Region/Application/OpenSim.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index 9c38ebedbe..57a3c69b07 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -70,6 +70,7 @@ namespace OpenSim private Regex m_consolePromptRegex = new Regex(@"([^\\])\\(\w)", RegexOptions.Compiled); private string m_timedScript = "disabled"; + private int m_timeInterval = 1200; private Timer m_scriptTimer; public OpenSim(IConfigSource configSource) : base(configSource) @@ -99,6 +100,10 @@ namespace OpenSim m_consolePort = (uint)networkConfig.GetInt("console_port", 0); m_timedScript = startupConfig.GetString("timer_Script", "disabled"); + if (m_timedScript != "disabled") + { + m_timeInterval = startupConfig.GetInt("timer_Interval", 1200); + } if (m_logFileAppender != null) { @@ -216,7 +221,7 @@ namespace OpenSim { m_scriptTimer = new Timer(); m_scriptTimer.Enabled = true; - m_scriptTimer.Interval = 1200*1000; + m_scriptTimer.Interval = m_timeInterval*1000; m_scriptTimer.Elapsed += RunAutoTimerScript; } } From 9e0377cd3de998d5934327b92d7ac27374b22fdb Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 12 Jun 2012 21:52:52 -0400 Subject: [PATCH 63/87] Add the updated OpenSimDefaults.ini for the prior timer_Interval patch. --- bin/OpenSimDefaults.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 0e1a3af525..1b8a4b6446 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -33,6 +33,10 @@ ; Console commands run every 20 minutes ; timer_Script = "filename" + ; timer_Script time interval (default 20 min) + ; The time is 60 per minute + ; timer_Interval = 1200 + ; ## ; ## SYSTEM ; ## From f870c6b49018179bb06f95699a36c0b7753ae2f8 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sat, 16 Jun 2012 06:25:12 -0400 Subject: [PATCH 64/87] Adjust Robust*.ini.examples V3 webprofile entries --- bin/Robust.HG.ini.example | 14 +++++++++----- bin/Robust.ini.example | 10 +++++++--- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example index 8e9cc802cd..0a4742e0aa 100644 --- a/bin/Robust.HG.ini.example +++ b/bin/Robust.HG.ini.example @@ -237,12 +237,16 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003 WelcomeMessage = "Welcome, Avatar!" AllowRemoteSetLoginLevel = "false" - - ; For V2 map - MapTileURL = "http://127.0.0.1:8002"; - ; For WebProfiles (V3) - ProfileServerURL = "http://127.0.0.1/profiles/[AGENT_NAME]" + ; For V2/3 Web Profiles + ; Work in progress: The ProfileServerURL/OpenIDServerURL are + ; being used in a development viewer as support for webprofiles + ; is being developed across the componets + ; + ; ProfileServerURL = "http://127.0.0.1/profiles/[AGENT_NAME]" + ; + ; For V2/V3 webapp authentication SSO + ; OpenIDServerURL = "http://127.0.0.1/openid/openidserver/" ; If you run this login server behind a proxy, set this to true ; HasProxy = false diff --git a/bin/Robust.ini.example b/bin/Robust.ini.example index c8fde1dbfb..36863dc90b 100644 --- a/bin/Robust.ini.example +++ b/bin/Robust.ini.example @@ -225,10 +225,14 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003 MapTileURL = "http://127.0.0.1:8002"; ; For V2/3 Web Profiles - ProfileServerURL = "http://127.0.0.1/profiles/[AGENT_NAME]" - + ; Work in progress: The ProfileServerURL/OpenIDServerURL are + ; being used in a development viewer as support for webprofiles + ; is being developed across the componets + ; + ; ProfileServerURL = "http://127.0.0.1/profiles/[AGENT_NAME]" + ; ; For V2/V3 webapp authentication SSO - OpenIDServerURL = "http://127.0.0.1/openid/openidserver/" + ; OpenIDServerURL = "http://127.0.0.1/openid/openidserver/" ; If you run this login server behind a proxy, set this to true ; HasProxy = false From cc962a227517e136cf74d616557e161049966c4c Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sat, 16 Jun 2012 07:24:27 -0400 Subject: [PATCH 65/87] Oops! putting back the entry for map urls --- bin/Robust.HG.ini.example | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example index 0a4742e0aa..6db05ce2c3 100644 --- a/bin/Robust.HG.ini.example +++ b/bin/Robust.HG.ini.example @@ -238,6 +238,9 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003 WelcomeMessage = "Welcome, Avatar!" AllowRemoteSetLoginLevel = "false" + ; For V2 map + MapTileURL = "http://127.0.0.1:8002"; + ; For V2/3 Web Profiles ; Work in progress: The ProfileServerURL/OpenIDServerURL are ; being used in a development viewer as support for webprofiles From a8ce8709f295e496f6538509c412404db5961839 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sat, 23 Jun 2012 04:11:31 -0400 Subject: [PATCH 66/87] Fix script "Running" behavior Unchecking "Running" box in script editor now persists. This fixes http://opensimulator.org/mantis/view.php?id=6057 --- .../Region/Framework/Interfaces/IScriptModule.cs | 2 ++ OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 14 ++++++++++++++ .../ScriptEngine/Interfaces/IScriptInstance.cs | 10 ++++++++++ .../ScriptEngine/Shared/Instance/ScriptInstance.cs | 9 +++++++++ .../Shared/Instance/ScriptSerializer.cs | 11 +++++++++++ OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 7 +++++++ 6 files changed, 53 insertions(+) diff --git a/OpenSim/Region/Framework/Interfaces/IScriptModule.cs b/OpenSim/Region/Framework/Interfaces/IScriptModule.cs index 0d488dffd7..cbaf24139d 100644 --- a/OpenSim/Region/Framework/Interfaces/IScriptModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IScriptModule.cs @@ -75,6 +75,8 @@ namespace OpenSim.Region.Framework.Interfaces /// The item ID of the script. bool GetScriptState(UUID itemID); + void SetRunEnable(UUID instanceID, bool enable); + void SaveAllState(); /// diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index e4132817ac..9ff8467086 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -2143,10 +2143,24 @@ namespace OpenSim.Region.Framework.Scenes if (part == null) return; + IScriptModule[] engines = RequestModuleInterfaces(); + if (running) + { + foreach (IScriptModule engine in engines) + { + engine.SetRunEnable(itemID, true); + } EventManager.TriggerStartScript(part.LocalId, itemID); + } else + { + foreach (IScriptModule engine in engines) + { + engine.SetRunEnable(itemID, false); + } EventManager.TriggerStopScript(part.LocalId, itemID); + } } public void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID) diff --git a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs index b04f6b6624..ec13b6cc01 100644 --- a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs @@ -63,6 +63,16 @@ namespace OpenSim.Region.ScriptEngine.Interfaces /// bool Running { get; set; } + /// + /// Gets or sets a value indicating whether this + /// is run. + /// For viewer script editor control + /// + /// + /// true if run; otherwise, false. + /// + bool Run { get; set; } + /// /// Is the script suspended? /// diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs index 5dfe58e2f9..306090e60c 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs @@ -120,6 +120,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance public bool Running { get; set; } + public bool Run { get; set; } + public bool Suspended { get { return m_Suspended; } @@ -215,6 +217,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance m_postOnRez = postOnRez; m_AttachedAvatar = part.ParentGroup.AttachedAvatar; m_RegionID = part.ParentGroup.Scene.RegionInfo.RegionID; + Run = true; if (part != null) { @@ -359,6 +362,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance if (m_startedFromSavedState) { + if (!Run) + return; + Start(); if (m_postOnRez) { @@ -391,6 +397,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance } else { + if (!Run) + return; + Start(); PostEvent(new EventParams("state_entry", new Object[0], new DetectParams[0])); diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptSerializer.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptSerializer.cs index bcdc7bf5dd..797bce3ce1 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptSerializer.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptSerializer.cs @@ -55,6 +55,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance public static string Serialize(ScriptInstance instance) { bool running = instance.Running; + bool enabled = instance.Run; XmlDocument xmldoc = new XmlDocument(); @@ -77,6 +78,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance rootElement.AppendChild(run); + XmlElement run_enable = xmldoc.CreateElement("", "Run", ""); + run_enable.AppendChild(xmldoc.CreateTextNode( + enabled.ToString())); + + rootElement.AppendChild(run_enable); + Dictionary vars = instance.GetVars(); XmlElement variables = xmldoc.CreateElement("", "Variables", ""); @@ -225,6 +232,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance { object varValue; XmlNodeList partL = rootNode.ChildNodes; + instance.Run = true; foreach (XmlNode part in partL) { @@ -236,6 +244,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance case "Running": instance.Running=bool.Parse(part.InnerText); break; + case "Run": + instance.Run = bool.Parse(part.InnerText); + break; case "Variables": XmlNodeList varL = part.ChildNodes; foreach (XmlNode var in varL) diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 25b27b90c5..06ed9d6deb 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs @@ -1503,6 +1503,13 @@ namespace OpenSim.Region.ScriptEngine.XEngine } } + public void SetRunEnable(UUID instanceID, bool enable) + { + IScriptInstance instance = GetInstance(instanceID); + if (instance != null) + instance.Run = enable; + } + public bool GetScriptState(UUID itemID) { IScriptInstance instance = GetInstance(itemID); From 0d598450adf6924eee9a2d183fbd07da5a67da76 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 26 Jun 2012 15:14:25 -0400 Subject: [PATCH 67/87] Add stub for llCastRay --- OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs index 06f5617fac..a0b3bc8d4c 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs @@ -954,6 +954,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase return m_LSL_Functions.llRequestDisplayName(id); } + public LSL_List llCastRay(LSL_Vector start, LSL_Vector end, LSL_List options) + { + return m_LSL_Functions.llCastRay(start, end, options); + } + public void llLinkParticleSystem(int linknum, LSL_List rules) { m_LSL_Functions.llLinkParticleSystem(linknum, rules); From b2604869caf15cbf62722ed900b76855ed8d9bc6 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 8 Jul 2012 13:02:02 -0400 Subject: [PATCH 68/87] Add more automation keys to OpenSim.ini.example --- bin/OpenSim.ini.example | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index c07e1abeea..ce571ee2d9 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -61,17 +61,20 @@ ;; Place to create a PID file ; PIDFile = "/tmp/my.pid" + ;# {region_info_source} {} {Where to load region from?} {filesystem web} filesystem ;; Determine where OpenSimulator looks for the files which tell it ;; which regions to server ;; Default is "filesystem" ; region_info_source = "filesystem" ; region_info_source = "web" - + + ;# {regionload_regionsdir} {region_info_source} {Location of file?} {} Regions ;; Determines where the region XML files are stored if you are loading ;; these from the filesystem. ;; Defaults to bin/Regions in your OpenSimulator installation directory ; regionload_regionsdir="C:\somewhere\xmlfiles\" + ;# {regionload_webserver_url} {region_info_source} {URL to load region from?} {} ;; Determines the page from which regions xml is retrieved if you are ;; loading these from the web. ;; The XML here has the same format as it does on the filesystem @@ -92,6 +95,7 @@ ;; Maximum size where a prim can be physical. Affects resizing of existing prims. This can be overriden in the region config file. ; PhysicalPrimMax = 10 + ;# {ClampPrimSize} {} {Clamp viewer rezzed prims to max sizes?} {true false} false ;; If a viewer attempts to rez a prim larger than the non-physical or physical prim max, clamp the dimensions to the appropriate maximum ;; This can be overriden in the region config file. ; ClampPrimSize = false @@ -117,6 +121,7 @@ ;; This will likely break them ; CombineContiguousRegions = false + ;# {InworldRestartShutsDown} {} {Shutdown instance on region restart?} {true false} false ;; If you have only one region in an instance, or to avoid the many bugs ;; that you can trigger in modules by restarting a region, set this to ;; true to make the entire instance exit instead of restarting the region. @@ -131,14 +136,17 @@ ;; If both of these values are set to zero then persistence of all changed ;; objects will happen on every sweep. + ;# {MinimumTimeBeforePersistenceConsidered} {} {Time before un-changed object may be persisted} {} 60 ;; Objects will be considered for persistance in the next sweep when they ;; have not changed for this number of seconds. ; MinimumTimeBeforePersistenceConsidered = 60 + ;# {MaximumTimeBeforePersistenceConsidered} {} {Time before changed objects may be persisted?} {} 600 ;; Objects will always be considered for persistance in the next sweep ;; if the first change occurred this number of seconds ago. ; MaximumTimeBeforePersistenceConsidered = 600 + ;# {see_into_this_sim_from_neighbor} {} {Should avatars in neighbor sims see objects in this sim?} {true false} true ;; Should avatars in neighbor sims see objects in this sim? ; see_into_this_sim_from_neighbor = true @@ -153,6 +161,7 @@ ;; Note that only the ODE physics engine currently deals with meshed ;; prims in a satisfactory way. + ;# {meshing} {} {Select mesher} {Meshmerizer ZeroMesher} Meshmerizer ;; ZeroMesher is faster but leaves the physics engine to model the mesh ;; using the basic shapes that it supports. ;; Usually this is only a box. @@ -161,6 +170,7 @@ ; meshing = ZeroMesher ;; Choose one of the physics engines below + ;# {physics} {} {Select physics engine} {OpenDynamicsEngine BulletSim basicphysics POS} OpenDynamicsEngine ;; OpenDynamicsEngine is by some distance the most developed physics engine ;; BulletSim is incomplete and experimental but in active development ;; basicphysics effectively does not model physics at all, making all objects phantom @@ -184,38 +194,52 @@ ;; If set to true, then all permissions checks are carried out ; serverside_object_permissions = true + ;# {allow_grid_gods} {} {Allow grid gods?} {true false} false ;; This allows users with a UserLevel of 200 or more to assume god ;; powers in the regions in this simulator. ; allow_grid_gods = false ;; This allows some control over permissions ;; please note that this still doesn't duplicate SL, and is not intended to + ;# {region_owner_is_god} {} {Allow region owner gods} {true false} true + ;; Allow region owners to assume god powers in their regions ; region_owner_is_god = true + + ;# {region_manager_is_god} {} {Allow region manager gods} {true false} false + ;; Allow region managers to assume god powers in regions they manage ; region_manager_is_god = false + + ;# {parcel_owner_is_god} {} {Allow parcel owner gods} {true false} true + ;; Allow parcel owners to assume god powers in their parcels ; parcel_owner_is_god = true + ;# {simple_build_permissions} {} {Allow building in parcel by access list (no groups)} {true false} false ;; More control over permissions ;; This is definitely not SL! - ; Provides a simple control for land owners to give build rights to specific avatars - ; in publicly accessible parcels that disallow object creation in general. - ; Owners specific avatars by adding them to the Access List of the parcel - ; without having to use the Groups feature + ;; Provides a simple control for land owners to give build rights to specific avatars + ;; in publicly accessible parcels that disallow object creation in general. + ;; Owners specific avatars by adding them to the Access List of the parcel + ;; without having to use the Groups feature ; simple_build_permissions = false + ;# {DefaultScriptEngine} {} {Default script engine} {XEngine} XEngine ;; Default script engine to use. Currently, we only have XEngine ; DefaultScriptEngine = "XEngine" + ;# {GenerateMaptiles} {} {Generate map tiles?} {true false} true ;; Map tile options. You can choose to generate no map tiles at all, ;; generate normal maptiles, or nominate an uploaded texture to ;; be the map tile ; GenerateMaptiles = true + ;# {MaptileRefresh} {GenerateMaptiles} {Maptile refresh period?} {} 0 ;; If desired, a running region can update the map tiles periodically ;; to reflect building activity. This names no sense of you don't have ;; prims on maptiles. Value is in seconds. ; MaptileRefresh = 0 + ;# {MaptileStaticUUID} {} {Asset ID for static map texture} {} 00000000-0000-0000-0000-000000000000 ;; If not generating maptiles, use this static texture asset ID ; MaptileStaticUUID = "00000000-0000-0000-0000-000000000000" @@ -228,9 +252,11 @@ ;; got a large number of objects, so you can turn it off here if you'd like. ; DrawPrimOnMapTile = true + ;# {HttpProxy} {} {Proxy URL for llHTTPRequest and dynamic texture loading} {} http://proxy.com:8080 ;; Http proxy setting for llHTTPRequest and dynamic texture loading, if required ; HttpProxy = "http://proxy.com:8080" + ;# {HttpProxyExceptions} {HttpProxy} {Set of regular expressions defining URL that should not be proxied} {} ;; If you're using HttpProxy, then you can set HttpProxyExceptions to a list of regular expressions for URLs that you don't want to go through the proxy ;; For example, servers inside your firewall. ;; Separate patterns with a ';' @@ -254,7 +280,8 @@ ;; default is false ; TelehubAllowLandmark = false - ;# Comma separated list of viewers which may gain access to the regions. + ;# {AllowedViewerList} {} {Comma separated list of allowed viewers} {} + ;; Comma separated list of viewers which may gain access to the regions. ;; One can use a Substring of the viewer name to enable only certain subversions ;; Example: Agent uses the viewer "Imprudence 1.3.2.0" ;; - "Imprudence" has access @@ -262,6 +289,7 @@ ;; - "Imprudence 1.3.1" has no access ;; AllowedViewerList = + ;# {BannedViewerList} {} {Comma separated list of banned viewers} {} ;# Comma separated list of viewers which may not gain access to the regions. ;; One can use a Substring of the viewer name to disable only certain subversions ;; Example: Agent uses the viewer "Imprudence 1.3.2.0" From 6842bb785f7f3774288e13c2fb4b74ff129bd3ca Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 8 Jul 2012 13:44:04 -0400 Subject: [PATCH 69/87] Add more keys for OpenSim.ini.defaults automation --- bin/OpenSim.ini.example | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index ce571ee2d9..661abc0f71 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -304,16 +304,30 @@ ; If these values are uncommented then they will be used to create a default estate as necessary. ; New regions will be automatically assigned to that default estate. + ;# {DefaultEstateName} {} {Default name for estate?} {} My Estate + ;; Name for the default estate ; DefaultEstateName = My Estate - ; DefaultEstateOwnerName = FirstName LastName - - ; The following parameters will only be used on a standalone system to create an estate owner that does not already exist - ; If DefaultEstateOwnerUUID is left at UUID.Zero (as below) then a random UUID will be assigned. - ; This is normally what you want + ;# {DefaultEstateOwnerName} {} {Default estate owner name?} {} FirstName LastName + ;; Name for default estate owner + ; DefaultEstateOwnerName = FirstName LastName + + + ; ** Standalone Estate Settings ** + ; The following parameters will only be used on a standalone system to + ; create an estate owner that does not already exist + + ;# {DefaultEstateOwnerUUID} {} {Default estate owner UUID?} {} 00000000-0000-0000-0000-000000000000 + ;; If DefaultEstateOwnerUUID is left at UUID.Zero (as below) then a random + ;; UUID will be assigned. This is normally what you want ; DefaultEstateOwnerUUID = 00000000-0000-0000-0000-000000000000 + ;# {DefaultEstateOwnerEMail} {} {Default estate owner email?} {} + ;; Email address for the default estate owner ; DefaultEstateOwnerEMail = owner@domain.com + + ;# {DefaultEstateOwnerPassword} {} {Default estate owner password} {} + ;; Password for the default estate owner ; DefaultEstateOwnerPassword = password From 1b342878665356275ea654588672d4b8a4583b66 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 8 Jul 2012 22:49:36 -0400 Subject: [PATCH 70/87] More keys for automated ini processing --- bin/OpenSim.ini.example | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 661abc0f71..33eaccb8dd 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -364,10 +364,14 @@ ; SMTP_SERVER_PASSWORD = "" [Network] + + ;# {ConsoleUser} {} {User name for console account} {} ;; Configure the remote console user here. This will not actually be used ;; unless you use -console=rest at startup. ; ConsoleUser = "Test" + ;# {ConsolePass} {} {Password for console account} {} ; ConsolePass = "secret" + ;# {console_port} {} {Port for console connections} {} 0 ; console_port = 0 ;# {http_listener_port} {} {TCP Port for this simulator to listen on? (This must be unique to the simulator!)} {} 9000 @@ -431,11 +435,14 @@ [SimulatorFeatures] + + ;# {MapImageServerURI} {} {URL for the map server} {} ; Experimental new information sent in SimulatorFeatures cap for Kokua viewers ; meant to override the MapImage and search server url given at login, and varying ; on a sim-basis. ; Viewers that don't understand it, will ignore it ;MapImageServerURI = "http://127.0.0.1:9000/" + ;# {SearchServerURI} {} {URL of the search server} {} ;SearchServerURI = "http://127.0.0.1:9000/" @@ -629,6 +636,7 @@ [Economy] + ;# {SellEnabled} {} {Enable selling for 0?} {true false} true ; The default economy module only implements just enough to allow free actions (transfer of objects, etc). ; There is no intention to implement anything further in core OpenSimulator. ; This functionality has to be provided by third party modules. @@ -636,9 +644,11 @@ ;; Enables selling things for $0. Default is true. ; SellEnabled = true + ;# {PriceUpload} {} {Price for uploading?} {} 0 ;; Money Unit fee to upload textures, animations etc. Default is 0. ; PriceUpload = 0 + ;# {PriceGroupCreate} {} {Fee for group creation} {} 0 ;; Money Unit fee to create groups. Default is 0. ; PriceGroupCreate = 0 @@ -748,32 +758,41 @@ ; If both Allow_ and Creators_ are given, effective permissions ; are the union of the two. + ;# {EventLimit} {} {Amount of time a script can spend in an event handler} {} 30 ;; Time a script can spend in an event handler before it is interrupted ; EventLimit = 30 + ;# {KillTimedOutScripts} {} {Kill script in case of event time overruns?} {true false} false ;; If a script overruns it's event limit, kill the script? ; KillTimedOutScripts = false + ;# {ScriptDelayFactor} {} {Multiplier for scripting delays} {} 1.0 ;; Sets the multiplier for the scripting delays ; ScriptDelayFactor = 1.0 + ;# {ScriptDistanceLimitFactor} {} {Multiplier for 10.0m distance limits?} {} ;; The factor the 10 m distances limits are multiplied by ; ScriptDistanceLimitFactor = 1.0 + ;# {NotecardLineReadCharsMax} {} {Maximum length of notecard line?} {} 255 ;; Maximum length of notecard line read ;; Increasing this to large values potentially opens ;; up the system to malicious scripters ; NotecardLineReadCharsMax = 255 + ;# {SensorMaxRange} {} {Sensor range} {} 96.0 ;; Sensor settings ; SensorMaxRange = 96.0 + ;# {SensorMaxResults} {} {Max sensor results returned?} {} ; SensorMaxResults = 16 + ;# {DisableUndergroundMovement} {} {Disable underground movement of prims} {true false} true ;; Disable underground movement of prims (default true); set to ;; false to allow script controlled underground positioning of ;; prims ; DisableUndergroundMovement = true + ;# {ScriptEnginesPath} {} {Path to script assemblies} {} ScriptEngines ;; Path to script engine assemblies ;; Default is ./bin/ScriptEngines ; ScriptEnginesPath = "ScriptEngines" From 1352a38680d4465f1326cc3e6eb1fcfb3739536f Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 13 Jul 2012 22:03:56 -0400 Subject: [PATCH 71/87] Change name of class IUtils ot IntegrationUtils --- .../Services/IntegrationService/IntegrationService.cs | 2 +- .../IntegrationService/IntegrationServiceBase.cs | 2 +- .../Services/IntegrationService/IntegrationUtils.cs | 10 +++++----- OpenSim/Services/IntegrationService/PluginManager.cs | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 022acd84da..5390f8a345 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -41,7 +41,7 @@ using Nini.Config; using log4net; using Mono.Addins; -using Ux = OpenSim.Services.IntegrationService.IUtils; +using Ux = OpenSim.Services.IntegrationService.IntegrationUtils; namespace OpenSim.Services.IntegrationService { diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index fb3fbe8fa4..d4eb3b8002 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -37,7 +37,7 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion; using Mono.Addins; using log4net; -using Ux = OpenSim.Services.IntegrationService.IUtils; +using Ux = OpenSim.Services.IntegrationService.IntegrationUtils; [assembly:AddinRoot ("IntegrationService", "2.1")] namespace OpenSim.Services.IntegrationService diff --git a/OpenSim/Services/IntegrationService/IntegrationUtils.cs b/OpenSim/Services/IntegrationService/IntegrationUtils.cs index 1b0ce33d1d..41332c3681 100644 --- a/OpenSim/Services/IntegrationService/IntegrationUtils.cs +++ b/OpenSim/Services/IntegrationService/IntegrationUtils.cs @@ -38,7 +38,7 @@ using OpenMetaverse.StructuredData; namespace OpenSim.Services.IntegrationService { - public static class IUtils + public static class IntegrationUtils { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); @@ -82,8 +82,8 @@ namespace OpenSim.Services.IntegrationService public static byte[] FailureResult(string msg) { OSDMap doc = new OSDMap(2); - doc["Result"] = OSD.FromString("Failure"); - doc["Message"] = OSD.FromString(msg); + doc["result"] = OSD.FromString("failure"); + doc["message"] = OSD.FromString(msg); return DocToBytes(doc); } @@ -91,8 +91,8 @@ namespace OpenSim.Services.IntegrationService public static byte[] ResponseMessage(string message) { OSDMap doc = new OSDMap(2); - doc["Result"] = OSD.FromString("Success"); - doc["Message"] = OSD.FromString(message); + doc["result"] = OSD.FromString("success"); + doc["message"] = OSD.FromString(message); return DocToBytes(doc); } diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index 85637003fd..c4df44704a 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -35,7 +35,7 @@ using Mono.Addins; using Mono.Addins.Setup; using Mono.Addins.Description; using OpenSim.Framework; -using Ux = OpenSim.Services.IntegrationService.IUtils; +using Ux = OpenSim.Services.IntegrationService.IntegrationUtils; namespace OpenSim.Services.IntegrationService { From afa2d7eea32b2a3366754bb3f4b82d7ac6fc3b30 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 13 Jul 2012 23:15:11 -0400 Subject: [PATCH 72/87] Some formatting changes --- .../Integration/IntegrationServerHandler.cs | 6 +-- .../IntegrationService/IntegrationService.cs | 25 ++++------- .../IntegrationServiceBase.cs | 45 +++++++++---------- .../IntegrationService/PluginManager.cs | 12 ++--- 4 files changed, 39 insertions(+), 49 deletions(-) diff --git a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs index 7a60ff1034..3fb2cab9c8 100644 --- a/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs +++ b/OpenSim/Server/Handlers/Integration/IntegrationServerHandler.cs @@ -95,7 +95,7 @@ namespace OpenSim.Server.Handlers.Integration return HandleUnInstallPlugin(request); case "enable_plugin": - return HandleEnablePlugin (request); + return HandleEnablePlugin(request); case "disable_plugin": return HandleDisblePlugin(request); @@ -104,7 +104,7 @@ namespace OpenSim.Server.Handlers.Integration return HandlePluginInfo(request); case "list_repos": - return HandleListRepositories (request); + return HandleListRepositories(request); case "add_repo": return HandleAddRepository(request); @@ -124,7 +124,7 @@ namespace OpenSim.Server.Handlers.Integration command.Length, command ); - return FailureResult ("IntegrationHandler: Unrecognized method requested!"); + return FailureResult("IntegrationHandler: Unrecognized method requested!"); } } catch (Exception e) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 5390f8a345..8bd293fa12 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -29,20 +29,13 @@ using System; using System.Collections; using System.Collections.Generic; using System.Reflection; -using System.Linq; -using OpenSim.Server.Base; -using OpenSim.Services.Interfaces; using OpenSim.Framework; using OpenSim.Framework.Servers.HttpServer; +using OpenSim.Services.Interfaces; using GridRegion = OpenSim.Services.Interfaces.GridRegion; -using OpenMetaverse; -using OpenMetaverse.StructuredData; -using Nini.Config; -using log4net; -using Mono.Addins; - using Ux = OpenSim.Services.IntegrationService.IntegrationUtils; + namespace OpenSim.Services.IntegrationService { public class IntegrationService : IntegrationServiceBase, IIntegrationService @@ -358,22 +351,22 @@ namespace OpenSim.Services.IntegrationService return Ux.DocToBytes(json); } - public byte[] HandleWebAddRepository (OSDMap request) + public byte[] HandleWebAddRepository(OSDMap request) { return Ux.FailureResult("Not Implemented"); } - public byte[] HandleWebRemoveRepositroy (OSDMap request) + public byte[] HandleWebRemoveRepositroy(OSDMap request) { return Ux.FailureResult("Not Implemented"); } - public byte[] HandleEnableRepository (OSDMap request) + public byte[] HandleEnableRepository(OSDMap request) { return Ux.FailureResult("Not Implemented"); } - public byte[] HandleWebDisableRepository (OSDMap request) + public byte[] HandleWebDisableRepository(OSDMap request) { return Ux.FailureResult("Not Implemented"); } @@ -426,17 +419,17 @@ namespace OpenSim.Services.IntegrationService } } - public byte[] HandleWebUnInstallPlugin (OSDMap request) + public byte[] HandleWebUnInstallPlugin(OSDMap request) { return Ux.FailureResult("Not Implemented"); } - public byte[] HandleWebEnablePlugin (OSDMap request) + public byte[] HandleWebEnablePlugin(OSDMap request) { return Ux.FailureResult("Not Implemented"); } - public byte[] HandleWebDisablePlugin (OSDMap request) + public byte[] HandleWebDisablePlugin(OSDMap request) { return Ux.FailureResult("Not Implemented"); } diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index d4eb3b8002..7fdf46e50a 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -27,22 +27,19 @@ using System; using System.IO; -using OpenSim.Services.Interfaces; -using OpenSim.Services.Base; -using OpenSim.Framework.Servers.HttpServer; using System.Reflection; -using Nini.Config; using OpenSim.Framework; +using OpenSim.Framework.Servers.HttpServer; +using OpenSim.Services.Base; +using OpenSim.Services.Interfaces; using GridRegion = OpenSim.Services.Interfaces.GridRegion; -using Mono.Addins; -using log4net; - using Ux = OpenSim.Services.IntegrationService.IntegrationUtils; -[assembly:AddinRoot ("IntegrationService", "2.1")] + +[assembly:AddinRoot("IntegrationService", "2.1")] namespace OpenSim.Services.IntegrationService { - [TypeExtensionPoint (Path="/OpenSim/IntegrationService", Name="IntegrationService")] + [TypeExtensionPoint(Path="/OpenSim/IntegrationService", Name="IntegrationService")] public interface IntegrationPlugin { void Init(IConfigSource MainConfig, IConfigSource PluginConfig, IHttpServer server, ServiceBase service); @@ -90,16 +87,16 @@ namespace OpenSim.Services.IntegrationService // be able to use the repo/registry commands ... if (DEVELOPMENT == true) { - AddinManager.Initialize ("."); + AddinManager.Initialize("."); registry = new AddinRegistry(".", "."); - registry.Update (); + registry.Update(); AddinManager.AddinLoaded += on_addinloaded_; AddinManager.AddinLoadError += on_addinloaderror_; AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; AddinManager.AddinEngine.ExtensionChanged += HandleAddinManagerAddinEngineExtensionChanged; - registry.Update (); + registry.Update(); foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) { m_log.DebugFormat("[INTEGRATION SERVICE]: Processing _Addin {0}", cmd.PluginName); @@ -140,20 +137,20 @@ namespace OpenSim.Services.IntegrationService return; } - AddinManager.Initialize (RegistryLocation); - AddinManager.Registry.Update (); + AddinManager.Initialize(RegistryLocation); + AddinManager.Registry.Update(); AddinManager.AddinLoaded += on_addinloaded_; AddinManager.AddinLoadError += on_addinloaderror_; AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; - AddinManager.AddExtensionNodeHandler ("/OpenSim/IntegrationService", OnExtensionChanged); + AddinManager.AddExtensionNodeHandler("/OpenSim/IntegrationService", OnExtensionChanged); } } #region addin event handlers - void HandleAddinManagerAddinEngineExtensionChanged (object sender, ExtensionEventArgs args) + void HandleAddinManagerAddinEngineExtensionChanged(object sender, ExtensionEventArgs args) { - MainConsole.Instance.Output(String.Format ("Plugin Extension Change Path:{0}", args.Path)); + MainConsole.Instance.Output(String.Format("Plugin Extension Change Path:{0}", args.Path)); } private IConfigSource GetConfig(string configName) @@ -161,7 +158,7 @@ namespace OpenSim.Services.IntegrationService return new IniConfigSource(); } - void HandleAddinManagerAddinUnloaded (object sender, AddinEventArgs args) + void HandleAddinManagerAddinUnloaded(object sender, AddinEventArgs args) { MainConsole.Instance.Output("Plugin Unloaded"); } @@ -169,20 +166,20 @@ namespace OpenSim.Services.IntegrationService private void on_addinloaderror_(object sender, AddinErrorEventArgs args) { if (args.Exception == null) - m_log.Error ("[INTEGRATION SERVICE]: Plugin Error: " + m_log.Error("[INTEGRATION SERVICE]: Plugin Error: " + args.Message); else - m_log.Error ("[INTEGRATION SERVICE]: Plugin Error: " + m_log.Error("[INTEGRATION SERVICE]: Plugin Error: " + args.Exception.Message + "\n" + args.Exception.StackTrace); } // This is our init // We can do build-up and tear-down of our plugin - void OnExtensionChanged (object s, ExtensionNodeEventArgs args) + void OnExtensionChanged(object s, ExtensionNodeEventArgs args) { IntegrationPlugin ip = (IntegrationPlugin) args.ExtensionObject; - m_log.Info ("[INTEGRATION SERVICE]: Plugin Change"); + m_log.Info("[INTEGRATION SERVICE]: Plugin Change"); switch (args.Change) { @@ -204,7 +201,7 @@ namespace OpenSim.Services.IntegrationService private void on_addinloaded_(object sender, AddinEventArgs args) { - m_log.Info ("[INTEGRATION SERVICE]: Plugin Loaded: " + args.AddinId); + m_log.Info("[INTEGRATION SERVICE]: Plugin Loaded: " + args.AddinId); } #endregion addin-event handlers @@ -228,7 +225,7 @@ namespace OpenSim.Services.IntegrationService IniConfigSource source = new IniConfigSource(); IConfig Init = source.AddConfig("DatabaseService"); Init.Set("StorageProvider",(string)DataService.GetString("StorageProvider")); - Init.Set("ConnectionString", String.Format ("\"{0}\"",DataService.GetString("ConnectionString"))); + Init.Set("ConnectionString", String.Format("\"{0}\"",DataService.GetString("ConnectionString"))); PlugConfig = Ux.LoadInitialConfig(plugin.DefaultConfig); source.Merge(PlugConfig); diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index c4df44704a..d84fa67305 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -50,7 +50,7 @@ namespace OpenSim.Services.IntegrationService /// /// R. /// - internal PluginManager( AddinRegistry r): base (r) + internal PluginManager(AddinRegistry r): base (r) { m_Registry = r; m_Registry.Update(); @@ -228,7 +228,7 @@ namespace OpenSim.Services.IntegrationService public string Update() { IProgressStatus ps = new ConsoleProgressStatus(true); - Repositories.UpdateAllRepositories (ps); + Repositories.UpdateAllRepositories(ps); return "Update"; } @@ -266,7 +266,7 @@ namespace OpenSim.Services.IntegrationService public void RemoveRepository(string[] args) { AddinRepository[] reps = Repositories.GetRepositories(); - Array.Sort (reps, (r1,r2) => r1.Title.CompareTo(r2.Title)); + Array.Sort(reps, (r1,r2) => r1.Title.CompareTo(r2.Title)); if (reps.Length == 0) { MainConsole.Instance.Output("No repositories have been registered."); @@ -281,7 +281,7 @@ namespace OpenSim.Services.IntegrationService } AddinRepository rep = reps[n]; - Repositories.RemoveRepository (rep.Url); + Repositories.RemoveRepository(rep.Url); return; } @@ -295,7 +295,7 @@ namespace OpenSim.Services.IntegrationService public void EnableRepository(string[] args) { AddinRepository[] reps = Repositories.GetRepositories(); - Array.Sort (reps, (r1,r2) => r1.Title.CompareTo(r2.Title)); + Array.Sort(reps, (r1,r2) => r1.Title.CompareTo(r2.Title)); if (reps.Length == 0) { MainConsole.Instance.Output("No repositories have been registered."); @@ -324,7 +324,7 @@ namespace OpenSim.Services.IntegrationService public void DisableRepository(string[] args) { AddinRepository[] reps = Repositories.GetRepositories(); - Array.Sort (reps, (r1,r2) => r1.Title.CompareTo(r2.Title)); + Array.Sort(reps, (r1,r2) => r1.Title.CompareTo(r2.Title)); if (reps.Length == 0) { MainConsole.Instance.Output("No repositories have been registered."); From 9177d28b5c4b1e8bbbd280654fbadc499e103ef5 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 17 Jul 2012 13:30:07 -0400 Subject: [PATCH 73/87] Add some missing refs removed during formatting --- .../IntegrationService/IntegrationService.cs | 10 +++++++++- .../IntegrationService/IntegrationServiceBase.cs | 13 ++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index 8bd293fa12..ade554a0f1 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -25,14 +25,22 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + using System; using System.Collections; using System.Collections.Generic; using System.Reflection; +using System.Linq; +using OpenSim.Server.Base; +using OpenSim.Services.Interfaces; using OpenSim.Framework; using OpenSim.Framework.Servers.HttpServer; -using OpenSim.Services.Interfaces; using GridRegion = OpenSim.Services.Interfaces.GridRegion; +using OpenMetaverse; +using OpenMetaverse.StructuredData; +using Nini.Config; +using log4net; +using Mono.Addins; using Ux = OpenSim.Services.IntegrationService.IntegrationUtils; diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 7fdf46e50a..4da881d1cf 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -25,17 +25,20 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + using System; using System.IO; -using System.Reflection; -using OpenSim.Framework; -using OpenSim.Framework.Servers.HttpServer; -using OpenSim.Services.Base; using OpenSim.Services.Interfaces; +using OpenSim.Services.Base; +using OpenSim.Framework.Servers.HttpServer; +using System.Reflection; +using Nini.Config; +using OpenSim.Framework; using GridRegion = OpenSim.Services.Interfaces.GridRegion; +using Mono.Addins; +using log4net; using Ux = OpenSim.Services.IntegrationService.IntegrationUtils; - [assembly:AddinRoot("IntegrationService", "2.1")] namespace OpenSim.Services.IntegrationService { From 0b96019c5ec9227201ecb6a7fa3300d7ab809e5e Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 22 Jul 2012 09:39:48 -0400 Subject: [PATCH 74/87] Some annotations for refactoring --- .../IntegrationService/IntegrationService.cs | 18 ++++++-- .../IntegrationServiceBase.cs | 42 +++++++++++++++++-- .../IntegrationService/IntegrationUtils.cs | 6 ++- .../IntegrationService/PluginManager.cs | 10 +++++ 4 files changed, 68 insertions(+), 8 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationService.cs b/OpenSim/Services/IntegrationService/IntegrationService.cs index ade554a0f1..80367beba9 100644 --- a/OpenSim/Services/IntegrationService/IntegrationService.cs +++ b/OpenSim/Services/IntegrationService/IntegrationService.cs @@ -43,7 +43,9 @@ using log4net; using Mono.Addins; using Ux = OpenSim.Services.IntegrationService.IntegrationUtils; - +// ****[ Robust ] Keep the core services here and rebrand it as a more generic +// ****[ Robust ] service for use in buthe OpenSim.exe and Robust.exe +// namespace OpenSim.Services.IntegrationService { public class IntegrationService : IntegrationServiceBase, IIntegrationService @@ -61,7 +63,13 @@ namespace OpenSim.Services.IntegrationService AddConsoleCommands(); } } - + + // ****[ Robust ] We have console commands to manage the repositories and modules. + // ****[ Robust ] We can add/remove/enable/disable repositories and modules + // ****[ Robust ] We can query repositories for available modules and updates + // ****[ Robust ] The manager needs to be moved to OpenSim.Framework so we can + // ****[ Robust ] use it to complete the region module loader + // // Our console commands private void AddConsoleCommands() { @@ -347,7 +355,11 @@ namespace OpenSim.Services.IntegrationService return; } #endregion - + + // ****[ Robust ] These are handlers that relate to the console commands, but + // ****[ Robust ] are connecting to remote applications. It would be ok to do + // ****[ Robust ] this later in a separate module + // #region IIntegrationService implementation // Will hold back on implementing things here that can actually make changes // Need to secure it first diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 4da881d1cf..62ef60abc3 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -39,9 +39,18 @@ using Mono.Addins; using log4net; using Ux = OpenSim.Services.IntegrationService.IntegrationUtils; + +// ****[ Robust ] Re-factor to use in both OpenSim.exe and Robust.exe +// ****[ Robust ] ** Loading can be done in modules that overide a base +// ****[ Robust ] ** class that provides the base services for the +// ****[ Robust ] ** discovery, loading and event queing of the modules + + +// ****[ Robust ] We need to define our root to graft our modules into [assembly:AddinRoot("IntegrationService", "2.1")] namespace OpenSim.Services.IntegrationService { + // ****[ Robust ] The name our modules look for as a dependency [TypeExtensionPoint(Path="/OpenSim/IntegrationService", Name="IntegrationService")] public interface IntegrationPlugin { @@ -83,7 +92,12 @@ namespace OpenSim.Services.IntegrationService m_IntegrationConfigLoc = serverConfig.GetString("IntegrationConfig", String.Empty); AddinRegistry registry ; bool DEVELOPMENT = serverConfig.GetBoolean("DevelopmentMode", false); - + + // ****[ Robust ] Would be able to load as a local Robust module, + // ****[ Robust ] during development, by adding the info to the + // ****[ Robust ] ServiceConnectors. Also allows modules to be + // ****[ Robust ] loaded locally under normal operations + // // Are we developing plugins? We will load them now. // This will allow debugging of the modules and will // use the runtime directory for the registry. Will not @@ -119,6 +133,12 @@ namespace OpenSim.Services.IntegrationService } } } + // ****[ Robust ] Place this in a loader that getsd called from + // Robust after the main server is running + // + // ****[ Robust ] Make generic version of this to be overridden + // ****[ Robust ] by OpenSim.exe and Robust.exe + // else { // defaults to the ./bin directory @@ -176,7 +196,10 @@ namespace OpenSim.Services.IntegrationService + args.Exception.Message + "\n" + args.Exception.StackTrace); } - + + // ****[ Robust ] This is where we get control of the plugin during + // ****[ Robust ] the loading and unloading + // // This is our init // We can do build-up and tear-down of our plugin void OnExtensionChanged(object s, ExtensionNodeEventArgs args) @@ -207,7 +230,15 @@ namespace OpenSim.Services.IntegrationService m_log.Info("[INTEGRATION SERVICE]: Plugin Loaded: " + args.AddinId); } #endregion addin-event handlers - + + // ****[ Robust ] We are taking the module from the event handler and + // ****[ Robust ] taking it through the initialization process + // ****[ Robust ] This is using a mixture of the user's existing ini + // ****[ Robust ] and the developer supplied initial configuration + // ****[ Robust ] + // ****[ Robust ] We should first check the user's ini for existing entries + // ****[ Robust ] in case they have configured the module ahead of time. + // private void LoadingPlugin(IntegrationPlugin plugin) { string ConfigPath = String.Format("{0}/(1)", m_IntegrationConfigLoc,plugin.ConfigName); @@ -239,7 +270,10 @@ namespace OpenSim.Services.IntegrationService m_log.DebugFormat("[INTEGRATION SERVICE]: ****** In Loading Plugin {0}", plugin.PluginName); plugin.Init(m_ConfigSource, PlugConfig, m_Server, this); } - + + // ****[ Robust ] We are taking the plugin from the event handler to unload it + // ****[ Robust ] and we need to tear down to release all objects. + // private void UnLoadingPlugin(IntegrationPlugin plugin) { try diff --git a/OpenSim/Services/IntegrationService/IntegrationUtils.cs b/OpenSim/Services/IntegrationService/IntegrationUtils.cs index 41332c3681..d9bc35902f 100644 --- a/OpenSim/Services/IntegrationService/IntegrationUtils.cs +++ b/OpenSim/Services/IntegrationService/IntegrationUtils.cs @@ -41,7 +41,11 @@ namespace OpenSim.Services.IntegrationService public static class IntegrationUtils { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - + + // ****[ Robust ] Only a couple of these are needed in the core management system + // ****[ Robust ] These could be moved to the implementation instead of being in + // ****[ Robust ] a separate file + // #region web utils public static bool ParseStringToOSDMap(string input, out OSDMap json) { diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index d84fa67305..a67d5edfaf 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -39,6 +39,16 @@ using Ux = OpenSim.Services.IntegrationService.IntegrationUtils; namespace OpenSim.Services.IntegrationService { + // ****[ Robust ] These are the functions that connect our console + // ****[ Robust ] commands to the addin management. This needs to + // ****[ Robust ] be maintained in a file separately from the main + // ****[ Robust ] implementation in the same namespace. Any generaly + // ****[ Robust ] usefull methods can be located in one of the existing + // ****[ Robust ] places + // ****[ Robust ] + // ****[ Robust ] This needs to be in OpenSim.Framework so it can be + // ****[ Robust ] used to complete the region module management + // // This will maintain the plugin repositories and plugins public class PluginManager : SetupService { From 276d882ad3a68a35f1d48cd6a702fcb31e9f7bd8 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Thu, 26 Jul 2012 12:47:26 -0400 Subject: [PATCH 75/87] Re-order initialization --- .../Services/IntegrationService/IntegrationServiceBase.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 62ef60abc3..75d91d04d7 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -161,12 +161,14 @@ namespace OpenSim.Services.IntegrationService } AddinManager.Initialize(RegistryLocation); - AddinManager.Registry.Update(); - + AddinManager.AddinLoaded += on_addinloaded_; AddinManager.AddinLoadError += on_addinloaderror_; AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; AddinManager.AddExtensionNodeHandler("/OpenSim/IntegrationService", OnExtensionChanged); + + AddinManager.Registry.Update(); + } } From 2d5cb2eba0967e0e00b8e76cb7442e6e2a6abaab Mon Sep 17 00:00:00 2001 From: BlueWall Date: Thu, 26 Jul 2012 13:24:10 -0400 Subject: [PATCH 76/87] Add some feedback at the console --- .../Services/IntegrationService/IntegrationServiceBase.cs | 5 ++++- OpenSim/Services/IntegrationService/PluginManager.cs | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 75d91d04d7..281d0c741b 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -161,13 +161,16 @@ namespace OpenSim.Services.IntegrationService } AddinManager.Initialize(RegistryLocation); + AddinManager.Registry.Update(); AddinManager.AddinLoaded += on_addinloaded_; AddinManager.AddinLoadError += on_addinloaderror_; AddinManager.AddinUnloaded += HandleAddinManagerAddinUnloaded; + + // Installed extensions are queried here and cause the registered events to fire AddinManager.AddExtensionNodeHandler("/OpenSim/IntegrationService", OnExtensionChanged); - AddinManager.Registry.Update(); + } } diff --git a/OpenSim/Services/IntegrationService/PluginManager.cs b/OpenSim/Services/IntegrationService/PluginManager.cs index a67d5edfaf..4c1db4bc6b 100644 --- a/OpenSim/Services/IntegrationService/PluginManager.cs +++ b/OpenSim/Services/IntegrationService/PluginManager.cs @@ -108,12 +108,15 @@ namespace OpenSim.Services.IntegrationService Addin addin = m_Registry.GetAddin(aentry.Addin.Id); m_Registry.DisableAddin(addin.Id); addin.Enabled = false; + + MainConsole.Instance.Output("Installation Success"); ListInstalledAddins(out res); result = res; return true; } else - { + { + MainConsole.Instance.Output("Installation Failed"); result = res; return false; } @@ -142,6 +145,7 @@ namespace OpenSim.Services.IntegrationService addin.Enabled = false; IProgressStatus ps = new ConsoleProgressStatus(false); Uninstall(ps, addin.Id); + MainConsole.Instance.Output("Uninstall Success - restart to complete operation"); return; } From 20d7229358509418b9d826e32f4a1563a0b339eb Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 27 Jul 2012 01:46:00 -0400 Subject: [PATCH 77/87] R&D for upcoming refactoring --- .../Services/IntegrationService/IntegrationServiceBase.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 281d0c741b..249f0a3a94 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -210,7 +210,10 @@ namespace OpenSim.Services.IntegrationService void OnExtensionChanged(object s, ExtensionNodeEventArgs args) { IntegrationPlugin ip = (IntegrationPlugin) args.ExtensionObject; - m_log.Info("[INTEGRATION SERVICE]: Plugin Change"); + string file_path = args.ExtensionNode.Addin.GetFilePath(); + Addin a = m_PluginManager.Registry.GetAddin(args.ExtensionNode.Addin.Id); + + m_log.InfoFormat("[INTEGRATION SERVICE]: Plugin Change {0}",a.AddinFile); switch (args.Change) { From d3f1599f275015d9cb2f225696c85ae2357ff682 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 27 Jul 2012 01:52:07 -0400 Subject: [PATCH 78/87] add some notes --- .../Services/IntegrationService/IntegrationServiceBase.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 249f0a3a94..33c9efc8b9 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -209,10 +209,12 @@ namespace OpenSim.Services.IntegrationService // We can do build-up and tear-down of our plugin void OnExtensionChanged(object s, ExtensionNodeEventArgs args) { + // This is our plugin IntegrationPlugin ip = (IntegrationPlugin) args.ExtensionObject; - string file_path = args.ExtensionNode.Addin.GetFilePath(); + // We will need to get the name and path of the dll for the connector to + // be able to load the service in the refactored version... + // Might also use this to check for updates to alert the user Addin a = m_PluginManager.Registry.GetAddin(args.ExtensionNode.Addin.Id); - m_log.InfoFormat("[INTEGRATION SERVICE]: Plugin Change {0}",a.AddinFile); switch (args.Change) From b951124d02bc73f41411cd40f428f761df5d43ab Mon Sep 17 00:00:00 2001 From: SignpostMarv Date: Fri, 3 Aug 2012 12:21:57 +0100 Subject: [PATCH 79/87] attempting to fix a build issue Signed-off-by: BlueWall --- .../CoreModules/Scripting/VectorRender/VectorRenderModule.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs b/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs index d03911101d..6b9f53739e 100644 --- a/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs +++ b/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs @@ -596,9 +596,9 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender } break; case "R": - Font newFont = new Font(myFont, FontStyle.Regular); +// Font newFont = new Font(myFont, FontStyle.Regular); myFont.Dispose(); - myFont = newFont; + myFont = new Font(myFont, FontStyle.Regular); break; } } From c0b6bd1d24ab4f3080ad57d8a8cae440b4efb7f9 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 31 Aug 2012 13:06:28 -0400 Subject: [PATCH 80/87] Fix Windows build Add reference to fix Windows build: no windows here to test, please report any issues back to IRC #opensim-dev ASAP --- prebuild.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/prebuild.xml b/prebuild.xml index ac03d2d383..b9830decbd 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -3303,6 +3303,7 @@ ../../../bin/ + From dbd42daed6bfff7d92a6362432a72683edfd4fc4 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sat, 1 Sep 2012 21:51:32 -0400 Subject: [PATCH 81/87] Testing IRC bot --- OpenSim/Services/IntegrationService/IntegrationServiceBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs index 33c9efc8b9..82a5930896 100644 --- a/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs +++ b/OpenSim/Services/IntegrationService/IntegrationServiceBase.cs @@ -116,7 +116,7 @@ namespace OpenSim.Services.IntegrationService registry.Update(); foreach (IntegrationPlugin cmd in AddinManager.GetExtensionObjects("/OpenSim/IntegrationService")) { - m_log.DebugFormat("[INTEGRATION SERVICE]: Processing _Addin {0}", cmd.PluginName); + m_log.DebugFormat("[INTEGRATION SERVICE]: Processing Addin {0}", cmd.PluginName); LoadingPlugin(cmd); } From d51628b0a52019618657a42d9466b2c26e46d138 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sat, 1 Sep 2012 21:56:10 -0400 Subject: [PATCH 82/87] Irc bot test --- OpenSim/Services/IntegrationService/IntegrationUtils.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Services/IntegrationService/IntegrationUtils.cs b/OpenSim/Services/IntegrationService/IntegrationUtils.cs index d9bc35902f..70ae9074d3 100644 --- a/OpenSim/Services/IntegrationService/IntegrationUtils.cs +++ b/OpenSim/Services/IntegrationService/IntegrationUtils.cs @@ -132,7 +132,7 @@ namespace OpenSim.Services.IntegrationService public static IConfigSource LoadInitialConfig(string url) { IConfigSource source = new XmlConfigSource(); - m_log.InfoFormat("[CONFIG]: {0} is a http:// URI, fetching ...", url); + m_log.InfoFormat("[CONFIG]: {0} is a http:// URI, fetching ...", url); // The ini file path is a http URI // Try to read it @@ -158,4 +158,4 @@ namespace OpenSim.Services.IntegrationService } } -} \ No newline at end of file +} From 02794e152eeaf8e88f6004b9a10f251e11350294 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Thu, 6 Sep 2012 05:13:10 -0400 Subject: [PATCH 83/87] 0006270: Warp3D leaks memory on mono based systems Thanks Hiro Lecker for a patch to reduce memory useage with Warp3D map module --- CONTRIBUTORS.txt | 1 + .../Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 22b29a93c9..f334b3d2fc 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -92,6 +92,7 @@ what it is today. * Flyte Xevious * Garmin Kawaguichi * Gryc Ueusp +* Hiro Lecker * Imaze Rhiano * Intimidated * Jeremy Bongio (IBM) diff --git a/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs b/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs index 9002a9f330..ed9b1277fb 100644 --- a/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs +++ b/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs @@ -208,6 +208,9 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap bitmap = ImageUtils.ResizeImage(origBitmap, viewport.Width, viewport.Height); } + GC.Collect(); + m_log.Debug("[WARP 3D IMAGE MODULE]: GC.Collect()"); + return bitmap; } @@ -673,4 +676,4 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap return result; } } -} \ No newline at end of file +} From 7b52bbd9cb184cb9cee7f19d11909709523289b6 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Thu, 6 Sep 2012 05:23:05 -0400 Subject: [PATCH 84/87] Add file to .gitignore Add OpenSim.userprefs which is created by Monodevelop to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1e412437cd..39a8333d0e 100644 --- a/.gitignore +++ b/.gitignore @@ -66,6 +66,7 @@ Examples/*.dll OpenSim.build OpenSim.sln OpenSim.suo +OpenSim.userprefs Prebuild/Prebuild.build Prebuild/Prebuild.sln TestResult.xml From ef574d3a293dc2ef559798e34cee2dc6dcc7af3c Mon Sep 17 00:00:00 2001 From: SignpostMarv Date: Wed, 5 Sep 2012 11:25:37 +0100 Subject: [PATCH 85/87] pasting in show uptime code Signed-off-by: BlueWall --- OpenSim/Server/Base/ServicesServerBase.cs | 41 +++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/OpenSim/Server/Base/ServicesServerBase.cs b/OpenSim/Server/Base/ServicesServerBase.cs index b137c05889..0cff6ed5df 100644 --- a/OpenSim/Server/Base/ServicesServerBase.cs +++ b/OpenSim/Server/Base/ServicesServerBase.cs @@ -26,6 +26,7 @@ */ using System; +using System.Collections.Generic; using System.IO; using System.Reflection; using System.Threading; @@ -71,10 +72,17 @@ namespace OpenSim.Server.Base // private string m_pidFile = String.Empty; + /// + /// Time at which this server was started + /// + protected DateTime m_startuptime; + // Handle all the automagical stuff // public ServicesServerBase(string prompt, string[] args) { + m_startuptime = DateTime.Now; + // Save raw arguments // m_Arguments = args; @@ -250,6 +258,10 @@ namespace OpenSim.Server.Base "command-script

9NL@GR7U@{DZlNf)FJ*o=K!Y^9n*dCG`Pkd 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