1CFROUTE - A Freeware Fidonet Netmail Packer for Binkley Outbounds 2HISTORY FILE 3----------------------------------------------------------------- 4 5The Initials of the contributors to this software are marked in square 6brackets after the features/fixes that the person contributed. A list of 7contributors can be found at the end of this document. If all changes in a 8specific alpha release have been made by the same person, the person is 9only mentioned in the headline of that alpha release, rather than after 10each feature. 11 12Current CFRoute 13--------------- 14 - Chg: Adapted fc2cfr to recent fidoconfig change in logic of 15 parsing route, routeMail, routeFile. See Fidoconfig ChangeLog 16 entry from Mar 9, 2001. 17 18CFRoute 1.0 stable (forked off for release at 08 Oct 2000) 19---------------------------------------------------------- 20 - Fix: Modified the handling of LASTRUN.CFR. Previously, on some Unix 21 variants, it could happen that a file that could not be processed 22 because the destination link was busy was NOT reprocessed on a later 23 run, unless you used the -I option. 24 - New: Keyword KILLTRANSITFILES. If this keyword is set, attached files 25 from intransit mail will be deleted after the mailer has sent them, even 26 if the (transit) mail did not carry the KFS flag. [TE] 27 - New: Keyword INBOUND. With this keyword, you can configure the 28 directories where cfroute will search for file-attaches from in-transit 29 mail. This is necessary when the tosser does NOT add the correct path 30 name to the subject of netmails with file-attaches, like e.g. hpt. 31 When the tosser does append the path (like Fastecho), you don't need 32 the INBOUND keyword, although it won't to any harm. [TE] 33 - Fix: LASTRUN.CFR did not work properly on Unix - cfroute was always 34 rescanning the complete netmail folder, instead of only new netmails. 35 This is fixed now (if you want the old behaviour, use the -I command 36 line flag). [TE] 37 - New: Preliminary FIDOCONFIG support. You can use the FC2CFR program, 38 which is now part of cfroute, to generate a working CFROUTE 39 configuration file from your fidoconfig configuration file. [TE] 40 - If the new keyword "NOLOOPROUTE" is set in the config file, we will not 41 pack a mail if we have detected a possible mail loop. [TE] 42 - New: Mail with Immediate flag is now packed as IUT instead of OUT, and 43 you can specify "Immediate" as a routing flag in the ROUTE statement 44 in the config file. Attention: Some mailers (e.g. BTXE) don't support 45 the IUT flavour. So don't use the Immediate flag nor a "Immediate" 46 routing statement if you have such a mailer. [TE] 47 - New: Support for JAM Message base (NETJAM keyword). This requires 48 SMAPI 1.6.4b or newer! [TE, with help of the JAM part of smapi, written 49 by Fedor Lizunkov's and Pavel Gulchouck] 50 - Fix: Removed all fread/fwrite calls that read directly into structures. 51 Cfroute now works without structure packing, independently of 52 endianness or other architecture details. You can now use cfroute 53 on any Unix machine, RISC or Intel. [TE] 54 - Fix: Another bugfix for the handling of EXCEPT statements [TE]. 55 - Fixed some crashes on bad syntax in the configuration file. [TE] 56 - Fix: Month field was set one too high (0 = January, but CFRoute 57 wrote 1 for January, and so forth) [TE] 58 - Fixed a crash when trying to route intransit mail without VIA 59 kludge (this can only occur if other systems are misconfigured). [ED] 60 - New keyword "RECODE". Simply do not use it. It is a TEMPORARY 61 WORKAROUND for people in the Russian language area that do not yet 62 support CHRS kludges according to FTSC. It takes as argument a 63 recoding map similar to the one that hpt uses, and will recode all 64 incoming messages from the transport to the local charset, and all 65 outgoing charset from the local to the transport charset. [ED] 66 - Fix: Fixed permissions of newly created directories on Unix. [ED] 67 - Fix: Message hour, minute and second information in Squish folders 68 contained nonsensible values (message *read* only, so non-fatal). [ED] 69 - Fix: The "EXCEPT" statement did not work as stated in the doc, 70 (where it says that it applies to all node numbers following the 71 EXCEPT keyword, and you have to specify another EXCEPT to undo the 72 first one), but it did only apply to the nodenumer immediately 73 following the "EXCEPT". ATTENTION! THIS MAY BREAK EXISTING 74 CONFIGURATION FILES! CAREFULLY CHECK YOUR USAGE OF THE EXCEPT 75 KEYWORD!!! [TE] 76 - Fix: The "EXCEPT" statement did not work for "FROM" routes (EXCEPT 77 clauses were always considered as applying to the "TO" mask). [TE] 78 - Fix: Routing dependent on the day of the week did not work on Sundays 79 (i.E. "U" was not recognised as specifying Sunday in the route 80 statement). [TE] 81 820.95a [TE] 83----------- 84 - Cleaned up the source code tree, moved things into subdirectories, 85 wrote documentation on how to compile the code, etc. Generally, 86 it is now much more easy for other programmes to contribute to 87 CFRoute. 88 - Enabled the Squish interface. Use "Netsquish" to define a Squish 89 netmail area. This code is experimental. Do not use on production 90 systems. Please send bug reports. 91 - Added a Linux version. (other Unixes to follow later). 92 - Bit 11 of the attibute word in a mail is now recognised as "Direct" 93 flag, as used by Timed, Msged and others. 94 - Change in VIABOSSDIRECT behaviour. This keyword specifies that direct 95 mail to a point should be routed via his boss. The change is that 96 if the boss of the point is ourselves (i.E. if the node part of the 97 point AKA is one of our addresses), the mail is not routed to the 98 boss, but directly to the point. (Routing mail to ourselves does not 99 make much sense after all ...). 100 - CFRoute will not only check for, but also create .BSY flag files 101 in the Binkley outbound (if IgnoreBSY has not been specified). 102 - Reworked the FASTECHOPACK feature. Before you try to use it, do 103 read the manual section about it, especially the paragraph labelled 104 with "ATTENTION!!!". You have been warned. Fixes and changes on this 105 part include: 106 - QQQ files are no longer created in the OUTBOUND directory. You 107 must specify a sepearte QQQOUTBOUND directory for QQQ files. 108 - Only bulk mail that is addressed to a link of your system is 109 stored as QQQ file in the QQQOUTBOUND directory. The reason is 110 that only this kind of mail can be properly processed by FASTECHO 111 PACK. All other mail, i.E. direct, crash, etc., mail, or mail to 112 unknown systems, is packed in unarchived form directly into the 113 Binkley outbound. 114 - Fixed handling of file attaches. 115 - Fixed name generation scheme of QQQ files. It though is still not 116 completely non-intersecting with the Fastecho scheme. See the 117 manual entry on FASTECHOPACK for more information. 118 - Fixes for GNU compilers. 119 - Year 2000 fixes. 120 1210.94a [CFS] 122----------- 123 - Fixed a potential problem with directory naming. Never ocurred but 124 one never knows... 125 - NoDomainDir should be working as expected. 126 - CFRoute can now import data from FastEcho. See FEConfig in the 127 documention. 128 - Corrected a few things on the documentation. 129 - NOPACKFILES wasn't working - one had to use NOPACKFILE to make it 130 work. 131 - NOPACK* was only working for netmail to be routed, but it was 132 packing netmail to be sent direct. 133 1340.93a [CFS] 135----------- 136 - Fixed a potential problem regarding messages headers containing %. 137 - INTL lines now has priority over .MSG headers, i.e. if the header's 138 net & node info don't match the INTL info, the INTL info will be 139 used. 140 - Replaced the English manual with the new one. It is still a draft, 141 though, being revised by a English-speaking person. New documentation 142 in Spanish (by myself), German and Dutch will follow. 143 1440.92a (not publicly released) [CFS] 145----------------------------------- 146 - Added a work around for misbehaved (IMHO) editors using newlines 147 characters. 148 1490.91a [CFS] 150----------- 151 - Via lines are now directly added to the .PKTs rather than 152 signing the .MSG first. CFR was signing .MSGs because it 153 allows to see the Via line added to local messages (it made 154 no difference to in-transit messages, obviously) and it 155 was nice for debugging, but it is no longer necessary. 156 - Point number is no longer added to via lines if it is zero, 157 i.e. 158 Via 2:341/70.0@fidonet.org... 159 is now 160 Via 2:341/70@fidonet.org 161 This is the way most program sign. 162 - Empty path lines are no longer logged. 163 - Fixed a bug regarding EXCEPT. 164 1650.90a [CFS] 166----------- 167 =============================================================== 168 First: Since we have reached 0.90, I think it is time to stop 169 adding features and start hunting bugs seriously. Please report 170 anything that you think to be a bug, or a possible bug. CFR 1.0 171 has to be bug free. 172 0.91 (unless it is released sooner than I would want to because 173 of a bug) will include up-to-date manuals (English & Spanish, 174 other languages welcome if any one is willing to do the 175 translation). 176 =============================================================== 177 - Fixed the most stupid bug ever: CFR couldn't parse this month's 178 messages because I have used "Dic" instead of "Dec" as the first 179 three letters (in Spanish the last month of the year is 180 "Diciembre"). No harm caused by this. CFR couldn't tell the 181 messages' age, that's all. 182 - Fixed a bug related to address comparison. 183 - Added path logging. If LOGPATH is specified, CFR attempts to 184 parse Via lines and to provide the path the message followed. 185 Example: 186 Path: 2:346/10.2 -> 2:346/10 -> 2:346/3 -> 2:348/201 187 - As a result of the work on the path stuff, the loop detector works 188 again 100%. Remember how it worked: If a local via line is found 189 followed by a non-local line (thus the message left our system 190 but now it back), CFR logs all via line since the last time 191 the message was processed at home. 192 - Added FASTECHOPACK. If you were using FASTECHO PACK and have switched 193 to CFR, but still want to send netmail inside the compressed bundled, 194 this one is for you (not for me; I prefer using .?UT). If used, 195 CFR will create .QQQs instead of .PKT. FastEcho will pack them with 196 its own .QQQs. 197 - Added NODOMAINDIR, if used CFR will not use the domain name to 198 get the outbound dir name. Instead, the default directory (plus 199 the zone number if different than the main zone) will be used. 200 2010.89a [CFS] 202----------- 203 - Fixed a small bug related to INCLUDE'ing. A warning was being 204 incorrectly issued. 205 - Added KILLINTRANSIT per request of Squish users. If used, CFR 206 will delete exported messages with the In-Transit flag event 207 it doesn't have kill/sent set. 208 2090.88a [CFS] 210----------- 211 - EXCEPT was being incorrectly parsed as FROM. 212 2130.87a [CFS] 214----------- 215 - Windows 32-bit versions included. It compiles, that's all I 216 guarantee. Absolutely untested by myself. 217 - Fixed a problem regarding multiple netmail directories in the OS/2 218 version. 219 - Skipped messages are touched so they are not skipped in the next 220 run (because of lastrun.cfr being newer than the message file). 221 - Paths are now stripped from the subject line on attaches (only 222 filenames are left). 223 - Fixed a bug in the address solving function. 224 - Message bodies wasn't being checked for illegal 0s before the end 225 of the message. This is now corrected and CFR will only copy to 226 the first zero. 227 2280.86a [CFS] 229----------- 230 - The OS/2 version is now compiled with GCC. Note that now the EMX 231 run-time is required (even though I don't use any of the EMX 232 extensions). Please send input about noticed performance changes. 233 - Fixed a bug with the from specs. 234 - Added support for multiple netmail directories. Now you can use 235 as many netmail sentences as you want. 236 2370.85a [CFS] 238----------- 239 - Added a '-V' switch that forces CFR to log all via lines. Note that 240 the generated log most likely be very big. It is only used for 241 debugging purpuses. 242 - Added domain support for routing. Only to be used when there are 243 two nets with the same zone number. 244 Example: 245 route-to 2:341/70@fidonet 2:341/* 246 route-to 2:600/0@example 2:600/* 247 - CFR was always using the main AKA for the packet header. Fixed. 248 - Added a new macro, LOCAL, which is replaced for all local addresses. 249 I use it to avoid routing of local attaches, i.e. 250 DIRECT-FILES * FROM LOCAL 251 I have unintentionally routed a couple of big files so I decided to 252 make sure that wouldn't have again. 253 - Added VIABOSSHOLD and VIABOSSDIRECT. These two commands make CFRoute 254 send hold and direct (direct including crash, inmmediate, etc) netmail 255 to points thru their bosses. Usually viabossdirect will be used, and 256 viabosshold will not. Note that these commands don't apply to message 257 with file request. 258 - CFR now honors busy flags (.BSY files). By default it won't export 259 any netmail whose waypoint is busy. Use IGNOREBSY if you want CFR 260 to ignore these flags, but it is not recommended. 261 2620.84a [CFS] 263----------- 264 - Updated English manual with the last what's new entries. 265 - The in-transit flag is now stripped from the messages. I'm not sure 266 why this should be done, however I've got a complain from a downlink 267 and FastEcho does this, so just in case... 268 - Also stripping the local flag :-) 269 - Changed again the route system. The points are not being assumed any 270 longer, UNLESS a ASSUMEPOINTS is used. Ie. 271 route-to 2:2453/1031 2:2453/1030 -> 2453/1030.0 272 but 273 ASSUMEPOINTS 274 route-to 2:2453/1031 2:2453/1031 -> 2:2453/1030.* 275 - Removed the waypoint assumption, i.e. 276 ROUTE-TO 2:2453/1031 2:2453/1030 doesn't mean 277 ROUTE-TO 2:2453/1031 2:2453/1031 2:2453/1030. 278 If you want to do that, use ASSUMEWAYPOINTS. 279 280 I think those two keywords (ASSUMEPOINTS & ASSUMEWAYPOINTS) will 281 keep happy everyone. 282 - Added a command EOLENDSCOMMAND. If used, a command is finished 283 when the line that has it ends. Example: 284 ROUTE-TO 2:2453/1031 285 1030 286 is the same as route-to 2:2453/1031 1030 287 but 288 EOLENDSCOMMAND 289 ROUTE-TO 2:2453/1031 290 1031 291 is read as ROUTE-TO 2:2453/1031 292 and then a 'unexpected 1031' error is issued. 293 Note that DEFINEs are ended too! So if you use EOLENDSCOMMAND, you 294 no longer need to use ENDDEFINE. 295 2960.83a [CFS] 297----------- 298 - Changed format of ^AVia line to the format used by most software 299 today, i.e. ^Via address @YYYYMMDD.HHMMSS software 300 - Added a new command, DEFINE. Define allows to create user-defined 301 macros. 302 Syntax: DEFINE macroname [anything] ENDDEFINE 303 Then simply use the macros anywhere. Macros can contain both commands 304 and parameters, even other macros. They can be used for the most 305 simplest things, such as 306 DEFINE NORTH_AMERICA 1:* ENDDEFINE 307 DEFINE REST_WORLD 2:* 3:* 4:* 5:* 6:* ENDDEFINE 308 DEFINE GEORGE_PEACE 1:270/101 ENDDEFINE 309 DEFINE MANUEL_FUENTES 2:348/201 ENDDEFINE 310 ROUTE-TO GEORGE_PEACE NORTH_AMERICA 311 ROUTE-TO MANUEL_FUENTES REST_WORLD 312 and also for complex things, such as including a complete region 313 routing with dozens of route-to statements. 314 Of course, circular references are not allowed, ie. 315 DEFINE TEST1 TEST2 ENDDEFINE 316 DEFINE TEST2 TEST1 ENDDEFINE 317 TEST1 318 will cause CFR to terminate inmediately. 319 3200.82a [CFS] 321----------- 322 - Fixed a stupid bug that caused certain messages to lock CFR. 323 - Waypoints are now targets and .* is assumed if no point specification 324 is given, i.e. 325 route-to 2:341/70 2:341/62 326 means route-to 2:341/70 2:341/70.* 2:341/62.* 327 - To avoid confusion, the main address is no longer used to complete 328 waypoints. Waypoints have to be full 4D addresses, so 329 route-to 70 62 330 is NOT valid. It has to be route-to 2:341/70 62 331 I have changed this because changing the main address would change 332 the complete meaning of the route tree. 333 You can still use the main address as a seed to complete AKAs. 334 - Changed address resolving. 335 - For routing sentences: Every address is completed using the 336 previous address (remember: the starting address -waypoint- 337 has to be 4D). Ie: 338 route-to 2:2453/1031 1030 means 339 route-to 2:2453/1031 2453/1031.* 2:2453/1030.* 340 route-to 2:* 1030 causes an error has 2:* can't be used 341 to resolve 1030. 342 - For passwords & packet2: Sames rules as for routing sentences. 343 - For AKAs: Main still has to be 4D. Next AKAs are resolved 344 using the previous defined address, ie: 345 MAIN 2:341/70 346 AKA 400/0 10 .2 -> AKA 2:400/0 2:400/10 2:400/10.2 347 - Added a new parameter, -D, to force a complete listing of the 348 arrays creating upon reading the config. file(s). If you think 349 CFR is not working right but you don't like the debug version, 350 use -D with the normal version. 351 3520.81a [CFS] 353----------- 354 - Fixed a major bug in the MYPOINTS macro handler. 355 3560.8a [CFS] 357---------- 358 - The OS/2 version now makes sure there isn't another copy of 359 CFRoute running. If you want to prevent this problem in DOS, 360 you can create a file yourself and destroy it after CFR 361 exits. Example: 362 363 ECHO . >RUNNING.CFR 364 CFR-DOS 365 DEL RUNNING.CFR 366 367 Check for RUNNING.CFR with CHECKFILE, as explained below. 368 - Added a new command, CHECKFILE file_name. If the filename specified 369 as parameter exists then CFR exists inmediately without any 370 processing. Most common use is to avoid running CFR and the tosser 371 at the same time. You can use as many filenames as you want, and 372 you can use wildcards. Example: 373 374 CHECKFILE H:\FETOSS\FEBUSY.* 375 CHECKFILE H:\CONTROL\ONPROC.NOW 376 377 causes CFR to exit if FastEcho is running or if ONPROC.NOW (that's 378 a file I use in my batches) exists. 379 - Changed wildcarded address parsing a bit. Shouldn't make any 380 important difference. 381 - PASSWORD now allows wildcards. 382 - MYPOINTS was adding .* to all AKAs, including those with a point 383 number, which should be skipped. So, 384 ADDRESS 2:341/70 385 AKA 2:341/31.15 386 DIRECT MYPOINTS 387 MYPOINTS was being processed as 2:341/70.* (correct) and 2:341/31.* 388 (wrong). Now it is correctly ignoring the addresses with a point 389 number. In the above example, only 2:341/70.* would be processed. 390 - Fixed a problem in the calculation of the day of the week in the 391 OS/2 version. 392 - Configuration file parser rewritten. It was becoming a bit complex 393 so I have decided to rewrite it right before it was too late. 394 Everything should work exactly as before. 395 - Added a NOPACK (and its counterparts NOPACKFILES & NOPACKMAIL) 396 to leave netmail untouched. I think the primary use for this command 397 is to avoid EXCEPT repetitions. A single node may qualify for many 398 routing sentences, so instead of excepting it from each one, a NOPACK 399 command is used at the end of the file. 400 4010.72a [CFS] 402----------- 403 - MSGID is used to get the zone information if no INTL kludge is 404 found. 405 4060.71a [CFS] 407----------- 408 - Fixed a bug in the lastrun.cfr processing. 409 - Finally found a bug that was turning me crazy. Messages with 410 an extension other than ".MSG" were being ignored, including 411 files with a '.msg' extension!!!! Thanks to Dana Booth for 412 pointing out that something was wrong with the OS/2 version. 413 - Added an argument parser, read the documentation for a complete 414 explanation. 415 416CFRoute 0.7 alpha [CFS] 417----------------------- 418 - Fixed a bug in the parser. * wasn't being parsed as *:*/*.* but 419 main_zone:main_net/*.*. 420 - Changed logging system. Only netmail that are packed get logged. 421 - Via lines for netmail already processed in the system (i.e. looped 422 netmail) are logged. Note that CFRoute will only log from the 423 last Via line generated at the system being run, not all via 424 lines. 425 - Added a control file (LASTRUN.CFR) that keeps track of the last 426 time CFRoute was run. CFRoute will not process any netmail whose 427 file date is older than the last time CFroute was run. This saves 428 a lot of time. 429 - Added a new command, INCLUDE. It is (obviously) used to include 430 a file as part of the configuration. For example, the main config 431 file could be 432 433 INCLUDE AKAS.CFR 434 INCLUDE ROUTING.CFR 435 INCLUDE PASSWORDS.CFR 436 437 As of now this feature is not really very important, however if 438 tracking features (such as bouncing) are written the configuration 439 file will become a lot larger. 440 441CFRoute 0.6 alpha [CFS] 442----------------------- 443 - Fixed a bug in the non-debug version. A password command was 444 causing a topdown request to be processed. 445 446 447 448List of contributors in alphabetical order with most recent known contact 449------------------------------------------------------------------------- 450 451[CFS] Carlos Fernandez Sanchez, cfs@nova.es 452[TE] Tobias Ernst, 2:2476/418.0, tobi@bland.fido.de 453[ED] Eduard Dulich, 2:464/98.0 454