Changes in 0.05g1 ================= Enhancements ------------ * You can now lightbar your file/message area/group selector. See the example scripts (FA-CHNG.Q-A, MA-CHNG.Q-A, FG-CHNG.Q-A and MG-CHNG.Q-A) for more information. * There can now be an default subject defined for 'Post a new message', on the command's optional data field: Example: Type : 27 (Post a new message) Example: /T=Sysop /S=Logoff_Message The above command would write a message to 'Sysop' with the subject 'Logoff message'. * A completely new communications engine is now in place. This communications engine is a lot more efficient and faster than the previous one. * When available, the script DATEEDIT.Q-A is now automaticly executed when asking for a date to enter. You could use this script, for example, to automaticly put the slashes or dashes in when entering a date. Please see the example file for more information. * The AKA editor in ELCONFIG now supports a maximum of 250 seperate AKA's and the interface has been improved. * When entering a path/filename as a JAMbase path, ELCONFIG now tries to validate this path. * In the transfer status screen, now the full path is displayed of the actual file being transferred. * EleBBS now shows the list of all files that are going to be or still need to be transferred when downloading files. * Introduction of NEWSSRV. NEWSSRV is an so-called NNTP server, NNTP means Network News Transfer Protocol but is more often called usenet or newsgroups. NEWSSRV allows you to provide your users with access to your messagebase by using their favorite newsgroup reader program like Outlook Express or Netscape's Communicator. * EleNEWS can now export to *.PKT files so you can provide your downlinks with an usenet feed. * You can now quickly jump to an RAL entry number in ELCONFIG's language-editor by using ALT-G. * Phone numbers are now better checked for newusers. * Handles and phonenumbers are now checked for IEMSI users. * Made many enhancements to EleMGR's search capabilities. * You can now use Internet's search-engines alike way of searching for keywords, eg: +EleBBS -Win32. Please note that specifying a search string like: EleBBS -Win32 will return everything that has not got Win32 in the searchstring because the string 'EleBBS' isn't marked as mandatory. * Please update RAL prompt #603 to support the extra S"k"ip command. With Skip you can skip the current area to the next areas when doing a search. * Empty language-entries in ELCONFIG's menu-editor are now shown as "[Default menu path]" instead of just empty. * ALT-F in EleMGR's usereditor now also searches for the users' handle. * When the EleBBS environment is not set, TELSRV now issues a warning. Scripting Commands Enhancements ------------------------------- (see Q-A.TXT for an explanation of what these functions do) * Added another parameter to ASK - parameter number 3 gives you the choice of [YES|NO]. When you put YES here, EleBBS will automaticly return control to the script file as soon as the last character is pressed. This would allow for things as wordwrapping. * Implemented "While" syntax to the Q-A language. The syntax is the same as that of the "IF" statement, eg: Assign 1 1 Assign 2 5 While 1~ <= #2 do Display "Counting ..." 1 Inc 1 EndWhile WaitEnter You can nest up-to 5 "While" statements. You should use the BREAK command to intercept a while loop. * Extended the functionality of DELIMIT with 3 extra commands: [SPACE|ZERO] - Fill up with spaces or zeros [FORE|BACK] - Add the characters at the front of at the end [YES|NO] - Count color-codes as string-length? * Added DOCONTINUE command. Returns [YES|NO] depedending the last choice of the user on a More(Y/n/=)? question. * GetRawKey and GetArrowKey now also return 'HOME' and 'END' keys. * You can now automaticly add a disclaimer to all messages posted by EleNEWS, by using the -D switch. * Added GETTELNET command, can return [YES|NO] depending on the actual status. This only returns YES if the session is started using EleBBS' TELSRV, not with other telnet servers like COM/IP or NetModem. * Added another parameter to GETCHOICE [YES|NO]. It defines wether to send an extra 'new-line' command after the user has chosen. Bug Fixes --------- * ZModem downloads under EleBBS' built-in telnet clients didn't work. * Events as defined in ELCONFIG weren't executed in EleBBS. * Using the extra AKA's could crash EleBBS. * ELCONFIG's limits-editor didn't sort the event limits. This is a problem because EleBBS assumes the limits to be sorted to find out matching security levels. * EleBBS/DOS could sometimes show the "Please wait a moment ..." message on a weird position on the screen when shelling to DOS while in an IEMSI chat. * The "QUIT" message in EleBBS' built-in IRC client didn't work. * Commands "/J" and "/P" (shorts for /JOIN and /PART) didn't work, in the IRC client. * Language codes when used in the ASSIGN command in the questionnaire script, weren't converted. * EleNODE wasn't able to compile nodelists that didn't have a number as the extension (eg: FDNODE.PVT), fixed. * Sometimes when logging onto telnet, you could get some left-over ANSi commands on the input line, these should be fixed now. * When disconnecting a TELNET user it might have not always been visible for the user itself that he was disconnected * The first character of a Window title in EleBBS/W32 was cut off. * When you would edit a user record in EleMGR (for example the user's location) and you went back to the list, it might have still showed old information. * EleBBS/GUI would display the "Are you sure you want to terminate" as an error-box, while this had to be a warning-box. * When you would show an ansi within another ansi it would show some garbage characters onto the screen (`F7:`B0:). * EleBBS/GUI would not remember it's fontsettings nor would it remember it's console size window. It would remember the actual windowsize however, which ended up in a rather ugly combination of large window, small console size. * The users' amount of number of messages posted was not increased at all. * When editting menus and the language-settings menupath was empty, EleBBS would fall back to the default menu path and not to the current directory. * When importing newsgroup messages into your messagebase, EleNEWS now should better preserve the time/date stamp of the imported message. * When replying to a newsgroup message or posting a new newsgroup message, the "To" field is now set to "All" instead of empty. This should fix some problems with editors. * Fixed a small, hard to reproduce, bug in the credit system as implemented for the menu-ing system. * ReturnReceipts as send by EleBBS would show the incorrect date and original recipient. * Downloading a large chunk of files (locally) to a non-existent path could eventually crash EleBBS. * The questionnaire system would see the ASCII character #224 as 'insert' while this is a special Russian letter. * When you would write a message using EleBBS' internal message editor and the sentence was word-wrapper, it actually got added one garbage character, while this was not shown on the screen. * EleBBS could mistake a 24000 BPS connect for an 2400 BPS connect. * ELCONFIG/W32 and ELCONFIG/OS2 sometimes said an area/group number was already defined while it was not. * When the "Ignore Dup Extension" was set to 'No', EleBBS would not mark any files as duplicate. * The questionnaire command SETFLAG was acting incorrectly. * It was possible to view/list the contents of a password protected file without entering a password. * Using more "RETURNS" than "GOSUBS" in the questionnaire system, could crash EleBBS. * When a user selected a file that would probably exceed it's daily timelimit, EleBBS would not show XFERTIME.A?? * Running EleFILE TOUCHMOD would always result in EleFILE TOUCH. * Using a zero as a filearea in EleFILE would not be supported. * Extra time a user should get after an upload, wasn't correctly granted to a user. * Attaching files locally to an user would not work. * The sample LANGUAGE.RA did not contain the full path to the ENGLISH.RAL - this would cause users the need to edit the language- settings when they wanted to test the telnet server. Developer information (Long FileName Support) --------------------------------------------- Starting from EleBBS v0.04.g1 there is support for filenames longer than the standard 8.3 (DOS) format. Because the original RA structures does not allow this, there had to be made an extension to these structures. There has been added an 4-byte field and the "FreeSpace" field has been reduced to remain compatible with earlier versions of EleBBS and other BBS programs/utilties. The added field is called LfnPtr and is basically the same as the LongDescPtr field but gives an file-offset to the longfilename field as stored in the same file as the descriptions are. Where possible (Windows95/98/NT) the short version of the filename is also stored in the normal name to make sure that EleBBS/DOS can handle the file. For more information look at LFNEXAM.ZIP which includes Pascal example code. Structures ---------- FILESHDRrecord = record Name : String[12]; Size, CRC32 : LongInt; Uploader : String[35]; UploadDate, FileDate, LastDL : LongInt; TimesDL : SmallWord; Attrib : Byte; PassWord : String[15]; KeyWord : Array[1..5] of String[15]; Cost : SmallWord; LongDescPtr : LongInt; LfnPtr : Longint; FreeSpace : Array[1..16] of Byte; end; {Attrib - Bit 0 : Deleted 1 : Unlisted 2 : Free (don't adjust ratio) - Does NOT affect "Cost" 3 : Not available (don't allow downloads) 4 : Locked (no kill) 5 : Missing/offline 6 : No time restrictions - always allow DL } PostType = (postNever, postAlways, postRegistered); TagFileRecord = record { RA v2.02 but never properly documented } Name : String[12]; { For using LFN, use the RecordNum and } Password : String[15]; { Look it up } Attrib : Byte; AreaNum, RecordNum : SmallWord; Size : Longint; Filedate : Longint; { Not used } Cost : Longint; CDROM : Boolean; FoundFirst : Boolean; { Internally used only } xFerTime : SmallWord; end; { TagFileRecord } TelnetRecord = record MaxSessions : Longint; { Maximum concurrent sessions } ServerPort : Longint; { Port we are listening on } StartNodeWith : Longint; { Starting point for the nodes } Attrib : Longint; { Bit 0: Deny telnet download } { Bit 1: Start EleBBS minized for telnet nodes } ProgramPath : String; { Path were to find EleBBS.EXE } NodeDirectories : String; { Directory TELSRV will switch to } FreeSpace : Array[1..20] of Longint; end; { Telnetrecord } LightbarRecord= record LightX : Byte; { X, Y screen coordinates } LightY : Byte; LowItem : String[135]; { Low-color item } SelectItem : String[135]; { Selected item } Attrib : Byte; { Bit 0: Enabled } FreeSpace : Array[1..100] of Byte; end; { LightbarRecord } NewsArticleRecord= record GroupName : String[100]; ArticleNr : Longint; { Article number in news group } AreaNum : Longint; { Areanumber in MESSAGES.RA } BodyLen : Longint; { Length of the body text } Attribute : Longint; { Bit 0: Tossed into msgbase? } TimesSent : Longint; { Number of tries sending this msgs?, } FreeSpace : Array[1..100] of Longint; { Body : Array[0..BodyLen] of Char; } end; { NewsArticleRecord } NewsGroupStatRecord=record GroupName : String[100]; LoMsgCount : Longint; FreeSpace : Array[1..40] of Longint; end; { NewsGroupStatRecord } EleMessageRecord = Record AreaNum : Longint; GroupName : String[128]; Attribute : Byte; { Bit 0: Available for usenet } PostingAllowed : PostType; FreeSpace : Array[1..40] of Longint; end; { EleMessageRecord } NewsServerRecord = record MaxSessions : Longint; { Maximum concurrent sessions } ServerPort : Longint; { Port we are listening on } Attribute : Longint; { Bit 0: Allow Sysop to logon } FreeSpace : Array[0..38] of Longint; end; { Telnetrecord } ELECONFIGrecord = packed record VersionID : SmallWord; { $005 } UtilityLogFileName : String[250]; { Utilities/Servers logfilename } FreeSpace : Array[0..8191] of Byte; end; { ELECONFIGrecord }