drealmBBS 2.0 is now available. The contents of this notice are: -------------------------------- Packages and files Where to get them Overview Changes from 1.1 to 2.0 Packages and files: ------------------- drealmBBS-2.0.tar.gz Source and Linux binaries drealmBBS-2.0.txt An overview (probably this file) The source is developed with GNU make and GCC 2.5.8. The source code is intended to be portable. The executables were produced on kernel 1.2.13 with libc 4.6.27 in a.out format. Release 2.0 is radically different from 1.x, so no patch files are available. Where to get them: ------------------ * drealm BBS +44 (0)181 568 2204, in the drealmbbs file area * ftp://ftp.demon.co.uk/pub/unix/unix/drealm/ * ftp://tsx-11.mit.edu/pub/linux/packages/drealmbbs/ In the same locations are the Linux Software Map entries. There is an IAFA-PACKAGE file in the archives. Overview -------- drealmBBS is a multi-user BBS system. drealmBBS runs a separate process for each node, and finds out about other nodes by interrogating certain files on disk and via IPC. It needs about 1Mb virtual memory per user. ALL data is produced and stored as plain ASCII so it can be accessed by any other application. It is highly configurable. All menu options can have access controlled by user level, userflags, areaflags, and min/max times of day. You may offer your callers any of eight external file transfer protocols, any three editors and any three display programs. We have included our own line editor (isle) and our own display program (pager) which are both absolutely free of shell escapes and command access. There is support for output in up to 10 human languages or styles. Each BBS user has his/her own account in the passwd file, but may of course run drealmBBS as his shell for security. Security is also aided by reverting user to login permissions when using external file transfer protocols, editors or file viewers - and other external programs optionally. Facilities include: Private inter-user mail, with interface to external mail. A quota of external mail can be set per person, and mail can be made available only to users over a certain level or with a certain flag set. Message areas (forums): Public messages are posted without naming a recipient and can be read by anyone who may access a particular area. Areas can be open or private, read only or read/write or moderated. Each area may have an individual areamask, which represents the flag settings of the users who may access it. An area may also be restricted to people of over a certain security level. In the case of a "private" area access is restricted to only people who are specifically named within that area. Messages are linked as threads, and may be read threadwise, numerically, or by "reference" (ie always reading down through replies first). Messages may be unlinked, relinked in a different way, and copied to other message areas. Whole threads or branches may be copied to other areas, retaining their relationships. Voting: Votes are attached to public messages. File up/downloads: Functions to descend through directories and re-ascend. File descriptions held. Files may be posted between individual users. No internal protocol provided, you can use any which are available on your system. Rename, delete, edit, view files. Searches recursively from any named parent directory on filenames or file descriptions. Chat: Realtime chat on a message by message basis via pipes and sockets. Users can chat and listen whilst doing other things. Users can select chat reception on or off. Menus may disable or enable chat at any point. Broadcast chat to anyone listening, or a private message to named person. Timing: Session timers can be set on, off, or paused. Also total time per day can be limited. User defaults: An extensive range of user default choices including inactivity timeout, hotkey mode, chat message colours. Also interface with terminfo to allow user to choose his best terminal type for use with external programs. Run Unix commands or "doors" either with BBS permissions or with login permissions, as required for access and security. All above are under total control of configuration files and the semi-programmable menus. Each line of each menu can be made available only at certain times, or only to people with a certain flag set or security level. The nodes themselves may be configured to only accept callers fulfilling certain criteria. Changes from 1.1 to 2.0 ======================= New facilities -------------- Foreign Language Support - at last!!!! Now welcome users speaking different languages on your BBS. Sets of strings defined in separate files. New menu action set_language - user chooses his preferred language New menu action display_lang - displays a file coded by language-specific extension. New menu action random random to return a random integer within range of 1 to maximum number. Puts result in $random$ (G.randomnum). Fails by returning 0 and setting $random$ to 0. New menu action set_echo. Parameter is a single number: 1 - do not echo 2 - echo each character input 3 - echo a star for each character input Voting: Any area message can now support a vote on its content. Menu action create_vote creates a file called . Menu action vote allows users to cast a vote. This is a simple function and no bounds checking is done apart from preventing anyone from voting twice (ie voters can vote for an option not on offer). When reading a voting message, the votes so far are summarised at the end of the message. New menu action start_daytimer. Sets maximum time per day. Other changes and improvements ------------------------------ Distributed packages now contain both source and binaries as people were getting confused and downloading both. All doc/ files changed to .txt (from .doc). Changing area (whether by change_area or by scan) now asks each time if you want to "catch up" to $recent$, whether or not you had read any before. When initialising to C.startarea, $recent$ is taken into account silently if the user had not previously been a reader of the area. New library file "nocreate.txt" displayed after making a BBS account if the unix account cannot be created. search_filenames now wraps the user input with wildcards - so "tlx" is treated as "*tlx*" automatically. When executing destroy_area, drealmBBS now searches for the area's occurence in the users' pointer files and removes them. Before this change, if a new area was started with the same name as an old one, the users' pointers "remembered" the old one and they were not shown any new messages. Still does not remove areas from users' scanlist, as this could also be a nuisance under some circumstances. give_aka now allows one to remove an AKA altogether, previously the best you could do was set it to a [Space]! function "update" will now overwrite user's .drealmrc with acceptable values from config.user if it finds a field invalid or missing. benefit mainly when a field is added to support a new function. Still does not help if a setting chosen by a user becomes unavailable. added variable $node$ which is full pathname of user's tty added variable $currentmail$ added four more custom variables, 5-8 added variables $display$ for user's chosen file display program and $editor$ for user's chosen text editor. list_areas now takes three parameters, the first is the areaflags, second is user level and third is access mask. Eg if the menu action says "list_areas 000000000000000000000000000001 20 ??1?" the result will be to list those areas with areaflag 30 set to '1' and all others set to '0', and which can be accessed by anyone with user level 20 or over, if they are a chairman of the area. Took out hard coded "Scan for new messages?" after reading last one in each area. This can be easily emulated in a menu line, and makes it more flexible. Removed all support for menu action "silence" as it was proving impossible to really fool a user he'd still got full access! scan_areas now uses argument 'q' to scan silently and return true if the user has any new messages to read at all. 'e' still does the express verbose scan. Changed menu action "display" to only take one file at a time. True if that one file is found. This was to help develop language support. Fixed bug which stopped posting in an area with more that 3900 messages instead of 3999 fixed bug in area_change so you don't get two error messages for one bad area. Removed a bug in removing "members" from a list - when the length of the names being removed was over 1024 bytes, the program would crash. Solved by writing names to a file and using that. Fixed bug where drealmBBS's idea of the user's home directory was wrong. This only affects file-transfer. Previously, the user was placed in their drealm private files directory for file transfers. Now, they are placed in their home directory. You may need to go around tidying up the privatefiles areas, removing any ".dl" directories and putting other files into the user's home directory. THIS ONLY AFFECTS SYSTEMS WHERE $homedirs$ IS NOT THE SAME AS $privatefiles$. Thanks to sysop@peterlaz.dh.i-2000.com for the bug report. Added test for full (4000 msgs) areas to is_area_elig - about time too! Fixed flag_msg to check for authority over target message flag strings other than $myflag$ and $areaflag$ used to show a '#' for offset 1, rather than the proper first flag. This is now fixed. If $tmpdir$ doesn't exist, the error message no longer lies and tells you that you are already logged in. Package of specially written useradd, usermod, userdel included in distribution for the benefit of those sysops not using shadow passwords and whose existing useradds etc no longer support non-shadow systems. Programmer interest only ------------------------ Changes to Makefile: * TERMCAP changed to USE_TERMCAP to make drealmBBS use TERMCAP rather than TERMINFO. TERMINFO is prefered. * Unix Domain Datagrams are used rather than FIFOs if kernel version supports them * Compiler warnings tightened further (code now compiles quietly under C++ if you resolve the name clashes ("new", "this", etc.)) * displaymail and displaymsg incorporated into drealmBBS source. This is for language string support. drealmBBS now links with curses (or termcap, if you have to). * The "isle" editor has been changed to call display.o for screen size. It now ignores the command line parameters. * Removed rules for programs no longer included * Sundry local installation changes Various warnings fixed. Various indentation fixed. chatout (and timer) now puts itself into the background once it had established its socket/fifo adequately. chatfuncs.c changed to run it in the foreground. (The is because we had to be able to tell by looking at the socket/fifo whether chatout had started or not. When it was run in the background, we had to try a few times, in case it was slow starting. Now, we don't get as far as checking until it's either worked or failed.) display.c now checks with the terminal device driver for the screen size before falling back on the terminfo/termcap values. This affects mail and area message display, internal pagination, "pager" file viewer and "isle" editor. All notice screen size changes. New function Dstrcmp - like strcmp, but case sensitivity depends on C.sensitive setting. New function "menumatch" for single character option (internal) menus. Observes C.sensitive setting. U.lines and U.cols now only initialise LINES and COLUMNS environment variables. In all other places, the display.c function get_LW is relied on to set LINES and WIDTH C variables. Function "summarise" added, to run after display_msg in for voting messages. In scan_area what was variable "mode" is now called "type". All that NEW_FORCE_STUFF removed. Rewrote fieldtrans, transstring, send_now. New function whichlangfile to support display_lang Introduced new variables to hold flag strings which might be printed and indexed into.