; * Run
; * $ Robust.exe -inifile Robust.HG.ini
; *

; * Configurations for enabling HG1.5
; * 
; * HG1.5 handlers are: OpenSim.Server.Handlers.dll:GatekeeperService
; *                     OpenSim.Server.Handlers.dll:UserAgentService
; * Additional OpenSim.Server.Handlers.dll:AssetServiceConnector and 
; *            OpenSim.Server.Handlers.dll:XInventoryInConnector 
; * are started in port 8002, outside the firewall
; *
; **
; *
; * The Const section allows us to define some basic information that we
; * will use throughout our configuration. We will provide examples for 
; * setting the base url of the Robust server and the public and private ports
; * it uses. Changing the values of the constants will set the operating
; * parameters thoughout the configuration. Other constants that may prove
; * to be useful may be added to the followin section. They may be 
; * referenced anywhere in the configuration by using ${Const|Name}. One
; * such use is providing a base path for setting locations that Robust
; * uses to write data.
; * 
[Const]

    ; The URL of the Robust server
    BaseURL = "http://127.0.0.1"
    
    ; The public port of the Robust server
    PublicPort = "8002"

    ; The private port of the Robust server
    PrivatePort = "8003"

; * The startup section lists all the connectors to start up in this server
; * instance. This may be only one, or it may be the entire server suite.
; * Multiple connectors should be separated by commas.
; *
; * These are the IN connectors the server uses, the in connectors
; * read this config file and load the needed service and database connectors
; *
; * The full syntax of a connector string is:
; * [[<ConfigName>@]<port>/]<dll name>[:<class name>]
; *
[Startup]
    ; Place to create a PID file
    ; If no path if specified then a PID file is not created.
    ; PIDFile = "/tmp/Robust.exe.pid"

    ; Plugin Registry Location
    ; Set path to directory for plugin registry. Information
    ; about the registered repositories and installed plugins
    ; will be stored here
    ; The Robust.exe process must have R/W access to the location 
    RegistryLocation = "."

    ; Modular configurations
    ; Set path to directory for modular ini files...
    ; The Robust.exe process must have R/W access to the location 
    ConfigDirectory = "."

    ; Console commands can be saved to a file, so the command history persists after a restart. (default is true)
    ConsoleHistoryFileEnabled = true

    ; The history file can be just a filename (relative to OpenSim's bin/ directory
    ; or it can be a full path to somewhere else. (default is OpenSimConsoleHistory.txt in bin/)
    ConsoleHistoryFile = "RobustConsoleHistory.txt"

    ; How many lines of command history should we keep? (default is 100)
    ConsoleHistoryFileLines = 100


[ServiceList]
    AssetServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:AssetServiceConnector"
    InventoryInConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:XInventoryInConnector"
    ;; Uncomment if you have set up Freeswitch (see [FreeswitchService] below)
    ;VoiceConnector = "8004/OpenSim.Server.Handlers.dll:FreeswitchServerConnector"
    GridServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:GridServiceConnector"
    GridInfoServerInConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:GridInfoServerInConnector"
    AuthenticationServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector"
    OpenIdServerConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:OpenIdServerConnector"
    AvatarServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:AvatarServiceConnector"
    LLLoginServiceInConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector"
    PresenceServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:PresenceServiceConnector"
    UserAccountServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:UserAccountServiceConnector"
    GridUserServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:GridUserServiceConnector"
    FriendsServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:FriendsServiceConnector"
    MapAddServiceConnector = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:MapAddServiceConnector"
    MapGetServiceConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:MapGetServiceConnector"
    ;; Uncomment this if you want offline IM to work
    ; OfflineIMServiceConnector = "${Const|PrivatePort}/OpenSim.Addons.OfflineIM.dll:OfflineIMServiceRobustConnector"
    ;; Uncomment this if you want Groups V2 to work
    ; GroupsServiceConnector = "${Const|PrivatePort}/OpenSim.Addons.Groups.dll:GroupsServiceRobustConnector"
    ;; Uncomment to provide bakes caching
    ;BakedTextureService = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:XBakesConnector"

    ;; Additions for Hypergrid

    GatekeeperServiceInConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:GatekeeperServiceInConnector"
    UserAgentServerConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:UserAgentServerConnector"
    HeloServiceInConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:HeloServiceInConnector"
    HGFriendsServerConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:HGFriendsServerConnector"
    InstantMessageServerConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:InstantMessageServerConnector"
    HGInventoryServiceConnector = "HGInventoryService@${Const|PublicPort}/OpenSim.Server.Handlers.dll:XInventoryInConnector"
    HGAssetServiceConnector = "HGAssetService@${Const|PublicPort}/OpenSim.Server.Handlers.dll:AssetServiceConnector"
    ;; Uncomment this if you want Groups V2, HG to work
    ; HGGroupsServiceConnector = "${Const|PublicPort}/OpenSim.Addons.Groups.dll:HGGroupsServiceRobustConnector"

    ;; Uncomment for UserProfiles see [UserProfilesService] to configure...
    ; UserProfilesServiceConnector = "${Const|PublicPort}/OpenSim.Server.Handlers.dll:UserProfilesConnector"

    ;; Uncomment if you want to have centralized estate data
    ; EstateDataService = "${Const|PrivatePort}/OpenSim.Server.Handlers.dll:EstateDataRobustConnector"

; * This is common for all services, it's the network setup for the entire
; * server instance, if none is specified above
; *
[Network]
    port = ${Const|PrivatePort}

    ; HTTPS for "Out of band" management applications such as the remote admin
    ; module. May specify https_main = True to make the main http server
    ; use https or "False" to make the main server HTTP
    ; https_main = False
    ;
    ; Create https_listener = "True" will create a listener on the port
    ; specified. Provide the path to your server certificate along with it's
    ; password
    ; https_listener = False
    ;
    ; Set our listener to this port
    ; https_port = 0
    ;
    ; Path to X509 certificate
    ; cert_path = "path/to/cert.p12"
    ;
    ; Password for cert
    ; cert_pass = "password"

    ;; The follow 3 variables are for HTTP Basic Authentication for the Robust services.
    ;; Use this if your central services in port ${Const|PrivatePort} need to be accessible on the Internet
    ;; but you want to protect them from unauthorized access.
    ; AuthType = "BasicHttpAuthentication"
    ; HttpAuthUsername = "some_username"
    ; HttpAuthPassword = "some_password"
    ;;
    ;; AuthType above can be overriden in any of the service sections below by
    ; AuthType = "None"
    ;; This is useful in cases where you want to protect most of the services,
    ;; but unprotect individual services. Username and Password can also be
    ;; overriden if you want to use different credentials for the different services.
    ;; Hypergrid services are not affected by this; they are publicly available 
    ;; by design.

    ;; By default, scripts are not allowed to call private services via llHttpRequest()
    ;; Such calls are detected by the X-SecondLife-Shared HTTP header
    ;; If you allow such calls you must be sure that they are restricted to very trusted scripters
    ;; (remember scripts can also be in visiting avatar attachments).
    ;; This can be overriden in individual private service sections if necessary
    AllowllHTTPRequestIn = false

    ; * The following are for the remote console
    ; * They have no effect for the local or basic console types
    ; * Leave commented to diable logins to the console
    ;ConsoleUser = Test
    ;ConsolePass = secret
    ;ConsolePort = 0


[Hypergrid]
    ;# {HomeURI} {Hypergrid} {The Home URL of this world} {}
    ;; This is the address of the external robust server that
    ;; runs the UserAgentsService, possibly this server.
    ;; For example 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} {}
    ;; This is the address of the external robust server
    ;; that runs the Gatekeeper service, possibly this server.
    ;; For example http://myworld.com:8002
    ;; This is a default that can be overwritten in some sections.
    ; GatekeeperURI = "${Const|BaseURL}:${Const|PublicPort}"


