Thu Jan  1 06:41:45 1998  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * News/Gateway.in: [Revision 0.40] Took out all of the config file
        parsing and reading code, as this now belongs in the config
        module.  (Yay, the core is even smaller!)  Also renamed
        read_message() to read() and parse_message() to apply(), which
        should make much more sense down the road.  This should hopefully
        be the last backwardsly-incompatible major interface change.

        * examples/raccpost: Modified for new News::Gateway calling
        syntax.

        * examples/raccmod: Modified for new News::Gateway calling syntax,
        added nobinaries to the list of modules that are applied.

        * modules/cleanbody.al: Added mapping of octal 0205 to --, another
        one of Microsoft Word's annoyances, and added automatic stripping
        of literal delete characters.  (Gary's stories keep getting posted
        containing them....)

Tue Dec 30 08:45:23 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * pod/config.pod: Added another error message from master.pod
        that's config-specific.

        * pod/master.pod: Removed the config file stuff, which is now spun
        off into config.pod, and changed the references to those routines
        to use the new names.  Also renamed read_message() to read() and
        parse_message() to apply() throughout (hopefully), and moved the
        error messages that are only generated by the config code out into
        that documentation.

        * pod/config.pod: Added documentation of the fatal error message
        from line parsing.  Hopefully eventually we'll phase this out.

        * pod/config.pod: New file.
        
        * modules/config.al: New file.

