Skip to the content

Kansas State University

WebBBS configuration

This is excerpted from the documentation that comes with the WebBBS package, version 4.33. For the uncustomized version, see

To create a message board here at K-State, send the values for the configuration options below to

The absolute path (minus a trailing slash) of the directory in which all the WebBBS data files are to be stored. This directory must be set world-writable, or else WebBBS won't be able to use it!
The URL address of the WebBBS configuration script itself. (In other words, it should contain the URL to be referenced to run the script!)
The name of your specific discussion board. THIS VARIABLE MUST BE DEFINED FOR COOKIES AND CERTAIN OTHER SCRIPT FUNCTIONS TO WORK PROPERLY! If you don't want the board name to print, set $printboardname as 0. Do *not* simply leave $boardname undefined.
You can optionally define here a shorter version of your forum's name, to be used in the subject lines of any e-mail notices sent out announcing new posts. (If this variable is not defined, your forum's full name will be used.)
This is the directory in which all of the script files reside. (They don't *have* to all be in a single directory, but it's certainly simpler if they are.) As you did when you defined the data directory, be sure to define this variable with a *path*, and not with a URL. Note that this directory, unlike the data directory defined in your config script, does *not* have to be world-writable.
This variable defines what, if any, mail program is to be utilized by the script. It can be defined in one of three ways. The prefered definition is the absolute path to the "sendmail" program, at least if you're on a server that *has* it. (NT servers do *not*.) Note that this is *not* the same as the "mail" program, and has absolutely nothing to do with Matt Wright's "formmail" or any other CGI script. If your system doesn't have "sendmail," you can instead define the variable as "SMTP" to instruct WebAdverts to access your server's mail server directly. Finally, if it's available to you, you can utilize Libnet's "Net::SMTP" Perl module by defining the $mailprog variable as "libnet". If you simply don't want the various e-mail notification functions activated, leave this variable unassigned.
The name of your board's administrator. It will appear at the bottom of script-generated pages with an e-mail link (using $maillist_address, below).
The address you wish to use for e-mail related to your BBS. The "@" character in your address must be "escaped" with a backslash (e.g., "scripts\"). Note that this variable should be assigned even if you don't enable the various e-mail notification functions, since the maillist address is also shown on some of the BBS's admin pages to let people know how to contact you if they have any problems.
If you send out e-mail notices, they will be addressed "From:" the $maillist_address above, and "To:" the address defined here. If you don't want to receive copies of all the notices, define this with a dummy value. If you *do* want to receive copies, define it with a real address (such as your administrative address already defined above). Please note that by "dummy value" I do *not* mean that you should send the notices to someone else's domain! Set up an address within your own domain which automatically deletes incoming mail!
If you don't want to set up any sort of e-mail list to notify interested parties of new posts, simply leave this variable unassigned. If you have a relatively low-volume board, and want to allow people to get e-mail copies of any messages immediately as they are posted, set it to "1". If you want to set up a digest-style notification list, set it to "2". Note that the digest mailings are *not* handled by the WebBBS script itself; if you want to send out that sort of notification, you'll also need to set up the separate WebBBS Digest script available from the WebBBS download page.
If you want e-mail notices to be sent out, but *don't* want just anyone visiting your board to be able to subscribe, set this variable to 1. (Setting this variable to 1 but leaving $email_list set to 0 is an easy way to ensure that the administrator gets copies of each post, even if no one else does.)
If you set this variable to "1", any e-mail notifications will contain only the header information, and not the main body of the post. This is handy if you want to be able to let people know when new messages are posted, but still want them to have to come to the BBS itself to *read* thos messages. Note that this setting will not effect the manner in which digests are sent out; if you're using the digest option, the e-mail notices will *always* contain the full text of the messages posted.
If you want to allow your visitors to create user profiles, define here the path (not the URL) of the directory in which the profile files should be stored.
If you want to allow your visitors to upload graphic images to your server to be included with their profiles, define here the URL corresponding to the directory defined in $UserProfileDir. (Graphic images will be stored in the same directory as the profile files themselves; the URL is necessary, of course, for *access* to the graphics.) If you do *NOT* want to allow users to upload files to your server, simply leave this variable undefined. You do *not* have to allow file upload in order to allow your users to create profiles.
If you're allowing file uploads, define here the maximum size (in kilobytes) of the graphic files that can be uploaded.
The path to a text file containing any HTML code (META tags, etc.) to be inserted within the <HEAD> section of the pages produced by the script.
$HeaderFile & $FooterFile:
The paths to text files containing HTML code to be placed immediately following the <BODY> tag and at the very end of the BBS index page. These are included to allow you an easy way to give your WebBBS index page the same "look" as the rest of your site's pages. This header and footer are used only on the main message index page.
$MessageHeaderFile & $MessageFooterFile:
The paths to text files, similar to the above, containing code to be placed at the top and bottom of the BBS message pages. You can use the same header and footer on these pages as you use on the index page, or use different ones, or use none at all. This header and footer are used on all individual message pages, configuration pages, and administrative pages. (In other words, they're used on everything *except* the main message index page.)
Any attributes (BACKGROUND, BGCOLOR, TEXT, etc.) which should be assigned to the <BODY> tag in message posts. Do *not* include in this variable a full <BODY> tag; include only the contents *of* the body tag.
Any attributes (FACE, etc.) which should be assigned to a page-wide <FONT> tag. Table cells will also be defined with the same <FONT> tag, so that the page presents a uniform appearance even in Netscape Navigator, in spite of the fact that that browser is too stupid to realize that global <FONT> specifications *should* apply inside tables as well as outside of them.
The attributes (BORDER, BGCOLOR, etc.) to be used in the table containing the "navigation bar" at the tops and bottoms of your pages.
Font specifications specific to the nav bar.
The attributes (BORDER, BGCOLOR, etc.) to be used in the tables used by the script for the "post form" boxes.
Font specifications specific to the above tables.
By default, WebBBS (as of version 4.20) creates its index listings with "unbulleted" lists, using the <DL> and <DD> HTML tags. If you prefer "bulleted" lists, set this variable to 1, and the script will instead use the <UL> and <LI> tags.
An optional list of "mandatory" subject prefixes. If you've defined anything here, those posting on your forum will have to pick one of your options, which will precede whatever they enter as the subject of their message. For example, if you want an easy way to tell business-related from personal messages on your forum, you might use "@SubjectPrefixes=('Business:','Personal:');" so that all message subjects end up beginning with either "Business:" or "Personal:".
$MessageOpenCode and $MessageCloseCode:
These variables should be defined with any HTML code you want to appear before and after the text of messages. They can be used, for example, to place message text within <BLOCKQUOTE> tags, or to highlight the text with a different font and/or color than is used on the rest of your site. $MessageCloseCode should, of course, contain "closing" tags for whatever $MessageOpenCode opened.
$NewOpenCode and $NewCloseCode:
These variables should be defined with any HTML code that you want to have appear before and after "new" messages in the index listings. By default, a red "NEW:" will show up preceding the message subject in the index listing. You might want to change it to call a graphic image, for example.
$AdminOpenCode and $AdminCloseCode:
Very similar to the above, these variables should be defined with any HTML code that you want to have appear before and after admin posts in the index listing.
Under most circumstances, this variable should be defined as 1. Set it to 0 only if, for whatever reason, your server doesn't support the flock() command. (If this variable is set to 0, a semaphore-based file locking will be used instead of flock(); while it works reasonably well in most situations, it isn't nearly as efficient.)
The number of seconds that the various "admin" screens ("Your message has been posted," etc.) will wait before sending a visitor back to the main index. If you're displaying banners on the pages, you'll probably want to set this fairly high; otherwise, set it low so that your visitors don't have long waits. If you define this variable to 0, the pages will *not* auto-refresh at all.
This can either be set to "horizontal" (or "horiz" or "h") if you want an upper frame for the message index and a lower frame for message texts, set to "vertical" (or "vert" or "v") if you want side- by-side frames, or left undefined if you don't want to use frames at all.
If you're using WebBBS with frames within another frameset, you'll want to define this with the name of the frameset in which WebBBS is being displayed. (The default definition of "_parent" might also suffice, depending upon your setup.)
If you're using WebBBS with frames, you can define this variable with the URL of a page you want to appear initially in the WebBBS "message" window (which otherwise will initially be blank).
If you set this variable to 1, any new posts will be put "on hold" until approved by the administrator, rather than being posted publicly immediately. Note that in order to run a moderated board, you *must* have registered WebBBS and obtained the administrative script, as without it, you'd have no way of approving the posts!
Generally speaking, this variable should be left undefined, as the search facilities built into WebBBS are quite sufficient for most any purpose. However, if you've got a site-wide search facility which includes the message content of your forum(s), and you prefer that all searches be conducted through it, you can define this variable with its location. Anyone clicking on the "Search" option on a WebBBS page will then be taken to *that* search form, rather than the one generated by WebBBS itself.
If this is defined (with a number), visitors to your bulletin board will be able to access a list showing who's posted the most messages.

You may use this hash variable to define the names and URLs of "extra" links you'd like to have appear in the main index page navigation bar. These could be links to FAQs or policies pages, a link to an archive board, a link back to your main page, or anything else you find relevant. You can specify a TARGET destination for the link by appending it to the URL, separated by a "pipe" (|) character. If you do *not* specify a TARGET, the link will open in the window used for display of messages. The example below would put two new links on the navbar: a link to a "welcome" page, which would be loaded (by default) in the message window, and a link to a "help" page, which would be loaded in the full browser window.

%Navbar_Links = (
$SepPostFormIndex and $SepPostFormRead:
These variables determine whether "post message" forms will appear on the main index page and/or the individual message pages, respectively. Values of 0 instruct the script to include the forms as part of the pages; values of 1 instruct it to have those forms appear on pages by themselves. If you're using frames, these variables are automatically set by the script to 1, to ensure that the post forms appear in full windows and can thus be more easily used.
By design, WebBBS index displays default to a simple chronological display. If you prefer a different style, define it here. The available options are "Chronologically", "Chronologically, Reversed", "Alphabetically", "Alphabetically, Reversed", "By Threads", "By Threads, Reversed", "By Threads, Mixed", "Compressed", "Compressed, Reversed", "Guestbook-Style", "Guestbook-Style, Reversed", "Guestbook-Style, Threaded", "Guestbook-Style, Threaded, Reversed" and "Guestbook-Style, Threaded, Mixed".
This variable sets the default for the age of messages shown in the index list. If left unspecified, the index will display messages posted within the past two weeks. It can be defined with whatever value you like, such as "2 Day(s)", "3 Week(s)" or even "10 Month(s)". Note that the format of the definition must match that seen on your forum index page.
If you or your users utilize the "threaded guestbook" listing style (in which the full text of all messages in a given thread is displayed), you can define here the maximum number of posts which will appear on a single page. If you don't use that listing style, or don't have a lot of long threads, you can simply leave it defined as 0, so that *all* messages are displayed.
If this variable is set to 1, the board name defined above will be included at the top of the script-generated pages. If the variable is set to 0, it won't be. This allows you to avoid duplication if you're using a graphic image in your header, for example, as a title.
A string defining the format in which you want dates to appear on the board. The following codes are available:

   %mo% = month (numeric)
   %MO% = month name (as defined in
   %dy% = day of month (numeric)
   %DY% = weekday (as defined in
   %yr% = year (two-digit)
   %YR% = year (four-digit)
   %am% = either "a.m." or "p.m."
   %sc% = seconds (two-digit)
   %mn% = minutes (two-digit)
   %hr% = hour (12-hour clock)
   %HR% = hour (24-hour clock)

So, for example, "%mo%/%dy%/%yr% %HR%:%mn%" would display dates as "7/22/00 15:30"; but "%DY%, %dy% %MO% %YR%, at %hr%:%mn% %am%" would display as "Wednesday, 22 July 2000, at 3:30 p.m."
This variable defines the format in which the index should be displayed. Defining it as 1 gives each entry a single line, while defining it as 2 gives each entry two lines. (The latter is the better bet if you're using a longer date format and/or displaying extra information such as IP addresses or view counts.) You can also define the variable as "news" in which case the index will be displayed in a tabular format similar to that utilized by many Usenet newsreaders.
$InputColumns & $InputRows:
These variables define the size of the text input box for messages. The default size is 80 columns by 15 rows. The smallest allowable size is 25 columns by 5 rows.
If you are in one time zone and your Web host is in another, you can use this variable to adjust the times shown for posts on your BBS. For example, if your server is located in the Eastern time zone, but you're in the Pacific time zone, set it to "-3".
If this variable is set to "0" the board will function normally. However, if it is set to "1" the message posting form will not appear either on the index page or on individual message pages. This allows you to set up a "read-only" archive board. With the administrative script (see below), of course, the administrator will be able to post even to a "read-only" board. This allows you to set up "announcement" boards to which you and only you can post. (See also $AllowNewThreads and $AllowResponses, below.)
WebBBS automatically recognizes a double line break or an indentation (either a tab or multiple spaces) as the start of a new paragraph. If this variable is set to "0" any single line breaks will be ignored. If it is set to "1" any single line breaks will be converted to <BR> tags. The former option is usually preferable if most posts consist of straight text. If, however, those posting on your board frequently post itemized lists, you may want to use the second option, to allow more accurate formatting.
If this variable is set to "1" the new text of a message will automatically be quoted in the message response input box. If it is set to "0" the box will be empty.
This defines the character you want used at the beginning of "quoted" lines.
If you set this variable to 1, the script will attempt to "automatically" hotlink any URLs or e-mail addresses included in the body of a message. (As of WebBBS version 4.20, auto-hotlinking and the allowing of HTML code in messages are no longer mutually incompatible features. The two can now co-exist harmoniously.)

This variable defines a list of "codes" which will be automatically converted when they appear in the subject or body of a message. It can be used, for example, to replace certain ASCII "smilies" with graphic images. (Hence, the variable's name.) The example below instructs the script to replace a variety of ASCII "faces" with appropriate graphics. Note that the backslash (\) must be "escaped"; in other words, if you want to use it, use two in a row instead of just one. (If you don't, the script will not run.)

%SmileyCode = (
   ':)','<IMG SRC="smile.gif" BORDER=0 ALT=":)">',
   ':(','<IMG SRC="frown.gif" BORDER=0 ALT=":(">',
   ':O','<IMG SRC="oh.gif" BORDER=0 ALT=":O">',
   ':D','<IMG SRC="biggrin.gif" BORDER=0 ALT=":D">',
   ';)','<IMG SRC="wink.gif" BORDER=0 ALT=";)">',
   '8)','<IMG SRC="glasses.gif" BORDER=0 ALT="8)">',
   ':b','<IMG SRC="tongue.gif" BORDER=0 ALT=":b">',
   ':\\','<IMG SRC="ohwell.gif" BORDER=0 ALT=":\\">',
   '>:(','<IMG SRC="../smilies/angry.gif" BORDER=0 ALT=">:(">',
   ':|','<IMG SRC="indifferent.gif" BORDER=0 ALT=":|">'

This variable is essentially identical to the above variable, except that (a) only text in the body of a message will be converted, and (b) the matching for this variable, unlike the matching for %SmileyCode, is case-insensitive. This variable is intended to be used to allow certain basic formatting functions to made available to your forum's users, even if you don't want to let them utilize HTML code directly. (The reasons for the two differences in the way the variables are handled are [a] the fact that you probably don't want your visitors leaving formatting tags in their message subjects unclosed, and thus fouling up your index listings, and [b] the fact that while you probably don't want ":d" and ":D" being treated by the script as the same thing, you most likely *do* want "[code]" and "[CODE]" treated the same.) The example below provides your visitors with the same formatting options available on the WebScripts support forums.

%FormatCode = (
   '[red]','<FONT COLOR="ff0000">',
An optional bit of text or HTML code to be appended to the subject of any message which does not contain any original body text. ("NM" is a standard Usenet/Internet abbreviation meaning "no message.")
An optional bit of text or HTML code to be appended to the subject of any message which includes an image URL. (On forums where many visitors use the "optional image URL" slot just to include a banner or other advertisement of their own Web site, you'd obviously probably not want to define this variable. But on forums where the presence of pictures in a message is of actual significance, the "telltales" can be quite handy, allowing readers to quickly find the messages which include such pictures.
An optional bit of text or HTML code to be inserted between threads in the index listing. (It can be as simple as a <P> tag.)
An optional bit of text or HTML code to be inserted between messages in the various "guestbook" style listings.
If you leave this defined as 1, posters' e-mail addresses will be shown on the message display pages (if an e-mail address was provided, of course), and it will be possible for those reading messages to send private e-mails to the authors. If you undefine this variable, e-mail addresses will *not* be displayed. If you have many users who want to take advantage of the script's e-mail notification features, but *don't* want their e-mail addresses seen by others, this can be handy.
If this variable is set to 1, posters' IP addresses will be resolved to domain names. If it is left undefined, they will not be resolved.
If this variable is set to 1, posters' IP addresses or domain names, as determined by the setting of $ResolveIPs, will be displayed (when the index listing or message files are viewed) along with their names and e-mail addresses. (Note that they will be recorded in the message files for the administrator's reference, regardless of whether or not they're actually displayed to visitors.)
If this variable is set to 1, the script will keep track of and display in the index the number of times each message has been read. (With version 4.20, the database of view counts has been separated from the main index database, so keeping the view counting "turned on" should no longer significantly effect a busy forum's efficiency.) If it is set to 0, view counts will not be maintained. If it is set to 2, view counts *will* be maintained, but will not be displayed. (The latter setting might be handy, for example, if you want view counts to be available to the administrator, but not to just anyone who visits the forum.)
If this variable is set to "0" (or commented out) the use of "cookies" will not be implemented. If it is set to "1" it will be. "Cookies" allow the board to recognize return visitors, keep track of messages posted since their previous visit, maintain their personal index display preferences, and automatically insert their names and e-mail addresses into the post forms.
This is the maximum size (in kilobytes) of messages which can be posted. The primary purpose of this variable is to prevent users from posting entire book chapters or the full text of long CGI scripts....
This variable defines the maximum length of message subjects and author names.
If your WebBBS script is password protected via .htaccess or another system which sets the "REMOTE_USER" environment variable, you can elect to force users to post under their login names by setting this variable to 1. (The variable will be logged and will be available to the administrator when viewing messages, even if you don't require that it be used as a posting name.)
Set this to "1" if you want users to be able to include a password with their messages which will allow them to come back and delete them on their own. Leave it undefined if you want them to be stuck with what they posted.
Set this to "1" if you want users to be able to request e-mail notifications whenever someone responds to their messages. Leave it undefined if you want to require them to actually visit the BBS again to find out. This ONLY defines whether or not people can request automatic notifications of responses to their own posts, and is distinct from the $email_list variable, which defines what, if any, new post "subscription" capability your board will support. Like the other e-mail functions, the automatic notification of responses will be disabled if you do not define the $mailprog variable.
Set this to "1" if you want your users to be able to "preview" their posts before actually submitting them.
If this variable is set to "1" people posting messages will be able to embed HTML tags (hyperlinks, image references, formatting commands, blinking text, etc.) in their messages. If it is set to "0" they will not be able to do so. Be aware that allowing embedded HTML virtually invites abuse of your bulletin board. Setting the variable to "2" will allow any HTML codes to be displayed in the message rather than being either interpreted or stripped. This can be handy, for example, if the subject of your BBS is how to code HTML. SSI commands will *never* be interpreted by the script. If this variable is set to "2" they will be displayed along with any HTML tags; otherwise, they will simply be stripped.
Set this to "1" if you want users to be able to include a URL link at the bottom of their messages. (This can be handy if you don't allow HTML in posts, and can even be nice if you *do* allow it.)
Set this to "1" if you want users to be able to include a link directly to a graphic image on their own or another server. Depending upon the nature of your BBS and the demographics of your audience, of course, you very well may not want them to be able to post unapproved graphics....
$AllowProfileHTML, $AllowProfileURLs and $AllowProfilePics:
These three variables work just as do the $AllowHTML, $AllowURLs and $AllowPics variables, only they apply (obviously) to user profiles rather than to messages.
If you set this variable to 1, any information provided in the optional link and image fields will be stored in the user's cookie file. If you have a lot of people who use those fields for a sort of "signature," you'll probably want to turn this feature on. If, on the other hand, most of your users only fill out those fields with information relevant to a specific post, you'll want to keep it turned off.
If you set this variable to 0, users will *not* be able to alter the style in which messages are displayed. (They will, of course, still be able to search for specific messages.)
If you set this variable to 0, users will be able to post responses to messages, but will *not* be able to start new threads. (See also $AllowResponses, below.)
If you set this variable to 0, users will only be able to post new messages; posting follow-ups (responses) to existing messages will not be possible. This is useful if, for example, you're setting up a "classified ads" system, and don't want visitors to be able to respond publicly to the listings. Note that if you set both $AllowNewThreads and $AllowResponses to 0, users will not be able to post any messages at all. This is very similar to the result you get if you define $ArchiveOnly as 1. However, there is one important difference. A true archive board will not allow users to specify a time frame to view, since, for example, viewing all messages posted within the last "2 Week(s)" is rather pointless if the board doesn't contain any messages posted less then two months ago. On these boards, only actual searches (which can, of course, include date ranges) will display any messages. On the other hand, if you have *not* defined the board as an archive board, but have simply "turned off" both $AllowNewThreads and $AllowResponses, users *will* be able to select default time frames for their viewing. If you're running a *busy* "announcements" board, this is probably a preferable option.
You can, if you like, define here the path of a file in which "naughty" language (words or phrases you don't want included in posts on your forum) will be stored. The file can be edited with the administrative script.
If this variable is set to 1, any words (or character strings) matching the contents of the "naughty words" file will be replaced by a string of hash marks in the actual post. For example, if you defined $NaughtyWords as "this that" and someone attempted to post the message, "This is one thing, that is another," the actual post would appear as "##### is one thing, ##### is another." If you leave this variable set to 0, a message containing forbidden words will not be posted at all; instead, the poster will be shown a message stating that his message was rejected for content, and will be given the option to go back and "clean up" the post himself.
If you set this variable to 1, whenever a visitor posts a message, the "thanks for posting" message will display his IP address and host domain. This can serve as a subtle reminder to potential troublemakers that they aren't really anonymous, but is *not* likely to annoy legitimate posters and visitors, as displaying IP addresses on the index page might.
You can, if you like, define here the path of a file in which the IP addresses or domain names of any individuals you want banned from your forum will be stored. The file can be edited with the administrative script.
If this variable is set to 0, anyone whose IP address or domain name matches an entry in the "banned users" file will simply be unable to post messages to your forum. If it is set to 1, such visitors *will* be able to submit posts, but those posts will only appear on the forum if and when an administrator approves them. (In other words, they'll be treated as if you were running a moderated forum.) If the $BanLevel variable is set to 2, on the other hand, such visitors will not only be unable to post, but will not even be able to read messages posted by others. They won't have any access to the forum whatsoever.

Admin Functions

The admin index, from which you can easily delete any or all of the messages on your board, is accessed by adding "-admin" to the URL of your message index. For example, if your board index's URL was "" you'd type "".

The first time you access this index, you should be sure to use the "change password" function to *set* a password. (For the first time only, you can type anything or nothing in the "old password" box.)

Note that *regardless* of whether or not you've enabled the admin delete capability, users will still be able to delete their own posts if they've assigned passwords to them (assuming, of course, that you've allowed them the option). The admin password, if enabled, will also allow individual deletion of *any* post.

To create a message board with admin functions, send the values for the configuration options below to

This should, of course, be defined with the full path (not the URL) of the main administrative script.
Similarly, this variable should be defined with the URL (not the path) of the administrative configuration script.
If you define this variable with the full path of a directory in which you want "archived" messages to be stored, you'll have the option not only to delete messages that you want to remove from your main forum, but also to archive them. The archive can be used for simple storage, or can, optionally, be set up as a separate "read-only" message board distinct from your main forum. (The latter, of course, requires that you set up a new WebBBS configuration script appropriately.)
If you set this variable to 1, the script will simply ignore all of its own internal password checks. Obviously, this is *not* something you'd normally want to do. However, if you've stored your admin script in a password-protected directory to which you're certain that no one else has access, then it can make your own use of the admin script a bit easier, by eliminating the "double" password protection.

E-mail Notification Lists

WebBBS is not designed to handle very large e-mail notification lists, and the basic notifications are frankly not handled in the most efficient manner possible. If your notification list starts to get large (several hundred addresses), you will notice a significant lag time in the processing of postings. Before that happens, you should switch from the basic "as messages are posted" notification scheme to the more efficient digest setup.