[DatabaseService]
    ; 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=***;"

    ; 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;"


; * As an example, the below configuration precisely mimicks the legacy
; * asset server. It is read by the asset IN connector (defined above)
; * and it then loads the OUT connector (a local database module). That,
; * in turn, reads the asset loader and database connection information
; *
[AssetService]
    LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
    DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
    AssetLoaderArgs = "./assets/AssetSets.xml"


; * This configuration loads the inventory server modules. It duplicates
; * the function of the legacy inventory server
; *
[InventoryService]
    LocalServiceModule = "OpenSim.Services.InventoryService.dll:XInventoryService"

    ; Will calls to purge folders (empty trash) and immediately delete/update items or folders (not move to trash first) succeed?
    ; If this is set to false then some other arrangement must be made to perform these operations if necessary.
    AllowDelete = true


; * This is the new style grid service.
; * "Realm" is the table that is used for user lookup.
; * It defaults to "regions", which uses the legacy tables
; *
[GridService]
    LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"

    ; Realm = "regions"
    ; AllowDuplicateNames = "True"

    ;; Perform distance check for the creation of a linked region
    ; Check4096 = "True"

    ;; Needed to display non-default map tile images for linked regions
    AssetService = "OpenSim.Services.AssetService.dll:AssetService"

    ;; Directory for map tile images of linked regions
    ; MapTileDirectory = "./maptiles"
 
    ;; Next, we can specify properties of regions, including default and fallback regions
    ;; The syntax is: Region_<RegionName> = "<flags>"
    ;; or:            Region_<RegionID> = "<flags>"
    ;; where <flags> can be DefaultRegion, DefaultHGRegion, FallbackRegion, NoDirectLogin, Persistent, LockedOut, Reservation, NoMove, Authenticate
    ;;  
    ;; 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.
    ;;
    ; Region_Welcome_Area = "DefaultRegion, FallbackRegion"
    ; (replace spaces with underscore)

    ;; Allow Hyperlinks to be created at the console
    HypergridLinker = true

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

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


