diff options
author | Dan Lake | 2011-12-12 00:21:19 -0800 |
---|---|---|
committer | Dan Lake | 2011-12-12 00:21:19 -0800 |
commit | db8fd1eb9f75eb7948c9c629064b7fcb5a95809d (patch) | |
tree | f34ef4197c603d7ad15d73f7782203cbc9ee88db | |
parent | Implement handler for TeleportCancel inbound packet (diff) | |
download | opensim-SC-db8fd1eb9f75eb7948c9c629064b7fcb5a95809d.zip opensim-SC-db8fd1eb9f75eb7948c9c629064b7fcb5a95809d.tar.gz opensim-SC-db8fd1eb9f75eb7948c9c629064b7fcb5a95809d.tar.bz2 opensim-SC-db8fd1eb9f75eb7948c9c629064b7fcb5a95809d.tar.xz |
Added an option for extra settings within region ini file. Any non-hardcoded key-value string pair can be added per-region and referenced by any part of OpenSim with access to the RegionInfo
-rw-r--r-- | OpenSim/Framework/RegionInfo.cs | 75 |
1 files changed, 55 insertions, 20 deletions
diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs index f7c080f..169b951 100644 --- a/OpenSim/Framework/RegionInfo.cs +++ b/OpenSim/Framework/RegionInfo.cs | |||
@@ -141,6 +141,8 @@ namespace OpenSim.Framework | |||
141 | public string RemotingAddress; | 141 | public string RemotingAddress; |
142 | public UUID ScopeID = UUID.Zero; | 142 | public UUID ScopeID = UUID.Zero; |
143 | 143 | ||
144 | private Dictionary<String, String> m_otherSettings = new Dictionary<string, string>(); | ||
145 | |||
144 | 146 | ||
145 | // Apparently, we're applying the same estatesettings regardless of whether it's local or remote. | 147 | // Apparently, we're applying the same estatesettings regardless of whether it's local or remote. |
146 | 148 | ||
@@ -443,6 +445,18 @@ namespace OpenSim.Framework | |||
443 | m_internalEndPoint = tmpEPE; | 445 | m_internalEndPoint = tmpEPE; |
444 | } | 446 | } |
445 | 447 | ||
448 | public string GetOtherSetting(string key) | ||
449 | { | ||
450 | string val; | ||
451 | m_otherSettings.TryGetValue(key, out val); | ||
452 | return val; | ||
453 | } | ||
454 | |||
455 | public void SetOtherSetting(string key, string value) | ||
456 | { | ||
457 | m_otherSettings[key] = value; | ||
458 | } | ||
459 | |||
446 | private void ReadNiniConfig(IConfigSource source, string name) | 460 | private void ReadNiniConfig(IConfigSource source, string name) |
447 | { | 461 | { |
448 | // bool creatingNew = false; | 462 | // bool creatingNew = false; |
@@ -471,30 +485,39 @@ namespace OpenSim.Framework | |||
471 | if (source.Configs[name] == null) | 485 | if (source.Configs[name] == null) |
472 | { | 486 | { |
473 | source.AddConfig(name); | 487 | source.AddConfig(name); |
474 | |||
475 | // creatingNew = true; | ||
476 | } | 488 | } |
477 | 489 | ||
490 | RegionName = name; | ||
478 | IConfig config = source.Configs[name]; | 491 | IConfig config = source.Configs[name]; |
479 | 492 | ||
480 | // UUID | 493 | // Track all of the keys in this config and remove as they are processed |
494 | // The remaining keys will be added to generic key-value storage for | ||
495 | // whoever might need it | ||
496 | HashSet<String> allKeys = new HashSet<String>(); | ||
497 | foreach (string s in config.GetKeys()) | ||
498 | { | ||
499 | allKeys.Add(s.ToLower()); | ||
500 | } | ||
501 | |||
502 | // RegionUUID | ||
481 | // | 503 | // |
504 | allKeys.Remove(("RegionUUID").ToLower()); | ||
482 | string regionUUID = config.GetString("RegionUUID", string.Empty); | 505 | string regionUUID = config.GetString("RegionUUID", string.Empty); |
483 | |||
484 | if (regionUUID == String.Empty) | 506 | if (regionUUID == String.Empty) |
485 | { | 507 | { |
486 | UUID newID = UUID.Random(); | 508 | UUID newID = UUID.Random(); |
487 | 509 | ||
488 | regionUUID = MainConsole.Instance.CmdPrompt("Region UUID", newID.ToString()); | 510 | regionUUID = MainConsole.Instance.CmdPrompt("RegionUUID", newID.ToString()); |
489 | config.Set("RegionUUID", regionUUID); | 511 | config.Set("RegionUUID", regionUUID); |
490 | } | 512 | } |
491 | 513 | ||
492 | RegionID = new UUID(regionUUID); | 514 | RegionID = new UUID(regionUUID); |
493 | originRegionID = RegionID; // What IS this?! | 515 | originRegionID = RegionID; // What IS this?! (Needed for RegionCombinerModule?) |
494 | 516 | ||
495 | RegionName = name; | 517 | // Location |
518 | // | ||
519 | allKeys.Remove(("Location").ToLower()); | ||
496 | string location = config.GetString("Location", String.Empty); | 520 | string location = config.GetString("Location", String.Empty); |
497 | |||
498 | if (location == String.Empty) | 521 | if (location == String.Empty) |
499 | { | 522 | { |
500 | location = MainConsole.Instance.CmdPrompt("Region Location", "1000,1000"); | 523 | location = MainConsole.Instance.CmdPrompt("Region Location", "1000,1000"); |
@@ -506,9 +529,10 @@ namespace OpenSim.Framework | |||
506 | m_regionLocX = Convert.ToUInt32(locationElements[0]); | 529 | m_regionLocX = Convert.ToUInt32(locationElements[0]); |
507 | m_regionLocY = Convert.ToUInt32(locationElements[1]); | 530 | m_regionLocY = Convert.ToUInt32(locationElements[1]); |
508 | 531 | ||
509 | // Internal IP | 532 | // InternalAddress |
533 | // | ||
510 | IPAddress address; | 534 | IPAddress address; |
511 | 535 | allKeys.Remove(("InternalAddress").ToLower()); | |
512 | if (config.Contains("InternalAddress")) | 536 | if (config.Contains("InternalAddress")) |
513 | { | 537 | { |
514 | address = IPAddress.Parse(config.GetString("InternalAddress", String.Empty)); | 538 | address = IPAddress.Parse(config.GetString("InternalAddress", String.Empty)); |
@@ -519,8 +543,10 @@ namespace OpenSim.Framework | |||
519 | config.Set("InternalAddress", address.ToString()); | 543 | config.Set("InternalAddress", address.ToString()); |
520 | } | 544 | } |
521 | 545 | ||
546 | // InternalPort | ||
547 | // | ||
522 | int port; | 548 | int port; |
523 | 549 | allKeys.Remove(("InternalPort").ToLower()); | |
524 | if (config.Contains("InternalPort")) | 550 | if (config.Contains("InternalPort")) |
525 | { | 551 | { |
526 | port = config.GetInt("InternalPort", 9000); | 552 | port = config.GetInt("InternalPort", 9000); |
@@ -530,9 +556,11 @@ namespace OpenSim.Framework | |||
530 | port = Convert.ToInt32(MainConsole.Instance.CmdPrompt("Internal port", "9000")); | 556 | port = Convert.ToInt32(MainConsole.Instance.CmdPrompt("Internal port", "9000")); |
531 | config.Set("InternalPort", port); | 557 | config.Set("InternalPort", port); |
532 | } | 558 | } |
533 | |||
534 | m_internalEndPoint = new IPEndPoint(address, port); | 559 | m_internalEndPoint = new IPEndPoint(address, port); |
535 | 560 | ||
561 | // AllowAlternatePorts | ||
562 | // | ||
563 | allKeys.Remove(("AllowAlternatePorts").ToLower()); | ||
536 | if (config.Contains("AllowAlternatePorts")) | 564 | if (config.Contains("AllowAlternatePorts")) |
537 | { | 565 | { |
538 | m_allow_alternate_ports = config.GetBoolean("AllowAlternatePorts", true); | 566 | m_allow_alternate_ports = config.GetBoolean("AllowAlternatePorts", true); |
@@ -544,10 +572,10 @@ namespace OpenSim.Framework | |||
544 | config.Set("AllowAlternatePorts", m_allow_alternate_ports.ToString()); | 572 | config.Set("AllowAlternatePorts", m_allow_alternate_ports.ToString()); |
545 | } | 573 | } |
546 | 574 | ||
547 | // External IP | 575 | // ExternalHostName |
548 | // | 576 | // |
577 | allKeys.Remove(("ExternalHostName").ToLower()); | ||
549 | string externalName; | 578 | string externalName; |
550 | |||
551 | if (config.Contains("ExternalHostName")) | 579 | if (config.Contains("ExternalHostName")) |
552 | { | 580 | { |
553 | externalName = config.GetString("ExternalHostName", "SYSTEMIP"); | 581 | externalName = config.GetString("ExternalHostName", "SYSTEMIP"); |
@@ -557,7 +585,6 @@ namespace OpenSim.Framework | |||
557 | externalName = MainConsole.Instance.CmdPrompt("External host name", "SYSTEMIP"); | 585 | externalName = MainConsole.Instance.CmdPrompt("External host name", "SYSTEMIP"); |
558 | config.Set("ExternalHostName", externalName); | 586 | config.Set("ExternalHostName", externalName); |
559 | } | 587 | } |
560 | |||
561 | if (externalName == "SYSTEMIP") | 588 | if (externalName == "SYSTEMIP") |
562 | { | 589 | { |
563 | m_externalHostName = Util.GetLocalHost().ToString(); | 590 | m_externalHostName = Util.GetLocalHost().ToString(); |
@@ -570,24 +597,32 @@ namespace OpenSim.Framework | |||
570 | m_externalHostName = externalName; | 597 | m_externalHostName = externalName; |
571 | } | 598 | } |
572 | 599 | ||
600 | // RegionType | ||
573 | m_regionType = config.GetString("RegionType", String.Empty); | 601 | m_regionType = config.GetString("RegionType", String.Empty); |
602 | allKeys.Remove(("RegionType").ToLower()); | ||
574 | 603 | ||
575 | // Prim stuff | 604 | // Prim stuff |
576 | // | 605 | // |
577 | m_nonphysPrimMax = config.GetInt("NonphysicalPrimMax", 256); | 606 | m_nonphysPrimMax = config.GetInt("NonphysicalPrimMax", 256); |
578 | 607 | allKeys.Remove(("NonphysicalPrimMax").ToLower()); | |
579 | m_physPrimMax = config.GetInt("PhysicalPrimMax", 10); | 608 | m_physPrimMax = config.GetInt("PhysicalPrimMax", 10); |
580 | 609 | allKeys.Remove(("PhysicalPrimMax").ToLower()); | |
581 | m_clampPrimSize = config.GetBoolean("ClampPrimSize", false); | 610 | m_clampPrimSize = config.GetBoolean("ClampPrimSize", false); |
582 | 611 | allKeys.Remove(("ClampPrimSize").ToLower()); | |
583 | m_objectCapacity = config.GetInt("MaxPrims", 15000); | 612 | m_objectCapacity = config.GetInt("MaxPrims", 15000); |
584 | 613 | allKeys.Remove(("MaxPrims").ToLower()); | |
585 | m_agentCapacity = config.GetInt("MaxAgents", 100); | 614 | m_agentCapacity = config.GetInt("MaxAgents", 100); |
586 | 615 | allKeys.Remove(("MaxAgents").ToLower()); | |
587 | 616 | ||
588 | // Multi-tenancy | 617 | // Multi-tenancy |
589 | // | 618 | // |
590 | ScopeID = new UUID(config.GetString("ScopeID", UUID.Zero.ToString())); | 619 | ScopeID = new UUID(config.GetString("ScopeID", UUID.Zero.ToString())); |
620 | allKeys.Remove(("ScopeID").ToLower()); | ||
621 | |||
622 | foreach (String s in allKeys) | ||
623 | { | ||
624 | m_otherSettings.Add(s, config.GetString(s)); | ||
625 | } | ||
591 | } | 626 | } |
592 | 627 | ||
593 | private void WriteNiniConfig(IConfigSource source) | 628 | private void WriteNiniConfig(IConfigSource source) |