Palace Plugins

Alternate Names
AltNames 1.0 README
----------------------------------
AltNames is a Palace Server plugin that permits all users to include additional character map characters ("alt codes") in their name that were previously not allowed with the regular Palace Client software.
It was developed by Martyn Gilbertson.

Questions about this plugin?
Write to Martyn at plugins@palacebox.com or Joseph Rock at joe@avatarpalace.net.
Copyright (c) 2003 Martyn Gilbertson. All Rights Reserved Worldwide.

Installation
-----------------
The following installation instructions assume that the Palace server has been installed in /usr/local/palace.

AltNames is a standard Palace server plugin. It is installed by placing the plugin file, altnames.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/altnames.so

Notes
--------
If your Palace already uses Blockall, this plugin is unnecessary. Simply turn the unicode parameter to 'on' in your Blockall parameter file.

Author Block

AuthorBlock Version 0.3 README
---------------------------------------------------
AuthorBlock is a Palace server plugin that prevents the use of unauthorized software from making some authoring changes locally. In addition, it will sign off any user if they try to delete a hotspot.

AuthorBlock was developed by Mike Wentzell (dotslashmike@hotmail.com).

Installation
-----------------
AuthorBlock is a standard Palace server plugin. It is installed by placing the plugin file, authorblock.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

plugins/authorblock.so

 

Away

Away 1.0.0 README
------------------------------
Away is a palace server plugin that sets you away and whispers your message to users entering the room.
It was developed by Martyn Gilbertson

Questions about this plugin? Write to the plugin devolper at plugins@all4palace.com
Copyright (c) 2004 Martyn Gilbertson. All Rights Reserved Worldwide.

Installation
-----------------
Away is a standard Palace server plugin. It is installed by placing the plugin away.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

/plugins/away.so

Away adds the following Guest commands to the Palace server.

Commands
----------------
`away [message] - set your self to away with message.
`away back - return from being away.
you may 'setrank `away

 

Bad Boy 101

BadBoy 1.0.1 README
---------------------------------
BadBoy is a palace server plugin that locks a certain user in a room, it locks the user by their RegHash, IP Address and Name.
It was developed by Martyn Gilbertson

Questions about this plugin? Write to the plugin devolper at plugins@all4palace.com
Copyright (c) 2003 Martyn Gilbertson. All Rights Reserved Worldwide.

Installation
-----------------
The following installation instructions assume that the Palace server has been installed in /usr/local/palace.

BadBoy is a standard Palace server plugin. It is installed by placing the plugin badboy.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/badboy/badboy.so psdata/badboy.list roomid

The badboy list file is created in /usr/local/palace/<palace-name>/psdata. Note that badboy reads and writes to this file. Therefore, it cannot be edited. The roomid is the roomid for which the user will be sent to.

God Commands
-----------------------
badboy adds the following wiz commands to the Palace server.

`badboy help - display this message.
`badboy list - list the badboys.
`badboy roomid [id] - set the badboy roomid.
`badboy free [hash/ip/whisper] - free a person in the badboy room/list.
`badboy jail [whisper] - send user to the badboy room for unlimited time limit.
`badboy jail for [time] [whisper] - send user to the badboy room for a time limit.
you may 'setrank `badboy

ChangeLog
----------------
v1.0.1:
updated 'badboy jail to kill for unlimited time instead of server death time
changed the format of help for better reading.

 

Crash Block

CrashBlock 1.4 README
------------------------------------
CrashBlock is a palace server plugin that does the following:

1. Blocks out of bounds looseprop indexes which can crash your server and corrupt the prp.
3. Blocks bad paint packets that can crash users.
4. Blocks old PalaceChat versions to prevent cloners.
5. Blocks people from entering the room they're already in to prevent flooding.
6. Blocks out bad asset packets (props or other assets).
7. Blocks out bad blowthru packets.

Blocks out old PalaceChat versions to help create a more secure palace enviormentIt was developed by Jameson Heesen (Pa\/\/n) and Martyn Gilbertson (Martyn)
Questions about this plugin?
Write to Jameson at pawnipt@yahoo.com or Write to Martyn at plugins@all4palace.comCopyright (c) 2004 all4palace. All Rights Reserved Worldwide.Installation
------------------------------------------------------
The following installation instructions assume that the Palace server has been installed in /usr/local/palace.
CrashBlock is a standard Palace server plugin. It is installed by placing the plugin file, crashblock.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/chrashblock.so

Changes in Version 1.4
---------------------------------
- Added a check for valid blowthru packets.

Changes in Version 1.3
---------------------------------
- Added a flood limit to entering room you're already inChanges in Version 1.2
- Added a check for entering a room you're already in, to prevent this type of flooding.

Changes in Version 1.1
---------------------------------
- Added Valid paint line checking to prevent user client crashing from corrupt paint lines.
- Blocks out old PalaceChat versions to help create a more secure palace enviorment.

Changes in Version 1.0
---------------------------------
- Initial Release


GateKeeper Pro

GateKeeper Pro 1.0.0 README
---------------------------------------------
GateKeeper is a palace server plugin that allows only blessed users to gain god/wiz/owner privileges with a certain password, allowing 3 levels, wizards, gods and owners, only owners can use gatekeeper commands.
It was developed by Martyn Gilbertson

Questions about this plugin? Write to the plugin devolper at plugins@all4palace.comCopyright (c) 2004 Martyn Gilbertson. All Rights Reserved Worldwide.

Installation
-----------------
The following installation instructions assume that the Palace server has been installed in /usr/local/palace.

GateKeeper is a standard Palace server plugin. It is installed by placing the plugin gatekeeper.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/gatekeeper/gatekeeper.so psdata/gatekeeper.list

The gatekeeper list file is created in /usr/local/palace/<palace-name>/psdata.
Note that gatekeeper reads and writes to this file. Therefore, it cannot be edited.

God Commands
-----------------------
Gatekeeper adds the following owner commands to the Palace server.

'gatekeeper bless [password] [wiz/god/owner] <[reghash] [name]>/[whisper] - bless a user.
'gatekeeper list - list all blessed users.
'gatekeeper unbless [reghash/whisper] - unbless a user.
'gatekeeper change -p [new password] [reghash/whisper] - change a users password.
'gatekeeper change -n [new name] [whisper] - change a users name.
'gatekeeper change -h [new reghash] [old reghash] - change a users reghash.
'gatekeeper change -r [new rank] [reghash/whisper] - change a users rank.