; * This is the configuration for the freeswitch server in grid mode
[FreeswitchService]
    LocalServiceModule = "OpenSim.Services.FreeswitchService.dll:FreeswitchService"

    ;; The IP address of your FreeSWITCH server.
    ;; 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


; * This is the new style authentication service. Currently, only MySQL
; * is implemented. 
; *
[AuthenticationService]
    ; for the server connector
    LocalServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
    ; Realm = "useraccounts"

    ;; Allow the service to process HTTP getauthinfo calls.
    ;; Default is false.
    ; AllowGetAuthInfo = false

    ;; Allow the service to process HTTP setauthinfo calls.
    ;; Default is false.
    ; AllowSetAuthInfo = false

    ;; Allow the service to process HTTP setpassword calls.
    ;; Default is false.
    ; AllowSetPassword = false


[OpenIdService]
    ; for the server connector
    AuthenticationServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
    UserAccountServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"


; * This is the new style user service.
; * "Realm" is the table that is used for user lookup.
; * It defaults to "useraccounts", which uses the new style.
; * Realm = "users" will use the legacy tables as an authentication source
; *
[UserAccountService]
    ; for the server connector
    LocalServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    ; Realm = "useraccounts"

    ; These are for creating new accounts by the service
    AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
    PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
    GridService = "OpenSim.Services.GridService.dll:GridService"
    InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
    AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
    GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"

    ;; This switch creates the minimum set of body parts and avatar entries for a viewer 2 
    ;; to show a default "Ruth" avatar rather than a cloud for a newly created user.
    ;; Default is false
    CreateDefaultAvatarEntries = true

    ;; Allow the service to process HTTP createuser calls.
    ;; Default is false.
    ; AllowCreateUser = false

    ;; Allow the service to process HTTP setaccount calls.
    ;; Default is false.
    ; AllowSetAccount = false


[GridUserService]
    ; for the server connector
    LocalServiceModule = "OpenSim.Services.UserAccountService.dll:GridUserService"


[PresenceService]
    ; for the server connector
    LocalServiceModule = "OpenSim.Services.PresenceService.dll:PresenceService"


