Active Response is based on the SiteMinder Authorization API which returns response values from the custom Java class. We can use C, Java and Perl scripts to write the Active Responses. This article talks about how to write an Active Response using Java to parse the Impersonators CN value from the DN.
Necessity of Active Response:
Let us consider the CSR Impersonation. It has two kinds of users namely Impersonators and Impersonatee’s. In some scenarios Impersonator performs some tasks on behalf of Impersonatee’s, For auditing purpose if we want to track that which task done by whom, then the simplest solution would be capturing the user’s CN value and store or use in your application as required. So throughout the application we need to pass both Impersonator and Impersonatee's CN value as Response.
If we specify the response attribute like CN=< %userattr = "cn" % >, it will have Impersonators CN value, (i.e. after Impersonator Authentication and before starting the Impersonation). On successful Impersonation, Impersonatee’s CN value will replace the Impersonators CN value in the SiteMinder Response. So we want to have both the Impersonator and Impersonatee’s CN value in SiteMinder Response.
To overcome this issue, we write an Active Response using JAVA to parse the Impersonators CN value from the DN value and put this CN value into the SiteMinder’s Response.
Java Code to Parse the CN value from the DN:
There is a response attribute called SM_USERIMPERSONATORNAME which returns the Impersonators DN value as SiteMinder Response.
The following java class parses the Impersonators CN value from the SiteMinder’s default attribute SM_USERIMPERSONATORNAME.
public class ParseCNFromImpersonatorDN
implements ActiveExpression
{
public int init(APIContext context)
throws Exception
{
// This example needs no initialization so just return "success"
return 0;
}
public String invoke(ActiveExpressionContext context ,String param)
throws Exception
{
int indexOfChar = -1;
if (context == null)
{
// should never happen
throw new IllegalArgumentException("ActiveResponseSample invoked without context");
}
// the User Context is required to use the methods like getProp, setProp.
UserContext theUserContext = context.getUserContext();
if (theUserContext == null)
{
//context.setErrorText("No User Context.");
return null;
}
String csrdn = theUserContext.getProp("SM_USERIMPERSONATORNAME");
if ("".equals(csrdn) csrdn == null )
{
return null;
}
indexOfChar = csrdn.indexOf("=");
if(-1 == indexOfChar)
{
//context.setErrorText("Param is not Impersonator DN "+csrdn);
return null;
}
String csrUserName = csrdn.substring(indexOfChar+1);
indexOfChar = csrUserName.indexOf(",");
if(-1 == indexOfChar)
{
//context.setErrorText("Param is not Impersonator DN "+csrUserName);
return null;
}
csrUserName = csrUserName.substring(0,indexOfChar);
return csrUserName;
}
Public int release (APIContext context)
throws Exception
{
// This example needs no shutdown so just return "success"
return 0;
}
}
Steps to implement the Active Response in SiteMinder Policy Server:
1. Compile the ParseCNFromImpersonatorDN.java file and create CNFromDN.jar file.
2. Copy the jar file CNFromDN.jar into the following Location in your SiteMinder server.
3. Add the location of CNFromDN.jar file in the JVMOptions.txt file as follows:
4. Add the CSRCN response attribute in your SiteMinder Response as below.
Create a new Response attribute as follows (either HTTP Header or Cookie):
Attribute: WebAgent-HTTP-Header-Variable
Attribute Setup:
Attribute Kind : Active Response
Variable Name : CSRCN
Library Name : smjavaapi
Function Name : JavaActiveExpression
Parameters : com.sample.ActiveResponse.ParseCNFromImpersonatorDN
5. It requires Restart of your SiteMinder Policy Server to take effect of this Active Response.
On successful Implementation of this Active Response you will have both Impersonator and Impersonatee’s CN value in your application’s response.
Abbreviation:
DN – Domain Name
CN – Common Name
CSR – Customer Service Representative
Reference:
http://www.ca.com/
3 comments:
I would like to create a program that given a userID but not a password, can automatically log a user into a siteminder protected site. This program will of course need to be trusted.
If you have any sample code that demonstrates, I would love to see it...
Kindly go through the following link. It might give solution for your query.
http://ashok-iam.blogspot.com/2007/08/csr-impersonation-etrust-siteminder.html
i found this on my computer help
llkeywords version 2
# sections
[word .5, .1, .3]
default Name of
default state that all scripts
must have
state Keyword
to indicate state block or state
transition
# data types
[word .1, .3, .1]
integer Integer
type
float Floating
-point type
string String
type
key
Key type. Use NULL_KEY to test
for empty keys.
vector Vector
type of 3 floats. Used to
represent 3D motion, Euler
angles, and color.:Access
components by .x, .y. or .z
rotation Rotation
type of 4 floats. Used to
represent rotation.:Access
components by .x, .y., .z, or .w
list List of
various data types
# events
[word 0, .3, .5]
state_entry
state_entry():Triggered on any
state transition and startup
state_exit
state_exit():Triggered on any
state transition
touch_start
touch_start(integer
num_detected):Triggered by the
start of agent clicking on task
touch touch
(integer num_detected):Triggered
while agent is clicking on task
touch_end
touch_end(integer
num_detected):Triggered when
agent stops clicking on task
collision_start collision_start
(integer num_detected):Triggered
when task starts colliding with
another task
collision
collision(integer
num_detected):Triggered while
task is colliding with another
task
collision_end collision_end
(integer num_detected):Triggered
when task stops colliding with
another task
land_collision_start
land_collision_start(vector
pos):Triggered when task starts
colliding with land
land_collision
land_collision(vector
pos):Triggered when task is
colliding with land
land_collision_end
land_collision_end(vector
pos):Triggered when task stops
colliding with land
timer timer
():Result of the llSetTimerEvent
library function call.
listen listen
(integer channel, string name,
key id, string message):Result of
the llListen library function
call
sensor sensor
(integer num_detected):Result of
the llSensor library function
call
no_sensor
no_sensor():Result of the
llSensor library function call
control control
(key id, integer level, integer
edge):Result of llTakeControls
library function call
at_target
at_target(integer tnum, vector
targetpos, vector ourpos):Result
of llTarget library function call
not_at_target not_at_target
():Result of llTarget library
function call
at_rot_target at_rot_target
(integer tnum, rotation
targetrot, rotation
ourrot):Result of LLRotTarget
library function call
not_at_rot_target
not_at_rot_target():Result of
LLRotTarget library function call
money money(key
id, integer amount):Triggered
when L$ is given to task
email email
(string time, string address,
string subj, string message,
integer num_left):Triggered when
task receives email
run_time_permissions
run_time_permissions(integer
perm):Triggered when an agent
grants run time permissions to
task
attach attach
(key id):Triggered when an agent
attaches or detaches from agent
dataserver dataserver(key
queryid, string data):Triggered
when task receives asynchronous
data
moving_start moving_start
():Triggered when task begins
moving
moving_end
moving_end():Triggered when task
stops moving
on_rez on_rez
(integer start_param):Triggered
when task is rezed in from
inventory or another task
object_rez
object_rez(key id):Triggered when
task rezes in another task
link_message link_message
(integer sender_num, integer num,
string str, key id):Triggered
when task receives a link message
via LLMessageLinked library
function call
changed changed(
integer change ):Triggered
various event change the task:
(test change with
CHANGED_INVENTORY, CHANGED_COLOR,
CHANGED_SHAPE, CHANGED_SCALE,
CHANGED_TEXTURE, CHANGED_LINK,
CHANGED_ALLOWED_DROP,
CHANGED_OWNER, CHANGED_REGION,
CHANGED_TELEPORT)
remote_data remote_data
(integer event_type, key channel,
key message_id, string
sender,integer idata, string
sdata):Triggered by various XML-
RPC calls (event_type will be one
of REMOTE_DATA_CHANNEL,
REMOTE_DATA_REQUEST,
REMOTE_DATA_REPLY)
http_response http_response(key
request_id, integer status, list
metadata, string body):Triggered
when task receives a response to
one of its llHTTPRequests
# integer constants
[word .1, .1, .5]
TRUE Integer
constant for Boolean operations
FALSE Integer
constant for Boolean operations
STATUS_PHYSICS Passed in the
llSetStatus library function. If
TRUE, object moves physically
STATUS_PHANTOM Passed in the
llSetStatus library function. If
TRUE, object doesn't collide with
other objects
STATUS_ROTATE_X Passed in the
llSetStatus library function. If
FALSE, object doesn't rotate
around local X axis
STATUS_ROTATE_Y Passed in the
llSetStatus library function. If
FALSE, object doesn't rotate
around local Y axis
STATUS_ROTATE_Z Passed in the
llSetStatus library function. If
FALSE, object doesn't rotate
around local Z axis
STATUS_SANDBOX Passed in the
llSetStatus library function. If
TRUE, object can't cross region
boundaries or move more than 10
meters from its start location
STATUS_BLOCK_GRAB Passed in the
llSetStatus library function. If
TRUE, object can't be grabbed and
physically dragged
STATUS_DIE_AT_EDGE Passed in the
llSetStatus library function. If
TRUE, objects that reach the edge
of the world just die:rather than
teleporting back to the owner
STATUS_RETURN_AT_EDGE Passed in
the llSetStatus library function.
If TRUE, script rezzed objects
that reach the edge of the
world:are returned rather than
killed:STATUS_RETURN_AT_EDGE
trumps STATUS_DIE_AT_EDGE if both
are set
STATUS_CAST_SHADOWS Passed in
the llSetStatus library function.
If TRUE, object casts shadows on
other objects
AGENT Passed in
llSensor library function to look
for other Agents
ACTIVE Passed in
llSensor library function to look
for moving objects
PASSIVE Passed in
llSensor library function to look
for objects that aren't moving
SCRIPTED Passed in
llSensor library function to look
for scripted objects
CONTROL_FWD Passed to
llTakeControls library function
and used control event handler to
test for agent forward control
CONTROL_BACK Passed to
llTakeControls library function
and used control event handler to
test for agent back control
CONTROL_LEFT Passed to
llTakeControls library function
and used control event handler to
test for agent left control
CONTROL_RIGHT Passed to
llTakeControls library function
and used control event handler to
test for agent right control
CONTROL_ROT_LEFT
Passed to llTakeControls
library function and used control
event handler to test for agent
rotate left control
CONTROL_ROT_RIGHT
Passed to llTakeControls
library function and used control
event handler to test for agent
rotate right control
CONTROL_UP
Passed to
llTakeControls library function
and used control event handler to
test for agent up control
CONTROL_DOWN
Passed to llTakeControls
library function and used control
event handler to test for agent
down control
CONTROL_LBUTTON
Passed to llTakeControls
library function and used control
event handler to test for agent
left button control
CONTROL_ML_LBUTTON
Passed to llTakeControls
library function and used control
event handler to test for agent
left button control with the
agent in mouse look
PERMISSION_DEBIT
Passed to
llRequestPermissions library
function to request permission to
take L$ from agent's account
PERMISSION_TAKE_CONTROLS
Passed to llRequestPermissions
library function to request
permission to take agent's
controls
# PERMISSION_REMAP_CONTROLS
Passed to llRequestPermissions
library function to request
permission to remap agent's
controls (not implemented yet)
PERMISSION_TRIGGER_ANIMATION
Passed to llRequestPermissions
library function to request
permission to trigger animation
on agent
PERMISSION_ATTACH
Passed to
llRequestPermissions library
function to request permission to
attach/detach from agent
# PERMISSION_RELEASE_OWNERSHIP
Passed to llRequestPermissions
library function to request
permission to release ownership
(not implemented)
PERMISSION_CHANGE_LINKS
Passed to llRequestPermissions
library function to request
permission to change links
# PERMISSION_CHANGE_JOINTS
Passed to llRequestPermissions
library function to request
permission to change joints (not
implemented)
# PERMISSION_CHANGE_PERMISSIONS
Passed to llRequestPermissions
library function to request
permission to change permissions
PERMISSION_TRACK_CAMERA
Passed to llRequestPermissions
library function to request
permission to track agent's
camera
PERMISSION_CONTROL_CAMERA
Passed to llRequestPermissions
library function to request
permission to change agent's
camera
DEBUG_CHANNEL Chat
channel reserved for debug and
error messages from scripts
PUBLIC_CHANNEL Chat
channel that broadcasts to all
nearby users
AGENT_FLYING Returned
by llGetAgentInfo if the Agent is
flying
AGENT_ATTACHMENTS Returned
by llGetAgentInfo if the Agent
has attachments
AGENT_SCRIPTED Returned
by llGetAgentInfo if the Agent
has scripted attachments
AGENT_SITTING Returned
by llGetAgentInfo if the Agent is
sitting
AGENT_ON_OBJECT Returned
by llGetAgentInfo if the Agent is
sitting on an object
AGENT_MOUSELOOK Returned
by llGetAgentInfo if the Agent is
in mouselook
AGENT_AWAY
Returned by llGetAgentInfo if the
Agent is in away mode
AGENT_WALKING Returned
by llGetAgentInfo if the Agent is
walking
AGENT_IN_AIR Returned
by llGetAgentInfo if the Agent is
in the air
AGENT_TYPING Returned
by llGetAgentInfo if the Agent is
typing
AGENT_CROUCHING Returned
by llGetAgentInfo if the Agent is
crouching
AGENT_BUSY
Returned by llGetAgentInfo if the
Agent is busy
AGENT_ALWAYS_RUN Returned
by llGetAgentInfo if the Agent
has 'Always Run' enabled
PSYS_PART_FLAGS
PSYS_PART_START_COLOR
PSYS_PART_START_ALPHA
PSYS_PART_START_SCALE
PSYS_PART_END_COLOR
PSYS_PART_END_ALPHA
PSYS_PART_END_SCALE
PSYS_PART_MAX_AGE
PSYS_PART_BOUNCE_MASK
PSYS_PART_WIND_MASK
PSYS_PART_INTERP_COLOR_MASK
PSYS_PART_INTERP_SCALE_MASK
PSYS_PART_FOLLOW_SRC_MASK
PSYS_PART_FOLLOW_VELOCITY_MASK
PSYS_PART_TARGET_POS_MASK
PSYS_PART_EMISSIVE_MASK
PSYS_PART_TARGET_LINEAR_MASK
PSYS_SRC_PATTERN
PSYS_SRC_INNERANGLE
Deprecated -- Use
PSYS_SRC_ANGLE_BEGIN
PSYS_SRC_OUTERANGLE
Deprecated -- Use
PSYS_SRC_ANGLE_END
PSYS_SRC_ANGLE_BEGIN
PSYS_SRC_ANGLE_END
PSYS_SRC_BURST_RATE
PSYS_SRC_BURST_PART_COUNT
PSYS_SRC_BURST_RADIUS
PSYS_SRC_BURST_SPEED_MIN
PSYS_SRC_BURST_SPEED_MAX
PSYS_SRC_MAX_AGE
PSYS_SRC_ACCEL
PSYS_SRC_TEXTURE
PSYS_SRC_TARGET_KEY
PSYS_SRC_OMEGA
PSYS_SRC_PATTERN_DROP
PSYS_SRC_PATTERN_EXPLODE
PSYS_SRC_PATTERN_ANGLE
PSYS_SRC_PATTERN_ANGLE_CONE
PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
OBJECT_UNKNOWN_DETAIL Returned
by llGetObjectDetails when passed
an invalid object parameter type.
OBJECT_NAME
Used with llGetObjectDetails to
get an object's name.
OBJECT_DESC
Used with llGetObjectDetails to
get an object's description.
OBJECT_POS
Used with llGetObjectDetails to
get an object's position.
OBJECT_ROT
Used with llGetObjectDetails to
get an object's rotation.
OBJECT_VELOCITY
Used with llGetObjectDetails to
get an object's velocity.
OBJECT_OWNER
Used with llGetObjectDetails to
get an object's owner's key.
Will be NULL_KEY if group owned.
OBJECT_GROUP
Used with llGetObjectDetails to
get an object's group's key.
OBJECT_CREATOR
Used with llGetObjectDetails to
get an object's creator's key.
# some vehicle params
VEHICLE_TYPE_NONE
VEHICLE_TYPE_SLED
VEHICLE_TYPE_CAR
VEHICLE_TYPE_BOAT
VEHICLE_TYPE_AIRPLANE
VEHICLE_TYPE_BALLOON
VEHICLE_REFERENCE_FRAME
Rotation of vehicle axes relative
to local frame
VEHICLE_LINEAR_FRICTION_TIMESCALE
A vector of timescales
for exponential decay of linear
velocity along the three vehicle
axes
VEHICLE_ANGULAR_FRICTION_TIMESCAL
E A vector of timescales
for exponential decay of angular
velocity about the three vehicle
axes
VEHICLE_LINEAR_MOTOR_DIRECTION
The linear velocity that the
vehicle will try to achieve
VEHICLE_LINEAR_MOTOR_OFFSET
An offset from the center
of mass of the vehicle where the
linear motor is applied
VEHICLE_ANGULAR_MOTOR_DIRECTION
The angular velocity that the
vehicle will try to achieve
VEHICLE_HOVER_HEIGHT
The height the vehicle will try
to hover
VEHICLE_HOVER_EFFICIENCY A
slider between 0 (bouncy) and 1
(critically damped) hover
behavior
VEHICLE_HOVER_TIMESCALE
The period of time for the
vehicle to achieve its hover
height
VEHICLE_BUOYANCY
A slider between 0 (no anti-
gravity) and 1 (full anti-
gravity)
VEHICLE_LINEAR_DEFLECTION_EFFICIE
NCY A slider between 0 (no
deflection) and 1 (maximum
strength)
VEHICLE_LINEAR_DEFLECTION_TIMESCA
LE The exponential
timescale for the vehicle to
redirect its velocity to be along
its x-axis
VEHICLE_LINEAR_MOTOR_TIMESCALE
The exponential timescale
for the vehicle to achive its
full linear motor velocity
VEHICLE_LINEAR_MOTOR_DECAY_TIMESC
ALE The exponential timescale
for the linear motor's
effectiveness to decay toward
zero
VEHICLE_ANGULAR_DEFLECTION_EFFICI
ENCY A slider between 0 (no
deflection) and 1 (maximum
strength)
VEHICLE_ANGULAR_DEFLECTION_TIMESC
ALE The exponential timescale
for the vehicle to achieve full
angular deflection
VEHICLE_ANGULAR_MOTOR_TIMESCALE
The exponential timescale
for the vehicle to achive its
full angular motor velocity
VEHICLE_ANGULAR_MOTOR_DECAY_TIMES
CALE The exponential timescale
for the angular motor's
effectiveness to decay toward
zero
VEHICLE_VERTICAL_ATTRACTION_EFFIC
IENCY A slider between 0
(bouncy) and 1 (critically
damped) attraction of vehicle z-
axis to world z-axis (vertical)
VEHICLE_VERTICAL_ATTRACTION_TIMES
CALE The exponential timescale
for the vehicle to align its z-
axis to the world z-axis
(vertical)
VEHICLE_BANKING_EFFICIENCY A
slider between -1 (leans out of
turns), 0 (no banking), and +1
(leans into turns)
VEHICLE_BANKING_MIX
A slider betwen 0 (static
banking) and 1 (dynamic banking)
VEHICLE_BANKING_TIMESCALE
The exponential timescale for the
banking behavior to take full
effect
VEHICLE_FLAG_NO_DEFLECTION_UP
Prevents linear deflection along
world-z axis
VEHICLE_FLAG_LIMIT_ROLL_ONLY
Removes vertical attraction for
changes in vehicle pitch
VEHICLE_FLAG_HOVER_WATER_ONLY
Hover only pays attention to
water level
VEHICLE_FLAG_HOVER_TERRAIN_ONLY
Hover only pays attention to
terrain height
VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT
Hover only pays attention to
global height
VEHICLE_FLAG_HOVER_UP_ONLY
Hover only pushes up
VEHICLE_FLAG_LIMIT_MOTOR_UP
Prevents ground vehicles from
motoring into the sky
VEHICLE_FLAG_MOUSELOOK_STEER
Makes vehicle try to turn toward
mouselook direction.
VEHICLE_FLAG_MOUSELOOK_BANK
Makes vehicle try to turn toward
mouselook direction assuming
banking is enabled.
VEHICLE_FLAG_CAMERA_DECOUPLED
Causes the camera look-at axis to
NOT move when the vehicle
rotates.
CAMERA_PITCH
(-45 to 80) (Adjusts the angular
amount that the camera aims
straight ahead vs. straight down,
maintaining the same distance.
Analogous to 'incidence'.")
CAMERA_FOCUS_OFFSET
(-10 to 10) A vector that adjusts
the position of the camera focus
position relative to the subject
CAMERA_POSITION_LAG
(0.0 to 3.0) How much the camera
lags as it tries to move towards
its 'ideal' position
CAMERA_FOCUS_LAG
(0.0 to 3.0) How much the camera
lags as it tries to aim towards
the subject
CAMERA_DISTANCE
(0.5 to 10) Sets how far away the
camera wants to be from its
subject
CAMERA_BEHINDNESS_ANGLE
(0 to 180) Sets the angle in
degrees within which the camera
is not constrained by changes in
subject rotation
CAMERA_BEHINDNESS_LAG
(0.0 to 3.0) Sets how strongly
the camera is forced to stay
behind the target if outside of
behindness angle
CAMERA_POSITION_THRESHOLD
(0.0 to 4.0) Sets the radius of a
sphere around the camera's ideal
position within which it is not
affected by subject motion
CAMERA_FOCUS_THRESHOLD
(0.0 to 4.0) Sets the radius of a
sphere around the camera's
subject position within which its
focus is not affected by subject
motion
CAMERA_ACTIVE
(0 or 1) Turns on or off scripted
control of the camera
CAMERA_POSITION
Sets the position of the camera
CAMERA_FOCUS
Sets the focus (target position)
of the camera
CAMERA_POSITION_LOCKED
(0 or 1) Locks the camera
position so it will not move
CAMERA_FOCUS_LOCKED
(0 or 1) Locks the camera focus
so it will not move
INVENTORY_TEXTURE Passed to
task inventory library functions
to reference textures
INVENTORY_SOUND Passed to
task inventory library functions
to reference sounds
INVENTORY_OBJECT Passed to
task inventory library functions
to reference objects
INVENTORY_SCRIPT Passed to
task inventory library functions
to reference scripts
INVENTORY_LANDMARK Passed to
task inventory library functions
to reference landmarks
INVENTORY_CLOTHING Passed to
task inventory library functions
to reference clothing
INVENTORY_NOTECARD Passed to
task inventory library functions
to reference notecards
INVENTORY_BODYPART Passed to
task inventory library functions
to reference body parts
INVENTORY_ANIMATION Passed to
task inventory library functions
to reference animations
INVENTORY_GESTURE Passed to
task inventory library functions
to reference gestures
INVENTORY_ALL Passed to
task inventory library functions
to reference all inventory items
INVENTORY_NONE Returned
by llGetInventoryType when no
item is found.
ATTACH_CHEST Passed to
llAttachToAvatar to attach task
to chest
ATTACH_HEAD
Passed to llAttachToAvatar to
attach task to head
ATTACH_LSHOULDER Passed to
llAttachToAvatar to attach task
to left shoulder
ATTACH_RSHOULDER Passed to
llAttachToAvatar to attach task
to right shoulder
ATTACH_LHAND Passed to
llAttachToAvatar to attach task
to left hand
ATTACH_RHAND Passed to
llAttachToAvatar to attach task
to right hand
ATTACH_LFOOT Passed to
llAttachToAvatar to attach task
to left foot
ATTACH_RFOOT Passed to
llAttachToAvatar to attach task
to right foot
ATTACH_BACK
Passed to llAttachToAvatar to
attach task to back
ATTACH_PELVIS Passed to
llAttachToAvatar to attach task
to pelvis
ATTACH_MOUTH Passed to
llAttachToAvatar to attach task
to mouth
ATTACH_CHIN
Passed to llAttachToAvatar to
attach task to chin
ATTACH_LEAR
Passed to llAttachToAvatar to
attach task to left ear
ATTACH_REAR
Passed to llAttachToAvatar to
attach task to right ear
ATTACH_LEYE
Passed to llAttachToAvatar to
attach task to left eye
ATTACH_REYE
Passed to llAttachToAvatar to
attach task to right eye
ATTACH_NOSE
Passed to llAttachToAvatar to
attach task to noce
ATTACH_RUARM Passed to
llAttachToAvatar to attach task
to right upper arm
ATTACH_RLARM Passed to
llAttachToAvatar to attach task
to right lower arm
ATTACH_LUARM Passed to
llAttachToAvatar to attach task
to left upper arm
ATTACH_LLARM Passed to
llAttachToAvatar to attach task
to left lower arm
ATTACH_RHIP
Passed to llAttachToAvatar to
attach task to right hip
ATTACH_RULEG Passed to
llAttachToAvatar to attach task
to right upper leg
ATTACH_RLLEG Passed to
llAttachToAvatar to attach task
to right lower leg
ATTACH_LHIP
Passed to llAttachToAvatar to
attach task to left hip
ATTACH_LULEG Passed to
llAttachToAvatar to attach task
to left upper leg
ATTACH_LLLEG Passed to
llAttachToAvatar to attach task
to left lower leg
ATTACH_BELLY Passed to
llAttachToAvatar to attach task
to belly
ATTACH_RPEC
Passed to llAttachToAvatar to
attach task to right pectoral
ATTACH_LPEC
Passed to llAttachToAvatar to
attach task to left pectoral
LAND_LEVEL
Passed to llModifyLand to level
terrain
LAND_RAISE
Passed to llModifyLand to raise
terrain
LAND_LOWER
Passed to llModifyLand to lower
terrain
LAND_SMOOTH
Passed to llModifyLand to smooth
terrain
LAND_NOISE
Passed to llModifyLand to
randomize terrain
LAND_REVERT
Passed to llModifyLand to revert
terrain toward original state
LAND_SMALL_BRUSH Passed to
llModifyLand to modify small land
areas
LAND_MEDIUM_BRUSH Passed to
llModifyLand to modify medium
land areas
LAND_LARGE_BRUSH Passed to
llModifyLand to modify large land
areas
DATA_PAYINFO Passed to
llRequestAgentData to get payment
status of an agent
DATA_ONLINE
Passed to llRequestAgentData to
determine if agent is online
DATA_NAME
Passed to llRequestAgentData to
get full agent name
DATA_BORN
Passed to llRequestAgentData to
get born on date as a string
DATA_RATING
Passed to llRequestAgentData to
get a comma separated sting of
integer ratings
DATA_SIM_POS Passed to
llRequestSimulatorData to get a
string (cast to vector) of a
simulator's global position
DATA_SIM_STATUS Passed to
llRequestSimulatorData to get the
status of a simulator
DATA_SIM_RATING Passed to
llRequestSimulatorData to get the
rating of a simulator
PAYMENT_INFO_ON_FILE
Used with llRequestAgentData to
tell if Agent is of "Payment Info
On File" status
PAYMENT_INFO_USED Used with
llRequestAgentData to tell if
Agent is of "Payment Info Used"
status
ANIM_ON
Enable texture animation
LOOP
Loop when animating textures
REVERSE
Animate in the reverse direction
PING_PONG
Animate forward, then reverse.
SMOOTH
Textures slides, instead of
stepping
ROTATE
Rotates the texture, instead of
using frames
SCALE
Scales the texture, instead of
using frames
ALL_SIDES
Passed to various texture and
color library functions to modify
all sides
LINK_SET
Passed to various link functions
to modify all blocks in the
object
LINK_ROOT
Passed to various link functions
to modify only the root block (no
effect on single block objects)
LINK_ALL_OTHERS Passed to
various link functions to modify
all other blocks in the object
LINK_ALL_CHILDREN Passed to
various link functions to modify
all child blocks in the object
LINK_THIS
Passed to various link functions
to modify only the calling block
CHANGED_INVENTORY Parameter
of changed event handler used to
indicate change to task's
inventory
CHANGED_COLOR Parameter
of changed event handler used to
indicate change to task's color
CHANGED_SHAPE Parameter
of changed event handler used to
indicate change to task's shape
parameters
CHANGED_SCALE Parameter
of changed event handler used to
indicate change to task's scale
CHANGED_TEXTURE Parameter
of changed event handler used to
indicate change to task's texture
CHANGED_LINK Parameter
of changed event handler used to
indicate change to task's link
status
CHANGED_ALLOWED_DROP Parameter of
changed event handler used to
indicate a user dropped an
inventory item:onto task that was
allowed only by
llAllowInventoryDrop function
call
CHANGED_OWNER Parameter
of changed event handler used to
indicate change to task's owner
ONLY when an object is sold as
original or deeded to group
CHANGED_REGION Parameter
of changed event handler used to
indicate the region has changed
CHANGED_TELEPORT Parameter
of changed event handler used to
indicate teleport has completed
TYPE_INTEGER Indicates
that the list entry is holding an
integer
TYPE_FLOAT
Indicates that the list entry is
holding an float
TYPE_STRING
Indicates that the list entry is
holding an string
TYPE_KEY
Indicates that the list entry is
holding an key
TYPE_VECTOR
Indicates that the list entry is
holding an vector
TYPE_ROTATION Indicates
that the list entry is holding an
rotation
TYPE_INVALID Indicates
that this wasn't a valid list
entry
REMOTE_DATA_CHANNEL Value of
event_type in remote_event after
successful
llOpenRemoteDataChannel
REMOTE_DATA_REQUEST Value of
event_type in remote_event if
XML-RPC request is received
REMOTE_DATA_REPLY Value of
event_type in remote_event if
XML-RPC reply is received
PRIM_TYPE
Followed by PRIM_TYPE_BOX,
PRIM_TYPE_CYLINDER,
PRIM_TYPE_PRISM,
PRIM_TYPE_SPHERE,:PRIM_TYPE_TORUS
, or PRIM_TYPE_TUBE and their
arguments
PRIM_MATERIAL Sets
material to PRIM_MATERIAL_STONE,
PRIM_MATERIAL_METAL,
PRIM_MATERIAL_GLASS,:PRIM_MATERIA
L_WOOD, PRIM_MATERIAL_FLESH,
PRIM_MATERIAL_PLASTIC,:PRIM_MATER
IAL_RUBBER, or
PRIM_MATERIAL_LIGHT
PRIM_PHYSICS Sets
physics to TRUE or FALSE
PRIM_FLEXIBLE Sets
primitive flexibility to TRUE or
FALSE
PRIM_POINT_LIGHT Sets
light emission to TRUE or FALSE
PRIM_TEMP_ON_REZ Sets
temporay on rez to TRUE or FALSE
PRIM_PHANTOM Sets
phantom to TRUE or FALSE
PRIM_CAST_SHADOWS Enables
or disables shadow casting for
the primitive
PRIM_POSITION Sets
primitive position to a vector
position
PRIM_SIZE
Sets primitive size to a vector
size
PRIM_ROTATION Sets
primitive rotation
PRIM_TEXTURE Followed
by an integer face, key id,
vector repeats, vector
offsets,:and float rotation in
radians
PRIM_COLOR
Followed by an integer face,
vector color, and float alpha
PRIM_BUMP_SHINY Followed
by an integer face, one of
PRIM_SHINY_NONE,
PRIM_SHINY_LOW,:PRIM_SHINY_MEDIUM
, or PRIM_SHINY_HIGH,:and one of
PRIM_BUMP_NONE, PRIM_BUMP_BRIGHT,
PRIM_BUMP_DARK, etc
PRIM_FULLBRIGHT Followed
by an integer face, and TRUE or
FALSE
PRIM_TEXGEN
Followed by an integer face, and
one of PRIM_TEXGEN_DEFAULT or
PRIM_TEXGEN_PLANAR
PRIM_TYPE_BOX Followed
by integer hole shape, vector
cut, float hollow, vector
twist,:vector top size, and
vector top shear
PRIM_TYPE_CYLINDER Followed
by integer hole shape, vector
cut, float hollow, vector
twist,:vector top size, and
vector top shear
PRIM_TYPE_PRISM Followed
by integer hole shape, vector
cut, float hollow, vector
twist,:vector top size, and
vector top shear
PRIM_TYPE_SPHERE Followed
by integer hole shape, vector
cut, float hollow, vector
twist,:and vector dimple
PRIM_TYPE_TORUS Followed
by integer hole shape, vector
cut, float hollow, vector
twist,:vector hole size, vector
top shear, vector advanced cut,
vector taper,:float revolutions,
float radius offset, and float
skew
PRIM_TYPE_TUBE Followed
by integer hole shape, vector
cut, float hollow, vector
twist,:vector hole size, vector
top shear, vector advanced cut,
vector taper,:float revolutions,
float radius offset, and float
skew
PRIM_TYPE_RING Followed
by integer hole shape, vector
cut, float hollow, vector
twist,:vector hole size, vector
top shear, vector advanced cut,
vector taper,:float revolutions,
float radius offset, and float
skew
PRIM_TYPE_SCULPT Followed
by a key or string texture uuid.
PRIM_HOLE_DEFAULT Sets hole
type to match the prim type.
PRIM_HOLE_SQUARE Sets hole
type to square.
PRIM_HOLE_CIRCLE Sets hole
type to circle.
PRIM_HOLE_TRIANGLE Sets hole
type to triangle.
PRIM_MATERIAL_STONE
Sets material to stone
PRIM_MATERIAL_METAL
Sets material to metal
PRIM_MATERIAL_GLASS
Sets material to glass
PRIM_MATERIAL_WOOD
Sets material to wood
PRIM_MATERIAL_FLESH
Sets material to flesh
PRIM_MATERIAL_PLASTIC Sets
material to plastic
PRIM_MATERIAL_RUBBER Sets
material to rubber
PRIM_MATERIAL_LIGHT
Sets material to light
PRIM_SHINY_NONE
No shininess
PRIM_SHINY_LOW
Low shininess
PRIM_SHINY_MEDIUM
Medium shininess
PRIM_SHINY_HIGH
High shininess
PRIM_BUMP_NONE
No bump map
PRIM_BUMP_BRIGHT
Generate bump map from highlights
PRIM_BUMP_DARK
Generate bump map from lowlights
PRIM_BUMP_WOOD
Wood bump map
PRIM_BUMP_BARK
Bark bump map
PRIM_BUMP_BRICKS
Brick bump map
PRIM_BUMP_CHECKER
Checker bump map
PRIM_BUMP_CONCRETE
Concrete bump map
PRIM_BUMP_TILE
Tile bump map
PRIM_BUMP_STONE
Stone bump map
PRIM_BUMP_DISKS
Disk bump map
PRIM_BUMP_GRAVEL
Gravel bump map
PRIM_BUMP_BLOBS
Blob bump map
PRIM_BUMP_SIDING
Siding bump map
PRIM_BUMP_LARGETILE
Large tile bump map
PRIM_BUMP_STUCCO
Stucco bump map
PRIM_BUMP_SUCTION
Suction cup bump map
PRIM_BUMP_WEAVE
Weave bump map
PRIM_TEXGEN_DEFAULT
Default texture mapping
PRIM_TEXGEN_PLANAR
Planar texture mapping
PRIM_SCULPT_TYPE_SPHERE
Stitch edges in a sphere-like way
PRIM_SCULPT_TYPE_TORUS
Stitch edges in a torus-like way
PRIM_SCULPT_TYPE_PLANE
Do not stitch edges
PRIM_SCULPT_TYPE_CYLINDER
Stitch edges in a cylinder-like
way
MASK_BASE
Base permissions
MASK_OWNER
Owner permissions
MASK_GROUP
Group permissions
MASK_EVERYONE
Everyone permissions
MASK_NEXT
Next owner permissions
PERM_TRANSFER
Transfer permission
PERM_MODIFY
Modify permission
PERM_COPY
Copy permission
PERM_MOVE
Move permission
PERM_ALL
Move/Modify/Copy/Transfer
permissions
PARCEL_MEDIA_COMMAND_STOP Stop
media stream
PARCEL_MEDIA_COMMAND_PAUSE Pause
media stream
PARCEL_MEDIA_COMMAND_PLAY Play
media stream
PARCEL_MEDIA_COMMAND_LOOP Loop
media stream
PARCEL_MEDIA_COMMAND_TEXTURE Get
or set the parcel's media texture
PARCEL_MEDIA_COMMAND_URL Get or
set the parcel's media url
PARCEL_MEDIA_COMMAND_TIME Set
media stream to specific time
PARCEL_MEDIA_COMMAND_AGENT Allows
media stream commands to apply to
only one agent
PARCEL_MEDIA_COMMAND_UNLOAD
Unloads the media stream
PARCEL_MEDIA_COMMAND_AUTO_ALIGN
Auto aligns the media stream to
the texture size. May cause a
performance hit and loss of some
visual quality.
PAY_HIDE
Used with llSetPayPrice to hide a
button
PAY_DEFAULT
Used with llSetPayPrice to use
the default price for a button
LIST_STAT_MAX
Used with llListStatistics to
find the largest number in a list
LIST_STAT_MIN
Used with llListStatistics to
find the smallest number in a
list
LIST_STAT_MEAN
Used with llListStatistics to
find the mean of the numbers in a
list
LIST_STAT_MEDIAN
Used with llListStatistics to
find the median of the numbers in
a list
LIST_STAT_STD_DEV
Used with llListStatistics to
find the standard deviation of
the numbers in a list
LIST_STAT_SUM
Used with llListStatistics to
find the sum of the numbers in a
list
LIST_STAT_SUM_SQUARES Used with
llListStatistics to find the sum
of the squares of the numbers in
a list
LIST_STAT_NUM_COUNT
Used with llListStatistics to
find how many numbers are in a
list
LIST_STAT_GEOMETRIC_MEAN
Used with llListStatistics to
find the geometric mean of the
numbers in a list (all numbers
must be > 0)
LIST_STAT_RANGE
Used with llListStatistics to
find the range of the numbers in
a list
PARCEL_FLAG_ALLOW_FLY
Used with
llGetParcelFlags to find if a
parcel allows flying
PARCEL_FLAG_ALLOW_GROUP_SCRIPTS
Used with llGetParcelFlags to
find if a parcel allows group
scripts
PARCEL_FLAG_ALLOW_SCRIPTS
Used with
llGetParcelFlags to find if a
parcel allows outside scripts
PARCEL_FLAG_ALLOW_LANDMARK
Used with
llGetParcelFlags to find if a
parcel allows landmarks to be
created
PARCEL_FLAG_ALLOW_TERRAFORM
Used with
llGetParcelFlags to find if a
parcel allows anyone to terraform
the land
PARCEL_FLAG_ALLOW_DAMAGE
Used with
llGetParcelFlags to find if a
parcel allows damage
PARCEL_FLAG_ALLOW_CREATE_OBJECTS
Used with llGetParcelFlags to
find if a parcel allows anyone to
create objects
PARCEL_FLAG_USE_ACCESS_GROUP
Used with llGetParcelFlags to
find if a parcel limits access to
a group
PARCEL_FLAG_USE_ACCESS_LIST
Used with
llGetParcelFlags to find if a
parcel limits access to a list of
residents
PARCEL_FLAG_USE_BAN_LIST
Used with
llGetParcelFlags to find if a
parcel uses a ban list
PARCEL_FLAG_USE_LAND_PASS_LIST
Used with llGetParcelFlags to
find if a parcel allows passes to
be purchased
PARCEL_FLAG_LOCAL_SOUND_ONLY
Used with llGetParcelFlags to
find if a parcel restricts
spacialized sound to the parcel
PARCEL_FLAG_RESTRICT_PUSHOBJECT
Used with llGetParcelFlags to
find if a parcel restricts
llPushObject() calls
PARCEL_FLAG_LOCAL_SOUND_ONLY
Used with llGetParcelFlags to
find if a parcel restricts
spacialized sound to the parcel
PARCEL_FLAG_RESTRICT_PUSHOBJECT
Used with llGetParcelFlags to
find if a parcel restricts
llPushObject() calls
PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTR
Y Used with
llGetParcelFlags to find if a
parcel allows all objects to
enter
PARCEL_FLAG_ALLOW_GROUP_OBJECT_EN
TRY Used with
llGetParcelFlags to find if a
parcel only allows group (and
owner) objects to enter
REGION_FLAG_ALLOW_DAMAGE
Used with
llGetRegionFlags to find if a
region is entirely damage enabled
REGION_FLAG_FIXED_SUN
Used with
llGetRegionFlags to find if a
region has a fixed sun position
REGION_FLAG_BLOCK_TERRAFORM
Used with
llGetRegionFlags to find if a
region terraforming disabled
REGION_FLAG_SANDBOX
Used with
llGetRegionFlags to find if a
region is a sandbox
REGION_FLAG_DISABLE_COLLISIONS
Used with llGetRegionFlags to
find if a region has disabled
collisions
REGION_FLAG_DISABLE_PHYSICS
Used with
llGetRegionFlags to find if a
region has disabled physics
REGION_FLAG_BLOCK_FLY
Used with
llGetRegionFlags to find if a
region blocks flying
REGION_FLAG_ALLOW_DIRECT_TELEPORT
Used with llGetRegionFlags to
find if a region allows direct
teleports
REGION_FLAG_RESTRICT_PUSHOBJECT
Used with llGetRegionFlags to
find if a region restricts
llPushObject() calls
HTTP_METHOD
Used with llHTTPRequest to
specify the method, such as "GET"
or "POST"
HTTP_MIMETYPE
Used with llHTTPRequest to
specify the MIME type, defaults
to "text/plain"
HTTP_BODY_MAXLENGTH
Used with llHTTPRequest to
specify the maxium reponse body
to return
HTTP_VERIFY_CERT
Used with llHTTPRequest to
specify SSL certificate
verification
HTTP_BODY_TRUNCATED
Used with http_response to
indicate truncation point in
bytes
PARCEL_COUNT_TOTAL
Used with llGetParcelPrimCount to
get the total number of prims on
the parcel
PARCEL_COUNT_OWNER
Used with llGetParcelPrimCount to
get the number of prims on the
parcel owned by the owner
PARCEL_COUNT_GROUP
Used with llGetParcelPrimCount to
get the number of prims on the
parcel owned by the group
PARCEL_COUNT_OTHER
Used with llGetParcelPrimCount to
get the number of prims on the
parcel owned by others
PARCEL_COUNT_SELECTED Used with
llGetParcelPrimCount to get the
number of prims on the parcel
currently selected or sat upon
PARCEL_COUNT_TEMP
Used with llGetParcelPrimCount to
get the number of prims on the
parcel that are temp on rez
PARCEL_DETAILS_NAME
Used with llGetParcelDetails to
get the parcel name.
PARCEL_DETAILS_DESC
Used with llGetParcelDetails to
get the parcel description.
PARCEL_DETAILS_OWNER Used with
llGetParcelDetails to get the
parcel owner id.
PARCEL_DETAILS_GROUP Used with
llGetParcelDetails to get the
parcel group id.
PARCEL_DETAILS_AREA
Used with llGetParcelDetails to
get the parcel area in square
meters.
STRING_TRIM_HEAD
Used with llStringTrim to trim
leading spaces from a string.
STRING_TRIM_TAIL
Used with llStringTrim to trim
trailing spaces from a string.
STRING_TRIM
Used with llStringTrim to trim
both leading and trailing spaces
from a string.
# string constants
[word .1, .3, .5]
NULL_KEY
Indicates an empty key
EOF
Indicates the last line of a
notecard was read
# float constants
[word .3, .1, .5]
PI
3.1415926535897932384626433832795
TWO_PI
6.283185307179586476925286766559
PI_BY_TWO
1.5707963267948966192313216916398
DEG_TO_RAD
To convert from degrees to
radians
RAD_TO_DEG
To convert from radians to
degrees
SQRT2
1.4142135623730950488016887242097
# compound constants
[word .4, .2, .4]
ZERO_VECTOR
<0.0, 0.0, 0.0>
ZERO_ROTATION <0.0,
0.0, 0.0, 1.0>
# flow control keywords
[word 0, 0, .8]
for
for loop:for (initializer; test;
iteration):{: statements:}
do
do loop:do:{: statements:}
while (test);
while
while loop:while (test):{
statements:}
if
if statement:if (test):{
statements:}
else
else clause:if (test):{
statements:}:else:{
statements:}
jump
jump statement:jump label;:
return
Leave current function or event
handler
# flow control label
[line 0, 0, .8]
@
Label:Target for jump statement
# Comment
[one_sided_delimiter .8, .3, .15]
//
Comment:Non-functional commentary
or disabled code
# String literals
[two_sided_delimiter 0, .2, 0]
"
String literal
#functions are supplied by the
program now.
Post a Comment