mirror of
https://github.com/opensim/opensim.git
synced 2026-07-31 22:05:36 +08:00
replace external httpserver by embedded one (based on same code) - This may still be very bad; clean solution and runprebuild, or clone to clan folder
This commit is contained in:
@@ -28,27 +28,24 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Net.Security;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Reflection;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Net;
|
||||
using System.Net.Security;
|
||||
using System.Net.Sockets;
|
||||
using System.Reflection;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Xml;
|
||||
using HttpServer;
|
||||
using OSHttpServer;
|
||||
using tinyHTTPListener = OSHttpServer.OSHttpListener;
|
||||
using log4net;
|
||||
using Nwc.XmlRpc;
|
||||
using OpenMetaverse.StructuredData;
|
||||
using CoolHTTPListener = HttpServer.HttpListener;
|
||||
using LogPrio = HttpServer.LogPrio;
|
||||
using OpenSim.Framework.Monitoring;
|
||||
using System.IO.Compression;
|
||||
using System.Security.Cryptography;
|
||||
using OpenSim.Framework.Servers;
|
||||
using OpenMetaverse.StructuredData;
|
||||
|
||||
|
||||
namespace OpenSim.Framework.Servers.HttpServer
|
||||
{
|
||||
@@ -94,8 +91,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
private volatile int NotSocketErrors = 0;
|
||||
public volatile bool HTTPDRunning = false;
|
||||
|
||||
// protected HttpListener m_httpListener;
|
||||
protected CoolHTTPListener m_httpListener2;
|
||||
protected tinyHTTPListener m_httpListener;
|
||||
protected Dictionary<string, XmlRpcMethod> m_rpcHandlers = new Dictionary<string, XmlRpcMethod>();
|
||||
protected Dictionary<string, JsonRPCMethod> jsonRpcHandlers = new Dictionary<string, JsonRPCMethod>();
|
||||
protected Dictionary<string, bool> m_rpcHandlersKeepAlive = new Dictionary<string, bool>();
|
||||
@@ -121,7 +117,6 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
|
||||
protected IPAddress m_listenIPAddress = IPAddress.Any;
|
||||
|
||||
|
||||
public string Protocol
|
||||
{
|
||||
get { return m_ssl ? "https://" : "http://"; }
|
||||
@@ -1243,7 +1238,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
rcn = "SSLCN:" + rcn;
|
||||
xmlRprcRequest.Params.Add(rcn); // Param[4] or Param[5]
|
||||
}
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
xmlRpcResponse = method(xmlRprcRequest, request.RemoteIPEndPoint);
|
||||
@@ -1955,7 +1950,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
|
||||
if (responsecode == (int)OSHttpStatusCode.RedirectMovedPermanently)
|
||||
{
|
||||
response.RedirectLocation = (string)responsedata["str_redirect_location"];
|
||||
response.AddHeader("Location:", (string)responsedata["str_redirect_location"]);
|
||||
response.StatusCode = responsecode;
|
||||
}
|
||||
|
||||
@@ -2051,32 +2046,32 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
NotSocketErrors = 0;
|
||||
if (!m_ssl)
|
||||
{
|
||||
//m_httpListener.Prefixes.Add("http://+:" + m_port + "/");
|
||||
//m_httpListener.Prefixes.Add("http://10.1.1.5:" + m_port + "/");
|
||||
m_httpListener2 = CoolHTTPListener.Create(m_listenIPAddress, (int)m_port);
|
||||
m_httpListener2.ExceptionThrown += httpServerException;
|
||||
m_httpListener2.LogWriter = httpserverlog;
|
||||
|
||||
m_httpListener = tinyHTTPListener.Create(m_listenIPAddress, (int)m_port);
|
||||
m_httpListener.ExceptionThrown += httpServerException;
|
||||
if (DebugLevel > 0)
|
||||
{
|
||||
m_httpListener.LogWriter = httpserverlog;
|
||||
httpserverlog.DebugLevel = 1;
|
||||
}
|
||||
// Uncomment this line in addition to those in HttpServerLogWriter
|
||||
// if you want more detailed trace information from the HttpServer
|
||||
//m_httpListener2.UseTraceLogs = true;
|
||||
|
||||
//m_httpListener2.DisconnectHandler = httpServerDisconnectMonitor;
|
||||
}
|
||||
else
|
||||
{
|
||||
//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_httpListener = tinyHTTPListener.Create(IPAddress.Any, (int)m_port, m_cert);
|
||||
if(m_certificateValidationCallback != null)
|
||||
m_httpListener2.CertificateValidationCallback = m_certificateValidationCallback;
|
||||
m_httpListener2.ExceptionThrown += httpServerException;
|
||||
m_httpListener2.LogWriter = httpserverlog;
|
||||
m_httpListener.CertificateValidationCallback = m_certificateValidationCallback;
|
||||
m_httpListener.ExceptionThrown += httpServerException;
|
||||
if (DebugLevel > 0)
|
||||
{
|
||||
m_httpListener.LogWriter = httpserverlog;
|
||||
httpserverlog.DebugLevel = 1;
|
||||
}
|
||||
}
|
||||
|
||||
m_httpListener2.RequestReceived += OnRequest;
|
||||
//m_httpListener.Start();
|
||||
m_httpListener2.Start(64);
|
||||
m_httpListener.RequestReceived += OnRequest;
|
||||
m_httpListener.Start(64);
|
||||
|
||||
lock(m_generalLock)
|
||||
{
|
||||
@@ -2089,13 +2084,6 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
}
|
||||
|
||||
HTTPDRunning = true;
|
||||
|
||||
//HttpListenerContext context;
|
||||
//while (true)
|
||||
//{
|
||||
// context = m_httpListener.GetContext();
|
||||
// ThreadPool.UnsafeQueueUserWorkItem(new WaitCallback(HandleRequest), context);
|
||||
// }
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -2155,12 +2143,12 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
m_pollServiceManager.Stop();
|
||||
}
|
||||
|
||||
m_httpListener2.ExceptionThrown -= httpServerException;
|
||||
m_httpListener.ExceptionThrown -= httpServerException;
|
||||
//m_httpListener2.DisconnectHandler = null;
|
||||
|
||||
m_httpListener2.LogWriter = null;
|
||||
m_httpListener2.RequestReceived -= OnRequest;
|
||||
m_httpListener2.Stop();
|
||||
m_httpListener.LogWriter = null;
|
||||
m_httpListener.RequestReceived -= OnRequest;
|
||||
m_httpListener.Stop();
|
||||
}
|
||||
catch (NullReferenceException)
|
||||
{
|
||||
@@ -2305,13 +2293,17 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
///
|
||||
/// You may also be able to get additional trace information from HttpServer if you uncomment the UseTraceLogs
|
||||
/// property in StartHttp() for the HttpListener
|
||||
///
|
||||
public class HttpServerLogWriter : ILogWriter
|
||||
{
|
||||
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
public int DebugLevel {get; set;} = (int)LogPrio.Error;
|
||||
|
||||
public void Write(object source, LogPrio priority, string message)
|
||||
{
|
||||
/*
|
||||
if((int)priority < DebugLevel)
|
||||
return;
|
||||
|
||||
switch (priority)
|
||||
{
|
||||
case LogPrio.Trace:
|
||||
@@ -2335,8 +2327,6 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||
default:
|
||||
break;
|
||||
}
|
||||
*/
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user