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

[OSSL]
  ; 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

  ; Some 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:
  ;           "GRID_GOD" -- enable for users with UserLevel >= 200
  ;           "GOD" -- enable for users with rights to be god (local or grid)
  ;           "ACTIVE_GOD" -- enable for users that are present and with active god power
  ;           "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)
  ;    from this we can also create macros that can be include in the list as
  ;    ${OSSL|macroname} see examples below

  ; parcel macros
  ; 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,"

  ; NPC macros
  ; These can be mis-used so limit use to those you can trust.
  osslNPC = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER

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

; *************************************************

  ; ThreatLevel  None
  Allow_osGetAgents =               ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetAvatarList =           ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetGender =               true
  Allow_osGetHealth =               true
  Allow_osGetHealRate =             true
  Allow_osGetNPCList =              ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetRezzingObject =        true
  Allow_osNpcGetOwner =             ${OSSL|osslNPC}
  Allow_osParseJSON =               true
  Allow_osParseJSONNew =            true
  Allow_osSetSunParam =             ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osTeleportOwner =           ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osWindActiveModelPluginName = true

  ; ThreatLevel  Nuisance
  Allow_osSetEstateSunSettings =    ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetRegionSunSettings =    ESTATE_MANAGER,ESTATE_OWNER

  ; ThreatLevel  VeryLow
  Allow_osEjectFromGroup =          ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osForceBreakAllLinks =      ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osForceBreakLink =          ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetWindParam =            true
  Allow_osInviteToGroup =           ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osReplaceString =           true
  Allow_osSetDynamicTextureData =       ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetDynamicTextureDataFace =   ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetDynamicTextureDataBlend =  ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetDynamicTextureDataBlendFace = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetDynamicTextureURL =        ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetDynamicTextureURLBlend =   ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetDynamicTextureURLBlendFace = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetParcelMediaURL =       ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetParcelSIPAddress =     ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetPrimFloatOnWater =     true
  Allow_osSetWindParam =            ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osTerrainFlush =            ESTATE_MANAGER,ESTATE_OWNER
  Allow_osUnixTimeToTimestamp =     true

  ; ThreatLevel  Low
  Allow_osAvatarName2Key =          ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osFormatString =            true
  Allow_osKey2Name =                ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osListenRegex =             true
  Allow_osLoadedCreationDate =      ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osLoadedCreationID =        ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osLoadedCreationTime =      ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osMessageObject =           ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osRegexIsMatch =            true
  Allow_osGetAvatarHomeURI =        ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osNpcSetProfileAbout =      ${OSSL|osslNPC}
  Allow_osNpcSetProfileImage =      ${OSSL|osslNPC}
  Allow_osDie =                     ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER

  ; ThreatLevel  Moderate
  Allow_osDetectedCountry =         ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osDropAttachment =          ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osDropAttachmentAt =        ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetAgentCountry =         ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetGridCustom =           ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetGridGatekeeperURI =    ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetGridHomeURI =          ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetGridLoginURI =         ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetGridName =             true
  Allow_osGetGridNick =             true
  Allow_osGetNumberOfAttachments =  ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetRegionStats =          ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetSimulatorMemory =      ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetSimulatorMemoryKB =    ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osMessageAttachments =      ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetSpeed =                ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetOwnerSpeed =           ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER

  ; ThreatLevel High
  Allow_osCauseDamage =             ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osCauseHealing =            ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetHealth =               ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetHealRate =             ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osForceAttachToAvatar =     ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osForceAttachToAvatarFromInventory = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osForceCreateLink =         ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osForceDropAttachment =     ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osForceDropAttachmentAt =   ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetLinkPrimitiveParams =  ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetPhysicsEngineType =    true
  Allow_osGetPrimitiveParams =      ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetRegionMapTexture =     ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetScriptEngineName =     true
  Allow_osGetSimulatorVersion =     true
  Allow_osMakeNotecard =            ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osMatchString =             true
  Allow_osNpcCreate =               ${OSSL|osslNPC}
  Allow_osNpcGetPos =               ${OSSL|osslNPC}
  Allow_osNpcGetRot =               ${OSSL|osslNPC}
  Allow_osNpcLoadAppearance =       ${OSSL|osslNPC}
  Allow_osNpcMoveTo =               ${OSSL|osslNPC}
  Allow_osNpcMoveToTarget =         ${OSSL|osslNPC}
  Allow_osNpcPlayAnimation =        ${OSSL|osslNPC}
  Allow_osNpcRemove =               ${OSSL|osslNPC}
  Allow_osNpcSaveAppearance =       ${OSSL|osslNPC}
  Allow_osNpcSay =                  ${OSSL|osslNPC}
  Allow_osNpcSetRot =               ${OSSL|osslNPC}
  Allow_osNpcShout =                ${OSSL|osslNPC}
  Allow_osNpcSit =                  ${OSSL|osslNPC}
  Allow_osNpcStand =                ${OSSL|osslNPC}
  Allow_osNpcStopAnimation =        ${OSSL|osslNPC}
  Allow_osNpcStopMoveToTarget =     ${OSSL|osslNPC}
  Allow_osNpcTouch =                ${OSSL|osslNPC}
  Allow_osNpcWhisper =              ${OSSL|osslNPC}
  Allow_osOwnerSaveAppearance =     ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osParcelJoin =              ESTATE_MANAGER,ESTATE_OWNER
  Allow_osParcelSubdivide =         ESTATE_MANAGER,ESTATE_OWNER
  Allow_osRegionRestart =           ESTATE_MANAGER,ESTATE_OWNER
  Allow_osRegionNotice =            ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetContentType =          ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetPrimitiveParams =      false
  Allow_osSetProjectionParams =     ${OSSL|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 =             ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetNotecardLine =         ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osGetNumberOfNotecardLines = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osSetRot  =                 false
  Allow_osSetParcelDetails =        ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER

  ; ThreatLevel  Severe
  Allow_osConsoleCommand =          false
  Allow_osGrantScriptPermissions =  false
  Allow_osKickAvatar =              ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osRevokeScriptPermissions = false
  Allow_osTeleportAgent =           ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
  Allow_osTeleportObject =          ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER

  ; ThreatLevel  Severe with additional internal restrictions
  Allow_osGetAgentIP =              true   ; always restricted to Administrators (true or false to disable)


; available functions out of Threat level control (for reference only)
;  Allow_osAdjustSoundVolume =       true
;  Allow_osAngleBetween =            true
;  Allow_osApproxEquals =            true
;  Allow_osCheckODE =                true
;  Allow_osClearInertia =            true
;  Allow_osCollisionSound =          true
;  Allow_osDrawEllipse =             true
;  Allow_osDrawFilledEllipse =       true
;  Allow_osDrawFilledPolygon =       true
;  Allow_osDrawFilledRectangle =     true
;  Allow_osDrawImage =               true
;  Allow_osDrawLine =                true
;  Allow_osDrawPolygon =             true
;  Allow_osDrawRectangle =           true
;  Allow_osDrawResetTransform =      true
;  Allow_osDrawRotationTransform =   true
;  Allow_osDrawScaleTransform =      true
;  Allow_osDrawText =                true
;  Allow_osDrawTranslationTransform = true
;  Allow_osGetCurrentSunHour =       true
;  Allow_osGetInertiaData =          true
;  Allow_osGetInventoryDesc =        true
;  Allow_osGetLinkNumber =           true
;  Allow_osGetMapTexture =           true
;  Allow_osGetPhysicsEngineName =    true
;  Allow_osGetRegionSize =           true
;  Allow_osGetSunParam =             true
;  Allow_osGetTerrainHeight =        true
;  Allow_osGetDrawStringSize =       true
;  Allow_osIsNpc =                   true
;  Allow_osIsUUID =                  true
;  Allow_osLoopSound =               true
;  Allow_osLoopSoundMaster =         true
;  Allow_osLoopSoundSlave =          true
;  Allow_osMax =                     true
;  Allow_osMin =                     true
;  Allow_osMovePen =                 true
;  Allow_osPlaySound =               true
;  Allow_osPlaySoundSlave =          true
;  Allow_osPreloadSound =            true
;  Allow_osRound =                   true
;  Allow_osSetFontName =             true
;  Allow_osSetFontSize =             true
;  Allow_osSetInertia =              true
;  Allow_osSetInertiaAsBox =         true
;  Allow_osSetInertiaAsSphere =      true
;  Allow_osSetInertiaAsCylinder =    true
;  Allow_osSetPenCap =               true
;  Allow_osSetPenColor =             true
;  Allow_osSetPenSize =              true
;  Allow_osSetSoundRadius =          true
;  Allow_osStopSound =               true
;  Allow_osStringSubString =         true
;  Allow_osStringStartsWith =        true
;  Allow_osStringEndsWith =          true
;  Allow_osStringIndexOf =           true
;  Allow_osStringLastIndexOf =       true
;  Allow_osStringRemove =            true
;  Allow_osStringReplace =           true
;  Allow_osTriggerSound =            true
;  Allow_osTriggerSoundLimited =     true
;  Allow_osVecDistSquare =           true
;  Allow_osVecMagSquare =            true
;  Allow_osVolumeDetect =            true
