Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
commit
50c0069f7d
|
@ -52,6 +52,11 @@ namespace OpenSim.Framework
|
||||||
return GetHttpServer(port,null);
|
return GetHttpServer(port,null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void AddHttpServer(BaseHttpServer server)
|
||||||
|
{
|
||||||
|
m_Servers.Add(server.Port, server);
|
||||||
|
}
|
||||||
|
|
||||||
public static IHttpServer GetHttpServer(uint port, IPAddress ipaddr)
|
public static IHttpServer GetHttpServer(uint port, IPAddress ipaddr)
|
||||||
{
|
{
|
||||||
if (port == 0)
|
if (port == 0)
|
||||||
|
|
|
@ -49,6 +49,12 @@ namespace OpenSim.Framework
|
||||||
public string HttpSSLCN = "";
|
public string HttpSSLCN = "";
|
||||||
public uint httpSSLPort = 9001;
|
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 string MessagingURL = String.Empty;
|
||||||
|
|
||||||
public NetworkServersInfo()
|
public NetworkServersInfo()
|
||||||
|
@ -86,6 +92,15 @@ namespace OpenSim.Framework
|
||||||
secureInventoryServer = config.Configs["Network"].GetBoolean("secure_inventory_server", true);
|
secureInventoryServer = config.Configs["Network"].GetBoolean("secure_inventory_server", true);
|
||||||
|
|
||||||
MessagingURL = config.Configs["Network"].GetString("messaging_server_url", string.Empty);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,7 @@ using System.Collections.Specialized;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
|
using System.Security.Cryptography.X509Certificates;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
@ -72,6 +73,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
protected uint m_port;
|
protected uint m_port;
|
||||||
protected uint m_sslport;
|
protected uint m_sslport;
|
||||||
protected bool m_ssl;
|
protected bool m_ssl;
|
||||||
|
private X509Certificate2 m_cert;
|
||||||
protected bool m_firstcaps = true;
|
protected bool m_firstcaps = true;
|
||||||
protected string m_SSLCommonName = "";
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Add a stream handler to the http server. If the handler already exists, then nothing happens.
|
/// Add a stream handler to the http server. If the handler already exists, then nothing happens.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1683,6 +1693,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//m_httpListener = new HttpListener();
|
//m_httpListener = new HttpListener();
|
||||||
|
|
||||||
NotSocketErrors = 0;
|
NotSocketErrors = 0;
|
||||||
if (!m_ssl)
|
if (!m_ssl)
|
||||||
{
|
{
|
||||||
|
@ -1702,6 +1713,9 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
{
|
{
|
||||||
//m_httpListener.Prefixes.Add("https://+:" + (m_sslport) + "/");
|
//m_httpListener.Prefixes.Add("https://+:" + (m_sslport) + "/");
|
||||||
//m_httpListener.Prefixes.Add("http://+:" + m_port + "/");
|
//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;
|
m_httpListener2.RequestReceived += OnRequest;
|
||||||
|
|
|
@ -96,6 +96,22 @@ namespace OpenSim.Region.ClientStack
|
||||||
|
|
||||||
MainServer.Instance = m_httpServer;
|
MainServer.Instance = m_httpServer;
|
||||||
|
|
||||||
|
// "OOB" Server
|
||||||
|
if (m_networkServersInfo.ssl_listener)
|
||||||
|
{
|
||||||
|
BaseHttpServer server = null;
|
||||||
|
server = new BaseHttpServer(
|
||||||
|
m_networkServersInfo.https_port, m_networkServersInfo.ssl_listener, m_networkServersInfo.cert_path,
|
||||||
|
m_networkServersInfo.cert_pass);
|
||||||
|
// Add the server to m_Servers
|
||||||
|
if(server != null)
|
||||||
|
{
|
||||||
|
m_log.InfoFormat("[REGION SERVER]: Starting HTTPS server on port {0}", server.Port);
|
||||||
|
MainServer.AddHttpServer(server);
|
||||||
|
server.Start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
base.StartupSpecific();
|
base.StartupSpecific();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,9 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
|
|
||||||
private int m_TotalUrls = 100;
|
private int m_TotalUrls = 100;
|
||||||
|
|
||||||
|
private uint https_port = 0;
|
||||||
private IHttpServer m_HttpServer = null;
|
private IHttpServer m_HttpServer = null;
|
||||||
|
private IHttpServer m_HttpsServer = null;
|
||||||
|
|
||||||
private string m_ExternalHostNameForLSL = "";
|
private string m_ExternalHostNameForLSL = "";
|
||||||
|
|
||||||
|
@ -100,6 +102,11 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
public void Initialise(IConfigSource config)
|
public void Initialise(IConfigSource config)
|
||||||
{
|
{
|
||||||
m_ExternalHostNameForLSL = config.Configs["Network"].GetString("ExternalHostNameForLSL", System.Environment.MachineName);
|
m_ExternalHostNameForLSL = config.Configs["Network"].GetString("ExternalHostNameForLSL", System.Environment.MachineName);
|
||||||
|
bool ssl_enabled = config.Configs["Network"].GetBoolean("https_listener",false);
|
||||||
|
if (ssl_enabled)
|
||||||
|
{
|
||||||
|
https_port = (uint) config.Configs["Network"].GetInt("https_port",0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInitialise()
|
public void PostInitialise()
|
||||||
|
@ -113,6 +120,12 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
// There can only be one
|
// There can only be one
|
||||||
//
|
//
|
||||||
m_HttpServer = MainServer.Instance;
|
m_HttpServer = MainServer.Instance;
|
||||||
|
//
|
||||||
|
// We can use the https if it is enabled
|
||||||
|
if (https_port > 0)
|
||||||
|
{
|
||||||
|
m_HttpsServer = MainServer.GetHttpServer(https_port);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
scene.RegisterModuleInterface<IUrlModule>(this);
|
scene.RegisterModuleInterface<IUrlModule>(this);
|
||||||
|
@ -171,7 +184,40 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
{
|
{
|
||||||
UUID urlcode = UUID.Random();
|
UUID urlcode = UUID.Random();
|
||||||
|
|
||||||
engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
|
if (m_HttpsServer == null)
|
||||||
|
{
|
||||||
|
engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
|
||||||
|
return urlcode;
|
||||||
|
}
|
||||||
|
|
||||||
|
lock (m_UrlMap)
|
||||||
|
{
|
||||||
|
if (m_UrlMap.Count >= m_TotalUrls)
|
||||||
|
{
|
||||||
|
engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" });
|
||||||
|
return urlcode;
|
||||||
|
}
|
||||||
|
string url = "https://" + m_ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + "/lslhttps/" + urlcode.ToString() + "/";
|
||||||
|
|
||||||
|
UrlData urlData = new UrlData();
|
||||||
|
urlData.hostID = host.UUID;
|
||||||
|
urlData.itemID = itemID;
|
||||||
|
urlData.engine = engine;
|
||||||
|
urlData.url = url;
|
||||||
|
urlData.urlcode = urlcode;
|
||||||
|
urlData.requests = new Dictionary<UUID, RequestData>();
|
||||||
|
|
||||||
|
|
||||||
|
m_UrlMap[url] = urlData;
|
||||||
|
|
||||||
|
string uri = "/lslhttps/" + urlcode.ToString() + "/";
|
||||||
|
|
||||||
|
m_HttpsServer.AddPollServiceHTTPHandler(uri,HandleHttpPoll,
|
||||||
|
new PollServiceEventArgs(HttpRequestHandler,HasEvents, GetEvents, NoEvents,
|
||||||
|
urlcode));
|
||||||
|
|
||||||
|
engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
|
||||||
|
}
|
||||||
|
|
||||||
return urlcode;
|
return urlcode;
|
||||||
}
|
}
|
||||||
|
@ -345,7 +391,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
}
|
}
|
||||||
private Hashtable GetEvents(UUID requestID, UUID sessionID, string request)
|
private Hashtable GetEvents(UUID requestID, UUID sessionID, string request)
|
||||||
{
|
{
|
||||||
UrlData url = null;
|
UrlData url = null;
|
||||||
RequestData requestData = null;
|
RequestData requestData = null;
|
||||||
|
|
||||||
lock (m_RequestMap)
|
lock (m_RequestMap)
|
||||||
|
@ -391,11 +437,12 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
lock (request)
|
lock (request)
|
||||||
{
|
{
|
||||||
string uri = request["uri"].ToString();
|
string uri = request["uri"].ToString();
|
||||||
|
bool is_ssl = uri.Contains("lslhttps");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Hashtable headers = (Hashtable)request["headers"];
|
Hashtable headers = (Hashtable)request["headers"];
|
||||||
|
|
||||||
// string uri_full = "http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri;// "/lslhttp/" + urlcode.ToString() + "/";
|
// string uri_full = "http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri;// "/lslhttp/" + urlcode.ToString() + "/";
|
||||||
|
|
||||||
int pos1 = uri.IndexOf("/");// /lslhttp
|
int pos1 = uri.IndexOf("/");// /lslhttp
|
||||||
|
@ -409,7 +456,11 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
|
|
||||||
pathInfo = uri.Substring(pos3);
|
pathInfo = uri.Substring(pos3);
|
||||||
|
|
||||||
UrlData url = m_UrlMap["http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri_tmp];
|
UrlData url = null;
|
||||||
|
if (!is_ssl)
|
||||||
|
url = m_UrlMap["http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri_tmp];
|
||||||
|
else
|
||||||
|
url = m_UrlMap["https://" + m_ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + uri_tmp];
|
||||||
|
|
||||||
//for llGetHttpHeader support we need to store original URI here
|
//for llGetHttpHeader support we need to store original URI here
|
||||||
//to make x-path-info / x-query-string / x-script-url / x-remote-ip headers
|
//to make x-path-info / x-query-string / x-script-url / x-remote-ip headers
|
||||||
|
|
|
@ -64,19 +64,26 @@ namespace OpenSim.Region.CoreModules.World.Region
|
||||||
public void AddRegion(Scene scene)
|
public void AddRegion(Scene scene)
|
||||||
{
|
{
|
||||||
m_Scene = scene;
|
m_Scene = scene;
|
||||||
|
|
||||||
scene.RegisterModuleInterface<IRestartModule>(this);
|
scene.RegisterModuleInterface<IRestartModule>(this);
|
||||||
MainConsole.Instance.Commands.AddCommand("RestartModule",
|
MainConsole.Instance.Commands.AddCommand("RestartModule",
|
||||||
false, "region restart bluebox",
|
false, "region restart bluebox",
|
||||||
"region restart bluebox <message> <time> ...",
|
"region restart bluebox <message> <delta seconds>+",
|
||||||
"Restart the region", HandleRegionRestart);
|
"Schedule a region restart",
|
||||||
|
"Schedule a region restart after a given number of seconds. If one delta is given then the region is restarted in delta seconds time. A time to restart is sent to users in the region as a transient notice. If multiple deltas are given then a notice is sent when we reach each delta.",
|
||||||
|
HandleRegionRestart);
|
||||||
|
|
||||||
MainConsole.Instance.Commands.AddCommand("RestartModule",
|
MainConsole.Instance.Commands.AddCommand("RestartModule",
|
||||||
false, "region restart notice",
|
false, "region restart notice",
|
||||||
"region restart notice <message> <time> ...",
|
"region restart notice <message> <delta seconds>+",
|
||||||
"Restart the region", HandleRegionRestart);
|
"Schedule a region restart",
|
||||||
|
"Schedule a region restart after a given number of seconds. If one delta is given then the region is restarted in delta seconds time. A time to restart is sent to users in the region as a dismissable bluebox notice. If multiple deltas are given then a notice is sent when we reach each delta.",
|
||||||
|
HandleRegionRestart);
|
||||||
|
|
||||||
MainConsole.Instance.Commands.AddCommand("RestartModule",
|
MainConsole.Instance.Commands.AddCommand("RestartModule",
|
||||||
false, "region restart abort",
|
false, "region restart abort",
|
||||||
"region restart abort [<message>]",
|
"region restart abort [<message>]",
|
||||||
"Restart the region", HandleRegionRestart);
|
"Abort a region restart", HandleRegionRestart);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RegionLoaded(Scene scene)
|
public void RegionLoaded(Scene scene)
|
||||||
|
@ -245,7 +252,7 @@ namespace OpenSim.Region.CoreModules.World.Region
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MainConsole.Instance.Output("Error: restart region <mode> <name> <time> ...");
|
MainConsole.Instance.Output("Error: restart region <mode> <name> <delta seconds>+");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,11 +107,10 @@ namespace OpenSim.Region.CoreModules.UDP.Linden
|
||||||
|
|
||||||
scene.AddCommand(
|
scene.AddCommand(
|
||||||
this, "emergency-monitoring",
|
this, "emergency-monitoring",
|
||||||
"Go on/off emergency monitoring mode",
|
"emergency-monitoring",
|
||||||
"Go on/off emergency monitoring mode",
|
"Go on/off emergency monitoring mode",
|
||||||
"Go on/off emergency monitoring mode",
|
"Go on/off emergency monitoring mode",
|
||||||
EmergencyMonitoring);
|
EmergencyMonitoring);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveRegion(Scene scene)
|
public void RemoveRegion(Scene scene)
|
||||||
|
|
|
@ -97,16 +97,76 @@ namespace OpenSim.Server.Base
|
||||||
|
|
||||||
if (port == 0)
|
if (port == 0)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("Port number not specified or 0, server can't start");
|
|
||||||
Thread.CurrentThread.Abort();
|
Thread.CurrentThread.Abort();
|
||||||
}
|
}
|
||||||
|
//
|
||||||
|
bool ssl_main = networkConfig.GetBoolean("https_main",false);
|
||||||
|
bool ssl_listener = networkConfig.GetBoolean("https_listener",false);
|
||||||
|
|
||||||
m_consolePort = (uint)networkConfig.GetInt("ConsolePort", 0);
|
m_consolePort = (uint)networkConfig.GetInt("ConsolePort", 0);
|
||||||
m_Port = port;
|
m_Port = port;
|
||||||
|
//
|
||||||
|
// This is where to make the servers:
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Make the base server according to the port, etc.
|
||||||
|
// ADD: Possibility to make main server ssl
|
||||||
|
// Then, check for https settings and ADD a server to
|
||||||
|
// m_Servers
|
||||||
|
//
|
||||||
|
if ( !ssl_main )
|
||||||
|
{
|
||||||
|
m_HttpServer = new BaseHttpServer(port);
|
||||||
|
|
||||||
m_HttpServer = new BaseHttpServer(port);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string cert_path = networkConfig.GetString("cert_path",String.Empty);
|
||||||
|
if ( cert_path == String.Empty )
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("Path to X509 certificate is missing, server can't start.");
|
||||||
|
Thread.CurrentThread.Abort();
|
||||||
|
}
|
||||||
|
string cert_pass = networkConfig.GetString("cert_pass",String.Empty);
|
||||||
|
if ( cert_pass == String.Empty )
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("Password for X509 certificate is missing, server can't start.");
|
||||||
|
Thread.CurrentThread.Abort();
|
||||||
|
}
|
||||||
|
m_HttpServer = new BaseHttpServer(port, ssl_main, cert_path, cert_pass);
|
||||||
|
}
|
||||||
|
|
||||||
MainServer.Instance = m_HttpServer;
|
MainServer.Instance = m_HttpServer;
|
||||||
|
|
||||||
|
// If https_listener = true, then add an ssl listener on the https_port...
|
||||||
|
if ( ssl_listener == true ) {
|
||||||
|
|
||||||
|
uint https_port = (uint)networkConfig.GetInt("https_port", 0);
|
||||||
|
|
||||||
|
string cert_path = networkConfig.GetString("cert_path",String.Empty);
|
||||||
|
if ( cert_path == String.Empty )
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("Path to X509 certificate is missing, server can't start.");
|
||||||
|
Thread.CurrentThread.Abort();
|
||||||
|
}
|
||||||
|
string cert_pass = networkConfig.GetString("cert_pass",String.Empty);
|
||||||
|
if ( cert_pass == String.Empty )
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("Password for X509 certificate is missing, server can't start.");
|
||||||
|
Thread.CurrentThread.Abort();
|
||||||
|
}
|
||||||
|
// Add our https_server
|
||||||
|
BaseHttpServer server = null;
|
||||||
|
server = new BaseHttpServer(https_port, ssl_listener, cert_path, cert_pass);
|
||||||
|
if (server != null)
|
||||||
|
{
|
||||||
|
m_Log.InfoFormat("[SERVER]: Starting HTTPS server on port {0}", https_port);
|
||||||
|
m_Servers.Add(https_port,server);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
System.Console.WriteLine(String.Format("Failed to start HTTPS server on port {0}",https_port));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Initialise()
|
protected override void Initialise()
|
||||||
|
@ -114,6 +174,19 @@ namespace OpenSim.Server.Base
|
||||||
m_Log.InfoFormat("[SERVER]: Starting HTTP server on port {0}", m_HttpServer.Port);
|
m_Log.InfoFormat("[SERVER]: Starting HTTP server on port {0}", m_HttpServer.Port);
|
||||||
m_HttpServer.Start();
|
m_HttpServer.Start();
|
||||||
|
|
||||||
|
if (m_Servers.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (BaseHttpServer s in m_Servers.Values)
|
||||||
|
{
|
||||||
|
if (!s.UseSSL)
|
||||||
|
m_Log.InfoFormat("[SERVER]: Starting HTTP server on port {0}", s.Port);
|
||||||
|
else
|
||||||
|
m_Log.InfoFormat("[SERVER]: Starting HTTPS server on port {0}", s.Port);
|
||||||
|
|
||||||
|
s.Start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (MainConsole.Instance is RemoteConsole)
|
if (MainConsole.Instance is RemoteConsole)
|
||||||
{
|
{
|
||||||
if (m_consolePort == 0)
|
if (m_consolePort == 0)
|
||||||
|
|
|
@ -26,6 +26,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
using log4net;
|
using log4net;
|
||||||
|
@ -60,6 +62,13 @@ namespace OpenSim.Services.AssetService
|
||||||
"delete asset",
|
"delete asset",
|
||||||
"delete asset <ID>",
|
"delete asset <ID>",
|
||||||
"Delete asset from database", HandleDeleteAsset);
|
"Delete asset from database", HandleDeleteAsset);
|
||||||
|
|
||||||
|
MainConsole.Instance.Commands.AddCommand("kfs", false,
|
||||||
|
"dump asset",
|
||||||
|
"dump asset <ID>",
|
||||||
|
"Dump asset to a file",
|
||||||
|
"The filename is the same as the ID given.",
|
||||||
|
HandleDumpAsset);
|
||||||
|
|
||||||
if (m_AssetLoader != null)
|
if (m_AssetLoader != null)
|
||||||
{
|
{
|
||||||
|
@ -189,6 +198,39 @@ namespace OpenSim.Services.AssetService
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HandleDumpAsset(string module, string[] args)
|
||||||
|
{
|
||||||
|
if (args.Length < 3)
|
||||||
|
{
|
||||||
|
MainConsole.Instance.Output("Usage is dump asset <ID>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string rawAssetId = args[2];
|
||||||
|
UUID assetId;
|
||||||
|
|
||||||
|
if (!UUID.TryParse(rawAssetId, out assetId))
|
||||||
|
{
|
||||||
|
MainConsole.Instance.OutputFormat("ERROR: {0} is not a valid ID format", rawAssetId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
AssetBase asset = m_Database.GetAsset(assetId);
|
||||||
|
if (asset == null)
|
||||||
|
{
|
||||||
|
MainConsole.Instance.OutputFormat("ERROR: No asset found with ID {0}", assetId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
using (FileStream fs = new FileStream(rawAssetId, FileMode.CreateNew))
|
||||||
|
{
|
||||||
|
using (BinaryWriter bw = new BinaryWriter(fs))
|
||||||
|
{
|
||||||
|
bw.Write(asset.Data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void HandleShowDigest(string module, string[] args)
|
void HandleShowDigest(string module, string[] args)
|
||||||
{
|
{
|
||||||
|
|
|
@ -291,6 +291,20 @@
|
||||||
http_listener_sslport = 9001 ; Use this port for SSL connections
|
http_listener_sslport = 9001 ; Use this port for SSL connections
|
||||||
http_listener_ssl_cert = "" ; Currently unused, but will be used for OSHttpServer
|
http_listener_ssl_cert = "" ; Currently unused, but will be used for OSHttpServer
|
||||||
|
|
||||||
|
; HTTPS for "Out of band" management applications such as the remote
|
||||||
|
; admin module
|
||||||
|
;
|
||||||
|
; Create https_listener = "True" will create a listener on the port
|
||||||
|
; specified. Provide the path to your server certificate along with it's
|
||||||
|
; password
|
||||||
|
; https_listener = False
|
||||||
|
; Set our listener to this port
|
||||||
|
; https_port = 0
|
||||||
|
; Path to X509 certificate
|
||||||
|
; cert_path = "path/to/cert.p12"
|
||||||
|
; Password for cert
|
||||||
|
; cert_pass = "password"
|
||||||
|
|
||||||
; Hostname to use in llRequestURL/llRequestSecureURL
|
; Hostname to use in llRequestURL/llRequestSecureURL
|
||||||
; if not defined - default machine name is being used
|
; if not defined - default machine name is being used
|
||||||
; (on Windows this mean NETBIOS name - useably only inside local network)
|
; (on Windows this mean NETBIOS name - useably only inside local network)
|
||||||
|
|
|
@ -21,6 +21,27 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003
|
||||||
[Network]
|
[Network]
|
||||||
port = 8003
|
port = 8003
|
||||||
|
|
||||||
|
|
||||||
|
; HTTPS for "Out of band" management applications such as the remote admin
|
||||||
|
; module. May specify https_main = True to make the main http server
|
||||||
|
; use https or "False" to make the main server HTTP
|
||||||
|
; https_main = False
|
||||||
|
;
|
||||||
|
; Create https_listener = "True" will create a listener on the port
|
||||||
|
; specified. Provide the path to your server certificate along with it's
|
||||||
|
; password
|
||||||
|
; https_listener = False
|
||||||
|
;
|
||||||
|
; Set our listener to this port
|
||||||
|
; https_port = 0
|
||||||
|
;
|
||||||
|
; Path to X509 certificate
|
||||||
|
; cert_path = "path/to/cert.p12"
|
||||||
|
;
|
||||||
|
; Password for cert
|
||||||
|
; cert_pass = "password"
|
||||||
|
|
||||||
|
|
||||||
; * The following are for the remote console
|
; * The following are for the remote console
|
||||||
; * They have no effect for the local or basic console types
|
; * They have no effect for the local or basic console types
|
||||||
; * Leave commented to diable logins to the console
|
; * Leave commented to diable logins to the console
|
||||||
|
|
Loading…
Reference in New Issue