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