[AvatarService]
    ; for the server connector
    LocalServiceModule = "OpenSim.Services.AvatarService.dll:AvatarService"


[FriendsService]
    ; for the server connector
    LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService"

[EstateService]
    LocalServiceModule = "OpenSim.Services.EstateService.dll:EstateDataService"

[LibraryService]
    LibraryName = "OpenSim Library"
    DefaultLibrary = "./inventory/Libraries.xml"


[LoginService]
    ; for the server connector
    LocalServiceModule = "OpenSim.Services.LLLoginService.dll:LLLoginService"
    ; for the service
    UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
    AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
    InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
    AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
    PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
    GridService = "OpenSim.Services.GridService.dll:GridService"
    SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
    LibraryService = "OpenSim.Services.InventoryService.dll:LibraryService"
    UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
    FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"

    ; This inventory service will be used to initialize the user's inventory
    HGInventoryServicePlugin = "OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService"
    HGInventoryServiceConstructorArg = "HGInventoryService"

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

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

    WelcomeMessage = "Welcome, Avatar!"
    AllowRemoteSetLoginLevel = "false"

    ; For V2 map
    MapTileURL = "${Const|BaseURL}:${Const|PublicPort}/";

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

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

    ; For V3 avatar picker (( work in progress ))
    ; AvatarPicker = "${Const|BaseURL}/avatars"

    ; If you run this login server behind a proxy, set this to true
    ; HasProxy = false
    
    ; Defaults for the users, if none is specified in the useraccounts table entry (ServiceURLs)
    ;; If you have GatekeeperURI 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}"
    SRV_GroupsServerURI = "${Const|BaseURL}:${Const|PublicPort}"

    ;; 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 = ""

    ;# {DSTZone} {} {Override Daylight Saving Time rules} {* none local} "America/Los_Angeles;Pacific Standard Time"
    ;; Viewers do not receive timezone information from the server - almost all (?) default to Pacific Standard Time
    ;; However, they do rely on the server to tell them whether it's Daylight Saving Time or not.
    ;; Hence, calculating DST based on a different timezone can result in a misleading viewer display and inconsistencies between grids.
    ;; By default, this setting uses various timezone names to calculate DST with regards to the viewer's standard PST.
    ;; Options are 
    ;;   "none"     no DST 
    ;;   "local"    use the server's only timezone to calculate DST.  This is previous OpenSimulator behaviour.
    ;;   "America/Los_Angeles;Pacific Standard Time" use these timezone names to look up Daylight savings.
    ;;      'America/Los_Angeles' is used on Linux/Mac systems whilst 'Pacific Standard Time' is used on Windows
    DSTZone = "America/Los_Angeles;Pacific Standard Time"


[MapImageService]
    LocalServiceModule = "OpenSim.Services.MapImageService.dll:MapImageService"

    ; Set this if you want to change the default
    ; TilesStoragePath = "maptiles"
    ;
    ; If for some reason you have the AddMapTile service outside the firewall (e.g. ${Const|PublicPort}),
    ; you may want to set this. Otherwise, don't set it, because it's already protected.
    ; GridService = "OpenSim.Services.GridService.dll:GridService"
    ;
    ; Additionally, if you run this server behind a proxy, set this to true
    ; HasProxy = 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
    ;welcome = ${Const|BaseURL}/welcome

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

    ; 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}/


[GatekeeperService]
    LocalServiceModule = "OpenSim.Services.HypergridService.dll:GatekeeperService"
    ;; for the service
    UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
    PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
    GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
    GridService = "OpenSim.Services.GridService.dll:GridService"
    AuthenticationService = "OpenSim.Services.Connectors.dll:AuthenticationServicesConnector"
    SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
    ; how does the outside world reach me? This acts as public key too.
    ;; 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
    
    ; If you run this gatekeeper server behind a proxy, set this to true
    ; HasProxy = false

    ;; 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]
    LocalServiceModule = "OpenSim.Services.HypergridService.dll:UserAgentService"
    ;; for the service
    GridUserService     = "OpenSim.Services.UserAccountService.dll:GridUserService"
    GridService         = "OpenSim.Services.GridService.dll:GridService"
    GatekeeperService   = "OpenSim.Services.HypergridService.dll:GatekeeperService"
    PresenceService     = "OpenSim.Services.PresenceService.dll:PresenceService"
    FriendsService      = "OpenSim.Services.FriendsService.dll:FriendsService"
    UserAccountService  = "OpenSim.Services.UserAccountService.dll:UserAccountService"

    ; If you run this user agent server behind a proxy, set this to true
    ; HasProxy = false

    ;; If you separate the UserAgentService from the LoginService, set this to
    ;; the IP address of the machine where your LoginService is
    ;LoginServerIP = "127.0.0.1"

    ; 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