Ranks are
------------
wizard - normal wizard privileges.
god - normal owner privileges.
owner - normal owner and gatekeeper privileges.

 

Gate Logon

GateLogon Version 0.1 README
-----------------------------------------------
GateLogon is a palace server plugin that prevents users from signing on in other rooms besides the gate. This helps prevent
some users from bypassing scripts.

Installation
-----------------
The following installation instructions assume that the Palace server has been installed in /usr/local/palace.

Gatelogon is a standard Palace server plugin. It is installed by placing the plugin file, gatelogon.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/gatelogon.so


Guardian

Preface
-----------
Copyright © 2004-2006 Paul Taylor

Guardain is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.

The Guardian plugin and plugin source is distributed in the hope that it will be useful; but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should be able to get a copy of the GNU General Public License at:
http://www.gnu.org/copyleft/gpl.html but, if this site does not work, you can obtain a copy by writing a letter to:
The Free Software Foundation
59 Temple Place - Suite 330
Boston, MA 02111-1307, USA.
--------------------------------------------------------------------------------
What is Guardian?
Guardian is a FREE palace server plugin that controls the commands that groups and ranks of users can issue to the server. It also provides control for limiting certain packets (or protocol) from getting to the server based on rank/groups. This plugin functions as a frontend filter to the server's normal privilege & protocol handling mechanism.
--------------------------------------------------------------------------------
Change Log
-----------------
Version Legend:
[+] - ADDED
[-] - DROPED
[*] - FIXED
[^] - CHANGED
[?] - BETA

Version 2.5.32
---------------------
[*] Wouldn't compile with GNU's C Compiler 2.9x before, now she will! - All variables in GCC 2.9x must be declared at the top of a { block }.

Version 2.4.26
---------------------
[*] pointer checking before use of the pointer!

Version 2.3.23
---------------------
[*] bless list bug.
[Report credited to: Mike of the Palace Community Forums]
[^] fndRnkGrp optimized.

Version 2.2.17
---------------------
[+] a feature to show the 'blessed as' username of a user in the bless list if you attempt to bless someone who has already been blessed.
(A feature found in the original Gatekeeper.)
[Requested by: Mike of the Palace Community Forums]
[+] the 'blessed as' username of a user to the `grdlst command's listing, which is similar to the feature above.
[+] a new function to optimize srcBls - search bless list.
[*] an issue where if a root privilaged user had an astriek in their username it would be removed on configuration reload.
[Report credited to: Mike of the Palace Community Forums]

Version 2.1.14
--------------------
[*] errors with loading new configuration files.
[Report credited to: Mike of the Palace Community Forums]

Version 2.0.10
---------------------
[+] feature where Guardian configuration files may be listed in any order within the plugin.conf file, as long as:
root.bless contains a line #!/adm (preferably near the top - first line).
guardian.mod contains a line #!/mod (preferably near the top - first line).
group.bless contains a line #!/grp (preferably near the top - first line).
[+] Door Lock/UnLock Protocol to Guardian/guardian.mod.
[Report credited to: (The 2 who reported it), Anastasia Rützel, Rémy Meier aka Remad aka Subcommander]

Version 1.4.5
-------------------
[*] a bug where user couldn't change username, ending up making an update to chngNme() function.
(Much needed improvement added to it, including 1 new argument -uNme-).
[Report credited to: Denis, aka SoulWinter]

Version 1.3.4
-------------------
[+] (INT_CLNBLS flag), when either RNK_ROOT or any other -ranks/groups/users- specified in the guardian.mod use `clnbls,
the entries removed from the group.bless are server logged.
[*] a bugs in INT_LOGOUT flag, & potential other minor bugs.
[-] a function clrMem().
[^] clrMem() replaced with standard library function memset().

Version 1.2.3
-------------------
[+] a feature so when you've muted somebody, they can't offer to you.
(Added ActionExists(usr, user, UA_Mute))
[+] RejectPrivate and RejectESP flags to the syntax of `offer.

Version 1.1.2
-------------------
[+] auto `blslst sorting, lists only owners, then only wizards, then only staff (unsorted groups).
[*] `clnbls or `guardian reload `logout effect.
(plugin was clearing the password field thus it couldn't re-verify staff members).
[Report credited to: Mike of the Palace Community Forums]
[^] the ChngeNme function in order to prevent extra log data from being made
(same username before change function as well as after will not be logged).
[+] a feature that logs the event when a user purges anything with `clnbls.
(If you would like each entry that's removed to be logged please say so).
[^] the way hPwd function (one way hashes user/pass) works by optimizing it.
(Should be compatible with older version.)

Version 1.0.1
-------------------
[?] Official Release!

--------------------------------------------------------------------------------
Credits
Paul Taylor (Janus) the author of Guardian would like to give special thanks to Jonathan Kelley aka PC Man Jon/Mac Man Jon from Mount Olympus. (Olympus-Mount.com) Things Jon is accredited for include:
Moral support
Ideas
Finding Bugs
Sacrificing Mount Olympus (Olympus-Mount.com) for bug testing (and many crashes along the way)
Writing README and the documentation
Being there throughout the production process.

--------------------------------------------------------------------------------
Quick Notes
I'd like to mention here that guardian has made several plugins no longer needed (obsolete.) We would suggest that you remove the following plugins out of your plugin.conf. Otherwise it could cause serious problems or conflicts!
Offer Plugin
GateKeeper Plugin
GateKeeper Pro Plugin
HostKeeper Plugin
HostMgr Plugin

--------------------------------------------------------------------------------
Table of Contents
00.0 Command Summary
01.0 How to bless a user. (`bless)
01.1 Command Flags
01.2 Blessing users who have a dynamic IP
01.2.1 Blessing IP's with Wildcards (*)
01.2.2 Blessing IP's with Ranges
02.0 How to unbless a user. (`unbless)
03.0 Changing a currently blessed user's operator password. (`chpass)
04.0 Logging out from operator mode. (`logout)
05.0 About the offer functions in guardian. (`offer | `accept | `offerall)
06.0 Showing the list of all currently blessed users. (`blslst)
07.0 Listing currently logged on users under Guardian. (`grdlst)
08.0 Listing all groups/ranks that are currently loaded from server configuration file. (`grplst)
09.0 Get or change your sysop code through Guardian. (`sysop)
10.0 Purging the bless list of staff who hasn't logged on in <x> number of days. (`clnbls)
11.0 Reloading *ALL* configuration files while the server is running. (`guardian reload)
12.0 Giving a user a specific privilege within Palace commands. (`adduprv)
12.1 Taking away a users specific privilege. (`deluprv)
13.0 Giving a group in the config file a privilege within Palace commands. (`addgprv)
13.1 Taking away privileges from a group in the config file. (`delgprv)
14.0 Adding a group to the config file within Palace commands. (`addgrp)
14.1 Removing a group from the config file. (`delgrp)
15.0 Getting the Palace uptime and server load information. (`uptime)
16.0 Getting information about Guardian and Credits (`guardian about)
0A.0 Plugin Installation
0A.1 Implementation for commercial Palace hosting.

--------------------------------------------------------------------------------
00.0 - Command Summary
Command Arguments Description
`guardian <arguments> Backbone Command.

Unique
----------
about - About guardian.
reload - Reloads all Guardian files.

Aliases (commands that do the equivalent to another command.):
`guardian list = `blslst
`guardian clean = `clnbls
`guardian group = `grplst
`guardian glist = `grdlist
`guardian exit = `logout
`addgrp <group> Create <group>.
`addgprv <group> <CMD/TLK/WHS_???|PKT_???|IPT_???|INT_???> Add privilege(s) to <group>.
`adduprv <group> [<-rpi>] <CMD/TLK/WHS_???|PKT_???|IPT_???|INT_???> Add privilege(s) to targeted user.
`bless <group> <password0> [<-rpi>] Bless whispered user under <group>.

Arguments
----------------
r - (Pre-defined) Registration Code (if unspecified, this is used by default ONLY)
p - (Pre-defined) PUID
i - (Pre-defined/Specify) IP Address
`blslst [<group>] [<-rpilm>] List bless entries all or under <group>. Show only 'r'egs, 'p'uids, 'i'ps, 'l'ast login, 'm'od/permissions.
`chpass <group> <password> Change <password> for whispered user under <group>.
`clnbls [<days>] Clean bless list of entries unused in number of [<days>] (30 days by default).
`delgrp <group> Delete <group>.
`delgprv <group> <CMD/TLK/WHS_???|PKT_???|IPT_???|INT_???> Delete privilege(s) from <group>.
`deluprv <group> [<-rpi>] <CMD/TLK/WHS_???|PKT_???|IPT_???|INT_???> Delete privilege(s) from targeted user.
`grdlst List all users on by their 'Group' 'User (#ID)' 'Room (#ID)'.
`grplst [<group>] List groups if <group> not defined, list contents of group <group> if defined.
`logout Logout of staff status (restores to member rank).
`unbless <group> [<-rpi>] Unbless by whispering or specifying [<-rpi>] under <group>.

Arguments
--------------
r - Registration
p - PUID
i - IP Address
`accept Accept avatar which has been offered to you.
`offer Offer your avatar to anyone.
`offerall Offer your avatar to everybody in the same room.
`sysop [<SYSOP code>] Get/Set server SYSOP code.
`uptime Get server's uptime!

--------------------------------------------------------------------------------
01.0 - How to bless a user (The `bless command)
Guardian's bless command is very different from the way GateKeeper was used to bless people. The original GateKeeper only allowed you to bless people by their Registration Code (or hash.)

In Guardian, it's different. Guardian takes security a step higher by verifying people by their Registration Code (or hash), by their PUID (or Z-Code) AND by their IP address.

Using all 3 of these methods to validate a user would make it almost impossible to crack wizard access. But wait, there's more! Not only do you bless people with so much criteria, but you also are allowed to give each person you bless their own password to "wiz up" with.

The basic syntax of the command (from the servers help command)
`bless <group> <password> [<-rpi>]

--------------------------------------------------------------------------------
01.1 - Common Flags
Flag What it does
r Registration Code (You cannot specify a Reg Code when blessing, the plugin will automatically discover the Reg Code of the person your whispering to.)
p PUID (You cannot specify a PUID when blessing, the plugin will automatically discover the PUID of the person your whispering to.)
i IP Address (You can specify this, but it can be discovered by the server automatically when blessing. If the server discovers it, it will not have wildcards or ranges.)
l Show last login TIMESTAMP.
m Show all 'mod' (permissions) of a user.
This may seem a little complicated if you don't understand what the -r -p and -i mean. Those are what are known as "flags."
Before going on, you need a quick tutorial on how flags work, because you'll end up having to use them a lot in this plugin. You'll see a lot of "flags" for commands throughout this plugin, so you need to understand what they mean and how to use them.

Usually to execute a command you simply need to type a backtick or apostrophe and then the name of the command, and then the enter key. For instance, to list all users in a Palace you'd type:
`glist

But a fair amount of commands in this server plugin require or can accept information that alters the way they behave or provides information to be processed:
flags and arguments.

Flags are the options that will alter the behavior of the program. They are usually preceded with a dash.
For instance whispering:
`bless <group> <password> -r would bless the user you whispered to by their Registration Code (RegHash).
`bless <group> <password> -p would bless the user you whispered to by their PUID (Z-Code).

If you wanted to bless someone by both their PUID and Registration Code; you could mix the flags together.
To accomplish this you could do:
`bless <group> <password> -rp
or
`bless <group> <password> -r -p

Now comes in the arguments, an example of this would be `bless wizard password -i <arguments>
When you add the i flag to the bless command you are blessing someone by their IP address.
For instance:
`bless wizard password -i 24.643.82.3 would allow anyone who had that IP address to log in under group "wizard" with the operator password "password".

If I wanted to bless the person with the IP 24.643.82.3 and PUID / RegHash verification, I could do
`bless wizard password -rpi 24.643.82.3
`bless wizard password -r -p -i 24.643.82.3

If this is too much for you; you can just whisper `bless <group> <password> to a user without any "flags" and it'll by default bless them by Registration Code (like the original GateKeeper.) You will need to know how to use flags in order to unbless users and do other things throughout the plugin, however, so I'd suggest you learn now!

--------------------------------------------------------------------------------
01.2 - Blessing people with a dynamic IP (or IP address that changes.)
Blessing people with a dynamic IP (or IP address that changes.)
If you have an ISP anything like mine, your IP is bound to change, quite often I might add. Thats why we have implemented whats called ranging and wildcards in to the IP address handling for Guardian.

--------------------------------------------------------------------------------
01.2.1 - Wildcards
A wildcard is an asterisk ( * ) that specifies that any value can be placed in that section of an IP address.

An example of this usage would be the IP address with a wildcard:
192.168.0.*

This example would match any IP with the last part being anything. Meaning only the first 3 parts would have to match.
IP's that would be allowed through this filter would include:
192.168.0.5
192.168.0.252
192.168.0.102
192.168.0.19
192.168.0.0
192.168.0.69

An IP that would not pass this filter would be
192.168.31.102
22.168.0.69

--------------------------------------------------------------------------------
01.2.2 - Ranges
A range would be just that, only a specific range in an IP address.

An example of this usage would be the IP address with a range, such as:
65-69.127.3.24

IP's that would be allowed through this filter would only include:
65.127.3.24
66.127.3.24
67.127.3.24
68.127.3.24
69.127.3.24

An IP that would not pass this filter would be
70.127.3.24

--------------------------------------------------------------------------------
02.0 - How to unbless a user (The `unbless command)
With the ability to bless people, comes the ability to unbless someone. Don't worry. This isn't as bad as blessing, I promise!

