Linden text version 2
{
LLEmbeddedItems version 1
{
count 0
}
Text length 4547
This relay is a multi-object relay, with some extra features.

It conforms to the version 1.030 of the protocol. But in opposition to most relay that were made before year 2009, it won't reject commands from new devices when you are already controlled by one.

Main features
- several concurrently restraining devices supported
- classic ask/auto/off modes
- extra mode: restricted
- extra submodes playful, landowner
- (togglable) safeword
- autolocking when restrained, and impossibility to turn the relay off or cut the already restraining sources off
- black and white lists for objects and avatars
- chat commands
- !who unofficial metacommand†
- not vulnerable to the "arbitrary text on arbitray channel", and "shout garbage on public chat" loopholes
- not vulnerable to the stack-heap collision issue when requests accumulate (rejects them when there are too many)

Potentially coming in the future:
- !vision/!visionclear unofficial metacommands
- !handover unofficial metacommand
- !getstatus unofficial metacommand
- !animate unofficial metacommand (my own idea... not really finalized even in my mind)
- grid-wide access
- <insert your idea here>


Menus buttons:
(Note that irrelevant buttons are automatically hidden in the dialogs. Don't be surprised if you don't always have all those buttons!)

In the main dialog:
* Auto: the relay accepts every future request (except from blacklisted devices)
* Ask: the relay asks before accepting future requests (except from white or blacklisted devices)
* Restricted: the relay rejects every future request (except from whitelisted devices and devices already controlling you)
* ( )/(*)Playful: en/disable automatic acceptation of non-restraining commands (combines with the previous modes)
* ( )/(*)Land: en/disable auto-acceptation of commands from devices belonging to the landowner
    Note that this behavior does not conform to the protocol requirements, as they expect a relay to forward every acknowledged command to the viewer. However it is a convenient options for device development... or just to have fun (but then I would recommand using the playful+ask or playful+restricted modes instead, which conform to the protocol). Also keep in mind that a "@getstatus=xxx" command might reveal that you cheated!
* ( )/(*)Safeword: en/disables the possibility to safeword when restricted
* Grabbed by: shows the list of devices currently controlling your avatar, and the list of restrictions they enforce.
* Pending: shows the request dialog, in case there are pending requests
* Help: gives this notecard
* Safeword: clears all restrictions and lists
* Access lists: opens the access list management dialog, for removing trusted or banned sources

In the request dialog:
* Yes: accept this command (and other commands from the same device until unrestricted)
* No: rejects this command (and other commands from the same device in the few following seconds)
* Trust Object: same as Yes, but adds the object to the whitelist
* Ban Object: same as No, but adds the object to the blacklist
* Trust Owner: same as Yes, but adds the owner of the object to the whitelist
* Ban Owner: same as No, but adds the owner of the object to the blacklist
* Trust User: same as Yes, but adds the avatar using the object to the whitelist
* Ban User: same as No, but adds the avatar using the object to the blacklist

Chat commands:
* xxshowrestrictions: shows the list of restrictions the wearer is subject to, and the devices issuing those
* xxrelay ask/auto/restriced/off: toggles the selected mode
* xxrelay playful on/off: toggles playful submode
* xxrelay land on/off: toggles landowner submode
* xxrelay safeword on/off: toggles safewording
* xxrelay safeword: safewords


†: the !who metacommand is still not part of the official relay protocol, but has been proposed as a protocol enhancement by Ilana Debevec. As Maike Short seems to support this idea for the next version of the protocol, it is likely it will become true. More information here: http://wiki.secondlife.com/wiki/LSL_Protocol/Restrained_Life_Relay/Bugs_and_Pendings_Features#.21who


Legal considerations:
The code is full perm, and I want it to be redistributed as such. Consider it is GPL with the same clauses as OpenCollar.

Acknowledgements:
Marissa Mistwallow for her active search of loopholes in the relay implementations.
Maike Short for her relay test suite that helped me fixing the few latest bugs.
All the guinea pigs who tried the early versions of my relay!


I hope my relay will suit your needs!
Satomi Ahn}
 