LastUsers V2.5 - (C) 1991,92,93,95 by Henri Veisterä for the Xenolink BBS system A fully configurable last users bulletin creator with multi-node support - 0 ---------------------------- Quicky --------------------------- 0 - ------------------------------------------------------------------------- To quickly see what kind of output to expect execute the supplied Sample.s script. This will create and display several sample ouput files in your RAM: drive. For more info see Chapter 7, Misc Info. (Search for '- 7 -') To quickly set up a working system for your BBS see Chapter 4. (Search for '- 4 -') - 1 ------------------ Version 2.5 (This release) ----------------- 1 - ------------------------------------------------------------------------- - Much rework of the code to make LastUsers work with Xenolink v1.90 and later (for older Xenolink versions use LastUsers v2.4c). Most notably, the output is now divided to two directories when using the autoascii option. (See Command Line Option -aa) - Fixed an old Enforcer hitter bug, where if you didn't have a XENOLINK:NoLastUsers.txt and used statitistics you would get a ton of hits (hi Lars Siden !). - Removed the -c option since it would be difficult to do with the new log files (most notably upload doors). - Added the -@ option to add a "@" char to the start of the output. - Added the daily record statistics, now you can display for instance your all time record of the number of files uploaded during one day. - Added the ~S activity flag to show if user is a Sysop - Reformatted the docs - Fixed some miscallenous bugs - 2 ----------------------- General overview ---------------------- 2 - ------------------------------------------------------------------------- LastUsers is an utility run from the CLI or from a script file and produces text files which you can display anywhere you like in your BBS system. LastUsers is usually run every time an user logs out from your BBS. LastUsers gets all its information from your log files (XENOLINK:Log/CALL-1.LOG, CALL-2.LOG, ...) so LastUsers cannot function without these logs. LastUsers can only display such information as is present in your log files. - 2.1 ----------------- The document index ------------------------ 2.1 - Chapter: Topic: 1 ........ Version information 2 ........ General overview 2.1 - Document index 3 ........ Command line options 3.1 - Example command lines 4 ........ How to setup a working system 4.1 - One node system, in bulletin menu 4.2 - Two nodes, output displayed at login 4.3 - Two nodes, output displayed at login with a header file 5 ........ Multinode support 6 ........ Output customizing 6.1 - Statistical functions 6.2 - Quote option 7 ........ Misc info 7.1 - 'Black-Listing' people 7.2 - NOTE about the P and K activity flags 8 ........ Version history 9 ........ How to contact the author 10 ........ Distribution - 3 -------------------- Command line options --------------------- 3 - ------------------------------------------------------------------------- -o Output file name (-o"XENOLINK:Text/1/LastUsers") NOTE: use double quotes ! - Log files to include in display (-1 -2 -3 -4 -5 -6 -7 -8 ... ) This would search files XENOLINK:Log/CALL-1.LOG, CALL-2.LOG ... -s Enable statistics functions, that is, enables the tilde and at codes before and after the @@ line. This creates a XENOLINK:LastUsers.dat file where stats are recorded from your BBS. See more info in chapter 6.1 - Statistical functions. -a Output an ascii copyright line. When the -a option is in the command line the default format file is XENOLINK:LastForm.txt. When there is no -a option in the command line the default format file is XENOLINK:LastForm.gr1. -aa Automatic ASCII creation. This option removes the need for a separate LastForm file for your ASCII output and you get both versions (ANSI & ASCII) with a single run of the program. The -aa option strips the ANSI-output file clean of any [*m (color and style changes) ANSI-codes and expands any [nC (n empty spaces) codes to their full lenght of empty spaces. If you want better ANSI-stripping you should use two separate LastForm files for your ANSI & ASCII outputs. The output name is changed from yyy/1/XXXX to yyy/0/XXXX. So you should give the path and name for the ANSI output file with the -o command line option. Note that the stripping is also done to the header file. You don't need the -a option, if you are using the -aa option. -r Reverse display order, latest caller is shown last -n Number of users to display (defaults to 20, max 9999) -h Header file to include in output (BBS-logo or similar). The default screen clearing code will be left out when this option is on NOTE: use double quotes ! (-h"XENOLINK:Text/MyHeader") -b Buffer size (optional), amount of log file to read per node specified in kilo bytes (-b10 = buffer size of 10240 bytes). If no -b is specified LastUsers uses automatic buffer size detection which takes some additional disk access time. A good rule is to use one kilo byte per one user displayed, so for 15 users (-n15) use buffer setting -b15. Using a fixed buffer size is faster than letting LastUsers figure out how many kilobytes it must read for n number of users to display. -f Format file name, this file is used for formatting your output. This option is especially handy when testing different format files while customizing your output. This setting overides the -a setting, but you still get an ansi or an ascii copyright line depending on the -a option. NOTE: use double quotes ! (-f"ram:MyFormatFile") -l/ Automatic log file sizer. This option can be used to automatically limit your log file size to a certain amount of kilo bytes. This is especially usefull if you keep a log file just to please this util. NOTE: To use this option you need to run the UnlockLogs command in your logout scripts before running LastUsers. You can LockLogs after you have run LastUsers, like this: UnlockLogs mypassword LastUsers -1 -l110/20 ... LockLogs mypassword You use it like this : -l100/10 Would wait until the log file would be 100 kilobytes in size and then truncate it to 90 (100-10) kilobytes. -l20/0 Would keep the log file at all times at 20 kilobytes. -l1000/100 Would wait until log file is 1000 kilobytes (1024000 bytes) and then chop it to 900 kilobytes (921600 bytes). No action is taken if the log file size is under the specified chop limit. This operation is done only to the log file of the node that comes FIRST in the command line. This is limited to this node only to prevent read/write collisions with other Xenolink nodes (as Xenolink might be writting to other log files if these nodes have callers on them). Take a look at the multinode part for more discussion about this. NOTE: if you run LastUsers several times (for different outputs) during the logout script you naturally only need to include this option in one of the command lines. -d Alternative copyright line. This switch chooses between two different copyright line designs for different looks. If no -d option is used you get the old copyright line which has been the same since version 1.0. If the -d option is on you get a bit more 'modern' design with different colors. -z Add alias after the user name. If this option is on and you are using Xenolink version Z3 or higher you get the users alias after the real name in parentheses (alias). Note that this means you have to reserve extra space to fit the alias in too. See LastForm.aliasZ3. files for an example. -e Also list incoming mailer sessions as incoming callers. The Sysop: field is displayed as the name and the Location: field as the location. Uploads, downloads, baud rates and online times are also listed. -i Add incoming mailer sessions zone number after the Sysops name. Will only work if option -e is on. -g Copyright message at the end of output. No default screen clearing. -@ Add a '@' character to start of the Copyright message. This option is only on if the -g option is off. The options are not case sensitive and can be in any order you like. Unless otherwise noted, the option is ON when it's included in the command line otherwise it's off. Multinode (more than one node) users should take a look at the Multi Node Support paragraph for an additional note about command line formatting - 3.1 ----------------- Example command lines ------------------- 3.1 - LastUsers -o"XENOLINK:Text/LastUsers.TXT" -1 -2 -s - This would search log files XENOLINK:Log/CALL-1.LOG and XENOLINK:Log/CALL-2.LOG and would display the last 20 users from nodes 1 and 2 to the output file XENOLINK:Text/LastUsers.TXT using the XENOLINK:LastForm.gr1 file to format its output, with the statistics functions on and automatic buffer size detection. LastUsers -r -s -n15 -b15 -1 -h"XENOLINK:Text/MyHeader" -aa -o"XENOLINK:SystemText/1/Access-10" - Outputs last 15 users from node 1 in reversed order and includes the file XENOLINK:Text/MyHeader to the start of output. Outputs both the ANSI SystemText/1/Access-10 file and an ASCII SystemText/0/Access-10 file. The statistics options are on and a fixed size buffer of 15 kilos is used. LastUsers -4 -1 -2 -f"XENOLINK:Text/MyFormat.gr1" -h"XENOLINK:Text/MyHeader" -o"XENOLINK:Text/1/LastList" -aa -s -r -n10 -b15 -e -i -g -d -z -l400/100 - Outputs the ten last callers from nodes 1, 2 and 4 to the files Text/1/LastList and Text/0/LastList. Text/MyFormat.gr1 is used for output formatting and the file Text/MyHeader is added to the start of the outputs and the copyright message to the end of the outputs. The statistics functions are on and if there has been a new caller on node 4 since LastUsers was last run the datafile is updated. Callers will be outputted in reverse order, incoming mailers are also displayed with their node numbers, the users aliases are displayed after their real names. If the XENOLINK:Log/CALL-4.LOG file is over 400 kilo bytes in size it will be truncated to 300 kilo bytes. - 4 --------------- How to setup a working system ----------------- 4 - ------------------------------------------------------------------------- NOTE ! Xenolink does not automatically write all information to the log file right after the user logs off. To make sure that Xenolink writes the users info to the log file you must first issue the 'UnlockLogs mypassword' command in your Logout.n scripts. After running LastUsers you can relock the logs with the 'LockLogs mypassword' command. To use these commands you must start MT with the option LOGPASSWORD=mypassword. This is important if you want up to date information shown in your LastUsers output. Otherwise the user that just logged off wont propably be shown in your output. The log files must also be Unlocked for the -l command line option to work. - 4.1 ------------- One node system, in bulletin menu ----------- 4.1 - NOTE ! The included script Install.s will do the steps 1,2,5 and 6 for you when you execute it. 1. Copy the file 'LastForm.gr1' to your XENOLINK: directory, copy 'LastUsers' to your C: directory. Edit 'LastForm.gr1' to suit your needs. More details about editing in 'Output customizing' 2. Edit your LOGOUT SCRIPT (XENOLINK:Scripts/Logout.n) and add the following or similar lines there ; - Cut here UnlockLogs mypassword LastUsers -o"XENOLINK:Text/1/LastUsers" -1 -aa -s LockLogs mypassword ; - Cut here Change the -1 setting to which ever node(s) you want to 3. Choose a place to display these text files. For example add to your bulletinmenu.src the following: ; - Cut here CMD = "1" { TypeFile "LastUsers" } ; - Cut here 4. Compile your new bulletinmenu 5. If you are using the statistics option, copy the LastQuotes.txt file to your XENOLINK: directory 6. If you have some non-wanted users (like yourself) you don't want to show in the output, copy the NoLastUsers.txt to your XENOLINK: directory and edit it to suit your needs. More info under 'Black-listing people' (chapter 7.1) 7. In order for the P-activity flag to work you must add a LogMessage command before your PageSysOp command(s). See Misc info (chapter 7) for details. Now users can see a list of your last 20 users by pressing '1' in the bulletins menu - 4.2 ----------- Two nodes, output displayed at login ---------- 4.2 - 1. Copy the file 'LastForm.gr1' to your XENOLINK: directory, copy 'LastUsers' to your C: directory. Edit 'LastForm.gr1' to suit your needs. More details about editing in 'Output customizing' 2. Edit your LOGOUT SCRIPT for node 1 (XENOLINK:Scripts/Logout.1) and add the following or similar lines there ; - Cut here UnlockLogs mypassword LastUsers -o"XENOLINK:Text/1/Access-10" -n10 -b10 -1 -2 -r -s -aa ; - note that node one comes first ^^ LockLogs mypassword Copy XENOLINK:Text/1/Access-10 XENOLINK:Text/1/Access-20 Copy XENOLINK:Text/0/Access-10 XENOLINK:Text/0/Access-20 Copy XENOLINK:Text/1/Access-10 XENOLINK:Text/1/Access-30 Copy XENOLINK:Text/0/Access-10 XENOLINK:Text/0/Access-30 Copy XENOLINK:Text/1/Access-10 XENOLINK:Text/1/Access-40 Copy XENOLINK:Text/0/Access-10 XENOLINK:Text/0/Access-40 ; - Cut here 3. Edit your LOGOUT SCRIPT for node 2 (XENOLINK:Scripts/Logout.2) and add the following or similar lines there ; - Cut here UnlockLogs mypassword LastUsers -o"XENOLINK:Text/1/Access-10" -n10 -b10 -2 -1 -r -s -aa ; - note that node two comes first ^^ LockLogs mypassword Copy XENOLINK:Text/1/Access-10 XENOLINK:Text/1/Access-20 Copy XENOLINK:Text/0/Access-10 XENOLINK:Text/0/Access-20 Copy XENOLINK:Text/1/Access-10 XENOLINK:Text/1/Access-30 Copy XENOLINK:Text/0/Access-10 XENOLINK:Text/0/Access-30 Copy XENOLINK:Text/1/Access-10 XENOLINK:Text/1/Access-40 Copy XENOLINK:Text/0/Access-10 XENOLINK:Text/0/Access-40 ; - Cut here Change the -1 -2 and -2 -1 settings to which ever node(s) you want 4. If you are using the statistics option, copy the LastQuotes.txt file to your XENOLINK: directory 5. If you have some non-wanted users (like yourself) you don't want to show in the output, copy the NoLastUsers.txt to your XENOLINK: directory and edit it to suit your needs. More info under 'Black-listing people' (chapter 7.1) 6. In order for the P-activity flag to work you must add a LogMessage command before your PageSysOp command(s). See Misc info (chapter 7) for details. Now users with access levels 10, 20, 30 or 40 will see a list of the last 10 users and a wealth of different statistics every time they log into your system - 4.3 -- Two nodes, output displayed at login with a header file - 4.3 - 1. Copy the files 'LastForm.gr1' and 'LastForm.txt' to your XENOLINK: directory, copy 'LastUsers' to your C: directory. Edit 'LastForm.gr1' and 'LastForm.txt' to suit your needs. More details about editing in 'Output customizing' 2. Rename your old SystemText/1/LOGIN.TXT and SystemText/0/LOGIN.TXT to something like 'XENOLINK:Text/MyOldLOGIN.gr1' and 'XENOLINK:Text/MyOldLOGIN.txt' . You might want to add a ~402 tilde code (Wait for ) to the end of these text files. 3. Edit your LOGOUT SCRIPT for node 1 (XENOLINK:Scripts/Logout.1) and add the following or similar lines there ; - Cut here UnlockLogs mypassword LastUsers -o"XENOLINK:SystemText/1/LOGIN.TXT" -n15 -b15 -1 -2 -s -h"XENOLINK:Text/MyOldLOGIN.gr1" LastUsers -o"XENOLINK:SystemText/0/LOGIN.TXT" -n15 -b15 -1 -2 -s -a -h"XENOLINK:Text/MyOldLOGIN.txt" -l400/50 ; - note that node one comes first ^^ effects only XENOLINK:Log/CALL-1.LOG ^^^^^^^ LockLogs mypassword ; - Cut here 4. Edit your LOGOUT SCRIPT for node 2 (XENOLINK:Scripts/Logout.2) and add the following or similar lines there ; - Cut here UnlockLogs mypassword LastUsers -o"XENOLINK:SystemText/1/LOGIN.TXT" -n15 -b15 -2 -1 -s -h"XENOLINK:Text/MyOldLOGIN.gr1" LastUsers -o"XENOLINK:SystemText/0/LOGIN.TXT" -n15 -b15 -2 -1 -s -a -h"XENOLINK:Text/MyOldLOGIN.txt" -l400/50 ; - note that node two comes first ^^ effects only XENOLINK:Log/CALL-2.LOG ^^^^^^^ LockLogs mypassword ; - Cut here Change the -1 -2 and -2 -1 settings to which ever node(s) you want 5. If you are using the statistics option, copy the LastQuotes.txt file to your XENOLINK: directory 6. If you have some non-wanted users (like yourself) you don't want to show in the output, copy the NoLastUsers.txt to your XENOLINK: directory and edit it to suit your needs. More info under 'Black-listing people' (chapter 7.1) 7. In order for the P-activity flag to work you must add a LogMessage command before your PageSysOp command(s). See Misc info (chapter 7) for details. Now all users logging in to your system will see your old LOGIN texts followed by a list of the last 15 users and a wealth of different statistics about your BBS every time they log into your system. And your log files are automagically limited to a size of 400 kilo bytes. - 5 --------------------- Multi Node support ---------------------- 5 - ------------------------------------------------------------------------- This version currently supports 256 nodes. In the unlikely event that two or more users log off at the same time the other 'LastUsers' try to open the output file a few times (Delay()ed) before giving up and simply printing a short message to your CLI window informing you that the output file was in use (note that any error output from LastUsers will not be shown in your CLI window when XENOLINK runs the logout scripts. To see if anything is going wrong redirect the output to a file) . If you are using the statistics options and especially the online time and busy ratio options OR you are using the -l command line option there is a small thing you must take note of. So that LastUsers could find out from which node it was called from always put the current node number first in the command line. So you should have a separate logout script for each node and separate command line syntax for LastUsers in each script. Example: (for a 3 node system) In the logout script for node #1 you should have something like this: (The actual command line may vary in different systems. The only consern here is the order of node numbers in the command line) LastUsers -o"XENOLINK:SystemText/0/Access-10.TXT" -n10 -b10 -r -a -s -1 -2 -3 ; IMPORTANT !!! ------------------------------> node one comes first ^^ And in the logout script for node #2 LastUsers -o"XENOLINK:SystemText/0/Access-10.TXT" -n10 -b10 -r -a -s -2 -1 -3 ; node two comes first ^^ And finally for node #3 LastUsers -o"XENOLINK:SystemText/0/Access-10.TXT" -n10 -b10 -r -a -s -3 -1 -2 ; node three comes first ^^ This way LastUsers can always add the correct statistics information from the user that just logged off to the old information of the correct node and the -l option knows which log file to chop. NOTE: This restriction is only for multi node users who run LastUsers for more than one node and use the statistics functions or the -l option. - 6 -------------------- Output customizing ----------------------- 6 - ------------------------------------------------------------------------- Output is customized with a special format text file. Take a look at the many examples included in this distribution archive. For a quick look at what to expect try the suggested command lines at the Misc info chapter (chapter 7). Default names for these text files are: XENOLINK:LastForm.txt (when the -a option is on) XENOLINK:LastForm.gr1 (no -a option) Or you can specify your own format file with the -f option Everything but the one copyright line (which is automatically added between the header file and the actual list of users) can be freely customized. The copyright line is ANSI or ASCII depending on your -a setting. See the -d option (chapter 3) for extra info. The -aa command line feature enables automatic ASCII creation from your ANSI LastForm file, so you should need only one LastForm file. See more information about the -aa option in Command Line Options. As you will see the text files include a special line starting with two '@' characters. This line will be copied for all users like this: A - characters will be replaced with the login date ('AA' shows only the date, 'AAAAAA' shows the date and month 'AAAAAAAAA' shows the date, month and year) max 9 A-chars B - login time (five 'B'-chars will show the whole login time (XX:XX)) max 5 B-chars C - logout time ('CCCCC' -> 'XX:XX') max 5 C-chars D - baud rate (use as many as your hardware allows ('DDDDD' should be enough for anyone)) max 5 D-chars, right justified E - user name with optional alias in parentheses (see -z and -e options) max 48 E-chars, left justified F - user location max 30 F-chars, left justified G - upload bytes in kilos ('GGGGGGG' will be enough for 9999999 kilos) max 10 G-chars, right justified H - download bytes in kilos max 10 H-chars, right justified I - top CPS rate for this users transfers max 10 I-chars, right justified J - node number for this user no max number, left justified K - number of uploads, '0' if none max 10 K-chars, right justified L - number of downloads, '0' if none max 10 L-chars, right justified M - number of messages, '0' if none max 10 M-chars, right justified N - average CPS rate for this users transfers max 10 N-chars, right justified O - upload bytes (not in kilos like G or H) max 10 O-chars, right justified P - download bytes (not in kilos like G or H) max 10 P-chars, right justified Q - online time for this user in minutes (login time minus logout time) max 10 Q-chars, right justified R - users alias For every caller listed the user file is scanned for an alias. For improved readability the aliases are formatted like this: "BLACK HAWK" -> "Black Hawk" or "- MeGa BoSs -" -> "- Mega Boss -" max 24 R-chars, left justified S - online time in hours and minutes, format 00:00 max 5 S-chars T - baud rate in kilobauds, with a decimal point (example: 14.4) max 4 T-chars, right justified ~ - customable activity flags to include in the @@ line: the tilde code format is: The actual tilde code | String to be displayed if flag was on, terminated by a ~ char | | String to be displayed if flag was off, ends with ~ | | | ~XFLAGONSTRING~FLAGOFFSTRING~ Valid codes would be: ~UU~-~ ~Uuploaded~didn't upload~ ~Uuploaded~~ This way you can have different strings outputted depending on users activities. The strings can be any size and include ansi codes or they can be just single letters or even empty. Activity flags: ~U - User uploaded files ~D - User downloaded files ~M - User entered messages ~G - User entered one or more doors ~L - Bad logoff (e.g. time limit exceeded, dropped carrier ...) ~N - New (Guest) user, this flag is on if users TemplateName starts with the word 'Guest' ~S - User is a Sysop, this flag is on if users TemplateName starts with the word 'Sysop' ~P - Paged sysop (See extra info in the Misc info chapter) ~K - Played doors (flag sensitive to custom log message, see extra info in the Misc info chapter) ~H - Illegal access attempt(s) before user got in this could show a possible board hacker or a user with a bad memory or a just a simple typo ~A - User had aborted file transfers this indicates that the up/download bytes for this user are not necessarily correct since some transfers were aborted See more info about aborted tranfers in chapter 3 ~B - User had aborted uploads ~C - User had aborted downloads ~F - Caller is a mailer (non-human) ~E - Users login and/or online time with optional messages This was implemented to emulate the neat online time display by some AmiExpress utilities. NOTE: This is different from the other ~-codes ; format is: ~ETIMEINFO~USERSTILLONLINESTRING~NOLOGOUTTIMESTRING~ Only the login and online time @@-line codes B,Q and S are supported in the INFO/STRING fields. Examples: ~EBBBBB QQQ mins~ - ONLINE - ~ - ?????? - ~ ~EQQQ Mins~ OnLine ~Unknown!~ ~I - User uploaded bytes with custom no bytes string Only the upload byte @@-line codes G, K and O are supported ; format is: ~IUPLOADINFO~NOUPLOADSTRING~ Example: ~IGGGGG@Kb~ - ~ ~J - User downloaded bytes with custom no bytes string Only the download byte @@-line codes H, L and P are supported ; format is: ~JDOWNLOADINFO~NODOWNLOADSTRING~ Example: ~JHHHHH@Kb~ - ~ NOTE: There is a special format for the ~U ~D ~M codes No FLAGONSTRING specified | ~X~FLAGOFFSTRING~ In this case the FLAGONSTRING is replaced with the number of events that occured. Maximum number is 9 per event. So this example line @@ JJ AAAAAA BBBBB-CCCCC DDDDD EEEEEEEEEEEEEE FFFFFFFFFFFFFFFFFFF ~U~-~~D~-~~M~-~~GG~-~~LL~-~~NN~-~~PP~-~~HH~-~~AA~-~ would come out like this: 15 26-Feb 12:22-13:04 14400 Username Userlocation 2-4GLN--- or it could be like this: 1 26-Feb 23:44-00:23 2400 Username Userlocation 41----PH- Another example line @@AA BBBBB ~EQQ mins~Online!~Unknown~ DDDDD EEEEEEEEEEEEEEEEE ~IKK (GGGGGk)~ - - ~ ~JLL (HHHHHk)~ - - ~ NNNN ~MM~-~~GG~-~~LL~-~~NN~-~~PP~-~~HH~-~~AA~-~ would come out like this: 27 01:02 34 mins 14400 Username 12 ( 2345k) 2 ( 4k) 1723 M---P-A or it could be like this: 02 20:23 Unknown 9600 Username 1 ( 345k) - - 873 -GLNPH- A more verbose line like this (with the -z command line option on): @@EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE logged in at BBBBB on node J and stayed QQ minsand ~Uuploaded and ~~~Ddownloaded and ~~wrote ~M~no~ messages and logged off ~Lbadly~ok~. could be like this: John Smith (The Mutha) logged in at 01:02 on node 2 and stayed 34 minsand uploaded and downloded and wrote 3 messages and logged off ok. or then again it could be like this: Hank Butler (Pervert) logged in at 12:32 on node 1 and stayed 89 minsand wrote no messages and logged off badly. To include one of the reserved characters (A-T) in your @@-line, pad it with an additional @-char. So to get the capital K, use '@K'. The format line starts from the two '@@' -chars and ends with the next return. Anything before and after the two '@@'s and the cr (ascii code 10) is added to the output as is. Possible tilde and at codes are replaced with the relevant information. You can freely mix Xenolinks own tilde codes into your output. - 6.1 ------------------ Statistical functions ------------------ 6.1 - If the statistics options are enabled (command line option -s) the text before and after the @@ line is also searched for various tilde and at codes. The information needed for these functions is stored in a data file XENOLINK:LastUsers.dat. NOTE: All these codes are case sensitive ! Code Description Space needed ~A - uploads today in kilo bytes 2-10 chars ~B - uploaded files today 2-10 chars ~C - uploads yesterday in kilos 2-10 chars ~D - uploaded files yesterday 2-10 chars ~E - downloads today in kilo bytes 2-10 chars ~F - downloaded files today 2-10 chars ~G - downloads yesterday in kilos 2-10 chars ~H - downloaded files yesterday 2-10 chars ~I - uploads from the last 7 days in kilos 2-10 chars ~J - uploaded files from the last 7 days 2-10 chars ~K - downloads from the last 7 days in kilos 2-10 chars ~L - downloaded files from the last 7 days 2-10 chars ~M - time bbs has been online today in minutes 4-10 chars ~N - time bbs was online yesterday in minutes 4-10 chars ~O - number of calls today 2-10 chars ~P - number of calls yesterday 2-10 chars ~Q - number of calls during the last 7 days 2-10 chars ~R - bbs busy ratio, 100% = bbs online all day 3 chars ~S - uploads in kilos all time 2-10 chars ~T - uploaded files all time 2-10 chars ~U - downloads in kilos all time 2-10 chars ~V - downloaded files all time 2-10 chars ~W - calls to system all time 2-10 chars ~X - uploads in BYTES all time 2-10 chars ~Y - downloads in BYTES all time 2-10 chars ~Z - quote of the day X chars ~a - messages written today 2-10 chars ~b - messages written yesterday 2-10 chars ~c - messages written 7 day 2-10 chars ~d - messages written all time 2-10 chars ~e - todays top CPS rate 2-10 chars ~f - todays average CPS rate 2-10 chars ~g - all time top CPS rate 2-10 chars ~h - random smiley 4 chars ~i - number of sysop pages today 2-10 chars ~j - number of bad logoffs today 2-10 chars ~k - number of password hacks today 2-10 chars ~l - number of new users today 2-10 chars ~m - daily average uploaded kilos 3-10 chars ~n - daily average uploaded files 3-10 chars ~o - daily average downloaded kilos 3-10 chars ~p - daily average downloaded files 3-10 chars ~q - daily average messages 3-10 chars ~r - daily average calls 3-10 chars ~s - weekly average uploaded kilos 3-10 chars ~t - weekly average uploaded files 3-10 chars ~u - weekly average downloaded kilos 3-10 chars ~v - weekly average downloaded files 3-10 chars ~w - weekly average messages 3-10 chars ~x - weekly average calls 3-10 chars ~y - average call lenght all time 3-10 chars ~z - average bbs online time per day 3-10 chars ~[ - average bbs busy ratio 3-4 chars ~\ - time bbs has been online last 7 days 4-10 chars ~] - time bbs has been online today in hours 3-10 chars ~{ - BBS busy ratio yesterday 3-10 chars ~| - BBS busy ratio last 7 days 3-10 chars ~} - all time daily calls record 3-10 chars ~! - all time daily messages record 3-10 chars ~" - all time daily bbs online record 3-10 chars ~# - all time daily uploaded files record 3-10 chars ~$ - all time daily uploaded kilos record 3-10 chars ~% - all time daily downloaded files record 3-10 chars ~& - all time daily downloaded kilos record 3-10 chars ~' - all time daily bbs online in hours record 3-10 chars ~( - all time daily bbs busy ratio record 3-10 chars ~) - all time daily uploaded megas record 3-10 chars ~* - all time daily downloaded megas record 3-10 chars Node specific @-codes: ---------------------- General format: @NODE:FUNCTION:LENGTH Where NODE is the number of the node (from 0 to 255) and FUNCTION is one of the functions below and LENGTH is the space taken up by the value. FUNCTION & Description: 1 - uploads today in bytes 2 - uploaded files today 3 - downloads today in bytes 4 - downloaded files today 5 - messages written today 6 - calls to system today 7 - online time today 8 - uploads today in kilo bytes 9 - downloads today in kilo bytes 10 - uploads yesterday in bytes 11 - uploaded files yesterday 12 - downloads yesterday in bytes 13 - downloaded files yesterday 14 - messages written yesterday 15 - calls to system yesterday 16 - online time yesterday 17 - uploads yesterday in kilo bytes 18 - downloads yesterday in kilo bytes 19 - uploads last 7 days in bytes 20 - uploaded files last 7 days 21 - downloads last 7 days in bytes 22 - downloaded files last 7 days 23 - messages written last 7 days 24 - calls to system last 7 days 25 - online time last 7 days 26 - uploads last 7 days in kilo bytes 27 - downloads last 7 days in kilo bytes 28 - busy ratio for today for this node 29 - busy ratio for yesterday for this node 30 - busy ratio for last 7 days for this node Example @-codes: @2:7:4 would output the time node 2 has been online today (4 chars long, range 0-9999) @10:18:7 would output the downloaded kilo bytes from node 10 (7 chars long, range 0-9999999) In order for these codes to work LastUsers must be run every time a user logs off. If more than one day has passed since LastUsers was last invoked all the daily/yesterday/7day values are reseted to zeroes. The online time values and busy ratio are especially sensitive about this. They will not show correct values if LastUsers isn't run after every logoff. Multinode (more than one node) users should take a look at the Multi Node Support paragraph for an additional note about command line formatting. All today/yesterday/7day values will at first show '0'. Information is gathered into the data file as time passes. The average values are calculated from the whole time LastUsers has been active. They differ from other codes since they are displayed with one decimal precision (like 99.9) . To control the space needed for these codes you use them like this: ~AAAAAA, ~BB, ~RR, ~XXXXXXXXX and so on ... So the minimum space needed for a code would be two chars (~X) (NOTE: Some codes need more space than the minimum of two) The corresponding values are automatically scaled to fit this space. ~X would limit the output to 0-99 ~XX would limit the output to 0-999 ~XXX would limit the output to 0-9999 and so on ... The ~Z option is always expanded to the full size of the random quote. So keep this in mind when you're designing your own output. NOTE: The special codes are case sensitive (~A is NOT same as ~a) !!! Experiment freely with different form files to get the idea and best possible results ... - 6.2 ------------------- Quote option (~Z): -------------------- 6.2 - Lines of true wisdom... separated by a ~ character. One quote is entered randomly at the ~Z location. The quote file name is 'XENOLINK:LastQuotes.txt'. If no XENOLINK:LastQuotes.txt file is found the ~Z option is disabled. You can edit this text file with any text editor. The quotes in the LastQuotes.txt file are all ripped from various sources, so if you recognize your typos, thanks ! - 7 ------------------------- Misc info --------------------------- 7 - ------------------------------------------------------------------------- To try out some of the example format files included try this from CLI: First CD to the directory where you extracted the distribution archive and then either snap these command lines or copy them to the CLI window or execute the included Sample.s script: MakeDir RAM:0 RAM:1 LastUsers -o"RAM:1/test1" -0 -1 -n10 -b10 -aa -s -d -f"Forms/LastForm.gr1" LastUsers -o"RAM:1/test2" -0 -n10 -b10 -aa -s -d -f"Forms/LastForm.New.gr1" LastUsers -o"RAM:1/test3" -0 -1 -n10 -b10 -aa -s -f"Forms/LastForm.multinodefile.gr1" LastUsers -o"RAM:1/test4" -1 -n15 -b15 -aa -s -f"Forms/LastForm.IBM.gr1" LastUsers -o"RAM:1/test5" -1 -n20 -b20 -aa -s -f"Forms/LastForm.LogBook.gr1" LastUsers -o"RAM:1/test6" -1 -n10 -b10 -aa -s -f"Forms/LastForm.NosCALLER.gr1" LastUsers -o"RAM:1/test7" -1 -n1 -b1 -aa -s -f"Forms/LastForm.friendly.gr1" LastUsers -o"RAM:1/test8" -1 -n10 -b10 -aa -s -d -f"Forms/LastForm.big.gr1" LastUsers -o"RAM:1/test9" -1 -n10 -b10 -aa -s -z -f"Forms/LastForm.aliasZ3.gr1" LastUsers -o"RAM:1/test0" -0 -1 -n10 -b10 -aa -s -f"Forms/LastForm.Super-AmiLog.gr1" Now you should have 20 different text files showing you different kinds of output options available to you. - 7.1 ----------------- 'Black-Listing' people ------------------ 7.1 - If there are some people whose logins and activities you don't want to display in your output you can make a list of these names into a file called: 'XENOLINK:NoLastUsers.txt' Format of this text file: [* optional asterix] Example: ; Cut here *Sysop John Smith ; Cut here People whose names are on this list won't show up in the list of last callers to your system. People who have the extra asterix in front of their names won't be counted to the total/all time sums in statistics options. The names are NOT case sensitive (john smith=JOHN Smith). If no 'XENOLINK:NoLastUsers.txt' file is found the option is disabled. - 7.2 ----- Special NOTE about the P and K activity flags ------- 7.2 - Xenolink has no log entry for paging the sysop so simply add your own with a LogMessage(Paged Sysop) command just before your PageSYSOP command. The message search is case sensitive so remember that capital 'P'. Sample entry to your mainmenu.src : CMD = "O" { LogMessage(Paged Sysop) PageSYSOP } Since you can have many kinds of doors, you might not want to flag all of them as 'user played doors'. For this purpose you can add a LogMessage for only the doors that you wish to be listed. Use the ~K tilde code instead of the ~G tilde code and add the following or similar LogMessage before or after each of the doors you want. The message search is pretty loose. You only have to have a capital 'D' as the first letter of your custom log message. Sample entry to your doormenu.src : CMD = "1" { LogMessage(Door opened) XenolinkDoor "XenoSnaky" } - 8 ----------------------- Version history ----------------------- 8 - ------------------------------------------------------------------------- NOTE: Information in these version histories may NOT be correct or work with this version of LastUsers (2.5), especially the parts marked with an * aren't true anymore. ----------------------- Version 2.4c (12/05/93) ----------------------- - Added the -i command line option. This will add the first zone number found in an incoming mailer session and adds it after the sysops name. * - Bumped the maximum recorded cps limit up to 10000. - Changed all the copyright messages a bit. - Changed the way Exec-library was called. The ExecBase is now 'cached'. ----------------------- Version 2.4b (15/03/93) ----------------------- - Removed the annoying debug-leftover-screen-flashing when the -e option was on. - Added the ~K @@-line tilde code to search the log for LogMessages beginning with a capital 'D'. - Now you can use the normally reserved letters (capitals 'A-T') in your @@-line. Just add an extra '@' char in front of the capital letter. ------------------------ Version 2.4 (14/02/93) ----------------------- - Added the node specific statistics - Added the ability to list incoming mailer sessions (command line option -e) - Added miscallenous new options - Fixed a bug that some times caused weird online times in multinode systems - Fixed the today/yesterday/7day statistics to be read from log files instead of user files. Values are no longer sensitive of changes in user files. ------------------------ Version 2.3 (28/07/92) ----------------------- - Added the average bbs statistics - all kinds of average displays. - Added the -z command line option to support Xenolink version >=Z3 option to add the alias after the real name. - Fixed black-listing of people. The name checking didn't always work correctly. - Improved the opening of some crucial files (like the output file and the log files) so that LastUsers tries to open them repeatedly before giving up and displaying an error message. NOTE: this may cause some delays if you specify wrong output names or false nodes. ----------------------- Version 2.2c (14/07/92) ----------------------- - This was another bug fix release. The -d and -l options were fixed and updated. ----------------------- Version 2.2b (02/07/92) ----------------------- - This was a bug fix release. The months June and July got mixed up. Sorry about this, but the problem didn't show up before July and now it's fixed. ------------------------ Version 2.2 (25/06/92) ----------------------- - Added automatic ASCII version creation - Added optional automatic CALL-XX.LOG file sizing - Added a black-list of callers not to show or include in statistics - Added some more statistics functions - Added the option to show users alias - Added some more quotes, this time some really weird ones ... - Added an alternative copyright line design (command line option -d) - Changed numeric statistics tilde codes to alphabetic to prevent collision with Xenolinks own tilde codes - Statistics tilde codes are now more configurable, can be any size and BEFORE and after the list of last callers - Made the caller line tilde codes more configurable - Now correctly displays 300 baud callers - No longer flags download autologout as 'Bad' - No longer crashes when couldn't find 'LastQuotes.txt' - Fixed odd CPS displaying bug - Limited the CPS values to 6000 CPS, values higher than this are just miscalculations by Xenolink ------------------------ Version 2.1 (22/04/92) ----------------------- - Added statistics functions for additional information displaying - Added online time displaying for a user - Added an option to specify any format file - Added an option to count aborted downloads or not - Reintroduced the -buffer option for more speed - Fixed a nasty memory trashing bug resulting from a really stupid typo - LastUsers now uses a data file (XENOLINK:LastUsers.dat) to store additional information ------------------------ Version 2.0 (29/02/92) ----------------------- - Totally rewrote the whole program - Support for upto 256 nodes - Configurable output - Can determine memory needs automatically ------------------------ Version 1.7 (10/11/91) ----------------------- *- Improved file transfer kilos counting -> max. value now 999999 kilos * Changed the Password flag to Page Sysop flag (see note in Extra info) ------------------------ Version 1.6 (16/10/91) ----------------------- - Some copies of version 1.5 included a nasty memory freeing bug -> removed Added the Password hacking activity flag (this could indicate a possible board hacker or a user with a bad memory) Added the -h flag to specify a header file to customize program output ------------------------ Version 1.5 (12/10/91) ----------------------- *- Added the -f1 and -f2 options to display users download and upload * bytes in kilos and showing the highest CPS rate for that user * These are for the more 'file orientated' systems Command line options are no longer case sensitive * Added the CTRL+anykey checking to ***BREAK program ------------------------ Version 1.4 (10/10/91) ----------------------- - Added -r option to list users from last to first or first to last Added -b option to increase the buffer size Changed the number of users to display option to '-nXXX' Number of users displayed counting made more reliable... General cleaning up -> more reliable performance Command line options checking made more flexible Changed U, D & M flags to numbers showing the number of events recorded ------------------------ Version 1.3 (10/10/91) ----------------------- - Program made more reliable with messy or damaged log files Added the option to specify the number of users to list ------------------------ Version 1.2 (07/10/91) ----------------------- - Fixed some major bugs, rewrote some code -> shorter/faster executable ------------------------ Version 1.1 (06/10/91) ----------------------- - Added Baud rate, Logout time and New User flag ------------------------ Version 1.0 (03/10/91) ----------------------- - This is the first release version, no bugs known. - 9 ------------------------ To contact me ------------------------ 9 - ------------------------------------------------------------------------- For comments and/or suggestions and/or bug reports: You can reach me at the 'XENOLINK_UTIL' net-mail area. Leave messages to 'Henri Veistera'. Or you can leave me messages at my internet address: hveister@snakemail.hut.fi The fastest way to get a message to me is to leave mail at my internet address. The easiest way, the net-mail area messages, take some time to get to me and also some time for the replies to get back to you. - 10 ----------------------- Distribution ------------------------ 10 - ------------------------------------------------------------------------- The latest version of LastUsers is always released into the XENOL file echo. This program is freely distributable, but is not public domain. The contents of this distribution are copyright material, and may not be altered without express permission of the author. LastUsers may be distributed by any means, electronic or physical, provided no charge, other than for small handling fees such as disk medium charges, is made. It may be distributed on commercial electronic networking services, provided that no fee is made explicitly for it's acquirement, though a general downloading charge is permissable. LastUsers may not be distributed with a commercial product without permission from the author. In most cases this permission will be granted, but it is nevertheless required. No alteration of the contents of the original distribution is acceptable, save for the addition to the package of service notices. LastUsers's documentation, executable, and accompanying support files are to remain unaltered and in original form. This neat disclaimer/license was ripped from the AIBB v4.0 archive. *** Program version 2.5 compiled on the 1st of April 1995 ***