The basic syntax of the `unbless Command is:
`unbless <group> [<-rpi>]

Remember those dreaded Command Flags that we learned in the previous chapter? They come in handy here too!

There is several ways you could use this command to unbless someone. The constant that never changes about the unbless command however, is you have to declare which group the person you wish to unbless is in. We'll underline each one of these below:

The first way would be to put the reg code of the user you wish to unbless. Let's say I want to unbless Bob and he's in a group called "scripter" and his reg code is HODDCCBEF. I could unbless him by typing:
`unbless scripter -r HODDCCBEF

Or, I could use his PUID and unbless him by that, if his PUID was ZHMBBMHIF I'd do:
`unbless scripter -p ZHMBBMHIF

Finally, I could unbless someone by their IP if their IP in the Guardian Bless List was 24.*.212.65
`unbless scripter -i 24.*.212.65

I hope this is simple enough? Let's move on...

--------------------------------------------------------------------------------
03.0 - Changing a currently blessed user's operator password (The `chpass command)
Guardian doesn't have the ability to recover operator passwords once they have been set. The reason for this is because we used a special method to encrypt passwords in the bless file. Why did we do this, might you ask? The reason is because we've noticed many individuals in the real world use the same password for everything! We feared staff members might use the same password for E-Mail/AIM/ICQ and then for Palace on top of it all! That's why we took it upon ourself to encrypt passwords in a practically irreversible form.

However, inevitably people may still forget their password, and since you can't retrieve it for them, the best thing to do would be to change it for them, using a command! That's when the `chpass command was born!

The syntax for the command is:
`chpass <group> <new password> [<-rpi>]

This command is very similar to the unbless command described in the section above, because the flags work the exact same way.

If I want to change the password for "Jon" and he's in group "Host" and he had a reg code of HOPDOCBOF according to his bless record, I would do:
`chpass host my-new_pass! -r HOPDOCBOF

You can also use the -p and -i flags to change the password by their PUID or IP address respectively.

An alternative (and probably easier) way to change someone's pass would be to whisper to them without providing any flags. E.G. whispering to "Bob" who is in group "owner" who wants his new pass to be "911" like this:
`chpass owner 911

