RBBS is a bulletin board system with Web interface. Users of RBBS can post new articles, and can attach responses to existing articles. As the principal purpose of RBBS is to be used as such communication system as BBS, it is useful for individual use and for one-to-many communication. The following are features of RBBS.
RBBS is available on Linux, Solaris, HP-UX, FreeBSD, NetBSD, OpenBSD, Mac OS X, and Windows (Cygwin). Other UNIX systems are also. As RBBS is implemented with the C language, no environment for running a scripting language is needed. RBBS is a free software licensed under the GNU General Public License.
To install RBBS from a source package, GCC of 2.8 or later version and `make' are required. As for Linux and BSDs, they must be already installed.
When an archive file of RBBS is extracted, change the current working directory to the generated directory and perform installation.
Run the configuration script.
./configure
Build programs. On Windows, perform `make win' instead of it.
make
Perform self-diagnostic test.
make check
Install programs. This operation must be carried out by the root user. On Windows, perform `make install-win' instead of it. You can install them into arbitrary places by yourself according to the after-mentioned steps.
make install
When a series of work finishes, the following files will be installed.
/usr/local/bin/rbbsutil /usr/local/libexec/rbbs.cgi /usr/local/share/rbbs/rbbs.dtd /usr/local/share/rbbs/rbbs.conf /usr/local/share/rbbs/rbbsstyle.css /usr/local/share/rbbs/rbbshelp.xml
Since RBBS works as a CGI script, it is necessary to set up a Web server so that CGI can be used. For example, with Apache, the following setup is performed in `httpd.conf' or `.htaccess'.
Options +ExecCGI AddHandler cgi-script .cgi
Moreover, copy `rbbs.cgi', `rbbs.conf', `rbbsstyle.css', and `rbbshelp.xml' into a directory where CGI is available. For example, if files of RBBS was installed and RBBS is published in `/home/mikio/public_html/rbbs', perform the following steps.
cd /home/mikio/public_html/rbbs cp -Rf /usr/local/libexec/rbbs.cgi . cp -Rf /usr/local/share/rbbs/rbbs.conf . cp -Rf /usr/local/share/rbbs/rbbsstyle.css . cp -Rf /usr/local/share/rbbs/rbbshelp.xml .
`rbbs.conf' installed in the above-mentioned procedure is the configuration file. Edit it by an arbitrary editor. Each line of the configuration file begins with the name of an attribute tailed with `:'. The value of each attribute is placed after `:'. The encoding of the configuration file should UTF-8. Principal attributes are the following.
systemuri: http://localhost/rbbs/rbbs.cgi jetlag: 1440 dbname: casket helpfile: rbbshelp.xml stylefile: rbbsstyle.css pagelang: ja pagetitle: Raving Bulletin Board System pageauthor: mikio pagesummary: A book of quotations can never be complete. norobot: false homepageuri: ../ adminpass: qwerqwer writepass: artflags: resflags: languages: ja,ko,zh,en,de,fr,it,es,ru,ar categories: rave,agenda,suggestion,question,answer,confession,joke sort: mdd listnum: 64 shownum: 16 feednum: 64 blknum: 4 resnum: -16
`systemuri' specifies the URI (URL) of the installed CGI script. At least, the value of the attribute should be changed for your site. Conversely, the other attributes do not have to be modified. `dbname' specifies the name of the directory to contain data of articles. The value should be a relative path from `rbbs.cgi' or the absolute path. Correspondingly, `helpfile' and `stylefile' specify the paths of the XML file for help information and the CSS file for styling. `jetlag' specifies the jet lag of the local time zone. If it is equal to or more than 1440, it is calculated according to the date of the system. `pagelang', `pagetitle', `pageauthor', and `pagesummary' specify the language, the title, the author, and the summary, of the shown page. `norobot' specifies whether robots are to be rejected. `homepageuri' specifies the URI of the home page. `adminpass' specifies the password of the administrator. If the value is empty, all users can administrate the site. `writepass' specifies the password of writers. If the value is empty, all users can post new articles. `artflags' specifies the default flags of articles. `resflags' specifies the default flags of responses. `languages' and `categories' specify the languages and the categories which are selected when an article is posted. They are composed of comma separated values. `sort' specifies the order of shown articles. The value should be one of `cda' (ascending order of creation date), `cdd' (descending order of creation date), `mda' (ascending order of modification date), and `mdd' (descending order of modification date). `listnum' specifies the number of articles shown in the newcome list. `shownum' specifies the number of articles shown in a page. `feednum' specifies the number of articles shown in a Atom feed. `blknum' specifies the number of displayed blocks when articles are shown with abbreviated. `resnum' specifies the number of shown responses. If the value is 0, all responses are shown. If the value is positive, beginning responses are shown. If the value is negative, ending responses are shown.
Although the configuration file is put on the same directory as a CGI script, since the password is described there, it must not be public. Therefore, it is necessary to set up the Web server so that the configuration file may not be exhibited. For example, with Apache, the following setup is performed in `httpd.conf' or `.htaccess'.
<Files ~ "\.conf$"> Order allow,deny Deny from all </Files>
It is necessary for the data directory specified by the configuration file is writable by the execution user of the CGI script. For example, the following commands are performed for it. You may make the effective user of the CGI script the same as the owner of the data directory.
cd /home/mikio/public_html/rbbs mkdir casket chmod 777 casket
You can use RBBS by accessing `rbbs.cgi' installed in your site. You see the list of newcome articles from above of the page. That is, titles of newcome articles are shown in the order of creation (or modification) date. If you select a title, you see the content of the article.
Navigation links are placed below the newcome list. They have the following functions.
Texts of newcome articles are shown below the navigation links. Some navigation links are placed also in the shoulder of each article. They have the following functions.
In order to post a new article, select `POST' of the navigation links. Whereat, you move to the page to input the content of the article. As well, the password for writers is asked if the administrator have set the password to the site.
Next, input `Language', `Category', `Subject', `Author', and `Text'. The inputted text will be displayed as it is. When inputting finishes , select `SUBMIT'.
Then, you move to the page to confirm the view of the article. `Source' specifies XML expression of the article. If you confirm it, select `SUBMIT' and the article is posted.
The body text of an article can be structured with XML. If the text begins with `<', the text is treated as XML. The following blocks can appear in the body text of XML. As well, the body text in plain text form is converted as a content of `asis' element of XML.
There can be the following modifications in the content of each block element and `item' element.
An example of the XML text is shown below.
<topic>Breakfast</topic> <para>Today's breakfast was ham and egg. It was yummy.</para> <list> <item>ham and egg = 340 kcal.</item> <item>croissant = 280 kcal.</item> <item>coffee = 0 kcal.</item> </list> <topic>Lunch</topic> <para>Today's lunch was <del>none</del><ins>Snickers</ins>.</para> <topic>Dinner</topic> <para>I had grilled beef at the dinner table. <emp>Rib steak</emp> is the greatest.</para> <topic>Today's Discovery</topic> <para>I found <link to="http://qdbm.sourceforge.net/">QDBM</link>. It's logo is not the greatest.</para> <graph data="http://qdbm.sourceforge.net/logo.png"/> <para><cite>Happiness is a perfume...</cite> -- Emerson</para> <topic>Today's Hello, World</topic> <asis>#include <stdio.h> int main(int argc, char **argv){ printf("Hello, World\n"); return 0; } </asis>
In order to attach a response to an article, select the `RESP' link. Whereat, the input form to write a response is shown. The left field is to specify the name of the author. The right field is to specify the body text. After inputting them, select `SUBMIT'. The article to which a new response have been attached is regarded as modified and its shown order become the top.
The body text of a response should be plain text and can not contain any line feed. If the body is empty but `SUBMIT' is selected, no response is written but the page is refreshed. If the name of the author begins with `sink:', the modification date of the article is not changed.
RBBS supports syndication of Atom 0.3. The two kinds of feed is available. The feed at the main navigation is for newcome articles. The feed at each article is for the article only.
When you select the `EDIT' link of each article, the password is asked and you move to the page to edit the article. Each article is expressed with XML. The root element is `article', whose contents are `head', `body' and `tail'. Refer to `rbbs.dtd' for the entire definition of the XML for articles. The character encoding of an article must be UTF-8.
The `head' element contains the following elements. All elements are necessary and the order is not variable.
The body element expresses the text of the article. Refer to the description of the `Posting a Response' section.
The tail element expresses responses. It contains 0 or more `response' elements. Each contain the body text of a response. The attributes of `response' element are the following. All attributes are necessary.
When you have finished inputting, select the `SUBMIT' link and move to the confirmation page. And, select `SUBMIT' again then the edit is reflected. Though the modification date of the article is changed usually, the date specified by XML is adopted if the check box of `Update Time Stamp' is off.
An article is deleted if the XML is empty when editing.
`rbbsutil' is provided as a command to administration on the machine of the Web server. This command is composed of sub commands for some purposes. The name of a sub command is specified by the second argument. The format is the following format.
`rbbsutil export' and `rbbsutil export' read the following environment variables.
Besides the above, RBBS provides the following management functions.
If you are not fond of clear text passwords in the configuration file, you can use DES cryptgraphs created with `rbbsutil password' instead of them. Then, add the prefix `crypt:' to cryptgraphs.
adminpass: crypt:Qu57sOeCZArQA
RBBS 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.1 of the License or any later version.
RBBS 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 have received a copy of the GNU General Public License along with RBBS (See the file `COPYING'); if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
RBBS was written by Mikio Hirabayashi. You can contact the author by e-mail to `mikio@users.sourceforge.net'.