Secure sim stats with an (optional) password.

There is way too much in these stats to expose them to the world, at
least for some of us.
melanie
Melanie Thielker 2017-02-01 15:30:17 +00:00
parent 5a18ea31cf
commit 5ceb315e34
3 changed files with 16 additions and 0 deletions

View File

@ -47,6 +47,8 @@ namespace OpenSim.Framework.Monitoring
// Subcommand used to list other stats. // Subcommand used to list other stats.
public const string ListSubCommand = "list"; public const string ListSubCommand = "list";
public static string StatsPassword { get; set; }
// All subcommands // All subcommands
public static HashSet<string> SubCommands = new HashSet<string> { AllSubCommand, ListSubCommand }; public static HashSet<string> SubCommands = new HashSet<string> { AllSubCommand, ListSubCommand };
@ -302,6 +304,17 @@ namespace OpenSim.Framework.Monitoring
int response_code = 200; int response_code = 200;
string contenttype = "text/json"; string contenttype = "text/json";
if (StatsPassword != String.Empty && (!request.ContainsKey("pass") || request["pass"].ToString() != StatsPassword))
{
responsedata["int_response_code"] = response_code;
responsedata["content_type"] = "text/plain";
responsedata["keepalive"] = false;
responsedata["str_response_string"] = "Access denied";
responsedata["access_control_allow_origin"] = "*";
return responsedata;
}
string pCategoryName = StatsManager.AllSubCommand; string pCategoryName = StatsManager.AllSubCommand;
string pContainerName = StatsManager.AllSubCommand; string pContainerName = StatsManager.AllSubCommand;
string pStatName = StatsManager.AllSubCommand; string pStatName = StatsManager.AllSubCommand;

View File

@ -211,6 +211,7 @@ namespace OpenSim
if (managedStatsURI != String.Empty) if (managedStatsURI != String.Empty)
{ {
string urlBase = String.Format("/{0}/", managedStatsURI); string urlBase = String.Format("/{0}/", managedStatsURI);
StatsManager.StatsPassword = managedStatsPassword;
MainServer.Instance.AddHTTPHandler(urlBase, StatsManager.HandleStatsRequest); MainServer.Instance.AddHTTPHandler(urlBase, StatsManager.HandleStatsRequest);
m_log.InfoFormat("[OPENSIM] Enabling remote managed stats fetch. URL = {0}", urlBase); m_log.InfoFormat("[OPENSIM] Enabling remote managed stats fetch. URL = {0}", urlBase);
} }

View File

@ -88,6 +88,7 @@ namespace OpenSim
public string userStatsURI = String.Empty; public string userStatsURI = String.Empty;
public string managedStatsURI = String.Empty; public string managedStatsURI = String.Empty;
public string managedStatsPassword = String.Empty;
protected bool m_autoCreateClientStack = true; protected bool m_autoCreateClientStack = true;
@ -239,6 +240,7 @@ namespace OpenSim
m_permsModules = new List<string>(permissionModules.Split(',')); m_permsModules = new List<string>(permissionModules.Split(','));
managedStatsURI = startupConfig.GetString("ManagedStatsRemoteFetchURI", String.Empty); managedStatsURI = startupConfig.GetString("ManagedStatsRemoteFetchURI", String.Empty);
managedStatsPassword = startupConfig.GetString("ManagedStatsRemoteFetchPassword", String.Empty);
} }
// Load the simulation data service // Load the simulation data service