keep a unsecure http port up for external services (datasnapshot search). Only fire poolservices on main http listener
parent
7aa4bd7006
commit
80d4f76d18
|
@ -111,7 +111,6 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
protected uint m_sslport;
|
||||
protected bool m_ssl;
|
||||
private X509Certificate2 m_cert;
|
||||
protected bool m_firstcaps = true;
|
||||
protected string m_SSLCommonName = "";
|
||||
protected List<string> m_certNames = new List<string>();
|
||||
protected List<string> m_certIPs = new List<string>();
|
||||
|
@ -152,11 +151,6 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
m_port = port;
|
||||
}
|
||||
|
||||
public BaseHttpServer(uint port, bool ssl) : this (port)
|
||||
{
|
||||
m_ssl = ssl;
|
||||
}
|
||||
|
||||
private void load_cert(string CPath, string CPass)
|
||||
{
|
||||
try
|
||||
|
@ -216,21 +210,24 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
|
||||
if(m_cert.Issuer == m_cert.Subject )
|
||||
m_log.Warn("Self signed certificate. Clients need to allow this (some viewers debug option NoVerifySSLcert must be set to true");
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
m_ssl = false;
|
||||
}
|
||||
|
||||
public BaseHttpServer(uint port, bool ssl, string CPath, string CPass) : this (port, ssl)
|
||||
public BaseHttpServer(uint port, bool ssl, string CPath, string CPass)
|
||||
{
|
||||
if (m_ssl)
|
||||
m_port = port;
|
||||
if (ssl)
|
||||
{
|
||||
load_cert(CPath, CPass);
|
||||
if(m_cert.Issuer == m_cert.Subject )
|
||||
m_log.Warn("Self signed certificate. Http clients need to allow this");
|
||||
m_ssl = true;
|
||||
m_sslport = port;
|
||||
}
|
||||
else
|
||||
m_ssl = false;
|
||||
}
|
||||
|
||||
static bool MatchDNS (string hostname, string dns)
|
||||
|
@ -2038,7 +2035,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
|
||||
public void Start()
|
||||
{
|
||||
Start(true);
|
||||
Start(true,true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -2048,7 +2045,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
/// If true then poll responses are performed asynchronsly.
|
||||
/// Option exists to allow regression tests to perform processing synchronously.
|
||||
/// </param>
|
||||
public void Start(bool performPollResponsesAsync)
|
||||
public void Start(bool performPollResponsesAsync, bool runPool)
|
||||
{
|
||||
m_log.InfoFormat(
|
||||
"[BASE HTTP SERVER]: Starting {0} server on port {1}", UseSSL ? "HTTPS" : "HTTP", Port);
|
||||
|
@ -2086,9 +2083,11 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
m_httpListener2.Start(64);
|
||||
|
||||
// Long Poll Service Manager with 3 worker threads a 25 second timeout for no events
|
||||
|
||||
if(runPool)
|
||||
{
|
||||
PollServiceRequestManager = new PollServiceRequestManager(this, performPollResponsesAsync, 2, 25000);
|
||||
PollServiceRequestManager.Start();
|
||||
}
|
||||
|
||||
HTTPDRunning = true;
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@ namespace OpenSim.Framework.Servers
|
|||
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
private static BaseHttpServer instance = null;
|
||||
private static BaseHttpServer unsecureinstance = null;
|
||||
private static Dictionary<uint, BaseHttpServer> m_Servers = new Dictionary<uint, BaseHttpServer>();
|
||||
|
||||
/// <summary>
|
||||
|
@ -93,6 +94,21 @@ namespace OpenSim.Framework.Servers
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public static BaseHttpServer ÚnSecureInstance
|
||||
{
|
||||
get { return unsecureinstance; }
|
||||
|
||||
set
|
||||
{
|
||||
lock (m_Servers)
|
||||
if (!m_Servers.ContainsValue(value))
|
||||
throw new Exception("HTTP server must already have been registered to be set as the main instance");
|
||||
|
||||
unsecureinstance = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get all the registered servers.
|
||||
/// </summary>
|
||||
|
|
|
@ -69,23 +69,38 @@ namespace OpenSim
|
|||
|
||||
Initialize();
|
||||
|
||||
m_httpServer
|
||||
= new BaseHttpServer(
|
||||
m_httpServerPort, m_networkServersInfo.HttpUsesSSL,
|
||||
m_networkServersInfo.httpSSLPort, m_networkServersInfo.HttpSSLCN,
|
||||
m_networkServersInfo.HttpSSLCertPath, m_networkServersInfo.HttpSSLCNCertPass);
|
||||
uint mainport = m_networkServersInfo.HttpListenerPort;
|
||||
uint mainSSLport =m_networkServersInfo.httpSSLPort;
|
||||
|
||||
/* why this? we only run one
|
||||
if (m_networkServersInfo.HttpUsesSSL && (m_networkServersInfo.HttpListenerPort == m_networkServersInfo.httpSSLPort))
|
||||
if (m_networkServersInfo.HttpUsesSSL && (mainport == mainSSLport))
|
||||
{
|
||||
m_log.Error("[REGION SERVER]: HTTP Server config failed. HTTP Server and HTTPS server must be on different ports");
|
||||
}
|
||||
*/
|
||||
m_log.InfoFormat("[REGION SERVER]: Starting HTTP{0} server on port {1}",
|
||||
m_networkServersInfo.HttpUsesSSL ? "S" : "", m_httpServerPort);
|
||||
m_httpServer.Start();
|
||||
|
||||
if(m_networkServersInfo.HttpUsesSSL)
|
||||
{
|
||||
m_httpServer = new BaseHttpServer(
|
||||
mainSSLport, m_networkServersInfo.HttpUsesSSL,
|
||||
mainSSLport, m_networkServersInfo.HttpSSLCN,
|
||||
m_networkServersInfo.HttpSSLCertPath, m_networkServersInfo.HttpSSLCNCertPass);
|
||||
m_httpServer.Start(true,true);
|
||||
MainServer.AddHttpServer(m_httpServer);
|
||||
|
||||
}
|
||||
|
||||
// unsecure main server
|
||||
BaseHttpServer server = new BaseHttpServer(mainport);
|
||||
if(!m_networkServersInfo.HttpUsesSSL)
|
||||
{
|
||||
m_httpServer = server;
|
||||
server.Start(true, true);
|
||||
}
|
||||
else
|
||||
server.Start(false, false);
|
||||
|
||||
MainServer.AddHttpServer(server);
|
||||
MainServer.ÚnSecureInstance = server;
|
||||
|
||||
MainServer.Instance = m_httpServer;
|
||||
|
||||
// "OOB" Server
|
||||
|
@ -93,22 +108,22 @@ namespace OpenSim
|
|||
{
|
||||
if (!m_networkServersInfo.ssl_external)
|
||||
{
|
||||
BaseHttpServer server = new BaseHttpServer(
|
||||
m_networkServersInfo.https_port, m_networkServersInfo.ssl_listener, m_networkServersInfo.cert_path,
|
||||
server = new BaseHttpServer(
|
||||
m_networkServersInfo.https_port, m_networkServersInfo.ssl_listener,
|
||||
m_networkServersInfo.cert_path,
|
||||
m_networkServersInfo.cert_pass);
|
||||
|
||||
m_log.InfoFormat("[REGION SERVER]: Starting HTTPS server on port {0}", server.Port);
|
||||
m_log.InfoFormat("[REGION SERVER]: Starting OOB HTTPS server on port {0}", server.SSLPort);
|
||||
server.Start(false, false);
|
||||
MainServer.AddHttpServer(server);
|
||||
server.Start();
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseHttpServer server = new BaseHttpServer(
|
||||
m_networkServersInfo.https_port);
|
||||
server = new BaseHttpServer(m_networkServersInfo.https_port);
|
||||
|
||||
m_log.InfoFormat("[REGION SERVER]: Starting HTTP server on port {0} for external HTTPS", server.Port);
|
||||
server.Start(false, false);
|
||||
MainServer.AddHttpServer(server);
|
||||
server.Start();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -52,12 +52,12 @@ namespace OpenSim.Region.DataSnapshot
|
|||
m_externalData = externalData;
|
||||
|
||||
//Register HTTP handler
|
||||
if (MainServer.Instance.AddHTTPHandler("collector", OnGetSnapshot))
|
||||
if (MainServer.ÚnSecureInstance.AddHTTPHandler("collector", OnGetSnapshot))
|
||||
{
|
||||
m_log.Info("[DATASNAPSHOT]: Set up snapshot service");
|
||||
}
|
||||
// Register validation callback handler
|
||||
MainServer.Instance.AddHTTPHandler("validate", OnValidate);
|
||||
MainServer.ÚnSecureInstance.AddHTTPHandler("validate", OnValidate);
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue