Changes in 0.06g1 ================= Enhancements ------------ * EleBBS now has a version available that's optimized for 386 CPU's. * Disk-size and Diskfree in all programs (including EleBBS itself) are now comma seperated (as for example in an Win9x dir listing), the programs will use the country local settings for this. * Changed the flexibility of access-settings for NEWSSRV. * If you specify the /OG command on an menu-type 49 and 50, makes sure you only select a group (and not automaticly the area as is the default). * User-defined aligning of macro-characters is implemented: . - Default aligning (^K....A) ( 12) , - Align to the right (^K,,,,A) ( 12) ? - Align to the left (^K????A) (12 ) ` - Center align (^K````A) ( 12 ) * Support for the WHONLINE.Q-A - when found, this is executed instead of the default who's online list. * Support for an macro command list in ELCONFIG. Press F3 on all places where F1 is also an valid key, and you'll be presented with a list showing all available macro's, selecting one will insert it directly into the edit field. * Created EleMON. EleMON (Win9x/NT and OS/2 only!) is a line monitor that gives you full control over an EleBBS session from anywhere in the world. Also (when run locally) it allows to send messages to a node or bring down a node. Run EleBBS with the -XM switch to make it available for EleMON. Please note that this will start a server on a port - this is also accessible by other internet users!! * Support for LASTCALL.Q-A - when found, this is executed instead of the default lastcallers list. * Added full support for the 115.200 BPS limit. * Rewrote the input routines to make them far more efficient and allows for nice things like cursor controls in the input routines and horizontal scrolling. These routines are used throughout the whole of EleBBS. * EleBBS now (in the messagebase reader only) has support for pipe-color-codes. * Now you can define wether EleBBS should auto-capitalize login names at login. * The default lightbar item now can be selected in a menu. * EleBBS has an internal full-screen message editor. In ELCONFIG -> Options -> Messages -> External Editor, you put INTERNAL and it'll use it's internal FSED. * You can now specify FTP paths for filepaths. (OS/2, Win32) * By editting (in ELCONFIG -> Manager -> Limits) the 300 BPS setting, it will ask wether this should be the default for all BPS rates. * The menulist in ELCONFIG is now sorted on alphabetical order. * Added support for "unlimited" time in EleBBS. Set the timelimit to 65535 minutes. This way, EleBBS will never decrease the time and all macros will return "(Unlimited)" (or the appropriate RAL prompt). * Same support for unlimited downloads as for timelimit. * You can now automaticly make EleBBS search for an free nodenumber by specifying /N-1 on the commandline instead of an actual nodenumber. * EleFILE now can generate HTML'ified lists of all the files. * EleNEWS now is able to automaticly convert attachments of newsgroup messages back to files. * NEWSSRV now keeps a statistics file to keep read/post/deny statistics, use NEWSSRV /STAT to generate those statistics. * Full support for combined message reading. * ALT-D (User display mode) in EleMGR has been supported. * Implemented another Win32 communication engine which should be a lot more flexible on Windows95 systems. Scripting Commands Enhancements ------------------------------- (see Q-A.TXT for an explanation of what these functions do) * Added DisplayLocal function * Added FileExist command * Added GetSystemName command Bug Fixes --------- * Using statusbar 10 (no statusbar), didn't use the full screen. * ELCONFIG could issue a runtime error after selecting a large number of menus. * EleBBS/2 (this is an specific EleBBS OS/2 problem) would give an runtime error if at startup the TIMELOG.BBS file did not exist. * Running EleFILE FILELIST on large filebases could result in an negative value at the end of the listing. * Sending an empty line to NEWSSRV would return an error code to the remote, confusing some clients. * Sending the QUIT command to NEWSSRV, didn't always abort the session * Using *U on the MiscData line of a menu didn't work. * Editting the user's security settings, wouldn't update the online security settings. * EleFILE EXPORT did not correctly process it's parameters. * EleFILE SORT could (in some very weird cases) mess up your filebase. * Running 32-bit doors under Win95 was not possible. * Searching of duplicate files on long filenames did not work. * The "Warning! You have files tagged, logoff (y/N)?" message was not working. * EleMGR did not update the USERSIDX.BBS, causing potentional problems with loggin on. Running EleUSER fixed this. * The menu function "ViewFile" was only able to use 12 characters for the filename. * Received /ME's in EleIRC would not show the correct "sending" nick. * The IRC client now can send and receive messages of much larger size than before. * Added a switch to the IRC client, /REALNAME= which sets the realname for the user as to use on the IRC client. This one defaults to ^FA which is the users' realname. * EleNEWS did not support messages longer than about 64kbyte. * Extended characers in usernames could cause to have a different CRC generated by EleBBS than by other programs accessing this sort of userbase. * On some Windows95 systems the Zmodem downloading did not work correctly, should be fixed now. * EleNEWS and NEWSSRV did not always convert the date correctly. 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 ---------- type MsgKindsType = (elemsgBoth, elemsgPrivate, elemsgPublic, elemsgROnly, elemsgNoReply); LIMITSrecord = record Security, Ltime, L300, L1200, L2400, L4800, L7200, L9600, L12000, L14400, L16800, L19200, L38400, Llocal, RatioNum, RatioK : SmallWord; PerMinCost : TPReal; L21600, L24000, L26400, L28800, L57600, L64000 : SmallWord; FlexiTime : TPReal; LsessionTime : SmallWord; ResetAmt : SmallWord; ResetPeriod : ResetType; ResetOffset : SmallWord; L31200, L33600, L115200 : SmallWord; FreeSpace : Array[1..11] of Byte; end; 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 } MODEMrecord = record ComPort, InitTries : Byte; BufferSize, ModemDelay : SmallWord; MaxSpeed : LongInt; SendBreak, LockModem, AnswerPhone, OffHook : Boolean; InitStr, InitStr2, BusyStr : String[70]; InitResp, BusyResp, Connect300, Connect1200, Connect2400, Connect4800, Connect7200, Connect9600, Connect12k, Connect14k, Connect16k, Connect19k, Connect38k, ConnectFax : String[40]; RingStr, AnswerStr : String[20]; ErrorFreeString : String[15]; Connect21k, Connect24k, Connect26k, Connect28k, Connect57k, Connect64k : String[40]; Connect31k, Connect33k, Connect115k : String[40]; FreeSpace : Array[1..59] of Byte; end; AccessType = (nwsPostNever, nwsPostAlways, nwsPostUseSettings, nwsUseBoth); TagFileRecord = packed 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 } 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 } NewsGroupStat = record GroupName : String[100]; { Group name of these statistics } NumRead : Longint; { Articles read in this newsgroup } NumWrite : Longint; { Articles written in this newsgroup } NumDeny : Longint; { Articles denied in this newsgroup } LastAccessed : String[10]; { Date this newsgroup was last accesed } FreeSpace : Array[0..40] of Longint; end; { NewsGroupStat } ELECONFIGrecord = packed record VersionID : SmallWord; { $005 } UtilityLogFileName : String[250]; { Utilities/Servers logfilename } CapitalizeUserName : Boolean; { Capitalize username/handle? } AttachPassword : String[15]; { pwd needed to attach to a session } FreeSpace : Array[0..8174] of Byte; end; { ELECONFIGrecord } EleMessageRecord = Record AreaNum : Longint; GroupName : String[128]; Attribute : Byte; { Bit 0: Available for usenet } AccessSettings : AccessType; AttachArea : Longint; { Areanumber to put attachments in } FreeSpace : Array[1..37] of Longint; end; { EleMessageRecord } EleFilesRecord = Record AreaNum : Longint; ExportURL, { URL used by EleFILE HTMLIST } ftpPath : String[250]; ftpLoginName, ftpPassword : String[35]; Attribute : Byte; { Bit 0: Available for usenet } FreeSpace : Array[1..140] of Longint; end; { EleFilesRecord } USERONrecord = record Name, Handle : MSGTOIDXrecord; Line : Byte; Baud : SmallWord; City : String[25]; Status, Attribute : Byte; StatDesc : String[10]; FreeSpace : Array[1..90] of Byte; NoCalls : SmallWord; NodeNumber : Longint; {!} LastUpdate : Longint; {unixtimestamp, EleWEB only } end; { Status byte - 0 : Browsing (in a menu) 1 : Uploading/downloading 2 : Reading/posting messages 3 : In a door/external utility 4 : Chatting with sysop 5 : Answering questionnaire 6 : RTC 7 : New user logon 255 : User-defined - display StatDesc Attribute - Bit 0 : Hidden 1 : Wants chat 2 : Reserved for RANETMGR 3 : Do not disturb flag 6 : Ready (0=busy) }