Mon Dec 29 03:24:26 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * modules/headers.al: Added the prepend directive, which prepends
        the given content to the first occurance of the given header.
        This is mostly intended for use with Path headers, but may have
        other applications (Subject comes to mind).

        * pod/headers.pod: Added documentation of the new prepend header
        rewrite directive, and added documentation of the possible fatal
        configuration error (which previously wasn't documented).

        * pod/previoushop.pod: New file.

        * modules/previoushop.al: New file.

Fri Dec 26 00:09:09 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * News/Gateway.in: [Revision 0.39] Cleaned up some of the AUTOLOAD
        handling, explicitly catching now the cases of failure to autoload
        the mail_error() method and attempting to autoload a non-method so
        that they don't attempt to call error() again.  Also cleaned up
        the comments for post(), which still referred to the excised
        spooling code.

        * pod/bodyheaders.pod: New file.

        * modules/bodyheaders.al: New file.

Thu Dec 25 10:27:57 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * pod/crosspost.pod: New file.

        * modules/crosspost.al: New file.

        * examples/raccmod: Fixed the calling syntax for the constructor.

        * examples/raccpost: Fixed the calling syntax for the constructor,
        added the additional global variables into use vars.

        * modules/nobinaries.al: Added in the check to ensure the body was
        at least 40 lines when looking for encoded text, and changed the
        message for base64 encoding detected by the body scan to use the
        term base64 rather than the term MIME.

        * pod/nobinaries.pod: New file.

        * modules/nobinaries.al: New file.

        * examples/raccpost: Broken out a bit and commented considerably,
        the maintainer address and list submission address moved to the
        top and X'd out just in case.

        * examples/raccmod: Removed the unnecessary require line, since we
        really don't care about a Perl version here.

        * examples/raccmod: Added lots of documentation and lots more
        comments, removed the addresses of a few things just in case,
        fixed the bug where some crossposted articles wouldn't get resent
        to the mailing list by pulling out the Newsgroups header and
        actually looking at it rather than relying on ARGV, added
        eagle-aclnh@windlord.stanford.edu to the list of alt.comics.lnh
        addresses.

        * News/Gateway.in: [Revision 0.38] Modified to be Gateway.in,
        changed the default exit code to something compatible with
        sendmail, removed the hooks in favor of building them in
        makepm.PL, removed the local spooling code in post() since this is
        the job of the calling program, cleaned up a few comments.

        * Makefile.PL: Added the POD file to the list of files to install,
        added News::Article to the module prerequisites list, fixed a bug
        in how I was specifying which files generated man pages, added the
        PL file to generate the .pm to the list of things to run and added
        the POD file and the .pm to the list of things to delete on make
        realclean.

Tue Dec 23 12:43:17 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * makepod.PL: Modified to use all-caps list files to find sub-PODs
        to incorporate, since files beginning with . aren't included in
        the distribution.

        * makepm.PL: New file.

        * modules/moosesign.al: Changed the interface line, since under
        the new method we no longer require the initial 1 for message
        rewrites.

        * Makefile.PL: Added instructions for how to build the POD
        documentation.

        * makepod.PL: New file.

        * pod/master.pod: New file.

        * pod/mail.pod: New file.

Mon Dec 22 01:38:47 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * pod/whitelist.pod: New file.

        * pod/newsgroups.pod: New file.

Sun Dec 21 23:25:20 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * pod/headers.pod: New file.

        * pod/mailtonews.pod: New file.

Sat Dec 20 15:17:30 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * pod/moosesign.pod: New file.

Sun Dec 14 08:46:11 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * pod/mailpath.pod: New file.

        * pod/keywords.pod: New file.

        * pod/cleanbody.pod: New file.

        * pod/anykeyword.pod: New file.

        * modules/anykeyword.al: Allow for Re: at the beginning of the
        subject as well.

Mon Nov 10 13:29:02 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * examples/raccmod: Added more comments for our envelope sender
        hack, changed the keywords and whitelist files to point to their
        new permanent locations.
        
Sun Nov  9 10:06:47 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * examples/raccpost: New file.

        * examples/raccmod: Added forwarding of all successful posts to a
        mailing list as well.

        * News/Gateway.pm: [Revision 0.37] Added hooks for anykeyword and
        cleanbody, added accessor functions so that one can get at the
        underlying News::Article object inside the Gateway object.

        * Makefile.PL: We now build the list of modules dynamically by
        reading the module directory and don't need to play with either
        special make rules or with external scripts.  Much cleaner.
        (Didn't need an external script after all.)

        * Makefile.PL: First pass at using an external script to build the
        list of modules.

        * examples/raccmod: New file.

Fri Oct 24 18:02:44 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * modules/keywords.al: Added the ability to pass in an anonymous
        sub that does the work of extracting keywords from the subject
        line.

        * modules/newsgroups.al: Added the ability to fail automatically
        if we aren't the primary addressee of the mail, so that
        crossposting can be handled correctly without resulting in
        multiposting.  Note that this module is complicated and still
        needs considerably more commenting and documentation.

Mon Oct 20 01:29:50 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * modules/mailtonews.al: Pass through Approved headers and only
        drop headers that the news server would croak on.  This forces
        robomod scripts to be careful about Approved headers, but it also
        allows the headers module to be run before the mailtonews module.

Sun Oct 19 12:21:59 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * modules/mailtonews.al: INN rejects Relay-Version headers, so
        drop them.

        * modules/newsgroups.al: Fixed bugs that were preventing multiple
        patterns from working and that were preventing patterns from
        working with commented addresses.

Tue Sep 16 10:00:45 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * modules/anykeyword.al: New file.

        * modules/newsgroups.al: Added error checking for invalid regexes
        and a correct error report.

Mon Sep 15 10:37:22 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * Makefile.PL: Makefiles need literal tabs.

        * Makefile.PL: Moved Gateway.pm into the subdirectory News/.

        * Makefile.PL: Untabified, changed to take the version directly
        out of Gateway.pm.

        * modules/cleanbody.al: Cleaned up a few comments.

        * modules/newsgroups.al: Fixed a minor but fatal typo.

        * modules/newsgroups.al: Make sure we only initialize our data
        structures once, call header() correctly to get an array rather
        than a scalar.

        * Gateway.pm: [Revision 0.36] Cleaned up to use an internal
        error() method rather which may call mail_error().  Now takes a
        flag to the constructor which specifies whether or not we are
        running interactively (and therefore may not want to generate
        rejection messages for internal errors).  Also cleaned up the
        interface for the current names of modules.

        * modules/whitelist.al, modules/mail.al, modules/keywords.al,
        modules/headers.al: Fixed interface, changed to use error() rather
        than mail_error().

        * modules/newsgroups.al: Completely rewritten from scratch to take
        a much wider variety of ways of specifying groups, to clean up the
        handling of them, and to speed things up considerably.  Probably
        needs to be cleaned up further and commented.

Sun Aug 31 05:04:15 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * modules/cleanbody.al: Added undoing of quoted-printable, checks
        for invalid characters in the body, and stripping of Ctrl-Ms.

Sat Aug 30 23:29:34 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * modules/whitelist.al: Changed to whitelist from posters,
        modified to use News::Article, the new rejection method, the new
        error reporting syntax, and the new interface, cleaned up
        comments, and generally cleaned up the code.

        * modules/moosesign.al: New file.

        * modules/mailtonews.al: Don't worry about the envelope, since
        it's passed to the mail program in a safe fashion.  Add a Sender
        header, drop Received headers because the news server rejects
        them, and attempt to extract a message ID from the In-Reply-To
        header if present.  Also added more comments, cleaned things up a
        bit, and fixed the interface line.

        * modules/mailpath.al: Fixed interface line, changed to use the
        raw headers instead of the post headers (so that we do the right
        thing for C News submissions), no longer delete the old Received
        headers (that's mailtonews.al's job).

        * modules/mailpath.al: Always return success from the munging.

        * modules/mailpath.al: Fixed a few comments (forgot one of the
        additional cases that we had to handle and actually do).

        * modules/mailpath.al: New file.

        * modules/mail.al: New file.

        * modules/keywords.al: Modified to use News::Article, to use the
        new mail_error() method to report fatal errors, and modified for
        the new rejection scheme.  Also generally cleaned up.

        * modules/headers.al: Completely rewritten to use the new
        News::Article header munging shortcuts that make our job much,
        much easier.  Added a new "add" directive that just adds a new
        header (possibly duplicating an existing one).  Also untabified
        all of the source and fixed to not use lexical variables.

        * modules/newsgroups.al: New file.

        * modules/cleanbody.al: New file.

        * Gateway.pm: [Revision 0.35] *Extensive* modifications.  All of
        the hard and tedious work is now being done for us by Andrew
        Gierth's News::Article and associated modules, so we don't have to
        do it any more.  In particular, all of the posting code has been
        ripped out, as well as all of the article reading and munging
        code.  The hook structure has been reworked and rethought a
        little, and _mesg message mangling hooks are now installed for all
        modules with defined interfaces.  We use the mail_error() method
        everywhere to report fatal errors.  We no longer attempt to
        declare all of our modules in the constructor; instead, the
        constructor takes the address of the maintainer and the envelope
        address for auto-replies instead, and we have to call the
        modules() method to initialize modules.  parse_line() has been
        fixed up a little to make backslashing more general, and
        read_config() now supports continuation lines and being passed
        file handles rather than filenames.  (So one can do read_config
        (\*DATA), which is useful.)  post() no longer implicitly runs the
        article munging hooks; instead, a separate method that has to be
        called directly (parse_message()) does that.

Tue Aug 19 03:55:26 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * modules/mailtonews.al: Disallow message IDs with a trailing
        period.

Mon Aug 18 21:57:40 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * modules/mailtonews.al: Changed to do a variety of standard
        article munging necessary for turning a mail message into a news
        post, and untabified.  We no longer take a configuration file
        directive, just an argument when the module is loaded specifying
        the default newsgroup for articles.

        * modules/whitelist.al: Tweaked the way we get the address
        slightly to allow for the cases where there was no comment.

        * Gateway.pm: [Revision 0.34] Cleaned up the RCS version handling,
        cleaned up the AUTOLOAD routine, documented the operation of the
        constructor some more, untabified the entire source.  This is a
        checkpoint version prior to the complete rewrite to use Andrew's
        News::Article and associated modules.

Fri May 23 10:25:19 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * Makefile.PL: New file.

        * modules/whitelist.al: New file.

        * modules/mailtonews.al: New file.

        * modules/keywords.al: New file.

        * modules/headers.al: New file.

        * Gateway.pm: [Revision 0.33] Rewritten from scratch as a module
        rather than a script, major core functionality factored out into
        modules, rewritten for modern Perl and better programming habits,
        and generally massively improved.

Sat Feb 15 09:26:38 1997  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway.in: [Revision 0.32] Completely rewritten using my
        current Perl programming style and using modules better, fixed a
        lot of the documentation, cleaned up and made various parts of the
        code a *lot* shorter, uses a global configuration information hash
        rather than a bunch of global variables.  Note that this version
        was part of a rewrite which was later abandoned, so it in and of
        itself is probably not entirely functional.  This is the last
        stand-alone script version of gateway before the rewrite as a
        module.

Sun Jun  2 14:50:33 1996  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway.in: [Revision 0.31] Added nntpserver configuration file
        directive.

        * gateway.in: [Revision 0.30] Added support for sending
        autoreplies.  So far, you can only list one autoreply per group
        and wildcards aren't supported yet; all that's likely to
        eventually change.

Fri May 10 20:55:31 1996  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway.in: [Revision 0.29] Added the ability to use wildcards
        in a group directive.  Crossposting is still done correctly, but
        $d cannot be used since there is no way of mapping hyphens to
        periods correctly.

Sun Apr 28 11:45:45 1996  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway.in: [Revision 0.28] When pulling the message ID out of
        the In-Reply-To: header and appending it to References:, we need
        to make sure there's a space between it and the previous contents
        of References:.

Sat Apr 27 22:26:45 1996  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway.in: [Revision 0.27] Added support for the standard
        "convert all .s to -s for the gateway address" convention for
        posting gateways (dumb convention).

        * gateway.in: [Revision 0.26] Added support for reading in valid
        newsgroups from a file given in a group configuration directive
        and adding all newsgroups matching a mask.  Changed return of -v
        to use the current program name and not put v before the version
        number.  Improved From: line parsing to allow for more weird
        cases, and improved To: and Cc: parsing to correctly deal with
        comments and local addresses.  Should now return the correct error
        code if the news server is throttled.

Mon Apr 22 05:18:49 1996  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway.in: [Revision 0.25] Added an empty keyword to the header
        conf lines to allow specification in the case of an empty header.
        We also now grab the message id from elm-style In-Reply-To lines
        and add it to References to make threading work better.

Fri Apr 19 05:21:06 1996  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway.in: [Revision 0.24] Changed the posting method so that
        it writes the post to a temporary file and then pipes that file
        into inews so that we can capture the output of inews.  Reads the
        output of inews and returns TEMPFAIL for any error messages
        related to inability to contact the server (chances are, we'll
        need to modify this later to deal with throttled servers).  Added
        a -d flag to get the old posting behavior if wanted.  Wrote a
        generic &error routine using the error codes from the sendmail
        source and changed all exit calls to use that routine.  Rewrote
        the fix_headers routine to make it clearer.

Thu Apr 18 11:24:26 1996  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway.in: [Revision 0.23] Support for header rewriting made
        considerably more generic, special cases for header capitalization
        added, Sender removed from header drops and X-UIDL added,
        messageid and organization configuration lines removed since
        they've been superseded by the new generic header support.

Thu Apr  4 20:42:09 1996  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway.in: [Revision 0.22] Better handling of configuration
        file parsing errors added, better handling of fallback for cases
        where -s isn't used.

        * gateway.in: [Revision 0.21] path directive for adding
        directories to the PATH changed to inewspath, new path directive
        added to set the end of the Path: header on the posted article.

        * gateway.in: [Revision 0.20] Added support for a messageid
        directive, allowing renaming of Message-ID to X-Message-ID or just
        dropping the incoming one and creating a new one.

        * gateway.in: [Revision 0.19] Better configuration file parsing
        (allow space before directives, give error messages for invalid
        directives including line numbers), allow the organization line to
        be missing in which case organization is passed, study for header
        matching removed due to bug in Perl 5.002, $pattern processing
        modified to allow quoting of metacharacters.

Wed Apr  3 21:51:38 1996  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway.in: [Revision 0.18] Added -f option to change
        configuration file, added magic emacs marker to make sure we edit
        gateway.in in Perl mode, rewrote some of the usage explanation.

        * gateway.in: [Revision 0.17] Modified to be gateway.in, so that
        configuration-time options can be handled with sed in the Makefile
        (or eventually maybe a configure script).

        * gateway: [Revision 0.16] sender configuration option and header
        support removed (dumb idea anyway, since inews just does that
        itself).  Extensive comments added.

Tue Apr  2 23:48:45 1996  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway: [Revision 0.15] Added Control: to the list of ignored
        headers.  Posting gateways should not be used to post control
        messages.  Also added Newsgroups.

        * gateway: [Revision 0.14] Added automatic qualification of an
        unqualified sender line.

        * gateway: [Revision 0.13] Moved organization and pattern into
        configuration file, support for different patterns added, made
        sure more matches against configuration file directives were
        case-insensitive.

        * gateway: [Revision 0.12] Increased configuration file support,
        adding host, sender, and path entries.  Still need to move pattern
        and organization off to the config file.  Also made sure matches
        were being made on a case-insensitive basis.

        * gateway: [Revision 0.11] Added configuration file to list valid
        newsgroups, fixed bug in recognizing crossposts and exiting
        correctly.

Mon Apr  1 23:15:24 1996  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway: [Revision 0.10] Added support for standard sendmail
        error exit codes, removed -c option, changed -s to mean "spam" and
        analyze the from line by default, changed the way repeated headers
        are handled, reformatted site options section.

Wed Feb 28 13:33:20 1996  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway: [Revision 0.9] Fixed major, obvious bug in recognition
        of address@host (name) type From: lines.

Mon Feb 26 07:38:18 1996  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway: [Revision 0.8] Added explicit PATH addition to handle
        inews in /usr/pubsw/bin.

Fri Feb  2 22:07:53 1996  Russ Allbery  <eagle@windlord.Stanford.EDU>

        * gateway: [Revision 0.7] Handling of additional Cc's fixed.

        * gateway: [Revision 0.6] Continuation line support fixed.

        * gateway: [Revision 0.5] Support for Bcc: posting added.

        * gateway: [Revision 0.4] $sender moved up as one of the site
        customizable variables (sendmail runs programs as bin??  WTF??).

        * gateway: [Revision 0.3] Pattern for mailing addresses built into
        the program, bug with detecting unqualified From: addresses fixed.

        * gateway: [Revision 0.2] Bug fixes with slave status, Sender line
        added.

        * gateway: Initial revision.
