From 8ca793875318efc8db3339b25bf7fa5ddeeac218 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 1 May 2011 14:44:09 -0400 Subject: Adding ssl support Adding ssl support for "Out of Band" applications such as the remote admin module or Robust services --- OpenSim/Framework/MainServer.cs | 5 +++++ OpenSim/Framework/NetworkServersInfo.cs | 15 +++++++++++++++ OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | 14 ++++++++++++++ 3 files changed, 34 insertions(+) (limited to 'OpenSim/Framework') diff --git a/OpenSim/Framework/MainServer.cs b/OpenSim/Framework/MainServer.cs index 0515b16..a3e0a26 100644 --- a/OpenSim/Framework/MainServer.cs +++ b/OpenSim/Framework/MainServer.cs @@ -52,6 +52,11 @@ namespace OpenSim.Framework return GetHttpServer(port,null); } + public static void AddHttpServer(BaseHttpServer server) + { + m_Servers.Add(server.Port, server); + } + public static IHttpServer GetHttpServer(uint port, IPAddress ipaddr) { if (port == 0) diff --git a/OpenSim/Framework/NetworkServersInfo.cs b/OpenSim/Framework/NetworkServersInfo.cs index b25f8b9..5bb4111 100644 --- a/OpenSim/Framework/NetworkServersInfo.cs +++ b/OpenSim/Framework/NetworkServersInfo.cs @@ -49,6 +49,12 @@ namespace OpenSim.Framework public string HttpSSLCN = ""; public uint httpSSLPort = 9001; + // "Out of band" managemnt https + public bool ssl_listener = false; + public uint https_port = 0; + public string cert_path = String.Empty; + public string cert_pass = String.Empty; + public string MessagingURL = String.Empty; public NetworkServersInfo() @@ -86,6 +92,15 @@ namespace OpenSim.Framework secureInventoryServer = config.Configs["Network"].GetBoolean("secure_inventory_server", true); MessagingURL = config.Configs["Network"].GetString("messaging_server_url", string.Empty); + + // "Out of band management https" + ssl_listener = config.Configs["Network"].GetBoolean("https_listener",false); + if( ssl_listener) + { + cert_path = config.Configs["Network"].GetString("cert_path",String.Empty); + cert_pass = config.Configs["Network"].GetString("cert_pass",String.Empty); + https_port = (uint)config.Configs["Network"].GetInt("https_port", 0); + } } } } diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index ba89e21..598e5d1 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -32,6 +32,7 @@ using System.Collections.Specialized; using System.IO; using System.Net; using System.Net.Sockets; +using System.Security.Cryptography.X509Certificates; using System.Reflection; using System.Globalization; using System.Text; @@ -72,6 +73,7 @@ namespace OpenSim.Framework.Servers.HttpServer protected uint m_port; protected uint m_sslport; protected bool m_ssl; + private X509Certificate2 m_cert; protected bool m_firstcaps = true; protected string m_SSLCommonName = ""; @@ -123,6 +125,14 @@ namespace OpenSim.Framework.Servers.HttpServer } } + public BaseHttpServer(uint port, bool ssl, string CPath, string CPass) : this (port, ssl) + { + if (m_ssl) + { + m_cert = new X509Certificate2(CPath, CPass); + } + } + /// /// Add a stream handler to the http server. If the handler already exists, then nothing happens. /// @@ -1683,6 +1693,7 @@ namespace OpenSim.Framework.Servers.HttpServer try { //m_httpListener = new HttpListener(); + NotSocketErrors = 0; if (!m_ssl) { @@ -1702,6 +1713,9 @@ namespace OpenSim.Framework.Servers.HttpServer { //m_httpListener.Prefixes.Add("https://+:" + (m_sslport) + "/"); //m_httpListener.Prefixes.Add("http://+:" + m_port + "/"); + m_httpListener2 = CoolHTTPListener.Create(IPAddress.Any, (int)m_port, m_cert); + m_httpListener2.ExceptionThrown += httpServerException; + m_httpListener2.LogWriter = httpserverlog; } m_httpListener2.RequestReceived += OnRequest; -- cgit v1.1 From f5ec332474ef5b7ee8e2588a1783f756f0a64525 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 6 May 2011 22:41:07 +0100 Subject: remove obsolete [StandAlone] config section parsing, none of which was actually used since being superseded by the connector architecture in 0.7 --- OpenSim/Framework/ConfigSettings.cs | 50 +------------------------------------ 1 file changed, 1 insertion(+), 49 deletions(-) (limited to 'OpenSim/Framework') diff --git a/OpenSim/Framework/ConfigSettings.cs b/OpenSim/Framework/ConfigSettings.cs index be77341..9114e00 100644 --- a/OpenSim/Framework/ConfigSettings.cs +++ b/OpenSim/Framework/ConfigSettings.cs @@ -76,54 +76,6 @@ namespace OpenSim.Framework set { m_physicalPrim = value; } } - private bool m_standaloneAuthenticate = false; - - public bool StandaloneAuthenticate - { - get { return m_standaloneAuthenticate; } - set { m_standaloneAuthenticate = value; } - } - - private string m_standaloneWelcomeMessage = null; - - public string StandaloneWelcomeMessage - { - get { return m_standaloneWelcomeMessage; } - set { m_standaloneWelcomeMessage = value; } - } - - private string m_standaloneInventoryPlugin; - - public string StandaloneInventoryPlugin - { - get { return m_standaloneInventoryPlugin; } - set { m_standaloneInventoryPlugin = value; } - } - - private string m_standaloneUserPlugin; - - public string StandaloneUserPlugin - { - get { return m_standaloneUserPlugin; } - set { m_standaloneUserPlugin = value; } - } - - private string m_standaloneInventorySource; - - public string StandaloneInventorySource - { - get { return m_standaloneInventorySource; } - set { m_standaloneInventorySource = value; } - } - - private string m_standaloneUserSource; - - public string StandaloneUserSource - { - get { return m_standaloneUserSource; } - set { m_standaloneUserSource = value; } - } - protected string m_librariesXMLFile; public string LibrariesXMLFile { @@ -146,4 +98,4 @@ namespace OpenSim.Framework public const uint DefaultGridServerHttpPort = 8003; public const uint DefaultInventoryServerHttpPort = 8003; } -} +} \ No newline at end of file -- cgit v1.1 From 3d095e84d63e97e88bcb946498eba14de81705b4 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 6 May 2011 22:45:03 +0100 Subject: minor: remove mono compiler warnings --- OpenSim/Framework/ChildAgentDataUpdate.cs | 2 +- OpenSim/Framework/PriorityQueue.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'OpenSim/Framework') diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs index 28fe3ba..710a57d 100644 --- a/OpenSim/Framework/ChildAgentDataUpdate.cs +++ b/OpenSim/Framework/ChildAgentDataUpdate.cs @@ -460,7 +460,7 @@ namespace OpenSim.Framework { info["state"] = OSD.FromString(AttachmentObjectStates[i++]); } - catch (IndexOutOfRangeException e) + catch (IndexOutOfRangeException) { m_log.WarnFormat("[CHILD AGENT DATA]: scripts list is shorter than object list."); } diff --git a/OpenSim/Framework/PriorityQueue.cs b/OpenSim/Framework/PriorityQueue.cs index 3e6fdaa..e7a7f7f 100644 --- a/OpenSim/Framework/PriorityQueue.cs +++ b/OpenSim/Framework/PriorityQueue.cs @@ -38,7 +38,7 @@ namespace OpenSim.Framework { public class PriorityQueue { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); +// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public delegate bool UpdatePriorityHandler(ref uint priority, ISceneEntity entity); -- cgit v1.1 From b140aef87a18a5dd388abfc7afeeac7a417b6a83 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 6 May 2011 22:51:36 +0100 Subject: refactor: simplify ConfigSettings --- OpenSim/Framework/ConfigSettings.cs | 66 ++++--------------------------------- 1 file changed, 7 insertions(+), 59 deletions(-) (limited to 'OpenSim/Framework') diff --git a/OpenSim/Framework/ConfigSettings.cs b/OpenSim/Framework/ConfigSettings.cs index 9114e00..50328d7 100644 --- a/OpenSim/Framework/ConfigSettings.cs +++ b/OpenSim/Framework/ConfigSettings.cs @@ -29,65 +29,13 @@ namespace OpenSim.Framework { public class ConfigSettings { - private string m_physicsEngine; - - public string PhysicsEngine - { - get { return m_physicsEngine; } - set { m_physicsEngine = value; } - } - private string m_meshEngineName; - - public string MeshEngineName - { - get { return m_meshEngineName; } - set { m_meshEngineName = value; } - } - - private bool m_see_into_region_from_neighbor; - - public bool See_into_region_from_neighbor - { - get { return m_see_into_region_from_neighbor; } - set { m_see_into_region_from_neighbor = value; } - } - - private string m_storageDll; - - public string StorageDll - { - get { return m_storageDll; } - set { m_storageDll = value; } - } - - private string m_clientstackDll; - - public string ClientstackDll - { - get { return m_clientstackDll; } - set { m_clientstackDll = value; } - } - - private bool m_physicalPrim; - - public bool PhysicalPrim - { - get { return m_physicalPrim; } - set { m_physicalPrim = value; } - } - - protected string m_librariesXMLFile; - public string LibrariesXMLFile - { - get - { - return m_librariesXMLFile; - } - set - { - m_librariesXMLFile = value; - } - } + public string PhysicsEngine { get; set; } + public string MeshEngineName { get; set; } + public bool See_into_region_from_neighbor { get; set; } + public string StorageDll { get; set; } + public string ClientstackDll { get; set; } + public bool PhysicalPrim { get; set; } + public string LibrariesXMLFile { get; set; } public const uint DefaultAssetServerHttpPort = 8003; public const uint DefaultRegionHttpPort = 9000; -- cgit v1.1 From 737add1683b0d3bf0441807429dc10306963f638 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 6 May 2011 17:02:46 -0700 Subject: Removed SimpleRegionInfo, which was obsolete and not used anywhere. --- OpenSim/Framework/RegionInfo.cs | 245 ---------------------------------------- 1 file changed, 245 deletions(-) (limited to 'OpenSim/Framework') diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs index 239ce3d..4c007d6 100644 --- a/OpenSim/Framework/RegionInfo.cs +++ b/OpenSim/Framework/RegionInfo.cs @@ -96,251 +96,6 @@ namespace OpenSim.Framework } - [Serializable] - public class SimpleRegionInfo - { -// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - /// - /// The port by which http communication occurs with the region (most noticeably, CAPS communication) - /// - public uint HttpPort - { - get { return m_httpPort; } - set { m_httpPort = value; } - } - protected uint m_httpPort; - - /// - /// A well-formed URI for the host region server (namely "http://" + ExternalHostName) - /// - public string ServerURI - { - get { - if ( m_serverURI != string.Empty ) { - return m_serverURI; - } else { - return "http://" + m_externalHostName + ":" + m_httpPort + "/"; - } - } - set { - if ( value.EndsWith("/") ) { - m_serverURI = value; - } else { - m_serverURI = value + '/'; - } - } - } - protected string m_serverURI; - - public string RegionName - { - get { return m_regionName; } - set { m_regionName = value; } - } - protected string m_regionName = String.Empty; - - protected bool Allow_Alternate_Ports; - public bool m_allow_alternate_ports; - protected string m_externalHostName; - - protected IPEndPoint m_internalEndPoint; - protected uint? m_regionLocX; - protected uint? m_regionLocY; - protected uint m_remotingPort; - public UUID RegionID = UUID.Zero; - public string RemotingAddress; - public UUID ScopeID = UUID.Zero; - - public SimpleRegionInfo() - { - m_serverURI = string.Empty; - } - - public SimpleRegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) - { - m_regionLocX = regionLocX; - m_regionLocY = regionLocY; - - m_internalEndPoint = internalEndPoint; - m_externalHostName = externalUri; - m_serverURI = string.Empty; - } - - public SimpleRegionInfo(uint regionLocX, uint regionLocY, string externalUri, uint port) - { - m_regionLocX = regionLocX; - m_regionLocY = regionLocY; - - m_externalHostName = externalUri; - - m_internalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), (int) port); - m_serverURI = string.Empty; - } - - public SimpleRegionInfo(RegionInfo ConvertFrom) - { - m_regionName = ConvertFrom.RegionName; - m_regionLocX = ConvertFrom.RegionLocX; - m_regionLocY = ConvertFrom.RegionLocY; - m_internalEndPoint = ConvertFrom.InternalEndPoint; - m_externalHostName = ConvertFrom.ExternalHostName; - m_remotingPort = ConvertFrom.RemotingPort; - m_httpPort = ConvertFrom.HttpPort; - m_allow_alternate_ports = ConvertFrom.m_allow_alternate_ports; - RemotingAddress = ConvertFrom.RemotingAddress; - RegionID = UUID.Zero; - ServerURI = ConvertFrom.ServerURI; - } - - public uint RemotingPort - { - get { return m_remotingPort; } - set { m_remotingPort = value; } - } - - /// - /// This accessor can throw all the exceptions that Dns.GetHostAddresses can throw. - /// - /// XXX Isn't this really doing too much to be a simple getter, rather than an explict method? - /// - public IPEndPoint ExternalEndPoint - { - get - { - // Old one defaults to IPv6 - //return new IPEndPoint(Dns.GetHostAddresses(m_externalHostName)[0], m_internalEndPoint.Port); - - IPAddress ia = null; - // If it is already an IP, don't resolve it - just return directly - if (IPAddress.TryParse(m_externalHostName, out ia)) - return new IPEndPoint(ia, m_internalEndPoint.Port); - - // Reset for next check - ia = null; - try - { - foreach (IPAddress Adr in Dns.GetHostAddresses(m_externalHostName)) - { - if (ia == null) - ia = Adr; - - if (Adr.AddressFamily == AddressFamily.InterNetwork) - { - ia = Adr; - break; - } - } - } - catch (SocketException e) - { - throw new Exception( - "Unable to resolve local hostname " + m_externalHostName + " innerException of type '" + - e + "' attached to this exception", e); - } - - return new IPEndPoint(ia, m_internalEndPoint.Port); - } - - set { m_externalHostName = value.ToString(); } - } - - public string ExternalHostName - { - get { return m_externalHostName; } - set { m_externalHostName = value; } - } - - public IPEndPoint InternalEndPoint - { - get { return m_internalEndPoint; } - set { m_internalEndPoint = value; } - } - - public uint RegionLocX - { - get { return m_regionLocX.Value; } - set { m_regionLocX = value; } - } - - public uint RegionLocY - { - get { return m_regionLocY.Value; } - set { m_regionLocY = value; } - } - - public ulong RegionHandle - { - get { return Util.UIntsToLong((RegionLocX * (uint) Constants.RegionSize), (RegionLocY * (uint) Constants.RegionSize)); } - } - - public int getInternalEndPointPort() - { - return m_internalEndPoint.Port; - } - - public Dictionary ToKeyValuePairs() - { - Dictionary kvp = new Dictionary(); - kvp["uuid"] = RegionID.ToString(); - kvp["locX"] = RegionLocX.ToString(); - kvp["locY"] = RegionLocY.ToString(); - kvp["external_ip_address"] = ExternalEndPoint.Address.ToString(); - kvp["external_port"] = ExternalEndPoint.Port.ToString(); - kvp["external_host_name"] = ExternalHostName; - kvp["http_port"] = HttpPort.ToString(); - kvp["internal_ip_address"] = InternalEndPoint.Address.ToString(); - kvp["internal_port"] = InternalEndPoint.Port.ToString(); - kvp["alternate_ports"] = m_allow_alternate_ports.ToString(); - kvp["server_uri"] = ServerURI; - - return kvp; - } - - public SimpleRegionInfo(Dictionary kvp) - { - if ((kvp["external_ip_address"] != null) && (kvp["external_port"] != null)) - { - int port = 0; - Int32.TryParse((string)kvp["external_port"], out port); - IPEndPoint ep = new IPEndPoint(IPAddress.Parse((string)kvp["external_ip_address"]), port); - ExternalEndPoint = ep; - } - else - ExternalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); - - if (kvp["external_host_name"] != null) - ExternalHostName = (string)kvp["external_host_name"]; - - if (kvp["http_port"] != null) - { - UInt32 port = 0; - UInt32.TryParse((string)kvp["http_port"], out port); - HttpPort = port; - } - - if ((kvp["internal_ip_address"] != null) && (kvp["internal_port"] != null)) - { - int port = 0; - Int32.TryParse((string)kvp["internal_port"], out port); - IPEndPoint ep = new IPEndPoint(IPAddress.Parse((string)kvp["internal_ip_address"]), port); - InternalEndPoint = ep; - } - else - InternalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); - - if (kvp["alternate_ports"] != null) - { - bool alts = false; - Boolean.TryParse((string)kvp["alternate_ports"], out alts); - m_allow_alternate_ports = alts; - } - - if (kvp["server_uri"] != null) - ServerURI = (string)kvp["server_uri"]; - } - } - public class RegionInfo { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); -- cgit v1.1