SoundLimit version 3.0.4 plugin README

Soundlimit is public domain.

SoundLimit is a palace server plugin which controls the use of sound
commands and other messages which might cause certain clients to crash.
Its major functions include:

  * Limiting the length of sound names to 31 characters
  * Limiting sounds to one per utterance
  * Suppressing sound file names which match regular expressions read
    from a file.  (New in version 2)
  * Limiting the number of face changes to 2 per utterance  (Why this
    feature is in soundlimit is an interesting historical anomaly.)
  * Rejecting messages where certain values are out of bounds.  These
    include avatar positions outside the screen, drawing lines narrower
    or wider than 1-32, faces outside 0-12, and face colors outside 0-15.


Changes in Version 3.0.4

* Pen size for drawing lines has been changed from 1-9 to 1-32 to allow
for the largest paint sizes in the pc client to work. 


Installation

The following installation instructions assume that the Palace server
has been installed in /usr/local/palace.  SoundLimit is installed by
placing the plugin file, soundlimit.so, in the palace binary folder,
/usr/local/palace/bin, and adding the following line to the plugin
configuration file, /usr/local/palace/<palace-name>/psdata/plugin.conf:

../bin/soundlimit.so <name-filter-file>

It is suggested that the <name-filter-file> be placed in the psdata
directory for the palace.  If this is done, the plugin.conf file entry
might look like:

../bin/soundlimit.so psdata/soundlimit.re

The <name-filter-file> is the name of the file which contains one or
more regular expressions, one per line.  The file names used for sounds
will be matched against these expressions.  If any expression matches,
the sound is silently suppressed.

Note that each regular expression in the file is compiled into an
internal form that uses approximately 1048 bytes of storage.


Wizard/god command

SoundLimit accepts the following command from users with wizard or god
status.

`soundlimit reload - Reload the file of regular expressions.




This plugin uses a public domain regular expression routine by Ozan S.
Yigit, Dept. of Computer Science, York University; as modified by Jim
Bumgardner and Bill Frantz 8/22/2001.


Regular Expressions:

[1]     char    matches itself, unless it is a special
                character (metachar): . \ [ ] * + ^ $ ( )

[2]     .       matches any character.

[3]     \       matches the character following it, except
                when followed a digit 1 to 9 or a left or
                right angle bracket.  (see [7], [8] and [9])
                It is used as an escape character for all
                other meta-characters, and itself. When used
                in a set ([4]), it is treated as an ordinary
                character.

[4]     [set]   matches one of the characters in the set.
                If the first character in the set is "^",
                it matches a character NOT in the set. A
                shorthand S-E is used to specify a set of
                characters S upto E, inclusive. The special
                characters "]" and "-" have no special
                meaning if they appear as the first chars
                in the set.
                examples:        match:

                        [a-z]    any lowercase alpha

                        [^]-]    any char except ] and -

                        [^A-Z]   any char except uppercase
                                 alpha

                        [a-zA-Z] any alpha

[5]     *       any regular expression form [1] to [4], followed by
                closure char (*) matches zero or more matches of
                that form.

[6]     +       same as [5], except it matches one or more.

[7]     (tag)   a regular expression in the form [1] to [10], enclosed
                as (form) matches what form matches. The enclosure
                creates a set of tags, used for [8] and for
                pattern substitution. The tagged forms are numbered
                starting from 1.

[8]             a \ followed by a digit 1 to 9 matches whatever a
                previously tagged regular expression ([7]) matched.

[9]     \<      a regular expression starting with a \< construct
        \>      and/or ending with a \> construct, restricts the
                pattern matching to the beginning of a word, and/or
                the end of a word. A word is defined to be a character
                string beginning and/or ending with the characters
                A-Z a-z 0-9 and _. It must also be preceded and/or
                followed by any character outside those mentioned.

[10]            a composite regular expression xy where x and y
                are in the form [1] to [10] matches the longest
                match of x followed by a match for y.

[11]    ^       a regular expression starting with a ^ character
        $       and/or ending with a $ character, restricts the
                pattern matching to the beginning of the line,
                or the end of line. [anchors] Elsewhere in the
                pattern, ^ and $ are treated as ordinary characters.


 Reference:
                Mastering Regular Expressions, Jeffrey E. F. Friedl,
                O'Reilly & Associates, 1997 http://www.oreilly.com/
