In RemoveAdminPlugin, use a .ini file template in XmlRpcCreateRegionMethod rather than an older XML one

This is a patch from http://opensimulator.org/mantis/view.php?id=4973.  Thanks randomhuman
This commit is contained in:
Justin Clark-Casey (justincc)
2010-09-03 22:38:40 +01:00
parent 9b95bd259f
commit b8da15c104
3 changed files with 36 additions and 11 deletions

View File

@@ -470,6 +470,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController
/// <item><term>estate_name</term>
/// <description>the name of the estate to join (or to create if it doesn't
/// already exist)</description></item>
/// <item><term>region_file</term>
/// <description>The name of the file to persist the region specifications to.
/// If omitted, the region_file_template setting from OpenSim.ini will be used. (optional)</description></item>
/// </list>
///
/// XmlRpcCreateRegionMethod returns
@@ -583,7 +586,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
bool persist = Convert.ToBoolean((string) requestData["persist"]);
if (persist)
{
// default place for region XML files is in the
// default place for region configuration files is in the
// Regions directory of the config dir (aka /bin)
string regionConfigPath = Path.Combine(Util.configDir(), "Regions");
try
@@ -596,19 +599,36 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{
// No INI setting recorded.
}
string regionXmlPath = Path.Combine(regionConfigPath,
string regionIniPath;
if (requestData.Contains("region_file"))
{
// Make sure that the file to be created is in a subdirectory of the region storage directory.
string requestedFilePath = Path.Combine(regionConfigPath, (string) requestData["region_file"]);
string requestedDirectory = Path.GetDirectoryName(Path.GetFullPath(requestedFilePath));
if (requestedDirectory.StartsWith(Path.GetFullPath(regionConfigPath)))
regionIniPath = requestedFilePath;
else
throw new Exception("Invalid location for region file.");
}
else
{
regionIniPath = Path.Combine(regionConfigPath,
String.Format(
m_config.GetString("region_file_template",
"{0}x{1}-{2}.xml"),
"{0}x{1}-{2}.ini"),
region.RegionLocX.ToString(),
region.RegionLocY.ToString(),
regionID.ToString(),
region.InternalEndPoint.Port.ToString(),
region.RegionName.Replace(" ", "_").Replace(":", "_").
Replace("/", "_")));
}
m_log.DebugFormat("[RADMIN] CreateRegion: persisting region {0} to {1}",
region.RegionID, regionXmlPath);
region.SaveRegionToFile("dynamic region", regionXmlPath);
region.RegionID, regionIniPath);
region.SaveRegionToFile("dynamic region", regionIniPath);
}
else
{