; * The interface that local users get when they are in other grids.
; * This restricts the inventory operations while in other grids.
; * Still not completely safe, especially if users perform inventory operations 
; * while in those grids. The more the user accesses his/her inventory, the more
; * those simulators will know about the user's inventory.
; * 
[HGInventoryService]
    ; For the InventoryServiceInConnector
    LocalServiceModule    = "OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService"
    ;; alternatives:
    ;;  HG1.5, more permissive, not recommended, but still supported
    ;LocalServiceModule    = "OpenSim.Services.HypergridService.dll:HGInventoryService"
    ;;  HG1.0, totally permissive, not recommended, but OK for grids with 100% trust
    ;LocalServiceModule    = "OpenSim.Services.InventoryService.dll:XInventoryService"

    UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"

    ; HGInventoryService is a public-facing inventory service that allows users to 
    ; interact with their suitcase folder when on a foreign grid.  This reuses the general inventory service connector.
    ; Hence, if the user has set up authentication in [Network] to protect their private services
    ; make sure it is not set here.
    AuthType = None

    ;; Can overwrite the default in [Hypergrid], but probably shouldn't
    ; HomeURI = "${Const|BaseURL}:${Const|PublicPort}"


; * The interface that local users get when they are in other grids.
; * This restricts the access that the rest of the world has to
; * the assets of this world.
; * 
[HGAssetService]
    LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGAssetService"
    UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"

    ; HGAssetService is a public-facing service that allows users to  
    ; read and create assets when on another grid.  This reuses the general asset service connector.
    ; Hence, if the user has set up authentication in [Network] to protect their private services
    ; make sure it is overriden for this public service.
    AuthType = None

    ;; Can overwrite the default in [Hypergrid], but probably shouldn't
    ; 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"


[HGFriendsService]
    LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGFriendsService"
    UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
    FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"
    UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
    GridService = "OpenSim.Services.GridService.dll:GridService"
    PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"


[HGInstantMessageService]
    LocalServiceModule  = "OpenSim.Services.HypergridService.dll:HGInstantMessageService"
    GridService         = "OpenSim.Services.GridService.dll:GridService"
    PresenceService     = "OpenSim.Services.PresenceService.dll:PresenceService"
    UserAgentService    = "OpenSim.Services.HypergridService.dll:UserAgentService"
    ; This should always be true in the Robust config
    InGatekeeper = True


[Messaging]
    ; OfflineIM
    OfflineIMService = "OpenSim.Addons.OfflineIM.dll:OfflineIMService"


[Groups]
    ;; for the HG Groups service
    OfflineIMService = "OpenSim.Addons.OfflineIM.dll:OfflineIMService"
    UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"

    ;; What is the HomeURI of users associated with this grid?
    ;; Can overwrite the default in [Hypergrid], but probably shouldn't
    ; HomeURI = "${Const|BaseURL}:${Const|PublicPort}"


[UserProfilesService]
    LocalServiceModule = "OpenSim.Services.UserProfilesService.dll:UserProfilesService"
    Enabled = false
    ;; Configure this for separate profiles database
    ;; 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"


[BakedTextureService]
    LocalServiceModule = "OpenSim.Server.Handlers.dll:XBakes"
    ;; This directory must be writable by the user ROBUST runs as. It will be created automatically.
    BaseDirectory = "./bakes"
