0.29: 30.7.1995 - Special Summer Bumper Issue! - Added another overflow check to the parsing of PC16 (add node) protocol message. PacketCluster sends crap from time to time, this caused run-time error 201 at 0567:4FEE.... also found out that my byte-sized variable for storing user counts on PacketCluster nodes was too small - some REAL busy servers overseas seem to handle more than 255 users at a moment. This used to cause another overflow error 201, moved the upper limit to 65535. Should be enough, huh. - User and node tables are now stored in a linked list. This means that memory for them is allocated dynamically, and your free base memory is the only limit for the amount of users and nodes... - Also moved a lot of user & socket information from static to dynamic memory. - User and node lists are sorted alphabetically. Looks nice. Happy, Mar? 8-) - Tracing of sockets to files. At first, only for PC links, but in the future, for any (user/link) socket, to a file or the screen... See links.ini for details on tracing links. - As always, some minor cosmic changes. - Two new cluster commands: Shout (announce full) and SAy (Ann local). - A new file: text\login.txt is sent to users on login, right after the qth/information string in clusse.ini. You can omit this file if you don't need it... - Another new file: data\last.clu is used to store last users list and some other actions (shutdowns, crashes) and can be viewed using the command lc (List Connections). There's also a new command to view the error log, le (List Errors). - A new prompt (nr. 6) with time and date. - Added a bunch of XMS handling functions in the code. Not really used yet, but some day they might get useful. - NOW you can REALLY /invite local cluster users to the conference mode. I wonder how it took so long to fix it. Now it works, anyway. I tried. - Added a feature in the users command: you can also give the callsign of a specific node to get the user list of that particular node. - PacketCluster version compatibility: Clusse has been succesfully linked (at least) with PacketCluster versions 5.3-05, 5.4-32 and 5.4-77. I have seen reports that Clusse won't talk properly with versions before 5.0, and i suspect the problem is in the differences of the linking protocol. I don't have such an old version running nearby so i cannot debug the differences out, sorry folks... - A new News system. The format of news.txt has changed, take a look at it. Involves a new command 'news'. - You can now connect console to node, by pressing CTRL-F2. You'll have the console call, if you have the ENABLE_LINKED setting in BPQCFG set to A or Y. Otherwice you'll have the BBS call. I suggest setting it to A, as Y could be considered dangerous. Press ctrl-f2 again to hard disconnect. - Fixed BPQ stream handling. Now can use any stream set, used to not work if the first stream used was not stream 1. 0.29a: 13.8.1995 - BPQ application number mystery solved and fixed. The bpq register for application mask is bit significant. Because of this you were only able to use use numbers 1-3 (if you knew how), now they all work like they should... The application number you enter in clusse.ini is converted to a bitmask. Thanks to Dustin Moore . - New cluster command WHo shows the users of the conference mode. Accepts all the same parameters as the convers /who command itself. - Expiry added for the file last.clu. Update your expiry.ini. - PC link status changes are logged to last.clu. - Message ID table enabled. Also stored in the file data\mid.clu, which is updated after every change. - New file data\status.clu. Used for storing pointers to mid.clu etc. - The wx command doesn't accept area parameter any more. It defaults to full distribution, like it's PacketCluster equivalent. - Log files are now written in directory log\, which is created automatically. - Fixed conference /invite a bit. Now can invite people with SSID's. - Added local users high water mark to % %. - Started modifying band monitoring for unproto user interface. Now Clusse traces all ports even if band monitoring is not enabled. - Changed the behaviour of command history keys. - Fixed alphabetical sorting: oh7lzb is now placed before oh7lzb-1. Shorter string is placed before the longer one, if there are no differences in the beginning. - Users which are in the conference mode are now shown in lower case in the Users list. 0.29b: 15.8.1995 - Two new commands to replace the terrible Flags command: Messages and BEeps. Used like the LOgin command. Flags is still there. - Fixed LErrors to read error.log from the log\ directory. - When linking to a PacketCluster, Clusse asks for last 5 DX spots and last 2 WWV messages. If they're not in the MID table, they're taken in. - Fixed a bug in BPQ frame send routine. Every time a packet got as long as the maximum frame length, the last character of the packet got garbled. What a funny effect! 0.29c: 30.8.1995 - Fixed an error in monitoring: if no monitoring window was present, the header lines of net/rom nodes broadcasts were still written on the screen, on the input line. - Added three new commands sh/, show/ and set/. They display a short message "This is not a PacketCluster (TM). Try the Help command." New users, which have used PacketCluster before, tend to try sh/dx, sh/ann as soon as they get in, and all sh/ commands were interpreted as the shout command... - Length of login.txt limited to 10 lines. Just for your inconvenience 8-) - Fixed ping: cannot ping local node any more. Pinging it caused the ping packet to hop on the console screen. - Clusse home page on WWW is http://zone.pspt.fi/clusse/ - check it out. - Removed channel 0 from the conference mode. Those of you familiar with the internet conversd network know why. - Added a new message type: Link status changes. Tells users when cluster links are added/dropped. Selectable in Messages and BEeps. - Removed messages and beeps setting from the Flags command. - Replaced the regular BIOS ctrl-g beep with my own. Ugh. - Fixed the list command... "list" was interpreted as linfo... whoops! - Clusse now checks if the text directory is present on startup... - More information in the % (list BPQ sockets) command. Preparing for smarter transmit buffering before BPQ to avoid "out of buffers" crashes... - Did some work with the unproto feature. Now sends WWV as well. Unproto messages are padded with spaces to columns, looks nicer on a terminal. Users can follow the unproto spots by setting their TNC/terminal program to only monitor UI packets addressed from your cluster callsign to DX. Format of the packets is specified in readme.txt. Unproto list requests and dx/ann/wwv spot uploading coming soon! Who wants to write a good terminal program with Clusse support? - New users don't get all the news when they log in for the first time. - Fixed a WEIRD bug in user command parsing, which caused it to give false results if the command string was 32 characters long. Example: "t oh7lzb Trying out the parser." (+CR) gave a message of "OH7LZB talks: oh7lzb Trying out the parser". - Adjusted the behaviour of the console command history again. When you copy a command from the command history, it's added to the end of the list. - Speedup in the expiry: should be quite a bit faster. Added some buffered reading and writing. - The DXBase log software seems to give the callsign of the DX before the frequency, "dx oh7lzb 144675". Modified Clusse to accept it. - Some cosmic changes in the startup screen. - Fixed talk (again!!) to correctly answer talks to non-existent local users. And some other small fixed bits. I wonder if i ever will get this working the way it should. - A new file data\nodes.clu stores the rtt's and hop counts for all heard cluster nodes. - A new file netusers.clu will store the home node of all users on the cluster network to be used when talking to a user not on the user list. The information can be found at least on Talk, DX, Announce and WWV messages. The feature was not completed, so i left it disabled. - Added expiry for the two new files. Update your expiry.ini. - Added timestamps to action and band monitoring. - Added talk mode. See the help file. - Clusse used to accept add user (PC16) messages from unknown nodes, this caused a memory leak and messy user add messages. Fixed. 0.29d: 19.9.1995 - Changed the talk mode exit character from ctrl-c to ctrl-z. Left it to ctlr-c by accident! - The console now accepts all the CTRL key combinations as input from the keyboard. CTRL-Z, CTRL-C, CTRL-G... etc... - Changed the shutdown key combination from CTRL-X to ALT-X. F10 does it, too. Changed the action monitoring toggle switch from F6 to CTRL-F5 and cut links from F10 to CTRL-F9. See the help text on F1. - Split the expiry procedure to smaller parts. Clusse now processes the files one by one, serving the users between every file. Expiring all the files at a time looked like a total lockup of the software to the users. Now it looks like 7 shorter lockups 8-) ALT-F8 triggers expiry. If expiry is already running and waiting for the next section, ALT-F8 skips directly to the next one. - A new command: AWay. It's the opposite for HERe, which doesn't have any parameters any more. AWay accepts a parameter string, which can then be seen using the User command, like "user oh7lzb". It's also sent as a response to talk messages to the user. Can be used to tell when the user is coming back, where did he go etc... - Modified user socket send buffer flushing a bit. They're now flushed (sent to the user, even if not as long as paclen) once per second, and never on completion of command or after some other message. Saves a (small) bit of bandwidth again... allows several messages to be combined in one frame. - When a PC link gets disconnected, Clusse tries to relink in one minute. When linking fails, Clusse waits for the time specified in links.ini. CTRL and ALT-F9 link drop commands set the link tries count to 1 to prevent linking again in one minute. - Reorganized the talk system (again!). Now correctly forwards messages to non-local users, when the sender has forced the message to be sent to the local node (the T call@node trick, t call > node on PacketCluster, i'd call them hand-routed talks). Talks to clx systems (the Linux cluster software) should now work, too. The current version of clx doesn't accept PacketCluster's talk mode messages and hand-routed talks (a small bug in clx code). - Internet FTP to Zone didn't work for some time. Someone broke into Zone and we disabled all connections from untrusted hosts... ftp access is now available. - The ftp.funet.fi /pub/ham/packet/cluster/clusse/ directory is now a mirror of the pub/oh7lzb/clu/ directory on zone.pspt.fi, updated every night. This means that the latest version is always available on ftp.funet.fi. - WHEN INSTALLING/UPDATING CLUSSE, PLEASE use the pkunzip -d parameter when uncompressing the .ZIP file. The archive file includes the necessary directory structure, -d parameter tells pkunzip to create it on the destination disk! There's a suggested installation/updating procedure in readme.txt now. - New command: UPtime. - Changed the % command's name to STatus. More logical, and KAM TNC's have the streamswitch key set to % by default. - The SU (SuperUser) command works now. See the password.ini file for details. Used to gain access to the sysop functions of Clusse. For now, only the user specified as sysop in clusse.ini can use the SU command. After i get the edit user command working, a sysop can give others the sysop flag so that they can use the SU command... - New sysop commands: DIsconnect (stream/callsign) - disconnects a stream. Reboot - Exits clusse with errorlevel 100. See clu.bat! SHUtdown - Exits clusse with errorlevel 0. - An example clu.bat for starting up clusse and restarting it on exit, if necessary. Uses errorlevel checking. - Fixed the expiry system quite a bit. - Added some protection for weird node add and drop messages PC19 and PC21. PC21 for the local node call (from a link loop) made Clusse drop itself from the node list and go crazy. New node callsigns are checked for validity (length > 3 chars, includes both characters and digits). - Added timestamps in the link tracing file. - Started working on clusse.doc - the gonna-be official Clusse manual. 0.29e: 26.9.1995 - Added some validity checks for DX spots, announcements and user login/logout messages to catch garbled PC messages. PacketCluster forwards them all without checking the format... - Optimized links.ini reading & parsing a bit. Saved some code size. Should also stand some syntax errors better. - Fixed the SU command. Didn't work on the 0.29d release, though i had it working before releasing it... whoops! 8-) Also modified the checking system a bit after some discussion with my math teacher, see password.ini for details! - PacketCluster seems to be able to send and receive several PC messages in one frame. Modified Clusse to accept that and make use of the feature (by sending several PC messages in one frame, if possible). - Some other small fixes in the BPQ receive frame function. - New command NList lists the calls in the node file. The Nodes command also gets info about a specific node from the file if the node is not in the node table (try "node (nodecall)"). - You can now (optionally) configure how many DX & WWV spots will Clusse poll from the neighbour cluster node when linking. Command M in links.ini. Defaults to 5 & 2, more documentation in links.ini. - Fixed clusse.ini parsing: the information string can now be empty. - New color settings in clusse.ini. Perhaps looks a bit better than before. Comments? If someone has changed them dramatically and has found a satisfying combination, i'd be pleased to see the values... - Clusse now warns the ones with the Sysop flag on login, if the amount of free disk space goes below 512 Kb. 0.29f: 17.10.1995 - If BPQ is not found on startup or is of too old version, clusse returns errorlevel 1 instead of 20 to prevent reloading... - New parameters to the reboot command: Reboot warm does a warm reboot of the computer and Reboot cold does a reboot which looks like a cold reboot. Reboot with no parameters just exits clusse with errorlevel 100, then clu.bat reloads it... Please note that i have no idea what a multi- tasking OS will think about this. When rebooting the computer, clusse tries to call several disk cache programs and tell them to flush the write-behind caches, but i cannot guarantee it works. After that it waits for 15 seconds to allow flushing... should be enough for any cache. - The default flags setting in clusse.ini works again. - Prompt 6 now works as a default in clusse.ini. - A new sysop command Euser (Edit an user file entry). Used to add, delete or modify an entry in the local user file. - A new parameter for the STatus command: status Files gives some information about disk usage. - The SHUtdown command now only works for the superuser 8-) ... forgot to check the permissions. This is a GOOD reason for upgrading from 0.29d or 0.29e! - Added a DOS shell (ALT-F10) using TurboPower Software's swapping library. Swaps to EMS or disk and leaves only under 5k of Clusse code to memory. EMS swapping didn't work for me, with EMM386... I'll try to make it use XMS. Returning from the dos shell under DesqView seems to close Clusse down, but why? - Talk & announce texts are shown in the action monitor. - Those who have chosen to receive the user login/logout notifications using the Messages command, now also receive the away/here messages. Except for their own. - Two new variations of the Talk command: TTimestamped adds the current time to the beginning of the talk message, like the talk/time command of PacketCluster: "OH7LZB talks: <1432Z> Trallala..." TReply sends a talk to the originator of the last talk message the user has received. TReply doesn't require the recipient's callsign. - New command TIMEStamp (yes/no), toggles timestamps in talk, announce WX, user, node and link messages... - Removed the unnecessary Flags command. - Fixed links.ini parsing a bit. 0.29e often lost the last character of a line. - User add notification messages to users now include the actual home node of the user, not the local node callsign... - Fixed PC12 (Announcement) format a bit: the Sysop flag is a space, if not true. - Node route table is not stored in static per-link tables any more. Removes the maximum routes per link limit of 255. NRoutes table is also sorted, as it's now derived from the node list. - Modified valid callsign check a bit, it now requires at least one digit and at least 2 letters. Should block corrupted PC messages which have the hop count where a callsign should be. - Users in talk mode are notified every 15 minutes that they're in talk mode & how they can exit it. Some people (including myself) tend to forget the fact they're in talk mode, and then wonder why the commands won't work... - Talk messages don't include a beep if they are from a station you're in talk mode with. 0.30: 13.12.1995 - Added a DXCC database. Uses the dxcc database cty.dat of the CT ver. 9 logging program for input, and converts it to two binary files. The cty file includes all the necessary information in good format, and it is updated pretty often. Thanks to Jim Reisert, AD1DC, for the database! Databases are stored in the directory clu\db\. The index file is loaded into RAM (XMS, if available) to fasten up searches. - In 0.29f, after giving an AWay or a HERe command users didn't get any dx/ann etc messages. Fixed. - Included support for PacketCluster-type databases, like the QSL database. New configuration file db.ini and a new command Find. See clusse.doc for more information. If you don't have any databases installed, rename or delete db.ini to get Clusse running. - Database statistics are available trough the command STatus B. - Modified and optimized configuration file reading functions and other buffered file reads. Saved some code there. There's an EOF marker in links.ini, see the example and add it to your file, too! - New optional text file text\newuser.txt, sent to users logging in for the first time (not found in the user file). - Installed Win 95 on my computer. Clusse runs fine under it, and now detects Windows and DPMI. - The PC50 user count beacon timer can now be adjusted in links.ini, using command U. Default is 15 minutes, minimum 10, 0 disables the beacon. - Rewrote the function which evaluates the difference between two date/time records in days. Should fix problems with expiration. - Expiry won't (hopefully) crash to a division by zero on empty files nor dump the DX file... - Speedup in MID file mounting, disk is now being read in bigger blocks. - Reorganized BPQ socket mode handling. Preparing for AutoBIN file transfers etc. - Transmit/receive byte counters are now stored for every socket. They're visible in the socket list (the STatus command). - Link failure detection can be customized in links.ini. - The DX list is now kept in memory. The size of the list can be adjusted, see expiry.ini for details. Update your expiry.ini! - The DX list commands LBand, LInfo, LPrefix and LSuffix now all accept a second parameter, which specifies how many matched entries will be shown to the user. - Added some XMS support functions to make the XMS module usable. XMS is now being used for storing database index files to fasten up searches. You can decide which index files are loaded into XMS in db.ini. - New parameter X(ms) for the STatus command: gives information on XMS usage. - New I/O error handling scheme. Gives more information about the problem, when crashing. - Rewrote the function which sends specified amount of lines from the end of a text file to a user. Now reads the file in 8K chunks. It's used in the LErrors command, which used to be very slow. - Fixed several things that caused stability problems. Clusse called BPQ without initializing some registers correctly and the BPQ switch wrote data to *WRONG* places, corrupting memory... it was my fault. (To be exact, BPQHOST function 8, callsign connected on the stream is returned to es:di. I left es:di pointing somewhere in Nevada when getting maxframe and paclen for the stream trough the same function.) - Those users with the Sysop flag on have a "!" character after their callsign on the user list (doesn't work trough a PacketCluster link), so other users know who to talk to if they have problems... Their user callsigns don't have the character, but the Talk command strips any "!" characters from the recipient field, just to be sure... - text\login.txt is loaded in memory to speed up user logins on systems with slow hard disks (like my system, OH7RBA). Maximum file size is 1700 bytes. - DX spots originated from the local node aren't accepted when merging DX spots on linkup. Fixed, finally. - The news file now accepts blank lines. - Modified the login function to keep SSID's of 6 and 7. Usually, the SSID's of users are set to the first free SSID with the same callsign on the cluster network. 0.30a: 14.2.1996 - Users can be edited (EUser) when they are connected. Their settings are modified in real time. (A good way to confuse them, isn't it 8-] ) - Database hits count (see STatus B) isn't incremented once per hit any more (several hits can exist for once search => over 100% hit percentages were possible), but once per search if there were any hits. - When clusse is starting up with the -P (pause) parameter, it really pauses when the screen is full, and just before switching to windowed mode. - Speedup in DX file expiry. Added buffered file writing... - The nodes.clu file is now sorted alphabetically when new entries are added. Delete the file to get the whole file sorted (all entries are then placed where they belong to). The file can be viewed using the NList command. If the sorting works reliably and fast enough, i'll sort the local user file, too. - Wrote code to interpret PC protocol messages 28, 29 32 and 42 (personal message receiving), but left it disabled. It didn't write the message anywhere, and Clusse ate it's user's messages from the PC nodes... But it's is a good start, isn't it? By the way, Clusse does not interpret the bulletin/file forwarding protocol messages either, so the neighbouring PacketCluster sysop should use the -BULLETIN parameter when doing ADD/NODE for your system to prevent PacketCluster from trying to forward any bulletins to Clusse. - Tried linking trough an amprnet telnet session (between two NOS based internet gateways). Works pretty well after fixing the linker script interpreter (telnet "login:" prompt caused a bit of grief). - Fixed a couple of causes for range check crashes... - Fixed the network users high water mark (broken in 0.30). - Added a WWV command. - Fixed an OLD bug in the Users listing, line wrapping works now no matter how many users a node has. - Clusse Announcements mailing list is now available on the Internet. It's used for announcing new versions of Clusse & related utilities (moderated by me). See clusse.doc, section 8.2, or http://zone.pspt.fi/clusse/, the official Web site. - The user inactive minute counter (visible trought the STatus command) is now updated even if the inactivity disconnect timer is disabled. It is also updated for PC links. - Fixed the DIsconnect command to disconnect the right stream, when the first BPQ stream used is not set to 1. - The routes per link count (see the NRoutes command) is now correctly decremented when nodes are removed from the node table. - From now on, to help those who translate the Clusse help file to other languages, i indicate the changes i've made for each version in the beginning of the help file. - Started to use the network user file, data\netusers.clu. It's sorted alphabetically, like the node file. It stores information about the name, QTH and home node of each user seen on the network. Home node data is taken from DX/Ann/WWV/Talk messages, user login messages, and the PC41, subtype 4 message (SET/HOME_NODE command on PacketCluster). The data can be reviewed using the User (call) command. The UNetwork ! command lists the callsigns in the file. If you are upgrading Clusse ! ! from an older version (anything between 0.29 and 0.30), run the ! ! 030-030a.exe update program to create the netusers.clu file, based on ! ! users.clu. If you're not updating from an older version, just delete ! ! the update program. ! - Modified the User (call) command to show the BPQ radio port the user is connected on. Only works for local users. BPQ doesn't tell the radio port, if the user is connected trough NET/ROM. The command also views the information available in netusers.clu. ! - The date & time format and field separator characters used by Clusse ! ! can now be changed in clusse.ini. Update your clusse.ini! The QTH ! locator of the node must also be specified in clusse.ini. - Improvements in the multicasting user interface. See clusse.doc, section 6 for details. New configuration file unproto.ini. - New command Qth to set the QTH data in the network user file and the rest of the cluster (PC41). - Two new STatus parameters: Protocol shows statistics gathered by the PC link protocol module, Memory shows how heap memory is used. - New command Q in links.ini to periodically ping the neighbouring node to see if the link is still alive and disconnect, if no respond in the time specified. Clusse always disconnects the link, if a ping to a neighbouring node times out, so users can also notify the node of a link failure pinging it... - When decoding NODES broadcasts for monitoring, the Quality value for each node is now correct... finally... missed it by 1 byte! - In the Users listing, a node is listed only if it's users callsigns are known, and there are users on that node. Nodes behind a limited protocol link (user data not exchanged) are not shown. Just to cut off unnecessary information. The user counts (based on the PC50 broadcast) can be viewed by either "Users nodecall" or "Node nodecall". - The Disconnect command now accepts the callsign of a neighbouring node as a parameter. Can be used to disconnect a link without checking the stream number from the ST L or ST list. - More net/rom header data is decoded for monitoring. Socket information, L4 window negotiation on connection and transmit/receive sequence numbers are visible whenever they can be decoded. Some other L3 protocols are also identified (IP, ARP, RARP, TexNet) but not decoded. - A FAQ (Frequently Asked Questions) file is now included in the distribution. - Added a check for talk message (PC10) loops between two Clusse systems. It was pretty easy for an user to put one up. - Tested (and fixed a bit) the handling of multiple PC links. Tried two simultaenous links to PacketCluster nodes, and it worked. All of the protocol functions are not supported (mail, distributed databases etc), but you can now use a Clusse in the middle of a network. I ONLY tried it out for a couple of days, so it might still be a bit buggy! REMEMBER, that you can NOT form a circle-shaped network, messages will start to loop! (with the exception of clx listen-only links.) - Fixed expiry of netusers.clu and nodes.clu - they used the expiration day count specified for the user history file in expiry.ini. Whoops. - Valid callsign check now catches callsigns with non-alphabetical characters. Only digits (0-9), letters (A-Z) and the characters "-" and "/" are allowed. Digits and letters are both required. This should clear up corrupted node/user files. 0.30b: 23.2.1996 * Mostly bugfixes and improvements in the cluster linking module. - Fixed a couple of bugs which caused 0.30a to crash or hang. - New sysop command LINK. Three parameters: Connect, Disconnect and Hold. The last tells clusse to disconnect a link and not reconnect, until it is restarted or adviced to do so using the Connect parameter. - Added partial decoding of IP and TCP frames inside AX.25 packets for the monitoring window. Only tried it out in datagram mode. JNOS and Clusse run fine together under Win95 using the same TNC. I used the BPQHOST interface for attaching JNOS to BPQ. - The PC link module now forwards remote database PC messages. - Added support for PC38, which makes it a LOT harder to create a cluster loop by telling Clusse to link twice to the same cluster network segment. If Clusse receives a PC38 when linking, and the message includes a node callsign which is already in the node table, the link is disconnected and set to "held" state (clusse won't try to relink). Several similar cases are also handled. This should make Clusse very robust against loops and crashes caused by them. - Changed the handshaking order (the way how two cluster nodes exchange the user/node tables on linkup) to be more compliant with the PacketCluster (TM). It worked before, because PacketCluster does not care too much about the exact syntax of the protocol, so there wasn't any problem, but some other software using the protocol might not have worked with Clusse. - Added a "listen-only" linking mode. You can now link to two or more nodes which are already linked via some other route, but only one of the links will be "active". The "listening" links only receive DX spots, announcements and WWV data, no information is really sent to those links, and the received data is not sent to other PC links. No looping occurs! Using listen-mode links requires additional callsigns (or SSID's with the same callsign) to be used (one per link). 8-( I took the idea from clx. Keep up the good work, guys! - Wrote some documentation about PC links and PC network topology. Read section 4 of clusse.doc carefully before linking anywhere. links.ini has some new documentation, update yours. - When PacketCluster distributed a node add message (PC19) which had the same node twice (which i didn't quite expect), 0.30a got into an internal loop, got stuck, and had to be rebooted. The action line always said "Node added". Fixed. 0.30c: 3.3.1996 * This is mainly a bugfix version for 0.30b. - Announcements are no longer accepted from listen-only links. It's very hard to catch duplicates, as PC12 doesn't include any kind of timestamp. Counting checksums didn't work on the first try. - If the callsign of the neighbouring node in links.ini (on the I line) was mispelled or otherwice invalid (didn't include the right SSID etc), Clusse crashed when the link was made. Now clusse disconnects the link (and sets it to held state), if this happens. - Added checks for a couple of overflow situations. - If a link is set to held mode because of a loop or some similar problem, the cause is logged to error.log, so the sysop can find out the cause later... - Node RTT (Round-Trip Time) of 0 is now accepted. 0.30d: 8.3.1996 - Just a quick note: when updating from an older version to 0.30c or later, delete your node file to reset the RTT counters. The format of the record changed a bit. - Support for the PC/FlexNet kernel added as an alternative for the G8BPQ Packet Switch. Not fully functional: for example console connections don't work at all. Linking works now! Monitoring is buggy. The supplied .CON files contain a note about linking trough PC/FlexNet. PC/FlexNet support is *ALPHA* code! - Fixed some (arithmetic) overflows, which caused a lot of pain in 0.30c. Calculating the distance between two date/time records CAN'T be this hard! Added some sanity checks for incoming values... - Loop detection should only hold a link if the local node actually is a part of the loop. Previous versions held their only link in some cases, when there was a loop elsewhere in the network. 0.30e: 21.4.1996 - When a link fails, other links are notified of the lost node routes. This was a major networking bug (if multiple links were used). - A new user prompt. - When a new link is initiated, correct hop counts are used when sending the node table to the link. This is a fix for a PacketCluster v5.* networking bug, which causes node tables to be distributed farther than they should be. It is not possible to use one PC19 message for the whole node table, if the correct hop counter is used. The same is done with PC16 (the user table). - Removed three memory leaks. Including the one in DX expiry (it took 13400 bytes every time). - When clusse crashes, uptime is written to error.log and console. - New command line parameter -m to totally disable the band monitoring code. The parameter in clusse.ini just disables viewing of the monitored packets. If you experience a serious bug in monitoring, you can disable it this way.... If you have problems with PC/FlexNet, try this. ! - Numerous improvements in database functions. The database ! ! configuration file db.ini has changed, update it. From now on, I include ! ! the sample db.ini in the doc\ directory. It contains example blocks for ! ! all of the supported database types. You have to move it to the clusse ! ! root directory to get it working. ! + Added support for Buckmaster HamCall (TM) CD-ROM callbook as a Clusse database. See db.ini and clusse.doc for details. Thanks to Buckmaster Publishing for a copy of the HamCall CD (for development purposes). + Clusse can now share it's local databases with other cluster nodes. Other system operators can configure their software to make queries to databases on your node. + Clusse can also query databases on remote nodes. See db.ini for details on configuration. New STatus parameter : ST R shows the remote db query job list (just another debugging feature). - Fixed PC16 handling: the last (or only) user in a message was sometimes ignored by Clusse. - Various fixes in the PC/FlexNet interface code. - Optimized the code quite a lot, managed to squeeze out nearly 20k of code. It should be a bit faster, too. Since i also added features in this version, the executable is only slightly smaller than in the previous version. - Changed the link list (STatus Links) layout. Saved some code, and this way it looks OK with over 7 links, too. - Added a 5 minute delay between the expiration process of each data file. Speedup in the expiration of network user and announcement files. - Added a new user file flag "Excluded". Set using the EUser command. Please, use it only when *absolutely* necessary. Sysops and excluded users never expire in the local user file. You cannot exclude sysops (i don't want to exclude myself from my own node by accident). - Rewrote the STatus Memory command and added some internal heap usage tracing. Eases up my life when hunting memory leaks. - Changed the way user and node lists are handled internally. Every entry takes 4 bytes more than before, but it is simpler and more robust this way. - New cty.dat (dated 20. December 1995) included in the distribution. (It's the DXCC database for the Prefix command.) - Changed the behaviour of the Away command: the away text string can be changed while being away. - Fixed XMS handling to work with most XMS managers. According to the XMS specification, you can move only an even number of bytes from an XMB to base memory (and vice versa). I didn't notice this. It DID work under Win95 (!), but not under plain old DOS. Please let me know if you still get "Invalid length" crashes when using XMS for databases. 0.30f: 3.6.1996 Known bugs in 0.30e fixed. Thanks to all the people who reported these. - Fixed XMS handling again: the moves from base memory to XMS must ALSO be of even length (gee i'm stupid)! The fix changes database handling a bit, be sure to delete your index files (*.idx) in the db\ directory, it forces Clusse to reindex. - Fixed some overflow errors: mostly caused by unexpected input from PC links. Even more validity checks added. - You can no more use the DIsconnect command to disconnect yourself. This caused unexpected results (which were most visible when you were on the console - ugh). The Bye command does the trick anyway 8-). - Remote databases can now REALLY have a timeout over 255 seconds, up to 65535. It used a byte-sized temporary variable by accident, thus restricting the timeout to 255 seconds. - If you searched the last record of a PC-type local database and the record didn't end to a "&&" line, clusse got into a loop. Fixed. By the way, i got the database definition wrong in the first place. The "&&" line marks the END of a record, not the BEGINNING of a record. Clusse really doesn't mind: it doesn't require a && in the beginning of a file (as it did before) or the end of a file (as it should do and PacketCluster (TM) probably does). - The Wx command requires the area parameter again, just like the Announce command. Update your help file! The area parameter can be either F, FULL or * for a cluster-wide announcement, a node callsign for distribution on a known node, or L/local for the local node only. Usually, you don't actually want to tell your local weather conditions to the whole world. Ok, you're right, that's what hams on HF usually do, but that's a different matter. This is packet, not HF. 8-) - Cleared up a mess in the methods of storing & moving around the name of the user. It's no longer stored in the local user file. It's only in nusers.clu. The EUser command cannot be used to change the name any more. Anyway, the system should behave a bit more logically. - Database files are kept closed when not used. Forgot to close() after checking them on startup. - The latitude and longitude fields of the Buckmaster HamCall CD-ROM (TM) were swapped. Fixed. (my mistake, not theirs) - If you did SU succesfully, then (during the same session) did SU again, but failed, you still had SuperUser privileges (in fact, you had ALL the privilege flags). Fixed. 0.30g: 22.6.1996 Just a bugfix version for 0.30f, while waiting for 0.31. - Found an ooooooold bug in the linker: it didn't always catch the PC18 if it came in the same frame with PC38. This resulted in a timeout.... - Attempt to fix a range check crash. I was unable to reproduce it, but at least i tried. 0.31: 20.8.1997 - New setup program SETUP.EXE. Sings and dances in full color. Makes the following configuration files obsolete: clusse.ini expiry.ini password.ini. You can delete them. SETUP.EXE creates a binary configuration file clusse.cfg WHICH CANNOT BE EDITED BY HAND. I did this primarily because i wanted to get into object oriented programming. Additional benefits: * I'm able to remove some code in clusse.exe. Clusse.exe doesn't need to read & parse & range check the ascii files. setup.exe can do extensive checks for the values, preventing you from entering illegal values (most of the error reports i get are configuration problems). * Clusse.exe can easily modify the configuration in the file using remote sysop commands etc. * Using autobin transfers (bput/bget) it's very fast to move the whole configuration home for remote configuration. * Includes a cross-referenced on-line help system. Just press F1. The help file is not very complete, yet. But it helps. * When new configuration options are added, there's no need to add the new things to the configuration files by hand. Just run setup.exe (it converts clusse.cfg to the new format) and modify the new parameters to suit your needs. * Includes a 64k ascii editor. With clipboard and most of the usual Wordstar-style keyboard commands. Beats DOS EDIT. 8-) - New user privilege group system. In the setup program you configure up to 20 groups, what the users in each group can do, what's the default user group for new users, etc etc. Then you can use EUser sysop command to move users from group to another. Now, when you want to change the access policy, or i introduce new access features, you just edit the group information (no need to edit each user individually). Group 20 is reserved for the SuperUser (ie. can do everything). After a successful SU command the user is moved to group 20 (for the duration of the session). You can control which groups are allowed to use the SU command to give the operator password (reserve it for the operator group). Read the related parts in clusse.doc !! - A lot of new access control features (new things which can be enabled/disabled per user group). - The new options above changed the format of the user file. A conversion program 030-031.exe is included for converting the user and dx files to the new format. - New logging features. - New user command TIMEReset, toggles the sending of inactivity timer reset frame. (It's a 1-byte frame sent when the user's link has been inactive for a pre-defined amount of time. Used to keep inactivity timers in nodes from disconnecting users.) - You can now use 28- and 43-line text modes on a VGA monitor. - The talk command accepts an abbreviation as a recipient callsign, if it's unique (eg. matches only *one* user in the network). Only works for talking to other users (not nodes). You can even do a "t b Hi there!" if there's only one user, whose callsign includes the letter B! - New directories: clu\user\ (public file directory for users), clu\user\incoming\ (public directory for user uploaded files), clu\userdata\ (per-user data files maintained by Clusse) and clu\pg\ (for PG "Plugin" binaries). Clusse.exe creates these automatically. - New commands for handling files and directories: dir, cd, md, rd, del, copy, move. The new access control features include the possibility to restrict read/write access per group. The commands are not very featured, for example they don't take wildcards at all (with the exception of DIR, which understands them to some degree). PLEASE BE CAREFUL WHEN ALLOWING YOUR USERS TO USE THESE COMMANDS. THEY MIGHT HAVE SECURITY LEAKS AT FIRST - YOU ARE THE BETA TESTERS! REPORT ANY PROBLEMS. - New command "RUn" for executing DOS programs. The output of the program is captured and sent to the user after the program finishes. Redirection only works for programs which don't use direct video I/O. The only way to feed input for the program at runtime is to put the input to a file and then redirect it for the program (eg. "RUn program.exe < input.txt") so be careful. If the program gets stuck, or asks for input, you must be at the console to get it running again (you can give the program some input from the console keyboard). Does not search the PATH for the executable, you must specify the full pathname to the program if it's not in the current directory. Clusse swaps to disk while executing the programs to give them as much free base memory as possible. Clusse also swaps the screen, so the console doesn't get messed up in case of direct video I/O. PLEASE BE CAREFUL WHEN ALLOWING YOUR USERS TO USE THIS COMMAND. - New command "DOs" for executing dos commands. This effectively does a "command.com /c run_this_command" (the COMSPEC environment variable must be present and point to a valid command.com or a replacement like 4dos.com). Don't let your users use this command, since they can do anything they like on your disk if they get to feed commands to command.com... and use a good secret number! command.com searches the PATH if you use this command to run executables. - New command "PG" for executing F6FBB-style PG "plugin" programs, which can implement interactive extensions for Clusse. - Forgot to close the fortune database file after startup, if it was not reindexed. Fixed. - If possible, the MID table is stored in XMS. - The node and link lists can also be sent automatically at login. - The EUser command has changed so that all the new user file stuff can be configured. EGroup command will come, too. - Reorganized the code a bit. Changed the linking order of the modules, resulting in only under 3 kb of resident code during a DOS shell. Also managed to optimize the code by about 10 kb. - A new, proper command parser. At last. Compares the whole command: "saari" is no more interpreted as "say". - The length of away reason strings is limited to 80 characters. Saves memory and prevents a crash in a certain situation. - The conference user list is now sorted. Fixed a couple of bugs, too. Removed some unused code. - A completely rewritten List command. Replaces LPrefix, LSuffix, LBand etc commands. Does fancy things like "List 20 From oh* Call dx?a*"... - Added some decoding of ICMP and TCP frames and NET/ROM flags (nack, fragment, choke) in the band monitor. - The bands.ini file (which has been in the distribution for a while) has changed it's format and is now really used! DX spots entered by users are checked against this table, effectively preventing out-of-band spots. The band names are used in the List Band and FILter commands. - A new command "LOCator" to set the mainhead QTH locator of the user. - A *very* flexible DX spot filtering system. The command "FILter" is used to view and modify the per-user filters, and the filters are stored in the file clu\userdata\.fl. - In case of a crash, the string in the parser buffer (the last user command etc) is writed in the error log. Helps a lot when trying to figure out what happened... - The AWay command cannot be used to remove the away mark any more, the HERe command must be used. You can still change your away string without marking yourself as being here first. The old behaviour was somewhat confusing. - Making the console nicer part 1: The window sizes can be adjusted using ctrl-pgup/pgdown. Monitoring works in 25-line screen mode. - Incoming PC links work. See links.ini for changes! You can link two Clusse systems. - New BPUT and BGET commands. Used for up/downloading binary files using the autobin protocol found in most modern packet terminals. NB: While transferring a file the user can not receive DX spots, talks or any other messages! - Doesn't send PC16's with no users when linking. - The DX spot frequency accuracy is now limited to one decimal. Also removed some rounding problems with the frequencies. The frequency format in the dx.clu file changed, so the converter program 030-031.exe has to used to convert the file to the new format. - The UNetwork, UList and NList commands accept a parameter of a wildcard key to be matched against the list (un oh* shows only users with the OH prefix). - New variation of NList: NLVersion also shows the version number of each node. (Faster way to check the Clusse vs PacketCluster ratio in Finland: nlv oh* 8-) - The Prefix command now shows the coordinates like it should. Delete db\dxcc.* to force a re-read of cty.dat, it'll fix the inverted longitude. - New command "PRIvileges" shows the privilege group the user is in, and the privilege flags for that group. Another new command "Group" shows a list of groups, or, with a parameter of a group's number, shows the privilege flags for that group. - Fixed the DIsconnect command under PC/Flexnet. - In the users list, if the user count (as distributed in the PC50 messages and shown on user and node lists) does not match the amount of known users (as distributed in the PC16 messages), the user count is shown as "<13>" (normally "(13)"). This indicates, that the user list cannot be trusted and is not updated properly. The user count is most probably correct. The problem is caused by a networking bug in the PacketCluster v5 protocol, which causes user and node lists to be distributed farther than they should. See tech.doc section 4 for details. - Fixed a bug in the Prefix search. For example, "Prefix XX9X" now correctly returns Macao instead Madrid. - New command O in links.ini: used to change the local AX.25 callsign per link. With the G8BPQ switch it equals sending a line "*** LINKED TO callsign" to the node in the beginning of a .CON script. Which obviously didn't work with PC/FlexNet... - Widened the user and node counter fields on the first status line. It can now show 99999 users, 999 local users and 9999 nodes. (Okay, Clusse's local user limit is 64. Let me know if it's a problem for someone, since it's easy to support more on PC/FlexNet.) - If a PacketCluster node tries to forward mail to Clusse, the recipient user is notified of new mail on that node (using a talk message). - Changed the link list from static (10 entries) to dynamic, removing the stupid 10-link limit! The amount of simultaenous links is now limited only by the available heap memory (about 150 bytes/link 8-). - The P command can now take more than 2 parameters at a time, for example, "p pc in hold". Also added some more nice warnings in the links.ini parser. - If started with the new command line parameter -i and DPMI detected, releases the timeslice using the DPMI call. Makes clusse load the multitasking system less. Works at least in Windows and OS/2. - Increased the limit of maximum DX/WWV messages merged on linkup to 255 (the M command in links.ini). - New sysop command MERge for manually requesting DX/WWV merges. - New commands PUt and GEt for ASCII file transfers with CR <=> CR/LF EOL translation. - As always: a bunch of smaller bug fixes. And probably a LOT of new bugs!