; This is the main configuration file for an instance of OpenSim running in standalone mode

[DatabaseService]
    ;
    ; ### Choose the DB
    ;

    ; SQLite
    Include-Storage = "config-include/storage/SQLiteStandalone.ini";

    ; MySql
    ; Uncomment these lines if you want to use mysql storage
    ; Change the connection string to your db details
    ;StorageProvider = "OpenSim.Data.MySQL.dll"
    ;ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;Old Guids=true;"

    ; Uncomment this line if you are using MySQL and want to use a different database for estates.
    ; The usual application for this is to allow estates to be spread out across multiple simulators by share the same database.
    ; Most people won't need to do this so only uncomment if you know what you're doing.
    ;EstateConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;Old Guids=true;"

    ; MSSQL
    ; Uncomment these lines if you want to use MSSQL storage
    ; Change the connection string to your db details
    ; The value for server property is shown in your SQL Server Management Studio login dialog.
    ; (This sample is the default of express edition)
    ;StorageProvider = "OpenSim.Data.MSSQL.dll"
    ;ConnectionString = "Server=localhost\SQLEXPRESS;Database=opensim;User Id=opensim; password=***;"

    ; PGSQL
    ; Uncomment these lines if you want to use PGSQL storage
    ; Change the connection string to your db details
    ;StorageProvider = "OpenSim.Data.PGSQL.dll"
    ;ConnectionString = "Server=localhost;Database=opensim;User Id=opensim; password=***;"

[Hypergrid]
    ; Uncomment the variables in this section only if you are in
    ; Hypergrid configuration. Otherwise, ignore.

    ;# {HomeURI} {Hypergrid} {The Home URL of this world} {}
    ;; If this is a standalone world, this is the address of this instance.
    ;; If this is a grided simulator, this is the address of the external robust server that
    ;; runs the UserAgentsService.
    ;; For example http://myworld.com:9000 or http://myworld.com:8002
    ;; This is a default that can be overwritten in some sections.
    ; HomeURI = "${Const|BaseURL}:${Const|PublicPort}"

    ;# {GatekeeperURI} {Hypergrid} {The URL of the gatekeeper of this world} {}
    ;; If this is a standalone world, this is the address of this instance.
    ;; If this is a grided simulator, this is the address of the external robust server
    ;; that runs the Gatekeeper service.
    ;; For example http://myworld.com:9000 or http://myworld.com:8002
    ;; This is a default that can be overwritten in some sections.
    ; GatekeeperURI = "${Const|BaseURL}:${Const|PublicPort}"

[Modules]
    ;; Choose one cache module and the corresponding config file, if it exists.
    ;; Copy the config .example file into your own .ini file and alter that
    ;; We recommend the use of the FlotsamAssetCache since this is most actively maintained.

    AssetCaching = "FlotsamAssetCache"
    Include-FlotsamCache = "config-include/FlotsamCache.ini"

    ;AssetCaching = "CenomeMemoryAssetCache"
    ;Include-CenomeCache = "config-include/CenomeCache.ini"

    ;AssetCaching = "GlynnTuckerAssetCache"

    ;; Authorization is not on by default, as it depends on external php
    ;AuthorizationServices = "LocalAuthorizationServicesConnector"

[AssetService]
    DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
    AssetLoaderArgs = "assets/AssetSets.xml"

[GridService]
    ;; For in-memory region storage (default)
    StorageProvider = "OpenSim.Data.Null.dll:NullRegionData"
    ;;--- For MySql region storage (alternative)
    ;StorageProvider = "OpenSim.Data.MySQL.dll:MySqlRegionData"

    ;; Directory for map tile images of remote regions
    ; MapTileDirectory = "./maptiles"

    ;; Next, we can specify properties of regions, including default and fallback regions
    ;; The syntax is: Region_<RegionName> = "<flags>"
    ;; where <flags> can be DefaultRegion, FallbackRegion, NoDirectLogin, Persistent, LockedOut
    ;;  
    ;; DefaultRegion    If a local login cannot be placed in the required region (e.g. home region does not exist, avatar is not allowed entry, etc.)
    ;;                  then this region becomes the destination.  Only the first online default region will be used.  If no DefaultHGRegion
    ;;                  is specified then this will also be used as the region for hypergrid connections that require it (commonly because they have not specified
    ;;                  an explicit region.
    ;;  
    ;; DefaultHGRegion  If an avatar connecting via the hypergrid does not specify a region, then they are placed here.  Only the first online
    ;;                  region will be used.
    ;;  
    ;; FallbackRegion   If the DefaultRegion is not available for a local login, then any FallbackRegions are tried instead.  These are tried in the 
    ;;                  order specified.  This only applies to local logins at this time, not Hypergrid connections.
    ;;  
    ;; NoDirectLogin    A hypergrid user cannot directly connect to this region.  This does not apply to local logins.
    ;;  
    ;; Persistent       When the simulator is shutdown, the region is signalled as offline but left registered on the grid.
    ;;
    ;; For example:
    Region_Welcome_Area = "DefaultRegion, FallbackRegion"

    ;; Allow supporting viewers to export content
    ;; Set to false to prevent export
    ExportSupported = true

    ; === HG ONLY ===
    ;; If you have this set under [Hypergrid], no need to set it here, leave it commented
    ; GatekeeperURI="${Const|BaseURL}:${Const|PublicPort}"

[LibraryModule]
    ; Set this if you want to change the name of the OpenSim Library
    ;LibraryName = "My World's Library"

[LoginService]
    WelcomeMessage = "Welcome, Avatar!"
    ;; If you have Gatekeeper set under [Hypergrid], no need to set it here, leave it commented
    ; GatekeeperURI = "${Const|BaseURL}:${Const|PublicPort}"

    SRV_HomeURI = "${Const|BaseURL}:${Const|PublicPort}"    
    SRV_InventoryServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_AssetServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_ProfileServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_FriendsServerURI = "${Const|BaseURL}:${Const|PublicPort}"
    SRV_IMServerURI = "${Const|BaseURL}:${Const|PublicPort}"

    ;; For Viewer 2
    MapTileURL = "${Const|BaseURL}:${Const|PublicPort}/"

    ; Url to search service
    ; SearchURL = "${Const|BaseURL}:${Const|PublicPort}";

    ; For V3 destination guide
    ; DestinationGuide = "${Const|BaseURL}/guide"

    ; The minimum user level required for a user to be able to login.  0 by default
    ; If you disable a particular user's account then you can set their login level below this number.
    ; You can also change this level from the console though these changes will not be persisted.
    ; MinLoginLevel = 0

    ;; Ask co-operative viewers to use a different currency name
    ;Currency = ""

    ;; Set minimum fee to publish classified
    ; ClassifiedFee = 0

    ; Basic Login Service Dos Protection Tweaks
    ; ;
    ; ; Some Grids/Users use a transparent proxy that makes use of the X-Forwarded-For HTTP Header, If you do, set this to true
    ; ; If you set this to true and you don't have a transparent proxy, it may allow attackers to put random things in the X-Forwarded-For header to
    ; ;     get around this basic DOS protection.
    ; DOSAllowXForwardedForHeader = false
    ; ;
    ; ; The protector adds up requests during this rolling period of time, default 10 seconds
    ; DOSRequestTimeFrameMS = 10000
    ; ;
    ; ; The amount of requests in the above timeframe from the same endpoint that triggers protection
    ; DOSMaxRequestsInTimeFrame = 5
    ; ;
    ; ; The amount of time that a specific endpoint is blocked.    Default 2 minutes.
    ; DOSForgiveClientAfterMS = 120000
    ; ; 
    ; ; To turn off basic dos protection, set the DOSMaxRequestsInTimeFrame to 0.

[FreeswitchService]
    ;; If FreeSWITCH is not being used then you don't need to set any of these parameters
    ;;
    ;; The IP address of your FreeSWITCH server.  The common case is for this to be the same as the server running the OpenSim standalone
    ;; This has to be set for the FreeSWITCH service to work
    ;; This address must be reachable by viewers.
    ;ServerAddress = 127.0.0.1

    ;; The following configuration parameters are optional

    ;; By default, this is the same as the ServerAddress
    ; Realm = 127.0.0.1

    ;; By default, this is the same as the ServerAddress on port 5060
    ; SIPProxy = 127.0.0.1:5060

    ;; Default is 5000ms
    ; DefaultTimeout = 5000

    ;; The dial plan context.  Default is "default"
    ; Context = default

    ;; Currently unused
    ; UserName = freeswitch

    ;; Currently unused
    ; Password = password

    ;; The following parameters are for 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    
    ; EchoServer = 127.0.0.1
    ; EchoPort = 50505
    ; AttemptSTUN = false

[GridInfoService]
    ; These settings are used to return information on a get_grid_info call.
    ; Client launcher scripts and third-party clients make use of this to
    ; autoconfigure the client and to provide a nice user experience. If you
    ; want to facilitate that, you should configure the settings here according
    ; to your grid or standalone setup.
    ;
    ; See http://opensimulator.org/wiki/GridInfo

    ; login uri: for grid this is the login server URI
    login = ${Const|BaseURL}:${Const|PublicPort}/

    ; long grid name: the long name of your grid
    gridname = "the lost continent of hippo"

    ; short grid name: the short name of your grid
    gridnick = "hippogrid"

    ; login page: optional: if it exists it will be used to tell the client to use
    ; this as splash page. May also be served from an external web server, e.g. for
    ; information on a standalone
    ;welcome = ${Const|BaseURL}/welcome

    ; helper uri: optional: if it exists it will be used to tell the client to use
    ;                       this for all economy related things
    ;economy = ${Const|BaseURL}/economy

    ; web page of grid: optional: page providing further information about your grid
    ;about = ${Const|BaseURL}/about

    ; account creation: optional: page providing further information about obtaining
    ;                             a user account on your grid
    ;register = ${Const|BaseURL}/register

    ; help: optional: page providing further assistance for users of your grid
    ;help = ${Const|BaseURL}/help

    ; password help: optional: page providing password assistance for users of your grid
    ;password = ${Const|BaseURL}/password

    ; HG address of the gatekeeper, if you have one
    ; this is the entry point for all the regions of the world
    ; gatekeeper = ${Const|BaseURL}:${Const|PublicPort}/

    ; HG user domain, if you have one
    ; this is the entry point for all user-related HG services
    ; uas = ${Const|BaseURL}:${Const|PublicPort}/

[MapImageService]
    ; Set this if you want to change the default
    ; TilesStoragePath = "maptiles"

[AuthorizationService]
    ; If you have regions with access restrictions
    ; specify them here using the convention
    ; Region_<Region_Name> = <flags>
    ; Valid flags are:
    ; DisallowForeigners -- HG visitors not allowed
    ; DisallowResidents -- only Admins and Managers allowed
    ; Example:
    ; Region_Test_1 = "DisallowForeigners"

;;
;; HG configurations
;;
[GatekeeperService]
    ;; If you have GatekeeperURI set under [Hypergrid], no need to set it here, leave it commented
    ; ExternalName = "${Const|BaseURL}:${Const|PublicPort}"

    ; Does this grid allow incoming links to any region in it?
    ; If false, HG TPs happen only to the  Default regions specified in [GridService] section
    AllowTeleportsToAnyRegion = true

    ;; Regular expressions for controlling which client versions are accepted/denied.
    ;; An empty string means nothing is checked.
    ;;
    ;; Example 1: allow only these 3 types of clients (any version of them)
    ;; AllowedClients = "Imprudence|Hippo|Second Life"
    ;;
    ;; Example 2: allow all clients except these
    ;; DeniedClients = "Twisted|Crawler|Cryolife|FuckLife|StreetLife|GreenLife|AntiLife|KORE-Phaze|Synlyfe|Purple Second Life|SecondLi |Emerald"
    ;;
    ;; Note that these are regular expressions, so every character counts.
    ;; Also note that this is very weak security and should not be trusted as a reliable means
    ;; for keeping bad clients out; modified clients can fake their identifiers.
    ;;
    ;;
    ;AllowedClients = ""
    ;DeniedClients = ""

    ;; Are foreign visitors allowed?
    ;ForeignAgentsAllowed = true
    ;;
    ;; If ForeignAgentsAllowed is true, make exceptions using AllowExcept.
    ;; Leave blank or commented for no exceptions.
    ; AllowExcept = "http://griefer.com:8002, http://enemy.com:8002"
    ;;
    ;; If ForeignAgentsAllowed is false, make exceptions using DisallowExcept
    ;; Leave blank or commented for no exceptions.
    ; DisallowExcept = "http://myfriendgrid.com:8002, http://myboss.com:8002"

[UserAgentService]
    ;; User level required to be contacted from other grids
    ;LevelOutsideContacts = 0

    ;; Restrictions on destinations of local users.
    ;; Are local users allowed to visit other grids?
    ;; What user level? Use variables of this forrm:
    ;; ForeignTripsAllowed_Level_<UserLevel> = true | false
    ;; (the default is true)
    ;; For example:
    ; ForeignTripsAllowed_Level_0 = false
    ; ForeignTripsAllowed_Level_200 = true ; true is default, no need to say it
    ;;
    ;; If ForeignTripsAllowed is false, make exceptions using DisallowExcept
    ;; Leave blank or commented for no exceptions.
    ; DisallowExcept_Level_0 = "http://myothergrid.com:8002, http://boss.com:8002"
    ;;
    ;; If ForeignTripsAllowed is true, make exceptions using AllowExcept.
    ;; Leave blank or commented for no exceptions.
    ; AllowExcept_Level_200 = "http://griefer.com:8002, http://enemy.com:8002"

    ;; This variable controls what is exposed to profiles of local users
    ;; as seen from outside of this grid. Leave it uncommented for exposing
    ;; UserTitle, UserFlags and the creation date. Uncomment and change to False
    ;; to block this info from being exposed.
    ; ShowUserDetailsInHGProfile = True

[HGInventoryService]
    ;; If you have this set under [Hypergrid], no need to set it here, leave it commented
    ; HomeURI = "${Const|BaseURL}:${Const|PublicPort}"

[HGAssetService]
    ;; If you have this set under [Hypergrid], no need to set it here, leave it commented
    ; HomeURI = "${Const|BaseURL}:${Const|PublicPort}"

    ;; The asset types that this grid can export to / import from other grids.
    ;; Comma separated.
    ;; Valid values are all the asset types in OpenMetaverse.AssetType, namely:
    ;; Unknown, Texture, Sound, CallingCard, Landmark, Clothing, Object, Notecard, LSLText, 
    ;; LSLBytecode, TextureTGA, Bodypart, SoundWAV, ImageTGA, ImageJPEG, Animation, Gesture, Mesh 
    ;;
    ;; Leave blank or commented if you don't want to apply any restrictions.
    ;; A more strict, but still reasonable, policy may be to disallow the exchange 
    ;; of scripts, like so:
    ; DisallowExport ="LSLText"
    ; DisallowImport ="LSLBytecode"

[HGInventoryAccessModule]
    ;; If you have these set under [Hypergrid], no need to set it here, leave it commented
    ; HomeURI = "${Const|BaseURL}:${Const|PublicPort}"
    ; GatekeeperURI = "${Const|BaseURL}:${Const|PublicPort}"

    ;; If you want to protect your assets from being copied by foreign visitors
    ;; uncomment the next line. You may want to do this on sims that have licensed content.
    ;; true = allow exports, false = disallow exports. True by default.
    ; OutboundPermission = True

    ;; Send visual reminder to local users that their inventories are unavailable while they are traveling
    ;; and available when they return. True by default.
    ;RestrictInventoryAccessAbroad = True

[HGFriendsModule]
    ; User level required to be able to send friendship invitations to foreign users
    ;LevelHGFriends = 0;

[Messaging]
    ; === HG ONLY ===
    ;; If you have this set under [Hypergrid], no need to set it here, leave it commented
    ; GatekeeperURI = "${Const|BaseURL}:${Const|PublicPort}"

[EntityTransfer]
    ;; User level from which local users are allowed to HG teleport. Default 0 (all users)
    ;LevelHGTeleport = 0

    ;; Are local users restricted from taking their appearance abroad?
    ;; Default is no restrictions
    ;RestrictAppearanceAbroad = false

    ;; If appearance is restricted, which accounts' appearances are allowed to be exported?
    ;; Comma-separated list of account names
    AccountForAppearance = "Test User, Astronaut Smith"

[UserProfilesService]
    ;; To use, set Enabled to true then configure for your site...
    Enabled = false
    LocalServiceModule = "OpenSim.Services.UserProfilesService.dll:UserProfilesService"

    ;; Configure this for separate databse
    ; ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;Old Guids=true;"
    ; Realm = UserProfiles

    UserAccountService = OpenSim.Services.UserAccountService.dll:UserAccountService
    AuthenticationServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
