Wolfenstein Admin Bot (WAB)



WAB is the Wolfenstein Admin Bot, a perl-based auto attendant for Return to Caste Wolfenstein servers. At this time it is only known to work on Linux (although it may well work on Windows with perl installed; let me know if you try it). WAB's focus is on getting rid of Team Killers, fast, although it also gives you name and IP banning, and nick/IP protection, and allows you to change the length of time on a round. WAB works by a combination of tailing your server's log files and using RCON commands. Its anti-TK logic is much more sophisticated than simply looking at scores, and will kick most intentional TKers in two to three TKs.



WAB is the Wolfenstein Administration Bot.  Documentation is light
right now, but I wanted to get this out into the community ASAP in an
attempt to clean things up a little.

Updates should be frequent for the next little bit (this is written
October 14, 2001).  Check for them at:


See INSTALL for installation instructions.  Read wolf.cfg for basic
configuration file instructions.  See UPGRADING for upgrading


The philosophy behind WAB is to, as much as possible, automate the
administration of a Return to Castle Wolfenstein server.  The three
main areas WAB is designed to perform actions are:

1) Overall Server Administration.  As much as possible, WAB should
   keep the server running smoothly on its own.  In cases where this
   is not possible, it should make tools available to help human
   administrators do their job as easily as possible.

2) Minimize Annoying Players.  This is useful for all severs,
   Friendly-Fire or not.

3) Eliminate Intentional Team-Killing.  Obviously, if you have
   "friendly fire" off, this doesn't do very much.

The documention below is broken into these sections, so that you may
better undestand what the point of a specific feature is.  This
document is intended (for now) to be an overview of the capabilities;
to learn exactly how a feature is used, please see the wab.cfg file
distributed with WAB.  Below, when a mention is made of, for example,
"[server]:kill_server", that means the variable "kill_server" in the
section "server" in your wab.cfg file.

WAB has several features to help make your server run more smoothly.
The most useful (and most experiemental) is the kill server

  Kill Server Functionality
  Wolfenstein for Linux has a bug that, about once every three days,
  it stops responding and will print "Server not running" to any
  command given on the console.  If [server]:kill_server is set to
  a nonzero value, WAB will attempt to detect this and kill the server
  if it happens.  NB:  This is EXPERIMENTAL.  As this only happens
  once every three days, it is difficult for me to figure out exactly
  why it may not work (or notice if I've broken it).  If you wish to
  try this feature, please run wab with the -D (debug) flag, and, if
  you have success, let me know.  If you have a failure (i.e., WAB
  killing your server over and over gain), please email me the debug
  file (preferably cut down to the relevant part).  As of 0.91f, I 
  have tested this extensively on a SIMULATED server, but haven't
  yet seen it in the wild, again.  So, I feel reasonably confident
  about it, but it's still not fully tested.  I recommend turning it
  on, and expect it to be on by default in the next release.

  Message of the Day
  The [server]:motd variable allows you to specify a message of the
  day that will be spammed - er - BROADCAST to your users
  periodically.  You can let them know of rules, where your server
  home page is, etc.

  WAB logs things more clearly than the server logs, and includes IP
  information, so you can much more easily see where people come from
  and what they do.

  Nick Protection/Logins
  Using the [user] section, you may specify users by a combination of
  IP and nickname.  Nicks can be protected (so that those not
  connecting from the correct IP are kicked automatically), and other
  offenses from them can be ignored.  Finally, there is an "admin"
  flag which, if set, allows that user to say "kick <user>" or
  "clientkick <clientID>".  If there is a collision in the case of the
  "kick" command, a summary of client IDs that match the kick will be
  provided, allowing you to use the clientkick command to kick the
  offender.  As with all name functionality, colors are ignored by WAB;
  ^1N^2A^3M^4E is the same as NAME.  Finally, you should have one
  [user] block for each user, not multiple names under one block.
  Also note that, beginning with 0.91f, "kick <user>" does not take
  a regexp.

Annoying players are those who have ridiculously bad scores (taking up
slots better used by good players), and annoying names.  WAB can kick
these players, and, in extreme cases, ban them:

  Bad Scores
  The [server]:min_score variable sets a minimum bar.  Players with a
  score lower than this value will be kicked, assuming
  [server]:enforce_score is one.

  Annoying Names
  Simply add any keywords you wish to filter on to the [server]:illegal_names
  variable.  Finally!  A server free of third-grade-level potty humor
  names!  As with all name functionality, colors are ignored by WAB;
  ^1N^2A^3M^4E is the same as NAME.

  Banning by Name
  You can effectively ban by name if you create a [user] section with
  that person's name in the [user]:name field, and set
  [user]:protect_nick to 1, and do not set any IPs that the user is
  allowed to login from.  As with all name functionality, colors are
  ignored by WAB; ^1N^2A^3M^4E is the same as NAME.
  Banning by IP
  Finally, if you just never want to see someone again, add his IP to
  an [ip] section, one section per IP you wish to ban.

In addition to the score items under the "Annoying Players" section,
WAB can further help combat TKs.  WAB watches what happens in a match
and tries to make decisions based upon what is happening.  Players who
TK are given "points"; when a player has more than
[anti_tk]:max_tk_score points (by default, 99), he gets kicked and
banned for [anti_tk]:tk_ban seconds (by default, 300, or five
minutes).  The scoring varies depending on consecutive kills, the
weapon used, and so on.  The goal with this system is to use both how
TKs act and how their legimiate teammates react to try to make
decisions about TKs.  There are three basic types of TK recognized by

  Simple Team Killing
  This is, quite simply, one person killing another on a given team.
  Points are assessed depending on the weapon used; the default point
  values given in the configuration file are designed such that
  weapons that it is easy to accidentally kill with (the Panzerfaust,
  for example) get fewer points than those it is difficult to
  accidentally kill with (the sniper rifle, for example).  The same
  basic point values are used to assess the other types, as well.

  Revenge Killing
  If someone kills you, and then you kill them, this isn't considered
  a TK.  It's considered a "revenge killing" and actually gives the
  VICTIM points.  The logic behind this is, if I kill you, and you
  come back and kill me, it's probably because you feel I was doing it
  on purpose.

  Vigilante Killing
  If you're standing around and see someone TK a teammate, and your
  reaction is to kill the TKer yourself, that is considered a major
  indictment of the TKer - you get no points, and the TK gets a lot.

Finally, in one of WAB's coolest features, if users who have the admin
flag set revenge kill or vigilante kill, the victim gets enough points
to kick him.  In plain English - if you're an admin, and you see
someone kill a teammate, intentionally - just go kill him, and he'll
be kicked!  Similarly, if you get intentionally TKed, when you
respawn, just go kill the guy, and he'll be kicked.

If you make a change to your configuration file and want WAB to see
it, simply send WAB the "HUP" signal ("killall -HUP wab" under
Linux).  If you think there is a problem and you'd like to send me
WAB's internal state, do a "killall -USR1 wab", and it will create a
file called "wab_debug.log" in the directory it was run from, and 

WAB may not work with Wolf Stats, since Wolf Stats rotates the log out
from under WAB (which is pretty durn rude if you ask me; how would it
like it if WAB rotated them out from under it?).  If WAB periodically
just stops working, this is probably why.  For now, you can give WAB a
HUP signal to restart it.  I hope to have a workaround in for this
Real Soon Now; see Bug 2
(http://littleboy.tqchallenge.org/pgzilla/show_bug.cgi?id=2) if you'd
like more status or to help with this bug.



for up-to-date bug information, and to add bugs.

There are no comments yet. Be the first!