; Enable OSSL functions.
; Including this file in a region's set of INI files, causes the OpenSimulator
;   specific functions to be enabled. 
; See http://opensimulator.org/wiki/OSSL for a description of OSSL functions and
;   refer to http://opensimulator.org/wiki/OSSL_Implemented for a list of functions.

; The below file lists all the functions and specifies who has permission to
;   execute the function. Some of the functions are for maintainance or can be
;   mis-used so the permission to execute a function can be limited. Ability to
;   execute a function is based on the owner of the prim holding the script.

[XEngine]
  ; Allow the use of os* functions (some are dangerous)
  AllowOSFunctions = true

  ; Allow the user of mod* functions.  This allows a script to pass messages
  ;   to a region module via the modSendCommand() function and is used by some
  ;   modules to extend the scripting language.
  AllowMODFunctions = true

  ; Allow the use of LightShare functions.
  ; The setting enable_windlight = true must also be enabled in the [LightShare] section.
  AllowLightShareFunctions = true

  ; Threat level to allow. One of None, VeryLow, Low, Moderate, High, VeryHigh, Severe.
  ; See http://opensimulator.org/wiki/Threat_level for more information on these levels.
  ; This is the default level and can be overridden with the Allow_ specifications.
  ; Blanket enabling the ossl functions is dangerous and we do not recommend setting higher
  ;   than 'Low' unless you have a high level of trust in all the users that can run scripts
  ;   in your simulator.  It is safer to explicitly allow certain types of user to run
  ;   higher threat level OSSL functions, as detailed later on.
  OSFunctionThreatLevel = VeryLow

  ; Each of the OSSL functions can be enabled or disabled individually.
  ; To disable, set the value to 'false'.
  ; To enable for everyone, set the value to 'true'.
  ; To enable for individuals or groups, set it to a comma separated list. This checks
  ;    against the owner of the object containing the script.
  ;    The comma separated entries in the list may be one of:
  ;           "ESTATE_MANAGER" -- enable for estate manager
  ;           "ESTATE_OWNER" -- enable for estate owner
  ;           "PARCEL_OWNER" -- enable for parcel owner
  ;           "PARCEL_GROUP_MEMBER" -- enable for any member of the parcel group
  ;           uuid -- enable for specified ID (may be avatar or group ID)

  ; The OSSL function name is prepended with "Allow_" and it checks against
  ;   the owners of the containing prim. There can also be entries beginning with
  ;   'Creators_". The 'Creators_" parameters can only be a list of UUIDs and it is
  ;   checked against the creator of the script itself.

  ; Allowing ossl functions for anyone owning a parcel can be dangerous especially if
  ;    a region is selling or otherwise giving away parcel ownership. By default, parcel
  ;    ownership or group membership does not enable OSSL functions. Uncomment the
  ;    appropriate line below to allow parcel ownership and groups to do restricted
  ;    OSSL functions. It might be better to check the list below and edit the ones
  ;    to enable individually.
  osslParcelO = ""
  osslParcelOG = ""
  ; osslParcelO = "PARCEL_OWNER,"
  ; osslParcelOG = "PARCEL_GROUP_MEMBER,PARCEL_OWNER,"

  ; There are a block of functions for creating and controlling NPCs.
  ; These can be mis-used so limit use to those you can trust.
  osslNPC =                         ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
               
  ; ThreatLevel  None
  Allow_osDrawEllipse =             true
  Allow_osDrawFilledPolygon =       true
  Allow_osDrawFilledRectangle =     true
  Allow_osDrawImage =               true
  Allow_osDrawLine =                true
  Allow_osDrawPolygon =             true
  Allow_osDrawRectangle =           true
  Allow_osDrawText =                true
  Allow_osGetAgents =               ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetAvatarList =           ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetCurrentSunHour =       true
  Allow_osGetGender =               true
  Allow_osGetHealth =               true
  Allow_osGetHealRate =             true
  Allow_osGetInventoryDesc  =       true
  Allow_osGetMapTexture =           true
  Allow_osGetRegionSize =           true
  Allow_osGetRezzingObject =        true
  Allow_osGetSunParam =             true
  Allow_osGetTerrainHeight =        true
  Allow_osIsNpc =                   true
  Allow_osIsUUID =                  true
  Allow_osList2Double =             true
  Allow_osMax =                     true
  Allow_osMin =                     true
  Allow_osMovePen =                 true
  Allow_osNpcGetOwner =             ${XEngine|osslNPC}
  Allow_osParseJSON =               true
  Allow_osParseJSONNew =            true
  Allow_osSetFontName =             true
  Allow_osSetFontSize =             true
  Allow_osSetPenCap =               true
  Allow_osSetPenColor =             true
  Allow_osSetPenSize =              true
  Allow_osSetSunParam =             ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osTeleportOwner =           ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osWindActiveModelPluginName = true
  Allow_osCheckODE =                true    ; Here for completeness. This function cannot be turned off
  
  ; ThreatLevel  Nuisance
  Allow_osSetEstateSunSettings =    ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetRegionSunSettings =    ESTATE_MANAGER,ESTATE_OWNER
  
  ; ThreatLevel  VeryLow
  Allow_osEjectFromGroup =          ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osForceBreakAllLinks =      ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osForceBreakLink =          ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetDrawStringSize =       true
  Allow_osGetWindParam =            true
  Allow_osInviteToGroup =           ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osReplaceString =           true
  Allow_osSetDynamicTextureData =       ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetDynamicTextureDataBlend =  ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetDynamicTextureDataBlendFace = ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetDynamicTextureURL =        ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetDynamicTextureURLBlend =   ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetDynamicTextureURLBlendFace = ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetParcelMediaURL =       ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetParcelSIPAddress =     ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetPrimFloatOnWater =     true
  Allow_osSetWindParam =            ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osTerrainFlush =            ESTATE_MANAGER,ESTATE_OWNER
  Allow_osUnixTimeToTimestamp =     true
  
  ; ThreatLevel  Low
  Allow_osAvatarName2Key =          ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osFormatString =            true
  Allow_osKey2Name =                ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osListenRegex =             true
  Allow_osLoadedCreationDate =      ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osLoadedCreationID =        ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osLoadedCreationTime =      ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osMessageObject =           ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osRegexIsMatch =            true
  Allow_osGetAvatarHomeURI = 		${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  
  ; ThreatLevel  Moderate
  Allow_osDropAttachment =          ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osDropAttachmentAt =        ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetGridCustom =           ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetGridGatekeeperURI =    ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetGridHomeURI =          ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetGridLoginURI =         ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetGridName =             true
  Allow_osGetGridNick =             true
  Allow_osGetNumberOfAttachments =  ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetRegionStats =          ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetSimulatorMemory =      ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osMessageAttachments =      ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetSpeed =                ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  
  ; ThreatLevel High
  Allow_osCauseDamage =             ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osCauseHealing =            ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetHealth =               ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetHealRate =             ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osForceAttachToAvatar =     ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osForceAttachToAvatarFromInventory = ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osForceCreateLink =         ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osForceDropAttachment =     ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osForceDropAttachmentAt =   ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetAgentIP =              ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetLinkPrimitiveParams =  ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetPhysicsEngineType =    true
  Allow_osGetPrimitiveParams =      ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetRegionMapTexture =     ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetScriptEngineName =     true
  Allow_osGetSimulatorVersion =     true
  Allow_osMakeNotecard =            ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osMatchString =             true
  Allow_osNpcCreate =               ${XEngine|osslNPC}
  Allow_osNpcGetPos =               ${XEngine|osslNPC}
  Allow_osNpcGetRot =               ${XEngine|osslNPC}
  Allow_osNpcLoadAppearance =       ${XEngine|osslNPC}
  Allow_osNpcMoveTo =               ${XEngine|osslNPC}
  Allow_osNpcMoveToTarget =         ${XEngine|osslNPC}
  Allow_osNpcPlayAnimation =        ${XEngine|osslNPC}
  Allow_osNpcRemove =               ${XEngine|osslNPC}
  Allow_osNpcSaveAppearance =       ${XEngine|osslNPC}
  Allow_osNpcSay =                  ${XEngine|osslNPC}
  Allow_osNpcSetRot =               ${XEngine|osslNPC}
  Allow_osNpcShout =                ${XEngine|osslNPC}
  Allow_osNpcSit =                  ${XEngine|osslNPC}
  Allow_osNpcStand =                ${XEngine|osslNPC}
  Allow_osNpcStopAnimation =        ${XEngine|osslNPC}
  Allow_osNpcStopMoveToTarget =     ${XEngine|osslNPC}
  Allow_osNpcTouch =                ${XEngine|osslNPC}
  Allow_osNpcWhisper =              ${XEngine|osslNPC}
  Allow_osOwnerSaveAppearance =     ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osParcelJoin =              ESTATE_MANAGER,ESTATE_OWNER
  Allow_osParcelSubdivide =         ESTATE_MANAGER,ESTATE_OWNER
  Allow_osRegionRestart =           ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetContentType =          ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetPrimitiveParams =      false
  Allow_osSetProjectionParams =     ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetRegionWaterHeight =    ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetStateEvents =          false   ; deprecated
  Allow_osSetTerrainHeight =        ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetTerrainTexture =       ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetTerrainTextureHeight = ESTATE_MANAGER,ESTATE_OWNER
  
  ; ThreatLevel  VeryHigh
  Allow_osAgentSaveAppearance =     ESTATE_MANAGER,ESTATE_OWNER
  ; Warning: The next function allows scripts to force animations on avatars without the user giving permission.
  ;   Enabling this can allow forced animations which can trigger traumatic episodes in vulnerable populations.
  ;   Similar things can be said for several of the 'force' functions. Enable with care and control.
  ; Some of these were added as early functionality for NPCs. This has been replaced with the NPC functions.
  Allow_osAvatarPlayAnimation =     false
  Allow_osAvatarStopAnimation =     false
  Allow_osForceAttachToOtherAvatarFromInventory = false
  Allow_osForceDetachFromAvatar =   false
  Allow_osForceOtherSit =           false
  ; The notecard functions can cause a lot of load on the region if over used
  Allow_osGetNotecard =             ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetNotecardLine =         ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetNumberOfNotecardLines = ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osRegionNotice =            ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetRot  =                 false
  Allow_osSetParcelDetails =        ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  
  ; ThreatLevel  Severe
  Allow_osConsoleCommand =          false
  Allow_osGrantScriptPermissions =  false
  Allow_osKickAvatar =              ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osRevokeScriptPermissions = false
  Allow_osTeleportAgent =           ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  
