diff --git a/OpenSim/Framework/Servers/BaseOpenSimServer.cs b/OpenSim/Framework/Servers/BaseOpenSimServer.cs
index f0f8d0186b..cbab2dbc6a 100644
--- a/OpenSim/Framework/Servers/BaseOpenSimServer.cs
+++ b/OpenSim/Framework/Servers/BaseOpenSimServer.cs
@@ -37,6 +37,7 @@ using log4net;
using log4net.Appender;
using log4net.Core;
using log4net.Repository;
+using OpenSim.Framework;
using OpenSim.Framework.Console;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
@@ -234,26 +235,19 @@ namespace OpenSim.Framework.Servers
protected string GetThreadsReport()
{
StringBuilder sb = new StringBuilder();
+ Watchdog.ThreadWatchdogInfo[] threads = Watchdog.GetThreads();
- ProcessThreadCollection threads = ThreadTracker.GetThreads();
- if (threads == null)
+ sb.Append(threads.Length + " threads are being tracked:" + Environment.NewLine);
+ foreach (Watchdog.ThreadWatchdogInfo twi in threads)
{
- sb.Append("OpenSim thread tracking is only enabled in DEBUG mode.");
+ Thread t = twi.Thread;
+
+ sb.Append(
+ "ID: " + t.ManagedThreadId + ", Name: " + t.Name + ", TimeRunning: "
+ + "Pri: " + t.Priority + ", State: " + t.ThreadState);
+ sb.Append(Environment.NewLine);
}
- else
- {
- sb.Append(threads.Count + " threads are being tracked:" + Environment.NewLine);
- foreach (ProcessThread t in threads)
- {
- sb.Append("ID: " + t.Id + ", TotalProcessorTime: " + t.TotalProcessorTime + ", TimeRunning: " +
- (DateTime.Now - t.StartTime) + ", Pri: " + t.CurrentPriority + ", State: " + t.ThreadState);
- if (t.ThreadState == System.Diagnostics.ThreadState.Wait)
- sb.Append(", Reason: " + t.WaitReason + Environment.NewLine);
- else
- sb.Append(Environment.NewLine);
- }
- }
int workers = 0, ports = 0, maxWorkers = 0, maxPorts = 0;
ThreadPool.GetAvailableThreads(out workers, out ports);
ThreadPool.GetMaxThreads(out maxWorkers, out maxPorts);
diff --git a/OpenSim/Framework/ThreadTracker.cs b/OpenSim/Framework/ThreadTracker.cs
deleted file mode 100644
index 069e98b378..0000000000
--- a/OpenSim/Framework/ThreadTracker.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using System.Diagnostics;
-using log4net;
-
-namespace OpenSim.Framework
-{
- public static class ThreadTracker
- {
-// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- public static ProcessThreadCollection GetThreads()
- {
- Process thisProc = Process.GetCurrentProcess();
- return thisProc.Threads;
- }
- }
-}
diff --git a/OpenSim/Framework/Watchdog.cs b/OpenSim/Framework/Watchdog.cs
index bc19dd1c28..9baf3a0702 100644
--- a/OpenSim/Framework/Watchdog.cs
+++ b/OpenSim/Framework/Watchdog.cs
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
@@ -27,6 +27,7 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Threading;
using log4net;
@@ -43,7 +44,7 @@ namespace OpenSim.Framework
const int WATCHDOG_TIMEOUT_MS = 5000;
[System.Diagnostics.DebuggerDisplay("{Thread.Name}")]
- private class ThreadWatchdogInfo
+ public class ThreadWatchdogInfo
{
public Thread Thread;
public int LastTick;
@@ -149,6 +150,15 @@ namespace OpenSim.Framework
}
catch { }
}
+
+ ///
+ /// Get currently watched threads for diagnostic purposes
+ ///
+ ///
+ public static ThreadWatchdogInfo[] GetThreads()
+ {
+ return m_threads.Values.ToArray();
+ }
private static void WatchdogTimerElapsed(object sender, System.Timers.ElapsedEventArgs e)
{
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 0e17496992..393cd03898 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -5222,11 +5222,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
catch (Exception e)
{
- m_log.Error("[GENERICMESSAGE] " + e);
+ m_log.ErrorFormat(
+ "[LLCLIENTVIEW]: Exeception when handling generic message {0}{1}", e.Message, e.StackTrace);
}
}
}
- m_log.Error("[GENERICMESSAGE] Not handling GenericMessage with method-type of: " + method);
+
+ //m_log.Debug("[LLCLIENTVIEW]: Not handling GenericMessage with method-type of: " + method);
return false;
}
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
index 209e35c33f..5aeca8327b 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -695,9 +695,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (packet.Header.Reliable && !udpClient.PacketArchive.TryEnqueue(packet.Header.Sequence))
{
if (packet.Header.Resent)
- m_log.Debug("[LLUDPSERVER]: Received a resend of already processed packet #" + packet.Header.Sequence + ", type: " + packet.Type);
- else
- m_log.Warn("[LLUDPSERVER]: Received a duplicate (not marked as resend) of packet #" + packet.Header.Sequence + ", type: " + packet.Type);
+ m_log.DebugFormat(
+ "[LLUDPSERVER]: Received a resend of already processed packet #{0}, type {1} from {2}",
+ packet.Header.Sequence, packet.Type, client.Name);
+ else
+ m_log.WarnFormat(
+ "[LLUDPSERVER]: Received a duplicate (not marked as resend) of packet #{0}, type {1} from {2}",
+ packet.Header.Sequence, packet.Type, client.Name);
// Avoid firing a callback twice for the same packet
return;
diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs
index 8aa87fddee..a3238dff9f 100644
--- a/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs
@@ -187,18 +187,20 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps
int start, end;
if (TryParseRange(range, out start, out end))
{
- end = Utils.Clamp(end, 1, texture.Data.Length);
+ end = Utils.Clamp(end, 1, texture.Data.Length - 1);
start = Utils.Clamp(start, 0, end - 1);
+ int len = end - start + 1;
//m_log.Debug("Serving " + start + " to " + end + " of " + texture.Data.Length + " bytes for texture " + texture.ID);
- if (end - start < texture.Data.Length)
+ if (len < texture.Data.Length)
response.StatusCode = (int)System.Net.HttpStatusCode.PartialContent;
- response.ContentLength = end - start;
+ response.ContentLength = len;
response.ContentType = texture.Metadata.ContentType;
+ response.AddHeader("Content-Range", String.Format("bytes {0}-{1}/{2}", start, end, texture.Data.Length));
- response.Body.Write(texture.Data, start, end - start);
+ response.Body.Write(texture.Data, start, len);
}
else
{
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index e1c094971d..53789304a3 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -191,7 +191,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
itemID = group.GetFromItemID();
}
- SetAttachmentInventoryStatus(remoteClient, AttachmentPt, itemID, group);
+ ShowAttachInUserInventory(remoteClient, AttachmentPt, itemID, group);
AttachToAgent(sp, group, AttachmentPt, attachPos, silent);
}
@@ -219,8 +219,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
public UUID RezSingleAttachmentFromInventory(IClientAPI remoteClient, UUID itemID, uint AttachmentPt)
{
- m_log.DebugFormat("[ATTACHMENTS MODULE]: Rezzing single attachment from item {0} for {1}", itemID, remoteClient.Name);
-
return RezSingleAttachmentFromInventory(remoteClient, itemID, AttachmentPt, true);
}
@@ -238,11 +236,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
if (updateInventoryStatus)
{
if (att == null)
- {
ShowDetachInUserInventory(itemID, remoteClient);
- }
-
- SetAttachmentInventoryStatus(att, remoteClient, itemID, AttachmentPt);
+ else
+ ShowAttachInUserInventory(att, remoteClient, itemID, AttachmentPt);
}
if (null == att)
@@ -313,12 +309,20 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
return null;
}
- public UUID SetAttachmentInventoryStatus(
+ ///
+ /// Update the user inventory to the attachment of an item
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected UUID ShowAttachInUserInventory(
SceneObjectGroup att, IClientAPI remoteClient, UUID itemID, uint AttachmentPt)
{
- m_log.DebugFormat(
- "[ATTACHMENTS MODULE]: Updating inventory of {0} to show attachment of {1} (item ID {2})",
- remoteClient.Name, att.Name, itemID);
+// m_log.DebugFormat(
+// "[ATTACHMENTS MODULE]: Updating inventory of {0} to show attachment of {1} (item ID {2})",
+// remoteClient.Name, att.Name, itemID);
if (!att.IsDeleted)
AttachmentPt = att.RootPart.AttachmentPoint;
@@ -343,7 +347,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
///
///
///
- public void SetAttachmentInventoryStatus(
+ protected void ShowAttachInUserInventory(
IClientAPI remoteClient, uint AttachmentPt, UUID itemID, SceneObjectGroup att)
{
// m_log.DebugFormat(
@@ -407,7 +411,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
// Save avatar attachment information
if (m_scene.AvatarFactory != null)
{
- m_log.Debug("[ATTACHMENTS MODULE]: Dettaching from UserID: " + remoteClient.AgentId + ", ItemID: " + itemID);
+ m_log.Debug("[ATTACHMENTS MODULE]: Detaching from UserID: " + remoteClient.AgentId + ", ItemID: " + itemID);
m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance);
}
}
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
index 7e5a8ec9f1..22c89370a7 100644
--- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
@@ -198,7 +198,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
public void UpdateDatabase(UUID user, AvatarAppearance appearance)
{
- m_log.DebugFormat("[APPEARANCE]: UpdateDatabase");
+ //m_log.DebugFormat("[APPEARANCE]: UpdateDatabase");
AvatarData adata = new AvatarData(appearance);
m_scene.AvatarService.SetAvatar(user, adata);
}
diff --git a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
index 6a0fb6311c..a675928627 100644
--- a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
@@ -114,17 +114,6 @@ namespace OpenSim.Region.Framework.Interfaces
///
///
void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient);
-
- ///
- /// Update the user inventory to the attachment of an item
- ///
- ///
- ///
- ///
- ///
- ///
- UUID SetAttachmentInventoryStatus(
- SceneObjectGroup att, IClientAPI remoteClient, UUID itemID, uint AttachmentPt);
///
/// Update the user inventory to show a detach.
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 0e1b4b18e2..ac2246c7db 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1343,16 +1343,17 @@ namespace OpenSim.Region.Framework.Scenes
// Check if any objects have reached their targets
CheckAtTargets();
- // Run through all ScenePresences looking for updates
- // Presence updates and queued object updates for each presence are sent to clients
- if (m_frame % m_update_presences == 0)
- m_sceneGraph.UpdatePresences();
-
// Update SceneObjectGroups that have scheduled themselves for updates
// Objects queue their updates onto all scene presences
if (m_frame % m_update_objects == 0)
m_sceneGraph.UpdateObjectGroups();
+ // Run through all ScenePresences looking for updates
+ // Presence updates and queued object updates for each presence are sent to clients
+ if (m_frame % m_update_presences == 0)
+ m_sceneGraph.UpdatePresences();
+
+ // Coarse locations relate to positions of green dots on the mini-map (on a SecondLife client)
if (m_frame % m_update_coarse_locations == 0)
{
List coarseLocations;
@@ -1370,9 +1371,12 @@ namespace OpenSim.Region.Framework.Scenes
m_sceneGraph.UpdatePreparePhysics();
physicsMS2 = Util.EnvironmentTickCountSubtract(tmpPhysicsMS2);
+ // Apply any pending avatar force input to the avatar's velocity
if (m_frame % m_update_entitymovement == 0)
m_sceneGraph.UpdateScenePresenceMovement();
+ // Perform the main physics update. This will do the actual work of moving objects and avatars according to their
+ // velocity
int tmpPhysicsMS = Util.EnvironmentTickCount();
if (m_frame % m_update_physics == 0)
{
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 624640057d..9c3486e865 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -568,16 +568,6 @@ namespace OpenSim.Region.Framework.Scenes
m_parentScene.AttachmentsModule.DetachSingleAttachmentToGround(group.UUID, remoteClient);
}
- protected internal void DetachObject(uint objectLocalID, IClientAPI remoteClient)
- {
- SceneObjectGroup group = GetGroupByPrim(objectLocalID);
- if (group != null)
- {
- //group.DetachToGround();
- m_parentScene.AttachmentsModule.ShowDetachInUserInventory(group.GetFromItemID(), remoteClient);
- }
- }
-
protected internal void HandleUndo(IClientAPI remoteClient, UUID primId)
{
if (primId != UUID.Zero)
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index e933e772c3..52f6c1a819 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -1800,9 +1800,9 @@ namespace OpenSim.Region.Framework.Scenes
}
}
}
- // m_log.DebugFormat(
- // "[SCENE]: Storing {0}, {1} in {2}",
- // Name, UUID, m_scene.RegionInfo.RegionName);
+// m_log.DebugFormat(
+// "[SCENE]: Storing {0}, {1} in {2}",
+// Name, UUID, m_scene.RegionInfo.RegionName);
SceneObjectGroup backup_group = Copy(false);
backup_group.RootPart.Velocity = RootPart.Velocity;
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 6d0ecf05b9..ed92d860d4 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1663,6 +1663,8 @@ namespace OpenSim.Region.Framework.Scenes
}
}
+ // If the agent update does move the avatar, then calculate the force ready for the velocity update,
+ // which occurs later in the main scene loop
if (update_movementflag || (update_rotation && DCFlagKeyPressed))
{
// m_log.DebugFormat("{0} {1}", update_movementflag, (update_rotation && DCFlagKeyPressed));
@@ -4294,8 +4296,8 @@ if (m_animator.m_jumping) force.Z = m_animator.m_jumpVelocity; // add for ju
return;
UUID itemID = m_appearance.GetAttachedItem(p);
- UUID assetID = m_appearance.GetAttachedAsset(p);
+ //UUID assetID = m_appearance.GetAttachedAsset(p);
// For some reason assetIDs are being written as Zero's in the DB -- need to track tat down
// But they're not used anyway, the item is being looked up for now, so let's proceed.
//if (UUID.Zero == assetID)
@@ -4328,12 +4330,12 @@ if (m_animator.m_jumping) force.Z = m_animator.m_jumpVelocity; // add for ju
}
m_log.InfoFormat(
- "[ATTACHMENT]: Rezzed attachment in point {0} from item {1} and asset {2} ({3})",
- p, itemID, assetID, asset);
+ "[ATTACHMENT]: Rezzed attachment in point {0} from item {1} and asset {3}",
+ p, itemID, asset);
}
catch (Exception e)
{
- m_log.ErrorFormat("[ATTACHMENT]: Unable to rez attachment: {0}", e.ToString());
+ m_log.ErrorFormat("[ATTACHMENT]: Unable to rez attachment: {0}{1}", e.Message, e.StackTrace);
}
}
}
diff --git a/OpenSim/Tests/ConfigurationLoaderTest.cs b/OpenSim/Tests/ConfigurationLoaderTest.cs
index 4262c95827..c777acc0f1 100644
--- a/OpenSim/Tests/ConfigurationLoaderTest.cs
+++ b/OpenSim/Tests/ConfigurationLoaderTest.cs
@@ -69,7 +69,7 @@ namespace OpenSim.Tests
[Test]
public void IncludeTests()
{
- const string mainIniFile = "OpenSim.ini";
+ const string mainIniFile = "OpenSimDefaults.ini";
m_config = new IniConfigSource();
// Create ini files in a directory structure
diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini
new file mode 100644
index 0000000000..8d714cecba
--- /dev/null
+++ b/bin/OpenSimDefaults.ini
@@ -0,0 +1,1299 @@
+[Startup]
+ ; Set this to true if you want to log crashes to disk
+ ; this can be useful when submitting bug reports.
+ save_crashes = false
+
+ ; Directory to save crashes to if above is enabled
+ ; (default is /opensimdir/crashes/*.txt or C:\opensim\crashes\*.txt)
+ crash_dir = "crashes"
+
+ ; Place to create a PID file
+ ; PIDFile = "/tmp/my.pid"
+
+ ; Http proxy support for llHTTPRequest and dynamic texture loading
+ ; Set HttpProxy to the URL for your proxy server if you would like
+ ; to proxy llHTTPRequests through a firewall
+ ; HttpProxy = "http://proxy.com"
+ ; Set HttpProxyExceptions to a list of regular expressions for
+ ; URLs that you don't want going through the proxy such as servers
+ ; inside your firewall, separate patterns with a ';'
+ ; HttpProxyExceptions = ".mydomain.com;localhost"
+
+ startup_console_commands_file = "startup_commands.txt"
+ shutdown_console_commands_file = "shutdown_commands.txt"
+
+ ; To run a script every few minutes, set the script filename here
+ ; timer_Script = "filename"
+
+ ; ##
+ ; ## SYSTEM
+ ; ##
+
+ ; Sets the method that OpenSim will use to fire asynchronous
+ ; events. Valid values are UnsafeQueueUserWorkItem,
+ ; QueueUserWorkItem, BeginInvoke, SmartThreadPool, and Thread.
+ ; SmartThreadPool is reported to work well on Mono/Linux, but
+ ; UnsafeQueueUserWorkItem has been benchmarked with better
+ ; performance on .NET/Windows
+ async_call_method = SmartThreadPool
+
+ ; Max threads to allocate on the FireAndForget thread pool
+ ; when running with the SmartThreadPool option above
+ MaxPoolThreads = 15
+
+ ; ##
+ ; ## CLIENTS
+ ; ##
+
+ ; Enables EventQueueGet Service.
+ EventQueue = true
+
+ ; Set this to the DLL containing the client stack to use.
+ clientstack_plugin="OpenSim.Region.ClientStack.LindenUDP.dll"
+
+ ; ##
+ ; ## REGIONS
+ ; ##
+
+ ; Determine where OpenSimulator looks for the files which tell it which regions to server
+ ; Defaults to "filesystem" if this setting isn't present
+ region_info_source = "filesystem"
+ ; region_info_source = "web"
+
+ ; Determines where the region XML files are stored if you are loading these from the filesystem.
+ ; Defaults to bin/Regions in your OpenSimulator installation directory
+ ; regionload_regionsdir="C:\somewhere\xmlfiles\"
+
+ ; Determines the page from which regions xml is retrieved if you are loading these from the web
+ ; The XML here has the same format as it does on the filesystem (including the tag),
+ ; except that everything is also enclosed in a tag.
+ ; regionload_webserver_url = "http://example.com/regions.xml";
+
+ ; Draw objects on maptile. This step might take a long time if you've got a large number of
+ ; objects, so you can turn it off here if you'd like.
+ DrawPrimOnMapTile = true
+ ; Use terrain texture for maptiles if true, use shaded green if false
+ TextureOnMapTile = false
+
+ ; Maximum total size, and maximum size where a prim can be physical
+ NonPhysicalPrimMax = 256
+ PhysicalPrimMax = 10 ; (I think this was moved to the Regions.ini!)
+ ClampPrimSize = false
+
+ ; Allow scripts to cross region boundaries. These are recompiled on the new region.
+ AllowScriptCrossing = false
+
+ ; Allow compiled script binary code to cross region boundaries.
+ ; If you set this to "true", any region that can teleport to you can
+ ; inject ARBITRARY BINARY CODE into your system. Use at your own risk.
+ ; YOU HAVE BEEN WARNED!!!
+ TrustBinaries = false
+
+ ; Combine all contiguous regions into one large megaregion
+ ; Order your regions from South to North, West to East in your regions.ini and then set this to true
+ ; Warning! Don't use this with regions that have existing content!, This will likely break them
+ CombineContiguousRegions = false
+
+ ; If you have only one region in an instance, or to avoid the many bugs
+ ; that you can trigger in modules by restarting a region, set this to
+ ; true to make the entire instance exit instead of restarting the region.
+ ; This is meant to be used on systems where some external system like
+ ; Monit will restart any instance that exits, thereby making the shutdown
+ ; into a restart.
+ ;InworldRestartShutsDown = false
+
+ ; ##
+ ; ## PRIM STORAGE
+ ; ##
+
+ ; Persistence of changed objects happens during regular sweeps. The following control that behaviour to
+ ; prevent frequently changing objects from heavily loading the region data store.
+ ; If both of these values are set to zero then persistence of all changed objects will happen on every sweep.
+ ;
+ ; Objects will be considered for persistance in the next sweep when they have not changed for this number of seconds
+ MinimumTimeBeforePersistenceConsidered = 60
+ ; Objects will always be considered for persistance in the next sweep if the first change occurred this number of seconds ago
+ MaximumTimeBeforePersistenceConsidered = 600
+
+ ; Should avatars in neighbor sims see objects in this sim?
+ see_into_this_sim_from_neighbor = true
+
+ ; ##
+ ; ## PHYSICS
+ ; ##
+
+ ; if you would like to allow prims to be physical and move by physics with the physical checkbox in the client set this to true.
+ physical_prim = true
+
+ ; Select a mesher here.
+ ;
+ ; Meshmerizer properly handles complex prims by using triangle meshes.
+ ; Note that only the ODE physics engine currently deals with meshed prims in a satisfactory way
+ ;
+ ; ZeroMesher is faster but leaves the physics engine to model the mesh using the basic shapes that it supports
+ ; Usually this is only a box
+
+ meshing = Meshmerizer
+ ;meshing = ZeroMesher
+
+ ; Choose one of the physics engines below
+ ; OpenDynamicsEngine is by some distance the most developed physics engine
+ ; basicphysics effectively does not model physics at all, making all objects phantom
+
+ physics = OpenDynamicsEngine
+ ;physics = basicphysics
+ ;physics = POS
+ ;physics = modified_BulletX
+
+ ; ##
+ ; ## PERMISSIONS
+ ; ##
+
+ ;permissionmodules = "DefaultPermissionsModule"
+
+ ; If set to false, then, in theory, the server never carries out permission checks (allowing anybody to copy
+ ; any item, etc. This may not yet be implemented uniformally.
+ ; If set to true, then all permissions checks are carried out
+ ; Default is false
+ serverside_object_permissions = false
+
+ allow_grid_gods = false
+
+ ; This allows somne control over permissions
+ ; please note that this still doesn't duplicate SL, and is not intended to
+ ;region_owner_is_god = true
+ ;region_manager_is_god = false
+ ;parcel_owner_is_god = true
+
+ ; Control user types that are allowed to create new scripts
+ ; Only enforced if serviceside_object_permissions is true
+ ;
+ ; Current possible values are
+ ; all - anyone can create scripts (subject to normal permissions)
+ ; gods - only administrators can create scripts (as long as allow_grid_gods is true)
+ ; Default value is all
+ ; allowed_script_creators = all
+
+ ; Control user types that are allowed to edit (save) scripts
+ ; Only enforced if serviceside_object_permissions is true
+ ;
+ ; Current possible values are
+ ; all - anyone can edit scripts (subject to normal permissions)
+ ; gods - only administrators can edit scripts (as long as allow_grid_gods is true)
+ ; Default value is all
+ ; allowed_script_editors = all
+
+ ; ##
+ ; ## SCRIPT ENGINE
+ ; ##
+
+ DefaultScriptEngine = "XEngine"
+
+ ; ##
+ ; ## WORLD MAP
+ ; ##
+
+ ;WorldMapModule = "WorldMap"
+ ;MapImageModule = "MapImageModule"
+ ; Set to false to not generate any maptiles
+ ;GenerateMaptiles = "true"
+ ; Refresh (in seconds) the map tile periodically
+ ;MaptileRefresh = 0
+ ; If not generating maptiles, use this static texture asset ID
+ ;MaptileStaticUUID = "00000000-0000-0000-0000-000000000000"
+
+ ; ##
+ ; ## EMAIL MODULE
+ ; ##
+
+ ;emailmodule = DefaultEmailModule
+
+ ; ##
+ ; ## ANIMATIONS
+ ; ##
+
+ ; If enabled, enableFlySlow will change the primary fly state to
+ ; FLYSLOW, and the "always run" state will be the regular fly.
+
+ enableflyslow = false
+
+ ; PreJump is an additional animation state, but it probably
+ ; won't look right until the physics engine supports it
+ ; (i.e delays takeoff for a moment)
+
+ ; This is commented so it will come on automatically once it's
+ ; supported.
+
+ ; enableprejump = true
+
+ ; Simulator Stats URI
+ ; Enable JSON simulator data by setting a URI name (case sensitive)
+ ; Stats_URI = "jsonSimStats"
+
+ ; Make OpenSim start all regions woth logins disabled. They will need
+ ; to be enabled from the console if this is set
+ ; StartDisabled = false
+
+ ; Image decoding. Use CSJ2K for layer boundary decoding if true,
+ ; OpenJPEG if false
+ ; UseCSJ2K = true
+
+[SMTP]
+ enabled=false
+
+ ;enabled=true
+ ;internal_object_host=lsl.opensim.local
+ ;host_domain_header_from=127.0.0.1
+ ;SMTP_SERVER_HOSTNAME=127.0.0.1
+ ;SMTP_SERVER_PORT=25
+ ;SMTP_SERVER_LOGIN=foo
+ ;SMTP_SERVER_PASSWORD=bar
+
+[Network]
+ ConsoleUser = "Test"
+ ConsolePass = "secret"
+ http_listener_port = 9000
+ console_port = 0
+
+ ; ssl config: Experimental! The auto https config only really works definately on windows XP now
+ ; you need a Cert Request/Signed pair installed in the MY store with the CN specified below
+ ; you can use https on other platforms, but you'll need to configure the httpapi yourself for now
+ http_listener_ssl = false ; Also create a SSL server
+ http_listener_cn = "localhost" ; Use the cert with the common name
+ http_listener_sslport = 9001 ; Use this port for SSL connections
+ http_listener_ssl_cert = "" ; Currently unused, but will be used for OSHttpServer
+
+ ; Hostname to use in llRequestURL/llRequestSecureURL
+ ; if not defined - default machine name is being used
+ ; (on Windows this mean NETBIOS name - useably only inside local network)
+ ; ExternalHostNameForLSL=127.0.0.1
+
+ ; What is reported as the "X-Secondlife-Shard"
+ ; Defaults to the user server url if not set
+ ; The old default is "OpenSim", set here for compatibility
+ shard = "OpenSim"
+
+ ; What is reported as the "User-Agent" when using llHTTPRequest
+ ; Defaults to not sent if not set here. See the notes section in the wiki at
+ ; http://wiki.secondlife.com/wiki/LlHTTPRequest for comments on adding
+ ; " (Mozilla Compatible)" to the text where there are problems with a web server
+ ;user_agent = "OpenSim LSL (Mozilla Compatible)"
+
+[XMLRPC]
+ ; ##
+ ; ## Scripting XMLRPC mapper
+ ; ##
+
+ ; If enabled, this will post an event, "xmlrpc_uri(string)" to the
+ ; script concurrently with the first remote_data event.
+ ; This will contain the fully qualified URI an external site needs
+ ; to use to send XMLRPC requests to that script
+
+ ;XmlRpcRouterModule = "XmlRpcRouterModule"
+ ;XmlRpcPort = 20800
+
+[ClientStack.LindenUDP]
+ ; Set this to true to process incoming packets asynchronously. Networking is
+ ; already separated from packet handling with a queue, so this will only
+ ; affect whether networking internals such as packet decoding and
+ ; acknowledgement accounting are done synchronously or asynchronously
+ ;
+ ;async_packet_handling = false
+
+ ; The client socket receive buffer size determines how many
+ ; incoming requests we can process; the default on .NET is 8192
+ ; which is about 2 4k-sized UDP datagrams. On mono this is
+ ; whatever the underlying operating system has as default; for
+ ; example, ubuntu 8.04 or SLES11 have about 111k, which is about
+ ; 27 4k-sized UDP datagrams (on linux platforms you can [as root]
+ ; do "sysctl net.core.rmem_default" to find out what your system
+ ; uses a default socket receive buffer size.
+ ;
+ ; client_socket_rcvbuf_size allows you to specify the receive
+ ; buffer size LLUDPServer should use. NOTE: this will be limited
+ ; by the system's settings for the maximum client receive buffer
+ ; size (on linux systems you can set that with "sysctl -w
+ ; net.core.rmem_max=X")
+ ;
+ ;client_socket_rcvbuf_size = 8388608
+
+ ; Maximum outbound bytes per second for a single scene. This can be used to
+ ; throttle total outbound UDP traffic for a simulator. The default value is
+ ; 0, meaning no throttling at the scene level. The example given here is
+ ; 20 megabits
+ ;
+ ;scene_throttle_max_bps = 2621440
+
+ ; Maximum bits per second to send to any single client. This will override
+ ; the user's viewer preference settings. The default value is 0, meaning no
+ ; aggregate throttling on clients (only per-category throttling). The
+ ; example given here is 1.5 megabits
+ ;
+ ;client_throttle_max_bps = 196608
+
+ ; Per-client bytes per second rates for the various throttle categories.
+ ; These are default values that will be overriden by clients
+ ;
+ ;resend_default = 12500
+ ;land_default = 1000
+ ;wind_default = 1000
+ ;cloud_default = 1000
+ ;task_default = 1000
+ ;texture_default = 1000
+ ;asset_default = 1000
+ ;state_default = 1000
+
+ ; Per-client maximum burst rates in bytes per second for the various
+ ; throttle categories. These are default values that will be overriden by
+ ; clients
+ ;
+ ;resend_limit = 18750
+ ;land_limit = 29750
+ ;wind_limit = 18750
+ ;cloud_limit = 18750
+ ;task_limit = 18750
+ ;texture_limit = 55750
+ ;asset_limit = 27500
+ ;state_limit = 37000
+
+ ; Configures how ObjectUpdates are aggregated. These numbers
+ ; do not literally mean how many updates will be put in each
+ ; packet that goes over the wire, as packets are
+ ; automatically split on a 1400 byte boundary. These control
+ ; the balance between responsiveness of interest list updates
+ ; and total throughput. Higher numbers will ensure more full-
+ ; sized packets and faster sending of data, but more delay in
+ ; updating interest lists
+ ;
+ ;PrimTerseUpdatesPerPacket = 25
+ ;AvatarTerseUpdatesPerPacket = 10
+ ;PrimFullUpdatesPerPacket = 100
+
+ ; TextureSendLimit determines how many packets will be put on
+ ; the outgoing queue each cycle. Like the settings above, this
+ ; is a balance between responsiveness to priority updates and
+ ; total throughput. Higher numbers will give a better
+ ; throughput at the cost of reduced responsiveness to client
+ ; priority changes or transfer aborts
+ ;
+ ;TextureSendLimit = 20
+
+ ; Quash and remove any light properties from attachments not on the
+ ; hands. This allows flashlights and lanterns to function, but kills
+ ; silly vanity "Facelights" dead. Sorry, head mounted miner's lamps
+ ; will also be affected.
+ ;
+ ;DisableFacelights = "false"
+
+[Chat]
+ ; Controls whether the chat module is enabled. Default is true.
+ enabled = true;
+
+ ; Distance in meters that whispers should travel. Default is 10m
+ whisper_distance = 10
+
+ ; Distance in meters that ordinary chat should travel. Default is 30m
+ say_distance = 30
+
+ ; Distance in meters that shouts should travel. Default is 100m
+ shout_distance = 100
+
+
+[Messaging]
+ ; Control which region module is used for instant messaging.
+ ; Default is InstantMessageModule (this is the name of the core IM module as well as the setting)
+ InstantMessageModule = InstantMessageModule
+ ; MessageTransferModule = MessageTransferModule
+ ; OfflineMessageModule = OfflineMessageModule
+ ; OfflineMessageURL = http://yourserver/Offline.php
+ ; MuteListModule = MuteListModule
+ ; MuteListURL = http://yourserver/Mute.php
+
+ ; Control whether group messages are forwarded to offline users. Default is true.
+ ; ForwardOfflineGroupMessages = true
+
+
+[ODEPhysicsSettings]
+ ;##
+ ;## World Settings
+ ;##
+
+ ;Gravity. Feel like falling up? change world_gravityz to 9.8 instead of -9.8. m/s
+ world_gravityx = 0
+ world_gravityy = 0
+ world_gravityz = -9.8
+
+ ; World Step size. (warning these are dangerous. Changing these will probably cause your scene to explode dramatically)
+ ; reference: fps = (0.09375/ODE_STEPSIZE) * 1000;
+ world_stepsize = 0.020
+ world_internal_steps_without_collisions = 10
+
+ ;World Space settings. Affects memory consumption vs Collider CPU time for avatar and physical prim
+ world_hashspace_size_low = -4
+ world_hashSpace_size_high = 128
+
+ ;Dynamic space settings Affects memory consumption vs Collider CPU time for static prim
+ meters_in_small_space = 29.9
+ small_hashspace_size_low = -4
+ small_hashspace_size_high = 66
+
+ ; ##
+ ; ## Contact properties. (the stuff that happens when things come in contact with each other)
+ ; ##
+
+ ; surface layer around geometries other geometries can sink into before generating a contact
+ world_contact_surface_layer = 0.001
+
+ ; Filtering collisions helps keep things stable physics wise, but sometimes
+ ; it can be overzealous. If you notice bouncing, chances are it's that.
+ filter_collisions = false
+
+ ; Non Moving Terrain Contact (avatar isn't moving)
+ nm_terraincontact_friction = 255.0
+ nm_terraincontact_bounce = 0.1
+ nm_terraincontact_erp = 0.1025
+
+ ; Moving Terrain Contact (avatar is moving)
+ m_terraincontact_friction = 75.0
+ m_terraincontact_bounce = 0.05
+ m_terrainContact_erp = 0.05025
+
+ ; Moving Avatar to object Contact
+ m_avatarobjectcontact_friction = 75.0
+ m_avatarobjectcontact_bounce = 0.1
+
+ ; Object to Object Contact and Non-Moving Avatar to object
+ objectcontact_friction = 250.0
+ objectcontact_bounce = 0.2
+
+ ; ##
+ ; ## Avatar Control
+ ; ##
+
+ ; PID Controller Settings. These affect the math that causes the avatar to reach the
+ ; desired velocity
+ ; See http://en.wikipedia.org/wiki/PID_controller
+
+ av_pid_derivative_linux = 2200.0
+ av_pid_proportional_linux = 900.0;
+
+ av_pid_derivative_win = 2200.0
+ av_pid_proportional_win = 900.0;
+
+ ;girth of the avatar. Adds radius to the height also
+ av_capsule_radius = 0.37
+
+ ; Max force permissible to use to keep the avatar standing up straight
+ av_capsule_standup_tensor_win = 550000
+ av_capsule_standup_tensor_linux = 550000
+
+ ; specifies if the capsule should be tilted (=true; old compatibility mode)
+ ; or straight up-and-down (=false; better and more consistent physics behavior)
+ av_capsule_tilted = false
+
+ ; used to calculate mass of avatar.
+ ; float AVvolume = (float) (Math.PI*Math.Pow(CAPSULE_RADIUS, 2)*CAPSULE_LENGTH);
+ ; av_density * AVvolume;
+ av_density = 80
+
+ ; use this value to cut 52% of the height the sim gives us
+ av_height_fudge_factor = 0.52
+
+ ; Movement. Smaller is faster.
+
+ ; speed of movement with Always Run off
+ av_movement_divisor_walk = 1.3
+
+ ; speed of movement with Always Run on
+ av_movement_divisor_run = 0.8
+
+ ; When the avatar flies, it will be moved up by this amount off the ground (in meters)
+ minimum_ground_flight_offset = 3.0
+
+ ; ##
+ ; ## Object options
+ ; ##
+
+ ; used in the mass calculation.
+ geometry_default_density = 10.000006836
+
+ ; amount of ODE steps where object is non moving for ODE to automatically put it to sleep
+ body_frames_auto_disable = 20
+
+ ; used to control llMove2Target
+ body_pid_derivative = 35
+ body_pid_gain = 25
+
+ ; maximum number of contact points to generate per collision
+ contacts_per_collision = 80
+
+ ; amount of time a geom/body will try to cross a region border before it gets disabled
+ geom_crossing_failures_before_outofbounds = 5
+
+ ; start throttling the object updates if object comes in contact with 3 or more other objects
+ geom_contactpoints_start_throttling = 3
+
+ ; send 1 update for every x updates below when throttled
+ geom_updates_before_throttled_update = 15
+
+ ; Used for llSetStatus. How rigid the object rotation is held on the axis specified
+ body_motor_joint_maxforce_tensor_linux = 5
+ body_motor_joint_maxforce_tensor_win = 5
+
+ ; Maximum mass an object can be before it is clamped
+ maximum_mass_object = 10000.01
+
+ ; ##
+ ; ## Sculpted Prim settings
+ ; ##
+
+ ; Do we want to mesh sculpted prim to collide like they look?
+ mesh_sculpted_prim = true
+
+ ; number^2 non-physical level of detail of the sculpt texture. 32x32 - 1024 verticies
+ mesh_lod = 32
+
+ ; number^2 physical level of detail of the sculpt texture. 16x16 - 256 verticies
+ mesh_physical_lod = 16
+
+ ; ##
+ ; ## Physics logging settings - logfiles are saved to *.DIF files
+ ; ##
+
+ ; default is false
+ ;physics_logging = true
+ ;; every n simulation iterations, the physics snapshot file is updated
+ ;physics_logging_interval = 50
+ ;; append to existing physics logfile, or overwrite existing logfiles?
+ ;physics_logging_append_existing_logfile = true
+
+ ; ##
+ ; ## Joint support
+ ; ##
+
+ ; if you would like physics joints to be enabled through a special naming convention in the client, set this to true.
+ ; (see NINJA Physics documentation, http://opensimulator.org/wiki/NINJA_Physics)
+ ; default is false
+ ;use_NINJA_physics_joints = true
+
+ ; ##
+ ; ## additional meshing options
+ ; ##
+
+ ; physical collision mesh proxies are normally created for complex prim shapes, and collisions for simple boxes and
+ ; spheres are computed algorithmically. If you would rather have mesh proxies for simple prims, you can set this to
+ ; true. Note that this will increase memory usage and region startup time. Default is false.
+ ;force_simple_prim_meshing = true
+
+
+[RemoteAdmin]
+ enabled = false
+
+ ; Set this to a nonzero value to have remote admin use a different port
+ port = 0
+
+ ; This password is required to make any XMLRPC call (should be set as the "password" parameter)
+ access_password = unknown
+
+ ; set this variable to true if you want the create_region XmlRpc
+ ; call to unconditionally enable voice on all parcels for a newly
+ ; created region [default: false]
+ create_region_enable_voice = false
+
+ ; set this variable to false if you want the create_region XmlRpc
+ ; call to create all regions as private per default (can be
+ ; overridden in the XmlRpc call) [default: true]
+ create_region_public = false
+
+ ; the create_region XmlRpc call uses region_file_template to generate
+ ; the file name of newly create regions (if they are created
+ ; persistent). the parameter available are:
+ ; {0} - X location
+ ; {1} - Y location
+ ; {2} - region UUID
+ ; {3} - region port
+ ; {4} - region name with " ", ":", "/" mapped to "_"
+ region_file_template = "{0}x{1}-{2}.ini"
+
+ ; we can limit the number of regions that XmlRpcCreateRegion will
+ ; allow by setting this to a positive, non-0 number: as long as the
+ ; number of regions is below region_limits, XmlRpcCreateRegion will
+ ; succeed. setting region_limit to 0 disables the check.
+ ; default is 0
+ ;region_limit = 0
+
+ ; enable only those methods you deem to be appropriate using a | delimited whitelist
+ ; for example, enabled_methods = admin_broadcast|admin_region_query|admin_save_oar|admin_save_xml
+ ; if this parameter is not specified but enabled = true, all methods will be available
+ enabled_methods = all
+
+ ; specify the default appearance for an avatar created through the remote admin interface
+ ; This will only take effect is the file specified by the default_appearance setting below exists
+ ;default_male = Default Male
+ ;default_female = Default Female
+
+ ; update appearance copies inventory items and wearables of default avatars. if this value is false
+ ; (default), just worn assets are copied to the Clothes folder; if true, all Clothes and Bodyparts
+ ; subfolders are copied. the receiver will wear the same items the default avatar did wear.
+ ;copy_folders = false
+
+ ; path to default appearance XML file that specifies the look of the default avatars
+ ;default_appearance = default_appearance.xml
+
+[RestPlugins]
+ ; Change this to true to enable REST Plugins. This must be true if you wish to use
+ ; REST Region or REST Asset and Inventory Plugins
+ enabled = false
+ god_key = SECRET
+ prefix = /admin
+
+
+[RestRegionPlugin]
+ ; Change this to true to enable the REST Region Plugin
+ enabled = false
+
+
+[RestHandler]
+ ; Change this to true to enable the REST Asset and Inventory Plugin
+ enabled = false
+ authenticate = true
+ secured = true
+ extended-escape = true
+ realm = OpenSim REST
+ dump-asset = false
+ path-fill = true
+ dump-line-size = 32
+ flush-on-error = true
+
+
+; Uncomment the following for IRC bridge
+; experimental, so if it breaks... keep both parts... yada yada
+; also, not good error detection when it fails
+;[IRC]
+ ;enabled = true ; you need to set this otherwise it won't connect
+ ;server = name.of.irc.server.on.the.net
+ ;; user password - only use this if the server requires one
+ ;password = mypass
+ ;nick = OpenSimBotNameProbablyMakeThisShorter
+ ;channel = #the_irc_channel_you_want_to_connect_to
+ ;user = "USER OpenSimBot 8 * :I'm an OpenSim to IRC bot"
+ ;port = 6667
+ ;; channel to listen for configuration commands
+ ;commands_enabled = false
+ ;command_channel = 2777
+ ;report_clients = true
+ ;; relay private chat connections
+ ;; relay_private_channels = true: will relay IRC chat from/to private in-world channels
+ ;; relay_private_channel_out -- channel to send messages out to the IRC bridge
+ ;; relay_private_channel_in -- channel to receive message from the IRC bridge
+ ;; relay_chat = false: IRC bridge will not relay normal chat
+ ;; access_password -- simple security device
+ ;;
+ ;; so, to just relay chat from an IRC channel to in-world region and vice versa:
+ ;;
+ ;; relay_private_channels = false
+ ;; relay_chat = true
+ ;;
+ ;; to relay chat only to/from private in-world channels:
+ ;;
+ ;; relay_chat = false
+ ;; relay_private_channels = true
+ ;; relay_private_channel_in = 2226
+ ;; relay_private_channel_out = 2225
+ ;;
+ ;; in this example, all chat coming in from IRC will be send out via
+ ;; in-world channel 2226, and all chat from in-world channel 2225 will
+ ;; be relayed to the IRC channel.
+ ;;
+ ;relay_private_channels = false
+ ;relay_private_channel_in = 2226
+ ;relay_private_channel_out = 2225
+ ;relay_chat = true
+ ;access_password = foobar
+
+ ;;fallback_region = name of "default" region
+ ;;MSGformat fields : 0=botnick, 1=user, 2=region, 3=message
+ ;; must start with "PRIVMSG {0} : " or irc server will get upset
+ ;;for : :
+ ;;msgformat = "PRIVMSG {0} :<{1} in {2}>: {3}"
+ ;;for : - :
+ ;msgformat = "PRIVMSG {0} : {3} - {1} of {2}"
+ ;;for : - from :
+ ;;msgformat = "PRIVMSG {0} : {3} - from {1}"
+
+ ;; exclude_list allows you to stop the IRC connector from announcing the
+ ;;arrival and departure of certain users. For example: admins, bots.
+
+ ;exclude_list=User 1,User 2,User 3
+
+
+;[CMS]
+ ;enabled = true
+ ;channel = 345
+
+
+; Uncomment the following to control the progression of daytime
+; in the Sim. The defaults are what is shown below
+;[Sun]
+ ; number of wall clock hours for an opensim day. 24.0 would mean realtime
+ ;day_length = 4
+ ; Year length in days
+ ;year_length = 60
+ ; Day to Night Ratio
+ ;day_night_offset = 0.45
+ ; send a Sun update every update_interval # of frames. A lower number will
+ ; make for smoother sun transition at the cost of network
+ ;update_interval = 100
+
+
+[Wind]
+ ; Enables the wind module. Default is true
+ enabled = true
+
+ ; How often should wind be updated, as a function of world frames. Approximately 50 frames a second
+ wind_update_rate = 150
+
+ ; The Default Wind Plugin to load
+ wind_plugin = SimpleRandomWind
+
+ ; These settings are specific to the ConfigurableWind plugin
+ ; To use ConfigurableWind as the default, simply change wind_plugin to ConfigurableWind and uncomment the following.
+ ; avg_strength = 5.0
+ ; avg_direction = 0.0
+ ; var_strength = 0.0
+ ; var_direction = 0.0
+ ; rate_change = 1.0
+
+ ; This setting is specific to the SimpleRandomWind plugin
+ ; Adjusts wind strength. 0.0 = no wind, 1.0 = normal wind. Default is 1.0
+ strength = 1.0
+
+
+[Cloud]
+ ; Enable this to generate classic particle clouds above the sim.
+ ; default is disabled - turn it on here
+ enabled = false
+
+ ; Density of cloud cover 0.0 to 1.0 Defult 0.5
+ density = 0.5
+
+ ; update interval for the cloud cover data returned by llCloud().
+ ; default is 1000
+ cloud_update_rate = 1000
+
+[LightShare]
+
+ ; This enables the transmission of Windlight scenes to supporting clients, such as the Meta7 viewer.
+ ; It has no ill effect on viewers which do not support server-side windlight settings.
+ ; Currently we only have support for MySQL databases.
+ enable_windlight = false;
+
+[Trees]
+ ; Enable this to allow the tree module to manage your sim trees, including growing, reproducing and dying
+ ; default is false
+ active_trees = false
+
+ ; Density of tree population
+ tree_density = 1000.0
+
+
+[VectorRender]
+
+ ; the font to use for rendering text (default: Arial)
+ ; font_name = "Arial"
+
+
+[LL-Functions]
+ ; Set the following to true to allow administrator owned scripts to execute console commands
+ ; currently unused
+ ; AllowosConsoleCommand=false
+
+ AllowGodFunctions = false
+
+ ; Maximum number of llListen events we allow per script
+ ; Set this to 0 to have no limit imposed.
+ max_listens_per_script = 64
+
+
+[DataSnapshot]
+ ; The following set of configs pertains to search.
+ ; Set index_sims to true to enable search engines to index your searchable data
+ ; If false, no data will be exposed, DataSnapshot module will be off, and you can ignore the rest of these search-related configs
+ ; default is false
+ index_sims = false
+
+ ; The variable data_exposure controls what the regions expose:
+ ; minimum: exposes only things explicitly marked for search
+ ; all: exposes everything
+ data_exposure = minimum
+
+ ; If search is on, change this to your grid name; will be ignored for standalones
+ gridname = "OSGrid"
+
+ ; Period between data snapshots, in seconds. 20 minutes, for starters, so that you see the initial changes fast.
+ ; Later, you may want to increase this to 3600 (1 hour) or more
+ default_snapshot_period = 1200
+
+ ; This will be created in bin, if it doesn't exist already. It will hold the data snapshots.
+ snapshot_cache_directory = "DataSnapshot"
+
+ ; This semicolon-separated string serves to notify specific data services about the existence
+ ; of this sim. Uncomment if you want to index your data with this and/or other search providers.
+ ;data_services="http://metaverseink.com/cgi-bin/register.py"
+
+
+[Economy]
+ ; These economy values get used in the BetaGridLikeMoneyModule. - This module is for demonstration only -
+
+ ; Enables selling things for $0
+ SellEnabled = "false"
+
+ ; 45000 is the highest value that the sim could possibly report because of protocol constraints
+ ObjectCapacity = 45000
+
+ ; Money Unit fee to upload textures, animations etc
+ PriceUpload = 0
+
+ ; Money Unit fee to create groups
+ PriceGroupCreate = 0
+
+ ; We don't really know what the rest of these values do. These get sent to the client
+ ; These taken from Agni at a Public Telehub. Change at your own risk.
+ ObjectCount = 0
+ PriceEnergyUnit = 100
+ PriceObjectClaim = 10
+ PricePublicObjectDecay = 4
+ PricePublicObjectDelete = 4
+ PriceParcelClaim = 1
+ PriceParcelClaimFactor = 1
+
+ PriceRentLight = 5
+ TeleportMinPrice = 2
+ TeleportPriceExponent = 2
+ EnergyEfficiency = 1
+ PriceObjectRent = 1
+ PriceObjectScaleFactor = 10
+ PriceParcelRent = 1
+
+
+[SVN]
+ Enabled = false
+ Directory = SVNmodule\repo
+ URL = "svn://your.repo.here/"
+ Username = "user"
+ Password = "password"
+ ImportOnStartup = false
+ Autosave = false
+ AutoSavePeriod = 15 ; Number of minutes between autosave backups
+
+
+[XEngine]
+ ; Enable this engine in this OpenSim instance
+ Enabled = true
+
+ ; How many threads to keep alive even if nothing is happening
+ MinThreads = 2
+
+ ; How many threads to start at maximum load
+ MaxThreads = 100
+
+ ; Time a thread must be idle (in seconds) before it dies
+ IdleTimeout = 60
+
+ ; Thread priority ("Lowest", "BelowNormal", "Normal", "AboveNormal", "Highest")
+ Priority = "BelowNormal"
+
+ ; Maximum number of events to queue for a script (excluding timers)
+ MaxScriptEventQueue = 300
+
+ ; Stack size per thread created
+ ThreadStackSize = 262144
+
+ ; Set this to true (the default) to load each script into a separate
+ ; AppDomain. Setting this to false will load all script assemblies into the
+ ; current AppDomain, which will reduce the per-script overhead at the
+ ; expense of reduced security and the inability to garbage collect the
+ ; script assemblies
+ AppDomainLoading = true
+
+ ; Rate to poll for asynchronous command replies (ms)
+ ; currently unused
+ ;AsyncLLCommandLoopms = 50
+
+ ; Save the source of all compiled scripts
+ WriteScriptSourceToDebugFile = false
+
+ ; Default language for scripts
+ DefaultCompileLanguage = lsl
+
+ ; List of allowed languages (lsl,vb,js,cs)
+ ; AllowedCompilers=lsl,cs,js,vb.
+ ; *warning*, non lsl languages have access to static methods such as System.IO.File. Enable at your own risk.
+ AllowedCompilers=lsl
+
+ ; Compile debug info (line numbers) into the script assemblies
+ CompileWithDebugInformation = true
+
+ ; Allow the user of mod* functions. This allows a script to pass messages
+ ; to a region module via the modSendCommand() function
+ ; Default is false
+ AllowMODFunctions = false
+
+ ; Allow the use of os* functions (some are dangerous)
+ AllowOSFunctions = false
+
+ ; Allow the user of LightShare functions
+ AllowLightShareFunctions = false
+
+ ; Threat level to allow, one of None, VeryLow, Low, Moderate, High, VeryHigh, Severe
+ OSFunctionThreatLevel = VeryLow
+
+ ; Interval (s) between background save of script states
+ SaveInterval = 120
+
+ ; Interval (s) between maintenance runs (0 = disable)
+ MaintenanceInterval = 10
+
+ ; Time a script can spend in an event handler before it is interrupted
+ EventLimit = 30
+
+ ; If a script overruns it's event limit, kill the script?
+ KillTimedOutScripts = false
+
+ ; Sets the multiplier for the scripting delays
+ ScriptDelayFactor = 1.0
+
+ ; The factor the 10 m distances llimits are multiplied by
+ ScriptDistanceLimitFactor = 1.0
+
+ ; Maximum length of notecard line read
+ ; Increasing this to large values potentially opens
+ ; up the system to malicious scripters
+ ; NotecardLineReadCharsMax = 255
+
+ ; Sensor settings
+ SensorMaxRange = 96.0
+ SensorMaxResults = 16
+
+ ; OS Functions enable/disable
+ ; For each function, you can add one line, as shown
+ ; The default for all functions allows them if below threat level
+
+ ; true allows the use of the function unconditionally
+ ; Allow_osSetRegionWaterHeight = true
+
+ ; false disables the function completely
+ ; Allow_osSetRegionWaterHeight = false
+
+ ; Comma separated list of UUIDS allows the function for that list of UUIDS
+ ; Allow_osSetRegionWaterHeight = 888760cb-a3cf-43ac-8ea4-8732fd3ee2bb
+
+ ; You can also use script creators as the uuid
+ ; Creators_osSetRegionWaterHeight = , ...
+
+ ; If both Allow_ and Creators_ are given, effective permissions
+ ; are the union of the two.
+
+ ; Allow for llCreateLink and llBreakLink to work without asking for permission
+ ; only enable this in a trusted environment otherwise you may be subject to hijacking
+ ; AutomaticLinkPermission = false
+
+ ; Disable underground movement of prims (default true); set to
+ ; false to allow script controlled underground positioning of
+ ; prims
+ ; DisableUndergroundMovement = true
+
+
+[OpenGridProtocol]
+ ;These are the settings for the Open Grid Protocol.. the Agent Domain, Region Domain, you know..
+ ;On/true or Off/false
+ ogp_enabled=false
+
+ ;Name Prefix/suffix when using OGP
+ ogp_firstname_prefix=""
+ ogp_lastname_suffix="_EXTERNAL"
+
+
+[Concierge]
+ ; Enable concierge module
+ ; Default is false
+ enabled = false
+
+ ; name of the concierge
+ whoami = "jeeves"
+
+ ; password for updating the welcome message templates via XmlRpc
+ password = SECRET
+
+ ; regex specifying for which regions concierge service is desired; if
+ ; empty, then for all
+ regions = "^MeetingSpace-"
+
+ ; for each region that matches the regions regexp you can provide
+ ; (optionally) a welcome template using format substitution:
+ ; {0} is replaced with the name of the avatar entering the region
+ ; {1} is replaced with the name of the region
+ ; {2} is replaced with the name of the concierge (whoami variable above)
+
+ welcomes = /path/to/welcome/template/directory
+
+ ; Concierge can send attendee lists to an event broker whenever an
+ ; avatar enters or leaves a concierged region. the URL is subject
+ ; to format substitution:
+ ; {0} is replaced with the region's name
+ ; {1} is replaced with the region's UUID
+ broker = "http://broker.place.com/{1}"
+
+
+[RegionReady]
+ ; Enable this module to get notified once all items and scripts in the region have been completely loaded and compiled
+ ; default is false
+ enabled = false
+
+ ; Channel on which to signal region readiness through a message
+ ; formatted as follows: "{server_startup|oar_file_load},{0|1},n,[oar error]"
+ ; - the first field indicating whether this is an initial server startup
+ ; - the second field is a number indicating whether the OAR file loaded ok (1 == ok, 0 == error)
+ ; - the third field is a number indicating how many scripts failed to compile
+ ; - "oar error" if supplied, provides the error message from the OAR load
+ channel_notify = -800
+
+
+[MRM]
+ ; Enables the Mini Region Modules Script Engine.
+ ; default is false
+ Enabled = false
+
+ ; Runs MRM in a Security Sandbox
+ ; WARNING: DISABLING IS A SECURITY RISK.
+ Sandboxed = true
+
+ ; The level sandbox to use, adjust at your OWN RISK.
+ ; Valid values are:
+ ; * FullTrust
+ ; * SkipVerification
+ ; * Execution
+ ; * Nothing
+ ; * LocalIntranet
+ ; * Internet
+ ; * Everything
+ SandboxLevel = "Internet"
+
+ ; Only allow Region Owners to run MRMs
+ ; May represent a security risk if you disable this.
+ OwnerOnly = true
+
+[Hypergrid]
+ ; Keep it false for now. Making it true requires the use of a special client in order to access inventory
+ safemode = false
+
+[VivoxVoice]
+ ; The VivoxVoice module will allow you to provide voice on your
+ ; region(s). It uses the same voice technology as the LL grid and
+ ; works with recent LL clients (we have tested 1.22.9.110075, so
+ ; anything later ought to be fine as well).
+ ;
+ ; For this to work you need to obtain an admin account from Vivox
+ ; that allows you to create voice accounts and region channels.
+
+ enabled = false
+
+ ; vivox voice server
+ vivox_server = www.foobar.vivox.com
+
+ ; vivox SIP URI
+ vivox_sip_uri = foobar.vivox.com
+
+ ; vivox admin user name
+ vivox_admin_user = DeepThroat
+
+ ; vivox admin password
+ vivox_admin_password = VoiceG4te
+
+ ; channel type: "channel" or "positional"
+ ; - positional: spatial sound (default)
+ ; - channel: normal "conference call", no spatial sound
+ ;vivox_channel_type = positional
+
+ ; channel characteristics (unless you know what you are doing, i'd
+ ; leave them as they are --- now you WILL muck around with them,
+ ; huh? sigh)
+
+ ; channel distance model:
+ ; 0 - no attenuation
+ ; 1 - inverse distance attenuation
+ ; 2 - linear attenuation (default)
+ ; 3 - exponential attenuation
+ ;vivox_channel_distance_model = 2
+
+ ; channel mode:
+ ; - "open" (default)
+ ; - "lecture"
+ ; - "presentation"
+ ; - "auditorium"
+ ;vivox_channel_mode = "open"
+
+ ; channel roll off: rate of attenuation
+ ; - a value between 1.0 and 4.0, default is 2.0
+ ;vivox_channel_roll_off = 2.0
+
+ ; channel max range: distance at which channel is silent
+ ; - a value between 0 and 160, default is 80
+ ;vivox_channel_max_range = 80
+
+ ; channel clamping distance: distance before attenuation applies
+ ; - a value between 0 and 160, default is 10
+ ;vivox_channel_clamping_distance = 10
+
+[FreeSwitchVoice]
+ ; In order for this to work you need a functioning FreeSWITCH PBX set up.
+ ; Configuration details at http://opensimulator.org/wiki/Freeswitch_Module
+ enabled = false
+ ; FreeSWITCH server is going to contact us and ask us all sorts of things
+ freeswitch_server_user = freeswitch
+ freeswitch_server_pass = password
+ freeswitch_api_prefix = /api
+ ; external IP address of your OpenSim voice enabled region
+ ; note: all regions running on same OpenSim.exe will be enabled
+ freeswitch_service_server = ip.address.of.your.sim
+ ; this should be the same port the region listens on
+ freeswitch_service_port = 9000
+ freeswitch_realm = ip.address.of.freeswitch.server
+ freeswitch_sip_proxy = ip.address.of.freeswitch.server:5060
+ ; STUN = Simple Traversal of UDP through NATs
+ ; See http://wiki.freeswitch.org/wiki/NAT_Traversal
+ ; stun.freeswitch.org is not guaranteed to be running so use it in production at your own risk
+ freeswitch_attempt_stun = false
+ freeswitch_stun_server = ip.address.of.stun.server
+ freeswitch_echo_server = ip.address.of.freeswitch.server
+ freeswitch_echo_port = 50505
+ freeswitch_well_known_ip = ip.address.of.freeswitch.server
+ ;
+ ; Type the address of your http server here, hostname is allowed. This is provided so you can specify a hostname
+ ; This is used by client for account verification. By default, it's the same as the freeswitch service server.
+ ;
+ ; opensim_well_known_http_address = Address_Of_Your_SIM_HTTP_Server_Hostname_Allowed
+ ;
+ freeswitch_default_timeout = 5000
+ freeswitch_subscribe_retry = 120
+ ; freeswitch_password_reset_url =
+
+[Groups]
+ Enabled = false
+
+ ; This is the current groups stub in Region.CoreModules.Avatar.Groups. All the other settings below only really
+ ; apply to the Flotsam/SimianGrid GroupsModule
+ Module = Default
+
+ ; This module can use a PHP XmlRpc server from the Flotsam project at http://code.google.com/p/flotsam/
+ ; or from the SimianGrid project at http://code.google.com/p/openmetaverse
+ ;Module = GroupsModule
+
+ ; Enable Group Notices
+ ;NoticesEnabled = true
+
+ ; This makes the Groups modules very chatty on the console.
+ DebugEnabled = false
+
+ ; Specify which messaging module to use for groups messaging and if it's enabled
+ ;MessagingModule = GroupsMessagingModule
+ ;MessagingEnabled = true
+
+ ; Service connectors to the Groups Service. Select one depending on whether you're using a Flotsam XmlRpc backend or a SimianGrid backend
+
+ ; SimianGrid Service for Groups
+ ;ServicesConnectorModule = SimianGroupsServicesConnector
+ ;GroupsServerURI = http://mygridserver.com:82/Grid/
+
+ ; Flotsam XmlRpc Service for Groups
+ ;ServicesConnectorModule = XmlRpcGroupsServicesConnector
+ ;GroupsServerURI = http://yourxmlrpcserver.com/xmlrpc.php
+
+ ; XmlRpc Security settings. These must match those set on your backend groups service.
+ ;XmlRpcServiceReadKey = 1234
+ ;XmlRpcServiceWriteKey = 1234
+
+ ; Disables HTTP Keep-Alive for XmlRpcGroupsServicesConnector HTTP Requests,
+ ; this is a work around fora problem discovered on some Windows based region servers.
+ ; Only disable keep alive if you see a large number (dozens) of the following Exceptions:
+ ; System.Net.WebException: The request was aborted: The request was canceled.
+ ; XmlRpcDisableKeepAlive = false
+
+
+[PacketPool]
+ ; Enables the experimental packet pool. Yes, we've been here before.
+ ;RecyclePackets = true;
+ ;RecycleDataBlocks = true;
+
+
+[InterestManagement]
+ ; This section controls how state updates are prioritized for each client
+ ; Valid values are Time, Distance, SimpleAngularDistance, and FrontBack
+ UpdatePrioritizationScheme = FrontBack
+ ReprioritizationEnabled = true
+ ReprioritizationInterval = 2000.0
+ RootReprioritizationDistance = 10.0
+ ChildReprioritizationDistance = 20.0
+
+
+[WebStats]
+; View region statistics via a web page
+; See http://opensimulator.org/wiki/FAQ#Region_Statistics_on_a_Web_Page
+; Use a web browser and type in the "Login URI" + "/SStats/"
+; For example- http://127.0.0.1:9000/SStats/
+; enabled=false
+
+
+[MediaOnAPrim]
+ ; Enable media on a prim facilities
+ Enabled = true;
+
+
+;;
+;; These are defaults that are overwritten below in [Architecture].
+;; These defaults allow OpenSim to work out of the box with
+;; zero configuration
+;;
+[AssetService]
+ DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
+ AssetLoaderArgs = "assets/AssetSets.xml"
+
+ ; Disable this to prevent the default asset set from being inserted into the
+ ; asset store each time the region starts
+ AssetLoaderEnabled = true
+
+[GridService]
+ ;; default standalone, overridable in StandaloneCommon.ini
+ StorageProvider = "OpenSim.Data.Null.dll:NullRegionData"
+
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;; The following is the configuration section for the new style services
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+[Architecture]
+ ; Choose exactly one and only one of the architectures below.
+
+ Include-Standalone = "config-include/Standalone.ini"
+ ;Include-HGStandalone = "config-include/StandaloneHypergrid.ini"
+ ;Include-Grid = "config-include/Grid.ini"
+ ;Include-HGGrid = "config-include/GridHypergrid.ini"
+ ;Include-SimianGrid = "config-include/SimianGrid.ini"
+ ;Include-HyperSimianGrid = "config-include/HyperSimianGrid.ini"
+
+ ; Then choose
+ ; config-include/StandaloneCommon.ini.example (if you're in standlone) OR
+ ; config-include/GridCommon.ini.example (if you're connected to a grid)
+ ; Copy to your own .ini there (without .example extension) and edit it
+ ; to customize your data
+
+
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;; The below pulls in optional module config files
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+[Modules]
+ Include-modules = "addon-modules/*/config/*.ini"
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; ENSURE [Architecture] and [Modules] Sections with their "includes"
+;; are last to allow for overrides
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/bin/config-include/storage/SQLiteLegacyStandalone.ini b/bin/config-include/storage/SQLiteLegacyStandalone.ini
new file mode 100644
index 0000000000..facbbd6bcd
--- /dev/null
+++ b/bin/config-include/storage/SQLiteLegacyStandalone.ini
@@ -0,0 +1,17 @@
+; These are the initialization settings for running OpenSim Standalone with an SQLite database
+
+[DatabaseService]
+ StorageProvider = "OpenSim.Data.SQLiteLegacy.dll"
+ ConnectionString = "URI=file:OpenSim.db,version=3,UseUTF16Encoding=True"
+
+[AvatarService]
+ ConnectionString = "URI=file:avatars.db,version=3"
+
+[AuthenticationService]
+ ConnectionString = "URI=file:auth.db,version=3"
+
+[UserAccountService]
+ ConnectionString = "URI=file:userprofiles.db,version=3"
+
+[FriendsService]
+ ConnectionString = "URI=file:friends.db,version=3"
diff --git a/bin/config-include/storage/SQLiteStandalone.ini b/bin/config-include/storage/SQLiteStandalone.ini
new file mode 100644
index 0000000000..10e6991954
--- /dev/null
+++ b/bin/config-include/storage/SQLiteStandalone.ini
@@ -0,0 +1,26 @@
+; These are the initialization settings for running OpenSim Standalone with an SQLite database
+
+[DatabaseService]
+ StorageProvider = "OpenSim.Data.SQLite.dll"
+ ConnectionString = "URI=file:OpenSim.db,version=3,UseUTF16Encoding=True"
+
+[InventoryService]
+ ;ConnectionString = "URI=file:inventory.db,version=3"
+ ; if you have a legacy inventory store use the connection string below
+ ConnectionString = "URI=file:inventory.db,version=3,UseUTF16Encoding=True"
+
+[AvatarService]
+ ConnectionString = "URI=file:avatars.db,version=3"
+
+[AuthenticationService]
+ ConnectionString = "URI=file:auth.db,version=3"
+
+[UserAccountService]
+ ConnectionString = "URI=file:userprofiles.db,version=3"
+
+[GridUserService]
+ ConnectionString = "URI=file:griduser.db,version=3"
+
+[FriendsService]
+ ConnectionString = "URI=file:friends.db,version=3"
+