aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMelanie Thielker2009-06-25 17:53:03 +0000
committerMelanie Thielker2009-06-25 17:53:03 +0000
commit82305b0dea88daef96cecd09a3635814d0dfd6d6 (patch)
tree7eee61de1b53378513fde8da009e20c2d36c4414
parentAdd a comment and an example region config file (diff)
downloadopensim-SC-82305b0dea88daef96cecd09a3635814d0dfd6d6.zip
opensim-SC-82305b0dea88daef96cecd09a3635814d0dfd6d6.tar.gz
opensim-SC-82305b0dea88daef96cecd09a3635814d0dfd6d6.tar.bz2
opensim-SC-82305b0dea88daef96cecd09a3635814d0dfd6d6.tar.xz
From this version onwards, all new region files created automatically will
be created as new style INI files. This doesn't yet affect create region, but it does affect first starts of OpenSim.exe Because master avatars are slated to be replaced by estate owners, this now allows regions to be created without any master avatar data.
-rw-r--r--OpenSim/Framework/RegionInfo.cs126
-rw-r--r--OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs4
2 files changed, 117 insertions, 13 deletions
diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs
index 6a264a6..eee078e 100644
--- a/OpenSim/Framework/RegionInfo.cs
+++ b/OpenSim/Framework/RegionInfo.cs
@@ -29,9 +29,11 @@ using System;
29using System.Net; 29using System.Net;
30using System.Net.Sockets; 30using System.Net.Sockets;
31using System.Xml; 31using System.Xml;
32using System.IO;
32using Nini.Config; 33using Nini.Config;
33using OpenMetaverse; 34using OpenMetaverse;
34using OpenMetaverse.StructuredData; 35using OpenMetaverse.StructuredData;
36using OpenSim.Framework.Console;
35 37
36namespace OpenSim.Framework 38namespace OpenSim.Framework
37{ 39{
@@ -250,6 +252,16 @@ namespace OpenSim.Framework
250 252
251 if (filename.ToLower().EndsWith(".ini")) 253 if (filename.ToLower().EndsWith(".ini"))
252 { 254 {
255 if (!File.Exists(filename)) // New region config request
256 {
257 IniConfigSource newFile = new IniConfigSource();
258 ReadNiniConfig(newFile, String.Empty);
259
260 newFile.Save(filename);
261
262 return;
263 }
264
253 IConfigSource source = new IniConfigSource(filename); 265 IConfigSource source = new IniConfigSource(filename);
254 266
255 ReadNiniConfig(source, configName); 267 ReadNiniConfig(source, configName);
@@ -390,11 +402,28 @@ namespace OpenSim.Framework
390 402
391 private void ReadNiniConfig(IConfigSource source, string name) 403 private void ReadNiniConfig(IConfigSource source, string name)
392 { 404 {
405 bool creatingNew = false;
406
407 if (source.Configs.Count == 0)
408 {
409 name = MainConsole.Instance.CmdPrompt("New region name", String.Empty);
410 if (name == String.Empty)
411 throw new Exception("Cannot interactively create region with no name");
412
413 IConfig newRegion = source.AddConfig(name);
414
415 creatingNew = true;
416 }
417
393 if (name == String.Empty) 418 if (name == String.Empty)
394 name = source.Configs[0].Name; 419 name = source.Configs[0].Name;
395 420
396 if (source.Configs[name] == null) 421 if (source.Configs[name] == null)
397 throw new Exception("Config name does not exist"); 422 {
423 IConfig newRegion = source.AddConfig(name);
424
425 creatingNew = true;
426 }
398 427
399 IConfig config = source.Configs[name]; 428 IConfig config = source.Configs[name];
400 429
@@ -403,7 +432,12 @@ namespace OpenSim.Framework
403 string regionUUID = config.GetString("RegionUUID", string.Empty); 432 string regionUUID = config.GetString("RegionUUID", string.Empty);
404 433
405 if (regionUUID == String.Empty) 434 if (regionUUID == String.Empty)
406 throw new Exception("A region UUID is required"); 435 {
436 UUID newID = UUID.Random();
437
438 regionUUID = MainConsole.Instance.CmdPrompt("Region UUID", newID.ToString());
439 config.Set("RegionUUID", regionUUID);
440 }
407 441
408 RegionID = new UUID(regionUUID); 442 RegionID = new UUID(regionUUID);
409 originRegionID = RegionID; // What IS this?! 443 originRegionID = RegionID; // What IS this?!
@@ -419,7 +453,10 @@ namespace OpenSim.Framework
419 string location = config.GetString("Location", String.Empty); 453 string location = config.GetString("Location", String.Empty);
420 454
421 if (location == String.Empty) 455 if (location == String.Empty)
422 throw new Exception("Location is required"); 456 {
457 location = MainConsole.Instance.CmdPrompt("Region Location", "1000,1000");
458 config.Set("Location", location);
459 }
423 460
424 string[] locationElements = location.Split(new char[] {','}); 461 string[] locationElements = location.Split(new char[] {','});
425 462
@@ -434,16 +471,57 @@ namespace OpenSim.Framework
434 471
435 // Internal IP 472 // Internal IP
436 // 473 //
437 IPAddress address = IPAddress.Parse(config.GetString("InternalAddress", "127.0.0.1")); 474 IPAddress address;
438 int port = config.GetInt("InternalPort", 9000); 475
476 if (config.Contains("InternalAddress"))
477 {
478 address = IPAddress.Parse(config.GetString("InternalAddress", String.Empty));
479 }
480 else
481 {
482 address = IPAddress.Parse(MainConsole.Instance.CmdPrompt("Internal IP address", "127.0.0.1"));
483 config.Set("InternalAddress", address.ToString());
484 }
485
486 int port;
487
488 if (config.Contains("InternalPort"))
489 {
490 port = config.GetInt("InternalPort", 9000);
491 }
492 else
493 {
494 port = Convert.ToInt32(MainConsole.Instance.CmdPrompt("Internal port", "9000"));
495 config.Set("InternalPort", port);
496 }
439 497
440 m_internalEndPoint = new IPEndPoint(address, port); 498 m_internalEndPoint = new IPEndPoint(address, port);
441 499
442 m_allow_alternate_ports = config.GetBoolean("AllowAlternatePorts", true); 500 if (config.Contains("AllowAlternatePorts"))
501 {
502 m_allow_alternate_ports = config.GetBoolean("AllowAlternatePorts", true);
503 }
504 else
505 {
506 m_allow_alternate_ports = Convert.ToBoolean(MainConsole.Instance.CmdPrompt("Allow alternate ports", "False"));
507
508 config.Set("AllowAlternatePorts", m_allow_alternate_ports.ToString());
509 }
443 510
444 // External IP 511 // External IP
445 // 512 //
446 string externalName = config.GetString("ExternalHostName", "SYSTEMIP"); 513 string externalName;
514
515 if (config.Contains("ExternalHostName"))
516 {
517 externalName = config.GetString("ExternalHostName", "SYSTEMIP");
518 }
519 else
520 {
521 externalName = MainConsole.Instance.CmdPrompt("External host name", "SYSTEMIP");
522 config.Set("ExternalHostName", externalName);
523 }
524
447 if (externalName == "SYSTEMIP") 525 if (externalName == "SYSTEMIP")
448 m_externalHostName = Util.GetLocalHost().ToString(); 526 m_externalHostName = Util.GetLocalHost().ToString();
449 else 527 else
@@ -452,12 +530,38 @@ namespace OpenSim.Framework
452 530
453 // Master avatar cruft 531 // Master avatar cruft
454 // 532 //
455 string masterAvatarUUID = config.GetString("MasterAvatarUUID", UUID.Zero.ToString()); 533 string masterAvatarUUID;
534 if (!creatingNew)
535 {
536 masterAvatarUUID = config.GetString("MasterAvatarUUID", UUID.Zero.ToString());
537 MasterAvatarFirstName = config.GetString("MasterAvatarFirstName", String.Empty);
538 MasterAvatarLastName = config.GetString("MasterAvatarLastName", String.Empty);
539 MasterAvatarSandboxPassword = config.GetString("MasterAvatarSandboxPassword", String.Empty);
540 }
541 else
542 {
543 masterAvatarUUID = MainConsole.Instance.CmdPrompt("Master Avatar UUID", UUID.Zero.ToString());
544 if (masterAvatarUUID != UUID.Zero.ToString())
545 {
546 config.Set("MasterAvatarUUID", masterAvatarUUID);
547 }
548 else
549 {
550 MasterAvatarFirstName = MainConsole.Instance.CmdPrompt("Master Avatar first name (enter for no master avatar)", String.Empty);
551 if (MasterAvatarFirstName != String.Empty)
552 {
553 MasterAvatarLastName = MainConsole.Instance.CmdPrompt("Master Avatar last name", String.Empty);
554 MasterAvatarSandboxPassword = MainConsole.Instance.CmdPrompt("Master Avatar sandbox password", String.Empty);
555
556 config.Set("MasterAvatarFirstName", MasterAvatarFirstName);
557 config.Set("MasterAvatarLastName", MasterAvatarLastName);
558 config.Set("MasterAvatarSandboxPassword", MasterAvatarSandboxPassword);
559 }
560 }
561 }
562
456 MasterAvatarAssignedUUID = new UUID(masterAvatarUUID); 563 MasterAvatarAssignedUUID = new UUID(masterAvatarUUID);
457 564
458 MasterAvatarFirstName = config.GetString("MasterAvatarFirstName", String.Empty);
459 MasterAvatarLastName = config.GetString("MasterAvatarLastName", String.Empty);
460 MasterAvatarSandboxPassword = config.GetString("MasterAvatarSandboxPassword", String.Empty);
461 565
462 566
463 // Prim stuff 567 // Prim stuff
diff --git a/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs b/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs
index b4b15e4..44f44fe 100644
--- a/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs
+++ b/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs
@@ -65,8 +65,8 @@ namespace OpenSim.Framework.RegionLoader.Filesystem
65 65
66 if (configFiles.Length == 0 && iniFiles.Length == 0) 66 if (configFiles.Length == 0 && iniFiles.Length == 0)
67 { 67 {
68 new RegionInfo("DEFAULT REGION CONFIG", Path.Combine(regionConfigPath, "default.xml"), false, m_configSource); 68 new RegionInfo("DEFAULT REGION CONFIG", Path.Combine(regionConfigPath, "Regions.ini"), false, m_configSource);
69 configFiles = Directory.GetFiles(regionConfigPath, "*.xml"); 69 iniFiles = Directory.GetFiles(regionConfigPath, "*.ini");
70 } 70 }
71 71
72 List<RegionInfo> regionInfos = new List<RegionInfo>(); 72 List<RegionInfo> regionInfos = new List<RegionInfo>();