--------------------------------------------------------------------------------
04.0 - Logging out of Operator mode (The `logout command)
Another thing we noticed upon our journey in making Guardian, is that sometimes people accidentally log out of staff mode. Admittedly, I know I've done it once or twice. ;-) We made it so it's impossible to log out from staff mode. Well, except for one way, by the usage of the `logout command.

If you're in staff mode, you just simply type `logout

Owners/Root can log wizards out by whispering `logout to wizards.

NOTE: If you're root you will be unable to log out. This is a security precaution.

ALIASES: You can also type `guardian exit
ALIASES: You can also type `guardian `exit

--------------------------------------------------------------------------------
05.0 - About the offer functions in Guardian (The `offer | `accept | `offerall commands)
You may have noticed that in the quick notes section of this document we mentioned Guardian makes the offer plugins obsolete. That's because we've incorporated our own version of offer in to guardian. It even has improvements over the old traditional offer plugins. The commands are:

`offer - To offer an avatar to anyone (needs to be whispered)
`accept - To accept an avatar someone has offered you.
`offerall - Offer your current avatar to everyone in the same room as you. (Wizard and above)

As you may see, we also added a new command for staff where a staff member can offer their current avatar to everyone in the current room at once. The command for this is
`offerall

NOTE: You can give the ability of `offerall to everyone if you wish by tweaking your guardian.mod file.

--------------------------------------------------------------------------------
06.0 - Showing the list of all currently blessed users (The `blslst command)
To show the users who are currently on the bless list you use the command `blslst.
Apply a rank/group name as an argument to list only records under that rank/group.

NEW!!!You can now only make it show only certain details, apply arguments [<-rpilm>]

An example of the output this command would generate would be:
*** ; owner: Jon
*** ; RegHash: {HOPDCCBEF}
*** ; PUID: {ZMHFIAHCCH}
*** ; IP Address: "192.168.0.*"
*** ; Privilege(s):
*** ; 0 privileges found...

ALIASES: You can also type `guardian list
ALIASES: You can also type `guardian `list

--------------------------------------------------------------------------------
07.0 - Listing currently logged on users under Guardian (The `grdlst command)
This is the equivalent to `hlist for HostKeeper where it lists all the other users on the server.

An example output is:
*** ; "root" "Jon [Jonnie-chu] (10)" "Mount Olympus (6048)"
*** ; "root" "Jon2 [Jonnie 2] (3)" "Mount Olympus (6048)"

* The "root" stands for the current group they reside in.
* The "Jon" & "Jon2" stands for the username they're logged on with.
* The "Jonnie-chu" & "Jonnie 2" stands for the username they're blessed as.
* The "10" & "3" stands for the current UserID of the user(s)
* The "Mount Olympus" stands for the current room name their in.
* The "6048" stands for the current room id of the room they reside in.

ALIASES: You can also type `guardian glist
ALIASES: You can also type `guardian `glist

--------------------------------------------------------------------------------
08.0 - Listing groups currently loaded from config (The `grplst command)
This is rather self explaining. This lists all of the groups currently loaded in memory from the guardian.mod file.

ALIASES: You can also type `guardian group

--------------------------------------------------------------------------------
09.0 - Changing your sysop code through Guardian (The `sysop command)
This command isn't really related to Palace Security (HostKeeper, GateKeeper, HostMgr) but we thought it would be useful. This command allows you to change the SYSOP entry in your pserver.prefs file while the Palace Server is running.

This is useful if you need to change your Palacetools key and don't want to shut the server down in order to do it.

The syntax is:
`sysop <new SYSOP entry>

The changes take place immediately (The changes WILL be saved to the preferences file on shutdown).

--------------------------------------------------------------------------------
10.0 - Purging the bless list of staff who hasn't logged on in number of [<days>] (The `clnbls command)
Usage: `clnbls [<days>]
I'm no stranger to having to fire staff from my Palace for not showing up. I'm sure you've had to do this before at your own Palace too. This command helps make doing this easier by purging the bless list from staff who haven't signed on in number of [<days>].

An example of this would be clearing my bless list of staff who have neglected to come on in the last 5 days. I would do this by typing:
`clnbls 5

Alternatively you can clear the bless list from staff who haven't signed on by the default of 30 days by typing:
`clnbls

NOTE: Users blessed under the "owner" rank will be purged too, so use with care!

--------------------------------------------------------------------------------
11.0 - Reloading *ALL* configuration files while the server is running (The `guardian reload command)
In Guardian you can reload all of the configuration files at any time by typing `guardian reload. This will reload all of the text configuration files (root.bless, guardian.mod, group.bless.)

The following commands are probably the hardest commands of the plugin. We would suggest you just edit the configuration manually through FTP and then use the `guardian reload command.

Modifying the configuration through these commands because you don't feel comfortable doing it manually is NOT why these commands were created. You will -HAVE- to know how the configuration works to modify the way the plugin works through these commands. If you mess up you could easily make it so people cannot sign on your server, and then you'll really have to learn how the plugin works to fix this. Please learn how to modify the configuration file manually before using these commands.

--------------------------------------------------------------------------------
12.0 - Giving a user a specific privilege within Palace commands (The `adduprv command)
Usage: `adduprv <group> [<-rpi>]

This command is used to give a user a specific command. This would be useful if you add a user to a group, but want to give them 1 or 2 extra commands that the group you added them to do not have.

Consider if I had a group called punyrank it'd look like this in the guardian.mod file:
group punyrank:
CMD_gag, CMD_propgag, CMD_ungag, CMD_unpropgag

You have a couple of people in punyrank, all of these people can only do those commands. They can't do anything else. Say you bless someone called 'joeblow' who you want to have puny rank, but additionally to have the ability of a badge or star? Then you'd type:
`adduprv punyrank -r <joeblow's reg code> INT_badge

He'd then still be in the group punyrank, but also have the INT_badge privilege tacked on to him.

You can also add multiple commands to a user at once, like this:
`adduprv punyrank -r <joeblow's reg code> INT_badge CMD_shutdown PKT_kill

--------------------------------------------------------------------------------
12.1 - Taking away a user's specific privilege (The `deluprv command)
This command acts exactly like adding a privilege, except it removes a privilege instead.

--------------------------------------------------------------------------------
13.0 - Giving a group in the config file a privilege within Palace commands (The `addgprv command)
Usage: `addgprv <group> <CMD/TLK/WHS_???|PKT_???|IPT_???|INT_???>

This command works exactly as the command described above except that it adds privileges to a group.

--------------------------------------------------------------------------------
13.1 - Taking away privileges from a group in the config file (The `delgprv command)
Usage: `delgprv <group> <CMD/TLK/WHS_???|PKT_???|IPT_???|INT_???>

This command acts exactly like adding a privilege, except it removes a privilege instead.

--------------------------------------------------------------------------------
14.0 - Adding a group to the config file (The `addgrp command)
Usage: `addgrp <group>

This command works exactly as the command described above except that it adds a group to the configuration file.

--------------------------------------------------------------------------------
14.1 - Removing a group from the config file (The `delgrp command)
Usage: `delgrp <group>

This command acts exactly like adding a group, except it removes a group instead.

--------------------------------------------------------------------------------
15.0 - Finding uptime and load averages of a Palace Server (The `uptime command)
The `uptime command is one of our favorites. We added this for Linux fans out there. A common example of the output of this command in the log would be:

*** ; 02:13:06 GMT up 0 days, 04:05, 1 user, load average: 0.00, 0.00, 0.00
02:13:06 GMT shows the current time of the server in GMT format
up 0 days, 04:05 shows up 0 days, hh:mm
1 user shows how many users are logged on the server at the moment.
load average: 0.00, 0.00, 0.00 shows what the servers load averages are.

--------------------------------------------------------------------------------
16.0 - Getting Guardian Version information and Credits (The `guardian about command)
You can learn a little about guardian by typing `guardian about in Palace. You'll get to see the credits, the build, and some other stuff too!

--------------------------------------------------------------------------------
0A.0 Plugin Installation (So you can get up & running!)
Assuming the directory the standard server is installed in a directory "palace", perform the following steps:

If necessary, create a "plugins" directory in the palace/bin directory.
Put the guardian.so file in the palace/bin/plugins directory.
Put the root.bless, guardian.mod and group.bless in the /palace/palace/psdata/ directory.
Create or modify the palace/palace/psdata/plugin.conf file which describes the active server plugins. Include a line for the Guardian Server Plugin:
../bin/plugins/guardian.so psdata/root.bless psdata/guardian.mod psdata/group.bless

If you already have plugins on your server, you don't need to do the following step.
Edit server/bin/start-palace
replace:
$root/bin/pserver -f $root/$instance/psdata/pserver.conf
with:
$root/bin/pserver -f $root/$instance/psdata/pserver.conf -s $root/$instance/psdata/plugin.conf

NOTE: Make sure that is a single line in the file

Guest Codes

Guestcodes Version 0.3 README
------------------------------------------------
Guestcodes is a Palace Server plugin that assigns Guests a temporary registration code and PUID using an algorithm, and allows guests to use the member room feature without the errors or confusion that can result when unregistered users make and operate a member created room. The temporary registration code is session based, and will not carry
over to other servers. In addition, Guestcodes also prevents Guests from gaining operator access, which fixes a potential security breach. It will auto-kick any Guest for a period of ten minutes if they try to gain operator access three consecutive times.

Installation
-----------------
The following installation instructions assume that the Palace server has been installed in /usr/local/palace.
Guestcodes is a standard Palace server plugin. It is installed by placing the plugin file, guestcodes.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/guestcodes.so

Host Keeper

Hostkeeper version 1.1.2 README
--------------------------------------------------
Hostkeeper is a Palace server plugin that controls the server commands that groups of users can issue to the server. It also provides control for small set of palace protocol messages. The plugin functions as front end filter
to the servers's normal privilege mechanism. When the user issues a command, Hostkeeper determines which groups(s) the user bongs to, and which commands those groups are permitted to issue. If the command is permitted
in any of the user's groups, Hostkeeper passes it on to the server. If not, Hostkeeper returns an appropriate error message. Hostkeeper filters only users whose rank is guest, member or wizard. It does not filter gods.

Group privileges are defined in a control file called the group file. Individual users are placed in one or more groups through use of the "`hostkeeper bless ..." command. All users are, by default, members of a
special group called "member".

It should be noted that the server may forbid commands to certain users based on the user's rank (guest, member, wizard, or god). The server's "member" rank is distinct from Hostkeeper's "member" group. Hostkeeper
does not make use of server "rank". Thus a Hostkeeper 'member" may be permitted to issue a command which the server then forbids, based on the user's rank. The `setrank server command may be used to change the default
rank for a command.

Changes in Version 1.1.2
-----------------------------------
Bug fixes

* A bug where three extra *'s where displayed in a warning
message when a user that isn't authorized to wear a badge
attempts to is fixed.

Changes in Version 1.1.1
-----------------------------------
Bug fixes

* A bug where a blank line in the group file would cause an error
is fixed.

* `opcount is now an alias for `operatorcount without having to add
it manually.

* A bug where "***;`help hoskeeper - help on hostkeeper" would show
up whenever you typed `help for any command is fixed.

 

Kill IP

Killip 1.0.0 README
------------------------------
Killip is a palace server plugin that allows you to ban an ip using wildcards. It was developed by Martyn Gilbertson.

Questions about this plugin? Write to the plugin devolper at plugins@all4palace.com.
Copyright (c) 2003 Martyn Gilbertson. All Rights Reserved Worldwide.

Installation
-----------------
The following installation instructions assume that the Palace server has been installed in /usr/local/palace.
Killip is a standard Palace server plugin. It is installed by placing the plugin killip.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/badboy/killip.so psdata/ip.list

The killip list file is placed in /usr/local/palace/<palace-name>/psdata. Note that killip reads and writes to this file. Therefore, it cannot be edited.

The killip List File
---------------------------
TIME LIMIT IP "killer" "User Name"

God Commands
--------------------
killip adds the following god commands to the Palace server.

`killip <whisper>/<ip> - kill a user's ip.
`killip about - display info about killip.
`killip extend <length> <ip> - extend the time of a death penalty.
`killip for <whisper>/<ip> - kill an ip with a custom time limit.
`killip help - display this message.
`killip list - list killed users.
`killip unkill <ip> - unkill a ban record."
you may `setrank `killip

 

No Whisper

NoWhisper plugin README
------------------------------------------
NoWhisper is a palace server plugin which allows greater control over who may whisper on a server. Instead of just allowing or forbidding whispers, the nowhisper plugin can be configured to allow whispers if either party is a god, wizard, or member. It can also completely forbid or allow whispers as the standard server does.

Installation
-----------------
The following installation instructions assume that the Palace server has been installed in /usr/local/palace. It is installed by placing the plugin file, nowhisper.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/nowhisper.so <initial-setting>

The <initial-setting> may be one of on, guest, member, wizard, operator, god, owner, off. If it is omitted, the default setting will depend on the setting of NOWHISPER in the pserver.conf file.

God commands
-----------------------
NoWhisper accepts several commands from users with wizard or god status.

`nowhisper [guest|member|wizard|god|operator|owner|off|on] - Set the minimum rank of user that is permitted
to engage in whispering.

N.B. "`nowhisper" may be abbreviated to "'now".


Offer / Accept 2

Offer2 version 1.0 plugin README
---------------------------------------------------
Offer2 is a palace server plugin which allows a server operator to easily provide avatar sharing via offer and accept commands in all rooms on the server.

Installation
-----------------
The following installation instructions assume that the Palace server has been installed in /usr/local/palace. Offer2 is installed by placing the plugin file, offer2.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/offer2.so

User commands
------------------------
Offer2 accepts the following command from all users.

`offer - Offer a copy of your avatar to another user. (Should be whispered to the intended receiver.)
`accept - Accept an offer of a copy of another user's avatar.
`help offer - Print help message.
`help accept - Print help message.

PUID

Puid 1.0.1 README
----------------------------
Puid is a linux palace server plugin that helps to prevent automated attacks and banjumping.
It was developed by Martyn Gilbertson.

Questions about this plugin? Write to Martyn at plugins@palacebox.com
Copyright (c) 2004 Martyn Gilbertson. All Rights Reserved Worldwide.

Installation
-----------------
Puid is a standard Palace server plugin. It is installed by placing the plugin file, puid.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

/plugins/puid.so on

The parameter is on|off, this starts the palace with puid on or off.

God Commands
------------------------
Puid adds the following god commands to the Palace server.

`puid - display status of authentication.
`puid on - turns puid authentication on.
`puid off - turns puid authentication off.

Secure Names

Secure Names version 0.5 README
-----------------------------------------------------
Securenames is a combination of a palace server plugin and stand alone name encoding program which allows a server operator to control the screen names people connecting with the Instant Palace client can use.

Installation
-----------------
Installation requires user-provided changes to the web server's scripting to encode the screen name and pass it to the instant palace client. Very simple samples are included in the distribution.

The plugin is installed following the usual plugin installation conventions. The following installation instructions assume that the Palace server has been installed in /usr/local/palace.

Securenames is a standard Palace server plugin. It is installed by placing the executable files, securenames.so and securenamesencode, 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/securenames.so <key-file> [-m <max-name-len>] [-w <time-window>]

The <key-file> is described below. The switches are:

-m <max-name-len> - Specifies the maximum length of a valid screen name.
-w <time-window> - Specifies the time window in seconds in which a name will be accepted. For more information, see below.

Sample Web Scripting Files
----------------------------------------
The samples are:

signon.pl - Designed to go in the cgi-bin directory on the web server.
signon.html - Designed to go in the <palace-name> directory in the Palace install.

Method of Operation
------------------------------
The server web scripting (CGI, Perl, JSP) decides what screen name the Instant Palace user will have. It may check the web site registration database, or use any other technique that is appropriate to the rules of the particular
palace. It then encodes the name using te securenamesencode program, and includes the encoded name as the DefaultName parameter:

<PARAM name="DefaultName" value="<encoded-name>">

It then sends the Instant Palace web page to the user.

Instant Palace gets the encoded name from the DefaultName parameter and sends it to the Palace server. The securenames plugin intercepts the name, decodes it and checks it for validity. If it is valid, the login is continued using the
decoded name. Otherwise the login is forbidden, and an error message is sent to the user.

The Time Window
---------------------------
The server operator may limit the time window in which an encoded name is valid with the -w parameter. The time window is implemented in units of 5 seconds. The maximum value for the window is 600 seconds (10 minutes). A value of zero
indicates that no window is in effect, and encoded names will remain valid until a new <key-file> is built.

If names are encoded on a different machine from the one running the palace server, the clocks on the two machines must be synchronized well enough so recently encoded screen names will be valid. Network Time Protocol is a
possible solution.

The Key File
------------------
Much of the security of Secure Names depends on the contents of the <key-file>. The <key-file> should be protected so it can not be downloaded by the web server. The <key-file> must be generated by the user. One way to generate it on Linux
is:
$ head -c 60 /dev/urandom > keyfile

Unless long-term encoded screen names are desired, it is reasonable to
regenerate the <key-file> as part of the palace server startup script.

The Secure Names Encode Program
-----------------------------------------------------
The securenamesencode program encodes the screen name, and sends the encoded name to stdout. It is called:

securenamesencode -w -k <key-file> <screen-name>

-w indicates that time information is to be included in the encoded name to enforce a name validity window. Note that if -w is specified, then a non-zero -w parameter must be specified for the securenames plugin. If -w is not
specified, then the -w parameter must be specified as zero for the securenames plugin.

(N.B. securenamesencode will perform the necessary web escaping for characters in the encoded screen name which need to be escaped.)

Valid Screen Name Characters
--------------------------------------------
Secure names limits the valid characters in the user's screen name. The valid characters are the upper case alphabet (A-Z), the lower case alphabet (a-z), the digits 0-9, period, hyphen, and underscore. All other characters are
invalid and are used in validity checking the name.

Credits
-----------
Securenames uses an implementation of AES described as follows:

Written by Mike Scott 21st April 1999
mike@compapp.dcu.ie
An alternative faster version is implemented in MIRACL
ftp://ftp.compapp.dcu.ie/pub/crypto/miracl.zip

Copyright (c) 1999 Mike Scott

Permission for free direct or derivative use is granted subject to compliance with any conditions that the originators of the
algorithm place on its exploitation. Inspiration from Brian Gladman's implementation is acknowledged.

Securenames uses an implementation of MD5 described as follows
-------------------------------------------------------------------------------------------------

** md5.c **
** RSA Data Security, Inc. MD5 Message Digest Algorithm **
** Created: 2/17/90 RLR **
** Revised: 1/91 SRD,AJ,BSK,JT Reference C Version **
** **
** **
** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. **
** **
** License to copy and use this software is granted provided that **
** it is identified as the "RSA Data Security, Inc. MD5 Message **
** Digest Algorithm" in all material mentioning or referencing this **
** software or this function. **
** **
** License is also granted to make and use derivative works **
** provided that such works are identified as "derived from the RSA **
** Data Security, Inc. MD5 Message Digest Algorithm" in all **
** material mentioning or referencing the derived work. **
** **
** RSA Data Security, Inc. makes no representations concerning **
** either the merchantability of this software or the suitability **
** of this software for any particular purpose. It is provided "as **
** is" without express or implied warranty of any kind. **
** **
** These notices must be retained in any copies of any part of this **
** documentation and/or software. **

Geek Details for the Security Analyst
-------------------------------------------------------
Securenames makes use of the fact that there are more characters (Ncs) that can passed in an Instant Palace screen name than are included in the ones considered valid by secure names (Nv). These "invalid" characters are used to detect
modification of a name or the use of an expired name. Securenames uses encryption to make it very difficult to change an encoded screen name without introducing at least one invalid character in the decoded name.

The encoding is performed by converting the screen name to a number n.

Starting with n=0, for each character c in the screen name, it calculates:

n = n*Ncs + index(c in valid_set)

It then encrypts the resulting number using the Advanced Encryption Standard algorithm (AES) with cyphertext stealing for the two blocks. (See Applied Cryptography by Bruce Schneier for details on cyphertext stealing.) The AES
encryption key is generated from the <key-file>, and if the -w parameter is specified, the current time.

If -w parameter is specified, n is multiplied by the low order bits of the encryption time giving nt.

Then nt is converted to a character string using the remainder from repeated division by Ncs as in index in the passable screen name character set. The character string is written to stdout.

When the securenames plugin receives a login from an Instant Palace client, it takes the screen name and converts it to a number. If it is running with a non-zero -w parameter, it divides out the low order bits of the encryption
time, and uses the login time to compute the encryption time. If there is an encryption time within the window (and there will only be one), then the computed encryption time is used with the <key-file> to compute an AES decryption
key. (If -w is zero, only the <key-file> is used to compute the key.)

Securenames decrypts the encrypted name recovering the value of n. Then n is converted to a character string using the remainder from repeated division by Ncs as in index in the valid screen name character set. If any indexes are outside
the set, the login is rejected.

Word Filter

Wordfilter plugin README
-----------------------------------
Wordfilter is a palace server plugin which allows member and guest input to be scanned for forbidden words. The input scanned includes, normal chat, whispers, room messages, global messages, screen names, and room names. If a forbidden word is found, the user's input is suppressed. In addition, optional messages are sent to the server log, and to the
logged on wizards.

Installation
-----------------
The following installation instructions assume that the Palace server has been installed in /usr/local/palace.

Wordfilter is a standard Palace server plugin. It is installed by placing the plugin file, wordfilter.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/wordfilter.so psdata/transtab psdata/words

The two control files, transtab, and words (described below) are placed in /usr/local/palace/<palace-name>/psdata. Note that wordfilter only reads these files. Therefore, they can be edited while the server is running and reloaded with a command to wordfilter.

Method of Operation
------------------------------
The user input (gods and wizards are exempt) is converted to a cononical form by:

1. Translating it character by character with the translate table built from the transtab file. Note that translation only affects the input to the word test. It does not affect the user input that is passed to the server.

2. Converting all strings of single character words to words. For example, the input: "I want to k i l l" will be converted to,
"I want to kill".

Then the input is checked against the words listed in the words file.

The Transtab File
--------------------------
The transtab file consists of 256 hexadecimal characters which define the input translation. If the character # appears on a line, the rest of the line is treated as a comment. Two characters have special processing.

Any character which translates to 0xff is removed from the stream. For example, if the character | is defined to translate to 0xff, then the input "k|i|l|l" will be translated to "kill".

Any character which translates to 0x00 is forbidden and wordfilte immediately rejects the input.

It is highly recommended that any tables translate upper case letters to lower case letters. If this is not done, and it is desired to forbid the word "kill" in all its permutations, there must be 16 entries in the words file:
kill, kilL, kiLl, kiLL, kIll, kIlL, kILl, kILL, Kill, KilL,
KiLl, KiLL, KIll, KIlL, KILl, and KILL.

Sample transtab
------------------------
# Special characters:
# ff is removed from the string before testing
# 00 causes the string to be immediately rejected
#
# 0 1 2 3 4 5 6 7 8 9 A B C D E F
00 00 00 00 00 00 00 00 00 00 0a 00 00 0d 00 00 # 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 # 10
# ! " # $ % & ' ( ) * + , - . /
20 ff ff ff ff 00 ff ff ff ff ff ff ff ff ff ff # 20
# 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
30 31 32 33 34 35 36 37 38 39 ff ff ff ff ff ff # 30
# @ A B C D E F G H I J K L M N O
ff 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f # 40
# P Q R S T U V W X Y Z [ \ ] ^ _
70 71 72 73 74 75 76 77 78 79 7a ff ff ff ff ff # 50
# ` a b c d e f g h i j k l m n o
ff 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f # 60
# p q r s t u v w x y z { | } ~ ^?
70 71 72 73 74 75 76 77 78 79 7a ff ff ff ff 00 # 70
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 # 80
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 # 90
# ݰ ¢ £ § * ¶ ß ® ©  ´ ¨ ‚ Æ Ø
20 ff 63 6c ff 79 ff ff ff 63 61 ff ff ff 72 ff # a0
# ƒ ± ¾ „ ¥ µ  … ½ ¼ † ª º ‡ æ ø
ff ff ff ff ff 75 70 ff ff 31 6f ff ff ff ff ff # b0
# ¿ ¡ ¬ ˆ Ÿ ‰  « » Š À Ã Õ ‘ ¦
61 61 61 61 61 61 65 63 65 65 65 65 69 69 69 69 # c0
# - - " " ' ' ÷ × ÿ  Ž ¤ Ð ð Þ þ
64 6e 6f 6f 6f 6f 6f 78 6f 75 75 75 75 79 70 62 # d0
# ý · ’ “ ” Â Ê Á Ë È Í Î Ï Ì Ó Ô
61 61 61 61 61 61 65 63 65 65 65 65 69 69 69 69 # e0
# • Ò Ú Û Ù ž – — ¯ ˜ ™ š ¸ › œ 
6f 6e 6f 6f 6f 6f 6f ff 6f 75 75 75 75 79 70 79 # f0

The Words File
----------------------
The words file defines the words that will cause user input to be rejected. A word may be defined using * as a wildcard. A leading * causes all words ending with the specified word to be rejected. Similarly, a trailing * causes all words which start with the specified word to be rejected. Both leading and trailing * cause all words containing the specified word as a substring to be rejected. For example:

Entry Some words which are rejected

kill kill
kill* kill
killed
killer
killers
killing
killings
killjoy
kills

*kill kill
overkill
skill

*kill* kill
killed
killer
killers
killing
killings
killjoy
kills
overkill
skill
skilled
skillet
skillful
skillfully
skillfulness
skills
unskilled

It is recommended that entries using wildcards be tested against a dictionary with a utility such as grep. In many Unixes, the commands:

grep '^kill' /usr/dict/words -- will test kill*,
grep 'kill$' /usr/dict/words -- will test *kill, and
grep 'kill' /usr/dict/words -- will test *kill*.

Note that when the data in the words file is read, it is translated with transtab. With a transtab which translates all upper case to lower case, this allows upper case letters in the words list to compare equal to user's input after translation.

Wizard and god commands
----------------------------------------
Wordfilter accepts several commands from users with wizard or god status.

`wordfilter log [on|off] - Controls whether messages are sent to server log when a forbidden word is
detected.
`wordfilter wizmsg [on|off] - Controls whether messages to wizards and gods are sent when a forbidden word
is detected.
`wordfilter reload - Causes the transtab and words files to be read, replacing the old files.
`wordfilter test <line> - Tests <line> against the current transtab and words and reports the
result.

Fun with wordfilter
-----------------------------
While wordfilter is primarily a tool to control forbidden language, there are some games it makes possible that might be fun during certain Palace events. For example, an event can be declared, "No words with "E" in them are permitted." Or, "No words ending in "ing" or "in" are permitted."

 

Plans
Order
Software
Plugins
Tutorials
Scripts
Toolpage
Forum
Calendar
Directory

Logos
Email

 
CRG Logo

 

Welcome | Palace | IPalace | Radio | Web Hosting | Web Design

Terms of Service | Specials | Computer Tools | Contact Us

CRG