v1.21
Change: The "file_names" and "dir_names" options for the config file changed.
        The new format is: dir_names 1/0 [lower/upper] [XY] [XY] ...
        The first parameter is the same: 1 means capitalize first letter.
        If the second parameter is anything but lower or upper, it will be
        ignored.  The third parameter is a list of charcter conversion pairs.
        Character X will be translated to character Y. If Y is the word "NULL"
        then character X will just be deleted.  Example:
        dir_names 0 bleh [( ]) [:space:]_ ,NULL
        This will convert all square brackets to parentheses, spaces to
        underscores, and delete all commas.  Same goes for file_names.
New:    All site commands can be re-wired to custom site commands now.  For
        example, in order to invoke the "site who" command when someone types
        "site usersonline", add "site_cmd who is usersonline" to the config
        file. "Is" is the parameter that causes the re-wiring.
Change: The hideuser option in the config file will now take multiple
        parameters in the '=group -username flag' format.  You need to put all
        your hideuser lines together on one line, since only the first occurance
        will be looked at.
Fix:    (Probably) fixed the bug of corrupting userfiles and/or crashing when
        you add more than 10 sections to the userfile.
Fix:    ls -lR will now strip the home directory from every directory whose
        contents it lists. ls -ld will also strip the home directory.
Fix:    Doing "site user blah" resulted in an error message in the sysop.log
        file if blah was not a valid user.
Change: The cookie files for "site nukes" have been re-designed.  Each nuke
        entry will take up 2 lines.  You don't have to use these.
Change: Fixed a problem with stat sections.  If you specified the path as
        /site/section/*, going into /site/section didn't switch you to that
        section, you had to go into the subdirectories. Another solution was
        to use /site/section* as path, but that wasn't a good fix.
Change: The hideinwho option will now hide the user regardless of what he/she
        is doing, not just when he/she is transfering files.
Fix:    The nuke right will now behave like other rights; if you make it
        /site/incoming/*/, this will only apply to dirs under incoming, but
        not to their directories.
Change: The function responsible for adding total size of all files in a dir
        (for use with the use_dir_size setting) was improved and should be
        a little faster now.
Fix:    Useredit was fixed to not show ?????? in the bytes fields when showing
        user stats (when you press ->).
Fix:    Another bug in site nuke AND external nuker, empty directories were
        not causing any credit penalty in some cases.
Change: It looks like scripts can return 127 instead of 1 in some cases when
        they can't be executed, so exit code 127 will be treated just like 1
        by glftpd.
New:    The "pasv_ports X Y" setting, if present in the config file, will cause
        glftpd to select a port between X and Y when making a passive
        connection.  Without this, the next sequential port is used.  You
        should have around 10 ports per user, just to be safe, so if your
        max_users is 30, make the range at least 300.
Change: UNFO in userfiles is now called TAGLINE. Glftpd will auto-convert.
New:    Userfiles will now carry a new line, DIR, whose parameter will be the
        user's starting directory.  Do not include the rootpath or the homedir
        in this. exmp: DIR /incoming will have the user start in
        /glftpd/site/incoming.
Change: Since I upgraded my system, glftpd will now be compiled on libc6 (also
        known as glibc2). Also, it will be a static binary, so that variations
        in libc versions won't cause different behavior on different boxes.
Fix:    Looks like I broke the calc_crc feature in 1.20.
New:    The DIR option in userfiles can be changed through ftp with "site 
        change <user> startup_dir <directory>".
Fix:    Someone found a bug in site give that was there probably the whole time
        (I don't remember ever messing with site give).  Anyhow, site give
        username 50000 blah blah blah will now send the "blah blah blah"
        message to username, like the docs say it's supposed to.
Fix:    2 more nuke bugs: glftpd was dividing by 1048676 instead of 1048576 to
        get megs from bytes, and site unnuke was substracting more from the
        bytes_nuked variable than it should, resulting in incorrect nuketop.
Fix:    A small bug with site kick (adding stupid errors to sysop.log).
Fix:    If a user was connected but didn't log in yet and someone did a site
        who, glftpd would add an error to sysop.log saying userfile for
        -NEW- could not be opened.
Fix:    Thanks to Zio, who found these, 2 bugs were fixed, with site nuke and
        with the dele command, that caused weird lock files to be created in
        the ftp-data/users dir.
New:    The "lastonline" option in glftpd.conf can now take an optional 3rd
        argument.  If that argument is 1, users who didn't upload, download,
        nuke or add a user and who timed out will not be logged.  If it is
        2, these users won't be logged even if they lost connection or quit
        normally, not just when they timed out.  This only affects the
        "site laston" list.
Fix:    Lockfiles will no longer appear in "site users" or "site user".
New:    Oneliners now show the date before the name.  As a result, they are
        limited to 57 characters instead of 60, or they wouldn't fit on
        regular 80-column screens.
Fix:    Fixed a bug with "site grpnfo" that would add a new group if you used
        it on an existing group with different capitalization.
Change: Glftpd will now delete 0-byte files created by the STOR command if the
        preceding PORT/PASV command was unsuccessful.  As a side effect, you
        won't be able to leave messages using "quote stor your_msg_here"
        anymore, but I think it's worth the trade-off since it's easy to make
        a custom command for leaving messages.
Change: The pasv_addr setting was causing glftpd to tell the client which IP
        to connect to, but it was really binding to the default interface.  I
        changed it to bind to that IP instead.  If you need to work the way it
        used to, add another parameter to pasv_addr, 1. ex: pasv_addr 24.1.2.3 1
Fix:    Deleting files smaller than 50k resulted in corrupted stats in
        userfiles.
Fix:    The nuke and unnuke commands (and external nuker) will no longer report
        that a user with leech lost credits when nuking more than 1x (the user
        didn't really lose creds, but glftpd was reporting that he/she did).
Fix:    Users trying to log in with a bad ident@ip were causing glftpd to add
        a LOGOUT entry to glftpd.log, which shouldn't be there.
Change: The privpath setting didn't allow you to cd to the directory specified
        as first parameter, but it let you cd to subdirectories of that dir.
        It won't any more.
New:    Added code to prevent making directories or uploading files inside
        private dirs to which the user doesn't have access.

v1.20
Change: "site gadduser" will now use default.group, if it exists, instead
        of using default.user, so it will work the same as if a group admin
        was adding this user (except flag 3 will not be automatically assigned
        and the user will not inherit the adder's home directory).
Change: When a nuked directory contains other directories, they will be
        chmodded to 555 so that no one will be able to upload to them.  Unnuke
        will chmod all subdirectories of the unnuked directory back to 777.
New:    Added code that will allow siteops to set up UNLIMITED custom scripts
        to run before/after any command they choose.  To do this, you need to
        add the script in the following format to the config file:
	cscript <command> <when> <path/filename>
	If using a command with a space in it, like a site command, you need
        to use "[:space:]" between the words, ex: SITE[:space:]WHO.
        <when> can be either "pre" (to execute this script before executing
        this command), or "post" (to execute it after).  Path/filename is the
        full path to the script, ex: "/bin/sitewhoscript.sh".
        "post" scripts won't be able to echo anything because they are executed
        after glftpd sends the response to the client - can't do this any other
        way. If a "pre" script exits with anything bigger than 0 (or if it
        can't be executed), glftpd will NOT execute the command which should
        run after the script.  Also, it is YOUR resposibility to echo the
        correct MESSAGE CODE with every echo line that you use - if you echo
        the wrong code, ftp clients may 'hang'.  To find out what code you need
        to use, just look at what glftpd uses when that command is executed.
        Example: if you run a script before "site who", and you want to print
        something from it, use: echo -e "200Your message here\r".
        If you exit a pre script with 1 in order to prevent the user from
        executing the command, you might want to use a generic error code with
        your echo lines, like 500, which will tell the clients that this
        command was denied - or use the error code that glftpd uses when
        denying execution of this command.
        Both kinds of scripts will be passed 3 parameters:
        $1 = full command string the user used, $2 = user's login name,
        $3 = user's primary non-private group.
New:    Online logs (uchanges, logins, and reqlog) can now take a second
        parameter, a string to search for.  "site logins 0 lamer" will
        display all entries with the word "lamer" in them;  "site uchanges 10
        purge" will display all purges from the last 10 days.
New:    If zipscript returns a number between 10 and 1010, glftpd, after
        deleting and unduping the file, will sleep for (the number returned
        minus 10) seconds. So, if you want to prevent people from uploading
        incomplete files in rapid succession, just change your exit code to 10
        more than the number of secs you want glftpd to wait. ex: "exit 25"
        will make glftpd sleep for 15 secs.
New:    New cookie, %[%s]b, will print the name of current section.
Change: The statline.txt cookie file can now contain multiple lines; all the
        lines will be displayed after directory listing, transfer, or doing
        "site stat".
New:    A new environment variable, SPEED, will be exported after every
        upload/download, so it can be used in zipscript or a post-script
        running after the RETR command - it will contain the kilobytes/sec. ex:
        echo -e "$SPEED\r" will print 500 if you transferred the file at 500K/s.
Fix:    If downloading at really fast speeds (1000k/s and up), glftpd would
        report a much lower speed because it would write to logs first and
        calculate speed after that, instead of right after the transfer.
Change: The lines in etc/group can now be twice as long as before.
Change: Nuke/unnuke reason was increased from 30 to 60 characters.  Since
        nukelog is a binary file, you have to start a new nukelog (unless you
        write a converter).  Also, to actually use this, you need to edit your
        cookie file and increase the reason field's size.
Change: The secure-ip code was cleaned up.  Among other things, it will no
        longer let you add a hostname with no ident at all, you need to use
        *@hostname, so you'll be under the rules of the no_ident setting.
Change: The ratio cookie will show "Leech" instead of "Unlimited" when the
        user's ratio is 0.
New:    2 new cookies for "site who" and "site swho": %[%s]Wx, for total upload
        speed by all visible users, and %[%s]Wy, for total download speed.
        Probably the best place to use these is in the who.foot file.
Fix:    Looks like anonymous users kept generating a lockfile every time they
        logged in - how could it be that no one noticed this??
New:    A new right, "deleteown", for the rights section in the config file,
        which gives users permission to delete their own files (their stats and
        credits will be adjusted).  To have glftpd work like in previous
        versions, you need to add "deleteown * !8 *" to the config file.
        If a user has rights to delete files via the delete/nuke rights, the
        deleteown right will have no effect.
Change: "site ginfo" will now show "***DELETED***" instead of a user's tagline
        if he/she has the delete flag enabled.
Change: The "site readd" command is now gadmin-restricted, meaning that if
        gadmins have access to it via the config file, they will only see
        deleted users in their own group.  "site readd username" already was
        restricted, so no changes to that.
Change: The "site purge" command is now gadmin-restricted, so if you give
        gadmins access to it, they will only be able to purge users from their
        own group.
Change: Users will only be able to see new directories created under their
        homedir's tree with site new, so a user with homedir /site/lamers will
        not see directories created in /site/incoming (but you can still use
        the %NEW cookie, with /site/incoming as a parameter, in a msgpath file
        or as a custom command to display it for them).
New:    gl_spy and useredit were enhanced and a few small bugs were fixed.
Fix:    A bug in "site ginfo" was putting error messages into sysop.log.
Fix:    Fixed a bug that made the speed outrageously high if a user was
        downloading a file for more than 3 hours.
Fix:    When a user restarted a download, he was losing credits for the whole
        thing, but his stats only reflected the resumed part. Not anymore.
Change: The show_diz cookie files are now called show_toals.
Fix:    Numerous fixes to the rename/rmdir functions.
Change: Dupelog is back to what it used to be - new entries are written at the
        end.
New:    Site dupe will now only list the specified number (or 20 if no number)
        entries from the bottom of the file, instead of from the top.  It will
        also take multiple words, ex. "site dupe linux free office" will find
        entries like "Free.linux.office.stuff" but not "linux.office.stuff"
        (in other words, AND is assumed between search terms). This was done
        by _HoE_.
New:    I created site.help.kick and added it to the site.help file to be
        displayed to people with flags D or E.  It contains 3 commands:
        kick, kill and swho.
Fix:    Fixed a y2k bug in the mdtm command :).
New:    A new config file setting, secure_ip. This will let you define who
        can add what kind of IPs to users. You can specify who can add
        non-numeric hostmasks (as in a@*.aol.com) and how many fields must be
        fully-numeric in numeric IPs (without wildcards). The first parameter
        is the minimum number of numeric fields; the second should be 1 if
        these people are allowed to add non-numeric hostmasks, 0 if not. The
        rest of parameters are permissions, as with secure_pass. ex:
        "secure_ip 1 1 =STAFF 1" means staff and siteops only need one numeric
        field in a numeric IP and they are allowed to add non-numeric hostmasks.
        "secure_ip 3 0 *" means that everyone else needs at least 3 numeric
        fields in a numeric IP and can not add non-numeric hostmasks.
	You can have several secure_ip lines. First match wins, so put the
        most specific on top and a catch-all case at the end.

v1.19
Fix:    SITE NUKE was crashing for 1% of users, it should work for everyone
        now.
Change: The max value for num_logins was increased from 9 to 30000.
Change: If an upload was around 3 gigs, glftpd would list the dir's size as
        a negative number.  I changed this 'long' to be unsigned, so it will
        now handle directories twice as big as before.
Fix:    A nasty bug would overwrite your username if you changed your tagline
        to something longer than 63 characters.  The only problems that I know
        of that resulted from this are a blank slot in site who and the ability
        to log in more than what your num_logins was set to.
Change: The configurable site commands (at the bottom of the config file) are
        more cofigurable now.  You can use -username to give access to a
        specific user.  ! can also be used in front of groups or users, not
        just in front of flags.
Change: grppath is now called privpath.  Also, it will now take flags, =groups,
        or -usernames instead of just group names. NOTE: Wildcards are still
        not allowed in the path setting - it would slow down listing directories
        too much.
Change: The rights section went through a similar change.  First of all, remove
        the word "yes" and "no" from those lines.  Second, before every group
        name add a =.  You can also add flags or -usernames.  If you had a line
        with a "no", just add a ! in front of every group/person/flag you wish
        to exclude from this right and add a "*" as the last argument.  The
        affected rights are: upload, delete, nuke, overwrite, dirlog, makedir.
Fix:    "site users deleted" didn't work.
Change: Glftpd will now write a new directory to the beginning of dupelog instead
        of appending it at the end, so the results of "site dupe" will be
        newest-first.  Note that this requires re-writing the dupelog file each
        time someone makes a directory.  If your dupelog is big, you might need
        to cut it down if "mkdir" is slow.  If I get reports that this results
        in a significant slowdown, I might go back to the way it was before and
        just write a util to run once a day that will sort the dupelog.
Change: The syntax of "secure_pass" changed.  The groups/users/flags on the
        right now mean users that this rule applies to instead of users who
        are exempted from this rule.  Also, you can now have mupltiple rules,
        for example if you want a different rule for siteops and a different
        one for normal users, or a different one for several group.  The first
        match with a flag/group/username stops the search, so make sure to put
        the tightest rules on top.  See examples in config file.
Change: The "no_downloads" setting is absolete.  Instead, use "download" in the
        rights section.  Ex: "download * *" will allow everyone to download
        everything.  If you have "download /private/* 1" above that, only
        siteops will be able to download from the /private directory.
Change: The "freedldir" setting changed name and format.  It is now called
       "freedl" and  looks like any other right from the "rights" section,
        meaning it can take multiple groups, usernames, or flags.
Change: The "freefile" setting went through the same change.
Change: "nostatdir" is now "nostats" and the rules changed same as above.
Fix:    There was a serious bug in unnuke.  If a dir was nuked at other than 1x,
        then the nukee would get back no stats back (if 0x) or # times size of
        stats back (#x) instead of 1 times size.  It's so sad no one found this
        until I *accidentally* noticed it during other testing.
Change: "hidedir" is now called "hideinwho".  Yes I know it sounds funny, but it's
        much more descriptive not, so no one will confuse it with privdir (former
        grppath).  Also, siteops are no longer exempted by default.  If you want
        siteops to see people who are in private dirs, change the "*" at the end
        to "!1 *".
Change: "show_diz" will no longer display directory totals (also known as race
        info).  To get that, enable show_totals.  The syntax is the following:
        "show_totals /site/incoming/*/".  This will show totals for any directory
        in /site/incoming.  You can have several lines of show_totals.
New:    You can now have different welcome messages for different users.  Just
        add a new "welcome" line and flags/groups/users to which this message
        should be displayed, i.e. "welcome /ftp-data/welcome2.msg =STAFF".
New:    Same with "goodbye".
New:    Similar story with the "newsfile" line, with one difference.  If a match
        is found, glftpd keeps searching for and displaying other newsfile lines.
        With welcome and goodbye, the search stops on first match.
Change: The no_ident rule's effect has been reversed.  Instead of the groups/
        users/flags on the right specifying users exempted from this rule,
        they now specify users to whom this rule applies.
Change: "msgpath" can now also take flags/groups/users.  Glftpd will display
        every file on a msgpath line if both the path (first argument) matches
        and the user has a flag/is in a group listed on the right.  You need
        a trailing slash for the path if you don't use wildcards.
Fix:    Another fix in site nuke - it would crash if you tried to nuke files
        by a user that was not in the passwd file.
New:    The stat commands (wkup, aldn, etc) can now take a section name or
        number as the 2nd parameter (the 1st parameter must be the number
        of lines to display).  The stats cookies (%WEEKUP etc) will also
        work like this.  If the second parameter is missing, stats will be
        shown for the current section (just like before).
New:    A new cookie, %[%s]Id, will print a 'Y' if the user has messages
        waiting and an 'N' if not.
New:    The "site group" and "site chgrp" commands are now case-insensitive.
        Instead of having to do "site chgrp bleh StAfF" (assuming you're into
        that kind of names) you can do "site chgrp bleh staff" and group
        "StAfF" will be added to the user's group list.
Change: The "calc_crc" setting will now take multiple arguments, which can
        be either file masks (*.rar) or directory masks (/site/Rars/*).
        Only files that match one of the parameters to calc_crc will have
        theire CRC code calculated and passed to zipscript.  NOTE: For dirs,
        if you don't have a wildcard at the end, you need the trailing '/'.
Fix:    LOTS of bugs fixed in external nuker, and a few small ones in internal
        nuke/unnuke routines.
Change: Killing of ghosts (by logging in with ! in front of username) will now
        be logged into login.log instead of sysop.log.
Change: The "tagline" option in the config file wasn't working like the docs
        implied for a long time.  The default tagline is what's in the
        default.user file, the only thing this was used for was to enforce
        taglines.  So, you don't need a 1 or a 0 at the end anymore; if this
        option is present, and if the user's tagline is the same as argument #1,
        he will be forced to change his tagline.
Fix:    Fixed a small problem in ftpwho and gl_spy that would say that a user
        is still uploading (at 0k/s) after he/she finished.
Fix:    Fixed a rather serious bug of people being able to download without being
        seen if using ASCII mode.  Most files will be corrupted when downloading
        this way, but some (gzips) will not.

v1.18
Change: As you can see, version numbers changed from 1.xx.xx to 1.xx. Version
        1.17.3 was a private beta version of 1.18, so 1.18 is the next
        public version after 1.17.2.
Fix:    I forgot to delete part of the code I re-wrote, so nukers were unable
        to delete files even if they had delete access.  Once again, thanks
        to all the beta testers who never reported this.  Why am I the only
        one who finds all the bugs???
Fix:    Site update was fixed to inform you why it wouldn't work in some cases.
Fix:    glupdate.c was changed to NOT strip rootpath from the directories if
        it was "/", so that directories will get added as "/glftpd/site/bleh"
        instead of "glftpd/site/bleh".
New:	site update and glupdate.c are now fully recursive.  That means that
        when you have subdirectories in the directory you're updating, their
        size will be counted and added to the main directory's size. For example,
        directories with CD1 and CD2 inside will no longer show up as empty.
Change: glupdate once again.  It will now take the -r switch to specify a
        non-standard config file, so you don't have to recompile it. A bug was
        also fixed which made glupdate corrupt dirlog if you compiled it on a
        libc6 system.
Change: Directories with more than a gig of files inside will now be shown in
        site new with a size of x.xxxG instead of xxxx.xM, which used to cause
        this field to run into the number of files field.
New:    After executing a custom command, glftpd will now reload that user's
        userfile in case the external process made changes to it.
Fix:    glftpd will now successfully compile and work on libc6 systems (but
        we will still be compiling new binaries on libc5).
New:    You can now make glftpd show directories' size (the total size of all
        files in that directory), instead of the number of bytes the directory
        takes up, when a user does a "LIST".  It will look like this:
        drwxrwxrwx   1 user  group      dddd Nov 22 16:49 incoming
        (dddd is the number of kilobytes the files in that directory occupy).
        To enable this, add "use_dir_size k" to the config file. You can also
        use b or m instead of k, changing the display to be in bytes or megs.
New:    Reset will now take a switch (-a) that lets you reset alltime stats.
        I still think that's lame but I'm sick of people asking for it.
Fix:    SITE GADDUSER was screwing up unix clients if the user you tried to
        add already existed.
New:    If there was only 1 meg of free space and someone was uploading files
        3 megs in size, all of them would fail, resulting in a big waste of
        bandwidth. You can now add "free_space x", x being a number (in megs),
        to the config file, which will prevent people from uploading when the
        current directory's free space is less than x.
Fix:	2 minor fixes made for the timeframe feature.
Fix:    Directory matching expanded to match directories at the end of path,
        like /site/incoming/bl, which will now match "/site/incoming/bleh".
        This fixes problems with flashfxp if you drag a directory whose name is
        converted by glftpd (to upper/lowercase, etc).
New:    SITE NEW will now accept "." as a parameter, and will only show new
        directories in the directory tree you're in instead of the global list.
        If you still want to specify the number of matches to display, you can
        put it after the ".", i.e. "site new . 5".
        EXMP: "site new ." will show 10 newest dirs in current directory tree.
Fix:    Gadmins were able to cheat and add users past their allocated slots by
        deleting a user, adding a new one, then readding the deleted one with
        site readd (welp it's in the open now so upgrade quickly :}).
Fix:    The code that shows only x number days of a log file (for example:
        site uchanges 2) was in a very bad shape, I fixed many problems so now
        it should work fine (never code while you're drunk, eh?).
Fix:    When nuking someone who had leech, glftpd was leaving the userfile
        locked so there were some warning messages in the sysop log.
Change: The SITE USERS command was re-designed, it should be a little faster
        now and it won't list all users if you use the wrong option.
Change: SITE GROUPS will no longer count deleted users.
New:    If a user's password is "*", any password will fit. If it is "@", only
        passwords that look like email addresses will fit. Email passwords will
        be logged to the login.log. You can specify a single number after '@'
        or '*' which says how many connections from the same IP are allowed for
        this user, so "site chpass anonymous @2" will allow email for password
        and will not let the user log in if he is already logged in twice from
        this IP.
        You have to use "site chpass" to change a user's password to * or @.
Change: SITE UNFO is now SITE TAGLINE.  Actually, both will work right now,
        but UNFO will probably be removed in the future, so start using TAGLINE.
Fix:    The total bytes at the bottom of "site users" was overflowing at ~2
        terrabytes.  It should store over 4 thousands terrabytes now :}.
Change: Userfiles were storing bytes up to ~2 terrabytes, they will store ~4
        terrabytes now (changed from signed to unsigned long).
Change: When nuking more than 1x, both stats and credits were decreased by more
        than 1x. Now only credits will decrease more, stats will only be decreased
        by the exact size of what's nuked.
New:    Weekly allotment now supports sections. The syntax for changing it now is:
        site change user wkly_allotment "#,###", where the first number is the
        section number (0=default section). Only one section at a time is supported,
        if you want it for more than one you will need to write a script and run it
        from crontab to add the credits to the user.
Change: Change all your "exit 1"'s in dupescript, zipscript and dirscript to
        "exit 2".  Glftpd will now respond with a built-in error message when
        one of these scripts returns a 1, so that it will be easy to tell when
        these scripts can't be executed.
New:    Many more site commands are flag-configurable now, see file "newconfig.118"
        for details.  Also, all the help-commands ("site blah" if blah requires a
        parameter) will only work if you have access to the command.
New:    You can define your own "You do not have access to this command" now.
        Just add "-noaccess /ftp-data/text/bleh.txt" to the config file and create
        a file displaying your message.  You can use cookies in that file.
New:    On-the-fly CRC calculation.  If you add "calc_crc 1" to the config file,
        glftpd will calculate the CRC of files being uploaded and pass this
        string to zipscript.  You can then call the flysfv binary from zipscript
        to compare that string with what it finds in the sfv file (see the default
        zipscript for an example).  This procedure will save some time if several
        people are uploading files at the same time and you have a slow harddrive,
        but it might slow the upload down a little, so use it at your own risk.
        Thanks Hoopy for this feature.
Fix:    grppath was matching all directories that started with the same name. It
        will only match directories that have the exact name now.
Fix:    cd ~ was causing problems.  ~ will be treated as / from now on, since
        everyone's apparent homedir is /.
Fix:    A rather serious bug that would allow someone to execute commands on your
        box was fixed.  This exploit could also be used to start some kind of a
        daemon on your box that would allow people to connect to it and log in.
        Make sure you enable your path-filter in the config file to close this
        security hole.  See the UPGRADING file for an example.
New:    SITE PASSWD can now disallow insecure passwords.  All you need to do is
        add "secure_pass xxx" to the config file. Glftpd will not allow passwords
        that are shorter in length than xxx. Also, you can specify the minimum
        number of capital and lowercase letters, numbers, and other symbols.
        Example: "secure_pass Ab1..." will only allow passwords 6 characters or
        longer that contain at least one capital letter, one lowercase letter,
        and one number. The '.' is a placeholder. You can use any letter, number,
        or punctuation character (except '.') in this string.
	Other arguments (optional) are flags/groups that are exempted from this
        rule when using the site chpass command or adding users.
        
v1.17.2
Fix:    Glftpd wasn't passing the correct parameters to dupescript.  It is
        now passing just the filename as $1 and just the directory name
        (without the trailing slash) as $2, as it was supposed to.
Fix:    Site unnukes unnecessarily switched UID to 0 (root) and never switched
        it back.  I doubt anyone had any problems because of this, but now
        glftpd is a bit more secure.
Change: When you give someone wkly_allotment and this user has less credits
        than the allotment ammount, he will get the credits now and not have
        to wait until the beginning of the next week.
Change: Userfile cache will now be turned off by default.  We found that it
        is greatly decreasing performance instead of increasing it.  If you
        still want to turn it on, add "use_cache 1" to your config file.
New:    Writing to userfiles is now much more secure.  Before, it was possible
        for a user with 2 connections to lose stats if one connection wrote
        over his/her user file while the second connection was in the process
        of modifying it.  Now, glftpd will create a userfile.lock when it
        reads a userfile.  If a lockfile exists, glftpd will wait until it
        disappears before making modifications.
        NOTE: If you turn user cache on, this will be turned off, because
        there is some bug that makes glftpd segfault if both are turned on.
Change: SITE SEARCH will now strip the user's homedirectory from the paths
        that it finds in dirlog (/site/blah will become /blah).
Fix:    The external nuker wasn't substracting credits for what was nuked!
        Thanks to everyone who was using it for months or years and never
        reported this bug :).
Fix:    After an upload, the statline was not updated with the new stats (if
        the user received credits for the file) - it is now.
Fix:    The nostatdir option might not have worked correctly in some cases
        (it was using an uninitialized integer).
Fix:    For "creditcheck 1" directories, uploading resulted in 1x credit, but
        deleting resulted in 3x credit loss (assuming your ratio was 3).
Change: Nukers were able to delete any files on the site.  Now they will
        need either nuke or delete rights to be able to delete.  Everyone
        else needs delete rights to delete files (except the file's owner).
Fix:    SITE USERS didn't count deleted users in the end statistics.
Fix:    SITE PURGE will now delete the user's message file after deleting
        his/her userfile.
New:    The messaging system has been expanded. Users now have 2 mailboxes,
        inbox and trash. After reading messages, they are moved to trash.
        They can be moved back to inbox with "site msg save". They can be
        deleted from trash with "site msg purge". They can also be read
        while in trash with "site msg tread". Messages will be automatically
        deleted from trash when the user normally logs off (with QUIT).
New:    Normally, siteops were unable to change flags for other siteops, so
        the only way to do this was to edit the userfile manually.  You are
        now able to specify a master siteop by adding "master bleh" to the
        config file.  A master siteop can change flags for other siteops.
        There can only be one master siteop, all subsequent master
        definitions are ignored.
Change: SITE PURGE USER will no longer allow to purge users that have not
        been deleted first (this also fixes several security issues, like
        purging siteops when deleting them wasn't allowed).
New:    You can now use echo in dupescript and dirscript before exit 0
        (you could only use it before exit 1 until now).  Just add "#0" at
        the beginning of your echo string.
        EXAMPLE: echo -e "#0Script will exit with success.\r"
Change: The rights section of the config file (upload, dirlog, nuke, etc)
        will now be read from top to bottom instead of the other way around.
        This will make the rights check faster and similar to what practially
        all other programs use.  The first directory match will stop the
        search, so you should put the more specific directories on top and
        the least specific ones on the bottom.  Example:
        upload /site/archive/* no *
        upload /site/incoming/* yes *
        upload /site/* yes STAFF
Fix:    Site help users was fixed and updated to show all the options.
Change: Site change flags is more idiot-proof and converts lower-case
        letters to upper-case (since all flags are upper case).
Fix:    New users' password won't be stored in shared anymore memory anymore
        after someone uses the "adduser" command, so ftpwho won't show it.

v1.17.1
Fix:	SITE CHGRP removed a user from all private groups if you tried
	to remove him/her from the first private group.
Fix:    ftpwho.c was fixed to show when a user is idle (thanks HoE)
Fix:    site who and site swho had problems with idle time when you were
        using the new timezone variable.
Fix:    SITE TRAFFIC fixed to handle higher numbers of bytes for alltime
        stats (by storing kilobytes instead of bytes).
Fix:    Users who had the IDLER flag and who were idle more than their idle
        time (usually 900 seconds) could cause an infinite loop that ate all
        the cpu when their connection to the site was lost. To fix this,
        users who have the IDLER flag will get their idle time set to 0 right
        after login (so it will work the same as having the EXEMPT flag and
        typing "site idle 0").
Change: Deleted users will not be listed in "site users" anymore (except when
        you type "site users deleted").
Fix:    There was a bug that, instead of starting to look at the 4th argument
        of the function settings in the config file (upload, makedir, dirlog,
        etc), it looked at the first, second, third... argument. As a
        result, if you used "*" on the PATH line, everyone would get access,
        not just users belonging to the group in the 4th argument.

v1.17.0
Fix:    SITE CHHOMEDIR didn't show the user's home directory if a new
        directory wasn't specified, like it was supposed to.
Fix:    SITE REQFILLED only worked on requests < 22 even if you set your
        site to keep a list of more than 21 requests.  It was increased to
        50 to match the maximum setting.
New:    Filled requests are now added to ftp-data/logs/request.log so that
        siteops can check if the uploads were actually requested and by whom.
        Entries are only added when someone does SITE REQFILLED # successfully.
        This log can be viewed with SITE REQLOG [#], the optional number
        being the number of days ago to show.
        Example: SITE REQLOG 5 (will show requests filled in the last 5 days).
Fix:    SITE FLAGS user crapped out on you if you were gadmin trying to view
        someone who wasn't in your group.
Change: Due to a conflict of flags and parameters passed to custom commands,
        this feature has been removed (see below).
Change: Most of site commands are now configurable, that is, you can specify
        who is allowed to execute them.  You will need all 40+ commands in
        your config file, the details on how to do this are in the docs.
Change: Custom commands can be bound to flags/groups just like the commands
        mentioned above.
New:    Dirscript.  It is similar to dupescript, but it is ran before a
        directory is made.  If it returns 1, the directory will not be made.
        $1 and $2 are directory name and path in which the user is trying to
        make it, respectively.  To enable dirscript, add "pre_dir_check
        /bin/dirscript" into your config file.  The default dirscript checks
        if $1 already exists in yesterday's dated directory.
Change: People with the +7 flag are now unable to add to/remove from private
        groups (this is configurable with the -chgrp-priv variable)
New:    Userfiles contain an additional field, TIMEFRAME, with 2 arguments,
        the hour from which to allow logins and the hour when logins from
        this user will begin being rejected.  To change it use SITE CHANGE
        <username> timeframe # #.
Change: The %[%s]IE cookie was changed to show timeframe.
New:    New variable for the config file, timezone.  Use this if your glftpd
        is getting the wrong time from the operating system (usually because
        redhat sucks).  Exmp: "timezone -4" will make glftpd shift the time
        it receives from the OS 4 hours back.
Change: The code to do stats (weektops, etc) was re-designed to use linked
        lists instead of static arrays - glftpd should use a little less
        memory now.
New:    Stat sections can now have different ratios. The default ratio is
        the one used by stat section 0. By default, other ratios are -1,
        meaning they are disabled and the default one will be used.  If you
        change ratio for a stat section, it will be used when uploading/
        nuking/etc in that stat section's directory.
        To change ratio for stat sections 1-9, use SITE CHANGE SRATIO.
Change: SITE CHPASS will now allow groupops to change password for members
        of their group by default (this of course can be disabled).
Change: "SITE CHHOMEDIR" is now "SITE CHANGE <user> homedir", this way you
        can change it for more than one user at a time.
Fix:    ftpwho.c was fixed (it was screwing up the display).
Change: The userfile format was changed, credits and ratio were removed
        from the GENERAL line and ratio has its own line now.
        You HAVE to convert your user files using the "uconv" program
        when you're upgrading if you don't want users' settings to get
        messed up.
New:    New optional variable for config file, no_ident. If you add this
        variable, glftpd will not add an ip if the user adding it doesn't
        have access and if he/she does not supply an ident. The access flags
        work the same way as for site commands.
        Example: "no_ident 1 7" will only allow siteops and useredits to add
        an ip with * for an ident. This is a good way to prevent group admins
        from adding insecure access masks to their users.
Fix:    SITE ADDUSER was made a little more "idiot-proof" :}
New:    New variable for glftpd.conf, freefile.  USAGE: freefile *.nfo *
        The above will allow everyone to download all files ending in .nfo
        without losing any credits. If you replace * with a group name, only
        users belonging to that group will not lose credits. Only one group
        per line, if you want multiple groups, add multiple freefile variables.
Change: The freedldir variable can now take a group as second argument to
        only allow a certain group to download for free from the directory.
Fix:    A minor security bug: files specified after the noretrieve variable
        could not be downloaded with "get file" but could with
        "get /site/file file".
New:    New variable for config file, no_downloads.
        USAGE: "no_downloads /site/private*" will not allow users to download
        files from directory /site/private or any of its subdirectories.
Change: SITE GROUPS modified by Jestrz to show the number of users that are
        in each of the groups.
Fix:    Gadmins are now unable to take away their own leech (assuming
        they're dumb enough to try) if they don't have the leech slot
        setting enabled.
Change: Users with leech were unable to give credits. This check was removed
        - if leechers have credits they can give them away now (provided
        they have the +G flag).

v1.16.9
New:    The default zipscript was modified to only extract file_id.diz to
        .message if .message does not exist or has 0 bytes. Now if someone
        uploads a zip that doesn't have file_id.diz, the .message file won't
        become 0 bytes.
Change: Shared memory is now initialized before banner is displayed, so you
        can access it from a script ran from banner and perhaps deny login
        if the hostname matches an entry on your black list or something.
Fix:    I forgot to remove a debug message from ls, your login.log is
        probably full of "doing ls" messages, sorry about that.
New:    SITE USERS can now take a username with an asterisk at the end to
        find all users that begin with that username.
        Example: "SITE USERS la*" will find lamer, lamuh, lazyass, etc.
Change: Nuking files uploaded by a non-existing user didn't get logged.
        It will show up as UNKNOWN now.
New:    New command, SITE TRAFFIC, shows total uploads/downloads/speeds.
Fix:    A security problem was fixed. Siteops are urged to upgrade.
        I won't disclose the details for a while so that people who don't
        upgrade right away won't get hacked (this hack is possible with
        all versions since 1.10.x.)
Change: SITE LOGINS can take an argument, number of days.  This works the
        same as with SITE UCHANGES, see changelog for v1.16.8.

v1.16.8
New:    New command, SITE CHHOMEDIR, allows siteops and people with useredit
        to change a user's homedir.  Use SITE CHHOMEDIR username to view it.
        As a security measure, this command will not work by default. To
        enable it, add "min_homedir /directory" to your config file, where
        "/directory" is the minimum directory depth a homedir can be changed
        to. Example: "min_homedir /site" would only allow users' homedir to
        be changed to /site, /site/blah..., and deny /bin, /etc, /ftp-data,...
New:    SITE MSG can now accept multiple destinations enclosed in braces.
        Example: SITE MSG { user1 user2 user3 } test message
        NOTE: Don't forget a space around each brace.
New:    Siteops can send global messages.
        Example: SITE MSG * Global message test
New:    Users can send a message to every member of their group.
        Example: SITE MSG =MyGroup hi there
        NOTE: Siteops can use this for any group.
Change: To read your messages, use SITE MSG READ instead of SITE MSG.
New:    SITE CHANGE can now accept multiple users just like site msg
        (usernames in { }, group name with = in front, or * for all)
Change: Site commands' length changed from 512 to 1024 characters.
Fix:    Directories made on FreeBSD did not have the user's primary group
        as gid.
Fix:    When post_check is disabled, glftpd should not delete an incomplete
        file when connection is lost (so that people can resume) - this might
        not have worked every time, should be fixed now.
Change: site_cmd can now be bound to user flags.
        Example: site_cmd PICT TEXT /ftp-data/misc/pict.ans 5
        (this will only allow users who have color enabled to see the picture)
        Example: site_cmd UPURGE EXEC /bin/purge.sh 17
        (this will only work for people with useredit or siteop access)
        If you don't specify flags, or specify non-existent flags, access is
        granted to all (so this is backwards compatible).
New:    SITE RENUSER <old_username> <new_username> will rename a user.
Change: SITE UNNUKE worked in a really weird way - you could unnuke dirs that
        were not nuked, etc.  Some extra code was removed and the command
        works as it should now.
Fix:    SITE NUKE and SITE UNNUKE can take {dirname} instead of dirname, this
        is helpful if you have spaces in the dirname, putting it in braces
        keeps glftpd from confusing dirname with nuke/unnuke message.  This
        did not work correctly, should be fine now.
New:    SITE UCHANGES can now accept the number of days to show.
        Example: SITE UCHANGES 3 will show sysop.log of only the last 3 days.
Fix:    Purging users who were online resulted in deletion of passwd entry
        but not of the userfile - as a result you couldn't add this user
        again until you manually deleted his user file.  Purge will now skip
        users who are logged on, you have to kick them first.
Fix:    The lslong variable in the config file did not work since glftpd
        started using an internal ls.

v1.16.7
Fix:    The last fix in 1.16.6 (deleting files when uploader loses connection)
        did not work correctly, it was fixed in a different way now.
New:    New site command, GADDUSER, will add a user and put him in a group
        Example: site gadduser IND lamer lamepass lamer@*.aol.com
Fix:    Forgot to modify reset to work with new userfile fields (groupop
        leech slots and max_ulspeed) so they did not get saved.
Fix:    The %% cookie got broken a few versions back.  Also the %x cookies
        will now print nothing (they were replaced a few versions back by
        the %[%x]x cookies).
Fix:    Deleting directories with DELE was logged to glftpd.log, but deleting
        them with RMD was not.
Change: SITE CHMOD can now only be used by siteops.
Fix:    Some groups put ^M at the beginning of line in file_id.diz, glftpd
        would not display a line like that, it will convert ^M to space now.
Fix:    max_dlspeed and max_ulspeed didn't work in 1.16.6.
New:    The stats binary was upgraded to version 3.2 (supports multiple
        stat sections now)

v1.16.6
Change: After uploading, the transfer speed is now being calculated before
        zipscript is executed - this should make it more accurate.
Change: The "SITE UMASK" command was disabled - it wasn't being used anyway.
Fix:    get -R in ncftp will now work (as well as all list commands that
        have directory name following parameters).
Fix:    *Sigh* yet another (this time final) bug in site who that I missed,
        filenames 11 characters in length had a control character at the end.
New:    Global bandwidth control (directory based). Speed settings go into
        the config file. USAGE:   speed_limit   PATH     DL_LIMIT   UP_LIMIT.
        The first directory match is the one used, so you would want
        the completely global setting (/* as PATH) at the very bottom if
        you have several speed_limit settings.
        Example: speed_limit /site/Incoming* 150000 0     # 0 = Unlimited
        NOTE: speed indicated on gl_spy or ftpwho may tend to fluctuate more
        than before.
Change: gl_spy and ftpwho during a user's transfer shows the full path to the
        file in question instead of the user's current directory. This is in
        support of the global bw feature.
New:    Memory mapping of files downloaded is now configurable.  The default
        setting for mmap_amount is 16 (used in v1.16.3+). Change it in the
        config file, the range is 1 to 50 (in megs). If you have low memory
        and your users are downloading large files, you might want to set
        this to a low number, otherwise glftpd uses up all your memory.
        Example: mmap_amount 5 (keeps files smaller than 5 megs in memory).
Change: max_speed is now max_dlspeed (in site change).
New:    max_ulspeed, controls how fast a user can upload (bytes/sec).
New:    New cookie, %[%f]I&, displays max upload speed.
Change: Site who will now hide the user altogether instead of just hiding
        the filename if the user is transfering in a hidden dir.
Change: Glftpd will not allow you to enter the ':' character in group name
        or description.
New:    New color code, !Z, which prints a generic bold.
Fix:    Connecting from localhost did not work with -B bouncer option.
New:    glftpd now supports bnc4all (detection is automatic).
Change: When server is shut down, glftpd will display /ftp-data/text/shutdown
        instead of responding with a built-in message.
Fix:    site grpren fixed and re-enabled.
Fix:    If an uploader lost connection before file was finished, that file did
        not get deleted if it was bad - should be getting deleted now.

v1.16.5
New:    Second parameter passed to dupescript (the actual upload dir, just
        like with zipscript in v1.16.4).
New:    New variable in glftpd.conf, bouncer_ip.  If you run the daemon with
        -b or -B, you MUST add the bouncer IP(s) to the config file.  You
        can add more than one IP (in case you have more than one bouncer).
        Example: bouncer_ip 1.2.3.4 10.20.30.40
Change: The -b option will now allow users to log in directly to the site if
        their IP is not on the bouncer_ip list.
New:    New user flag (+I = IDLER), it lets the person idle forever (will not
        timeout and disconnect).  Be careful with this, don't give it to
        everyone or your site will always be full, I recommend only giving
        it to a few siteops.
New:    A new change command added, comment.  Use "site change user comment
        blah" to change someone's comment to "blah". If you are a siteop or
        have useredit & do "site user bleh", file /ftp-data/text/user.comment
        will be displayed right before the user.txt file. Comments can be
        max 50 characters. The purpose of comments is to keep info about a
        user that only siteops can see, like "This is my friend, don't delete
        him - Usurper" or "Has leech for hardware contribution" etc.
        The default comment for new users is "Added by <username>".
New:    A new cookie added, "%[%s]I$", that will display the user's comment.
        Suggestion: don't use it in any files readable by normal users.
Change: GINFO restricted to users with the +H flag (group admins are exempted
        if they do GINFO for their own group).
Fix:    The Sighup tcl did not work because one dumbass (no need to mention
        names) misspelled botscript in the code :}
New:    Optional variable added to config file, shutdown. It takes one
        argument: 2, 1 or 0. If it's 1, the server will only allow siteops to
        log on.  If it's 2, it won't let anyone log on. 0 or any other
        number (or no shutdown variable) will make glftpd run as usual.
New:    When the site is full, glftpd will now display the file "sitefull"
        located in ftp-data/text instead of responding with the built-in
        message.
Fix:    Site who still showed junk if filenames were smaller than 12 chars.
Change: SITE GRPREN temporarily disabled (anyone wanna try to fix it?)
Change: "SITE CHMOD" disabled by default (in the config file), comment
        it out if you want users to be able to change file permissions.
        (If you already have glftpd.conf, add "site_cmd CHMOD blah" at the
        bottom to disable this command).
Fix:    Gadmins were able to exploit a bug and get as many group slots as
        they wanted.
New:    "SITE group_slots" now can take a second parameter, the number of
        leech accounts the gadmin can add.  By default, this is -1 (disabled,
        whereas for group_slots, -1 means unlimited).  To give gadmins
        unlimited leech accounts, change the second parameter to very high #.
        Gadmins are only able to change ratio to 0 (give leech) or to 3.
        You can also use this variable to count how many leech accounts siteops
        add (make it 100 and if it becomes 90 it means the person added
        10 leech accounts - same as counting number of users a siteop added
        using the first argument of group_slots).
Change: The group slots cookie (%[%-5d]IX) changed to (%[%-5s]IX) because it
        now displays a string (both arguments of the slots setting with a
        space between them), fix your text files if you're using it.
New:    You can hide filenames in site who from non-siteops if a user is
        transfering to or from a hidden directory. Just add
        "hidedir /path* yes *" to the config file. It works the same
        as upload/makedir/delete/etc.
Change: The old useredit binary will not save userfiles correctly with 1.16.5,
        if you're using it you should wait till greyline modifies it.

v1.16.4
Fix:    There was a small bug that might have been causing glftpd not to work
        when resolve_dns was set to 0 in the config file.
Fix:    The -r /etc/other.conf option in inetd.conf fixed for those running
        multiple daemons on the same box.
New:    New variable in the config file, botscript_path.
        Default is /bin/botscript (you need to change it if you don't
        chroot the daemon)
Fix:    dirlogscanner.c did not work correctly if your rootpath was "/".
        This made the bot announce a number as owner/group of a new dir.
Fix:    FreeBSD displayed all files' group as root.  Should be ok now.
Fix:    OpenBSD was causing problems due to some files not being closed.
Fix:    External nuker did not work with rootdir set to "/".  Updated to
        version 1.5.
New:    Uploading files to directories other than "." did not work.  To fix
        this, a second parameter is passed to zipscript - the actual path
        the file is stored in.  If you do "put file.zip /incoming/file.zip",
        $1 is still "file.zip" and $2 is "/incoming".  You need to use the
        new zipscript to take advantage of this feature (or just change
        all but the "case $1 in" instance of $1 to $2/$1).
Fix:    Site who showed incorrect filename when a user was up/downloading with
        bulletproof ftp.

v1.16.3
Fix:	CWD 1 - changing to a directory as seen in 'site new'
Fix:    Samba and Uploads
New:	Under certain conditions most files sent from the site
	will be memory mapped before transferring.
New:    pwd_path variable in glftpd.conf.  eg. pwd_path /glftpd/etc/passwd
	Allows one to specify where glftpd's passwd file should be kept.
	Path is in reference to rootpath.
	Default: /etc/passwd
New:	grp_path variable in glftpd.conf.  eg. grp_path /glftpd/etc/group
	Default: /etc/group
Change: rootpath may now be specified as just '/' to disable chrooting of 
	the daemon.  (not recommended)
	Be sure to use the new grp_path and pwd_path variables if you choose
	to not chroot the daemon.
New:    glftpd nolonger alters the permission set on its passwd and group file.
	chmod 400 /glftpd/etc/*   is allowed and the "daemon" should still 
	function properly with just read permissions for root.
Change: CHGRP modified by Usurper to allow up to 2 GROUPS to be named on the
	command line.
New:    DELIP can now take an argument like username@hostname instead of
        the number of the ip (useful for scripts that auto-add and delete
        users)
Change: DELIP can now take up to 10 arguments.  The arguments can be mixed
        (either a number 0-9 or username@hostname).
Fix:    ADDIP was adding junk if you specified 5 or more arguments. It can
        now take up to 10 arguments (some anti-idiot code was added, too).

v1.16.2
Fix:	Racestats (show_diz) were not displaying for the 0 byte .message files.
Fix:	SIZE command wasn't compatible with the restricted homedirs yet.
Fix:	Overwriting of files that turned out to be bad and were deleted were 
	being left in the dupefile database.
Fix:	Race condition existed if the same user (different process) tried
	to upload the same file to the same directory.  Uploaded file would
	then most likely become corrupted and be deleted via zipscript.
	Workaround in place that checks the permissions of the file before
	the transfer begins.  Overwriting of files now disabled if it see's
	that the file is in mid transfer.
Change: Overwriting of one's own files now disabled by default.
	Setting overwrite to yes in glftpd.conf allows all to overwrite any
	file in the associated directory.
Fix:	Site delip wasn't able to delete ip #0.  
	Multiple arguments on the command line left out in this
	version for 'site delip'.
New:	FAQ provided by Barkeep for those users having zipscript problems or
	those who are looking for answers as to why the daemon deletes
	all uploads.   (zipscript-faq)

v1.16.1
New:	Extra parameter added to the max_users variable in glftpd.conf.
	#max_users   10    5
	The '5' says to make room for five additional user slots that may
	only be filled in by users who are flagged exempt.  All other users
	will get the "Site full" message if more than 10 users are currently 
	logged on.
Fix:	hidden grppaths showing up in directory listings.
Fix:	site users would crash the daemon on most instances.
Fix:	gl_spy - cosmetic fixes.

v1.16.0
Change: Pid files moved into shared memory. (/ftp-data/pids can be removed)
	The system kernel must have System V IPC support compiled in!
Change: Pid structure also modified.  
	See the new included ftpwho.c for details.
New:	ipc_key variable in glftpd.conf.  See included sample.
	Needs to be changed for those running multiple sites on the same box.
New:	gl_spy utility.  Provides real-time information of all users on
	site neatly on screen.  Uses the same ncurses background and
	similiar functionality as used in useredit, so you must have
	ncurses installed on your system PROPERLY.
	Available options include selectable config files, 
	increase/decrease of refresh rate, and a popup detailed 
	info box giving all pertenent information on the user selected.
	If ran as root the kick option 'k' also becomes available.
Change: EXEMPT users will now be UNABLE to login when the site if full due
	to the new daemon structure.  
	A future version MAY include a BACKDOOR for siteops to be able
	to still get in when the site is full.
Change: The check for max users on site is now done before the login prompt
	is even displayed.
Note:   Changing the config variable 'max_users' requires ALL users to be
	logged off the site as this variable controls how much memory is
	allocated.   Any other change to glftpd.conf 
	just requires you to relogin.  
	NOTE: The gl_spy utility will also have to be restarted if
	you change this variable.
Change: site who modified and shows more information on what the last command
	issued was from a user using a 5 second timer before displaying IDLE.
Change: site who: paths from transfers are now stripped to show just the 
	filenames.
Change: site whoami removed.
Change: The periodic updates on transfer speed statistics has been removed.
	All Stats are in true Real-Time.
Change: upload/nuke, etc rights have the GROUP and yes/no fields reversed 
	now so that you can add multiple groups on the same line.
Fix:	Additional checks/logging added for the use of pasv_addr.
Fix:	statfilecmd() fixed.
Fix:	logging of max_speed changes.
Fix:	NLST totally reworked.
Fix:	statline immediately updated properly after a download.
Fix:	Possible exploit in the stats bin if it was +s.
	Freebsd installation file updated since this bin should not need to 
	be ran as root anyway.  Thanks to neophyte for noticing it.. :) 
Fix:	NUKER: As a security concern, the glftpd.conf file must be root owned.
Change: Deleted dirs logged to glftpd.log as well now.  
	DELDIR: "dir" "user" "grp" "tag"
New:	%@GROUP /ftp-data/textfile   
	Display "textfile" if the user belongs in specified group.
	Main purpose is for use in welcome.msgs.
Change: %!, %=, %@ all revert back to the main parser so that any and all
	cookies can be redisplayed.
Fix:    dirs with () characters were not being processed by botscript.
New:    Homedir RESTRICTIONs now in place.  Homedirs will now become the user's 
	fake root.
	The homedir for users must be valid in order for users to successfully 
	login.  Users added by gadmins inherit their homedirs.
New:	ls -C and ls -F  added back in.
Fix:    Ident fix for mirc type users.  Thanks to the Eagle_1 and Eternal for 
	proving to me it was broke and especially for providing the fix.
Fix:    Timeout's fixed on transfers.  A timed out connection should also 
	nolonger leave behind an incomplete file.
New:	Overwrite added to glftpd.conf's rights section.  
	See included glftpd.conf for example.  
	Its function is like that of "delete" where if the path/group match for
	the user, they'll be allowed to overwrite files.
Change: Overwriting of one's own files is now allowed by default, however, 
	stats are not updated after the upload.  The only exception are the 
	ANONYMOUS users who may not overwrite ANY files.
New:	Makedir added to glftpd.conf's rights section.
	See included glftpd.conf for example.  (NEEDED)
New:	Cmd line option -I in inetd.conf to disable ident.
Change: More detailed logging of purged users to sysop.log.
Change: SITE DELIP will accept multiple arguments in order to delete more
	than one ip from a user at a time. eg. SITE DELIP <USER> 1 3 5
Fix:	Directory listings on SAMBA mounted drives.
Fix:	PASSWD cmd now disabled for users flagged anonymous.

v1.15.8
Change: Stats nolonger AUTO RESET themselves.  Running the RESET bin in
	crontab at midnight everyday now needed.  See UPGRADING text file.
	Expect certain scripts will need to be modified again.
	We'll try it like this for while and see if anyone complains. 
Fix:	DELETE was removing stats even in defined nostatdirs.
Fix:	Another and hopefully the last of the cache problems fixed.
Fix:	Added additional checks for users without ratios in order 
	to keep their credit statistics from varying.
Fix:	Userfile updates had the USER field still truncated down to 24
	characters.
Change: Purge: Moved the passwd entry removal before the userfile deletion.
New:	Collection of addon utilities written by Evilution included in the
	bin dir.
Change: All bins have been updated to comply with one another.
Fix:	Stats bin (Today) tops fixed.
New:	Reset bin has additional options added.  -h for Help
	Userfiles which fail to be reset will be announced through stdout.
New:	SITE USERS now recognizes: groups, private groups, leech, gadmin, siteop,
	nuke, unnuke, kick, kill, glock, exempt, useredit, undupe, take, give,
	and users as a filter.

v1.15.7
Fix:	User Cache bug.
Fix:	umask not cleared when writing to userfiles.
Fix:	Special owner/group assignments on userfiles being reset. (ie. 99)
Fix:	Unnuke function not logging the proper float value to glftpd.log
Fix:	Unfo changes not showing up immediately in 'site who'
Fix:	goodbye file not being created when a user is deleted.
Change: SITE UPDATE will now recreate the dirlog database in sorted order.
New:	%WHO cookie.
New:	External program (reset) for resetting user stats.  
	Designed to be run from crontab every night at midnight and is 
	made available just in case.  This program *should* never have to be
	used.  [ reset -h ] for available options.
Change: All external bins that update userfiles have been updated.
Change: The BSD version is now being compiled and tested on a 3.1-RELEASE 
	system.

v1.15.6
New:	New flag '8' for ANONYMOUS type users. 
	Restrictions placed on users flagged ANONYMOUS.
	1.  '!' on login is ignored.
	2.  They cannot DELETE, RMDIR, or RENAME. 
	3.  Userfiles do not update like usual, meaning no stats will
	    be kept for these users.  The userfile only serves as a template
	    for the starting environment of the logged in user. 
	    Use external scripts if you must keep records of their 
	    transfer stats.
Fix:	Bug in userfile parser that was introduced into 1.15.5.  Whoops!
	Those users who logged into a running 1.15.5 server with negative
	credits had their credits changed to some large number.
Change: Updates to userfiles now using a different approach.  
	This is in hopes of clearing an old problem of
	userfiles being truncated if a problem occured during an update.
Fix: 	The well known file dupe bug is fixed.
New:	glupdate.c included in the bin dir.  Another cheesy addon utility
	for glftpd.  I'm surprised this old proggie sorta still works. 
	Its looking for a new home and someone who is willing to take care of it.
Fix:	External Nuker for BSD and possibly Solaris systems were inoperative.
	Needed an update to be compatible with ANONYMOUS type accounts.
New: 	New flag 'H' for the 'SITE USERS' command required.
New:	New environment variable added.  $HOST = IDENT@IP
Change: nostatdir was disabling credit subtraction on downloads when it shouldn't be.
	The freedldir variable in glftpd.conf should be the only determining factor
	concerning credits on downloads besides (ratio/creditcheck).
Fix:	CWD bug related to the use of dir_names fixed, and code improved upon.
	Those windows clients *should* be extremely satisfied now.

v1.15.5
Fix:	Rename rule added to disallow renaming over an existing file.
	Deletion of the old file beforehand is enforced.
Fix:	Negative credits wasn't being properly tested before a download.
Fix:	User CMD will now not allow you to change users if already logged in.
	Didn't work to begin with anyway.  

v1.15.4
New:	Dirlogscanner & nukelogscanner sources included.
Fix:	[:space:] use in glftpd.conf.
New:	grppath will now accept a (-) dash before the group names to signify
	that this group is not allowed access to the assigned directory.
	First directory/group match found in the order is used which makes
	this option best served if it is listed first.
	Example:
*	grppath  /bin	-GRP1
	will hide the bin dir from people in GRP1 only.
*	grppath  /bin	-GRP1 STAFF
	will allow only people in group STAFF access unless they are also in 
	group GRP1 in which case they will be denied.
New:	ignore_type config variable.   Will ignore the assigned file types from
	being recognized in the directory race info, nukes, unnukes, and dupes.	
	Example:
	ignore_type  *.[tT][xX][tT] *.[nN][fF][oO] [rR][eE][aA][dD][mM][eE] .message
	ignore_type  *.[sS][fF][vV] *.[cC][rR][cC] *.[dD][iI][zZ]

v1.15.3 
Change:	gadmin slots increased by one with each deluser for gadmins.
Fix:	site users <group>
Fix: 	time on today cookie.
Fix:	Code cleanup.
Fix:	group stats for different sections.

v1.15.2
New:	-B option for inetd.conf.
	Like the -b (port bouncer) option, the difference is this will only allow 
	connections to the ftp site by way of the bouncer.  Prevents the 
	display of the banner and login prompt if the user is not connecting 
	from a valid IP address.
	NOTE:  When using a bouncer you WILL need to run a tcp wrapper
	to only allow connections from the bouncer.
Change: ftp localhost (ie. 127.0.0.1) will allow the user to connect to the 
	site directly, thus bypassing ANY port bouncer options that may be enabled.
Fix:	Updates to userfiles wasn't always being detected properly by the cache.
Fix:	ls globbing.
Fix:	Site laston.
Change: help disabled at login
Change: ls -?  chucked.
Change: hardcoded filenames for /bin/dupescript & /bin/zipscript removed.
	USE..
	pre_check   /bin/dupescript
	post_check  /bin/zipscript
	#pre_check runs BEFORE the actual transfer begins..
	#post_check runs AFTER the file transfer..
	The paths to your script must be full and still be within the
	chroot. "rootpath". 	

v1.15.1
Change: New ls.  Contains most of the orignal external bin ls options.
	ls -? for help.
Change: grppaths now do EXACT fullpath matching now.  Now filenames/dirnames etc, can be
	similiar.
Fix:	some of the admin fuctions were not parsing the command line properly.
Fix:	Input stream was not being closed before the file checking occured.
Change: Gave those with USEREDIT rights the ability to use CHGRP.
Fix:	Logging of group changes fixed.
Fix:	Resuming uploads.
Change: EXEMPT user's are exempt from idle setting restrictions.
	They must now use 'site idle 0' if they wish to disable idle timeouts.

v1.15.0
Change: Useredit Program: Flags now can be modified.  No confirmation
	needed after changing an entry.  Some visual screen fixes.
Change: More (sysop.log) logging for group changes.
Change: passwd file preloaded/cached at startup.
Change: group file preloaded/cached at startup.
New:	Internal LS built in to take advantage of new caching features.
New:	Intelligent caching system for userfiles.
	Config variable "user_cache [1/0]" can be used to enable/disable
	it.  Default is enabled.
Fix:	Directory wildcard matching during CWD would hang the connection
	if the directory was non scannable.
Fix:	Minor nuke fixes.  
Fix:	Ignore_Noop, was still reseting the alarm counter.
Change: Exempt Users now (can) have to set their idle time to 0 after
	login to remain on site indefinately.
Change: switched from using setenv() to putenv() to support the new
	Solaris Port.  
Change: When a new nuke matches that of a previous nuked directory, it is
	now totally removed from the system to prevent a rename error and the
	possibility of people renuking the same directory over again. 
Change: Daemon will allow the first line in the userfiles to be customized.
	Normally it would read, USER <username>.  Username can be anything
	and will remain untouched by the daemon.  50 Character limit.
New:	%[%s]IE  cookie made specifically for statline.txt.  
	Prints out the number of credits in a .1 float value or Unlimited.
Change: Byte totals in stats now displayed with commas.

v1.14.5
Fix:	pasv_addr - different compile optimization broke it.  Suspect pgcc is CRAP! 
Fix:	Cuteftp '!' bug fixed.
Fix:	Group login limits off by 1.
Fix:	Nuke/Unnuke wasn't updating user stats.. Ooops  
Fix:	Unnuke wasn't logging the full directory path.
Fix:	Missing /bin/dupescript from the dupe_check line in glftpd.conf now allowed.
Fix:	site stat crashing glftpd on FBSD if issued immediately upon login.
New:	User Editor binary included.
	
v1.14.4
New:	Optional "pasv_addr" variable for glftpd.conf.
	Determines what IP/Host is used for passive mode.
Fix:	IDLE time reporting was a tad inconsistant, to put it mildly.
	Guess you were right icetrain, it was the daemon.   :)
Fix:	Num_logins mistakenly incremented rather than login_times.  Oops.

v1.14.3
Fix:    Custom site commands would only accept up to a 30 character argument.
Fix:	Current directory information set incorrectly.  
Fix:	Stats broke when more than two stat_sections were defined.

v1.14.2
Fix:	site nfo. 
Fix:	total_users variable.
Fix:	Bug in the stat_section RETRIEVE function which caused FBSD daemons 
	to crash.

v1.14.1
Fix:	Stupid CuteFTP again.
Fix:	Some site who variables were being initially cleared.

v1.14.0
Added:  modified bftpd ftpghost utility for those who supposedly have
	ghost problems???  Source is in the bin dir.
New:	Optional "total_users" config variable.  Sets the total maximum number of
	users allowed on site.
New:    Optional "login_prompt" config variable added to customize your own
	initial login prompt.
New:	Optional "lslong" config variable added.  Standard wuftpd variable.
	Sets the default 'ls' command parameters.  Example:  lslong /bin/ls -lG
Change: SITE ADDIP now also accepts up to 5 ips on the command line.
New:	Multiple STATS & or CREDITS (by directory) supported.
	*REQUIRED*  'stat_section  DEFAULT   *   yes'  must be in glftpd.conf
	for current glftpd sites regardless of whether you use or need mutiple 
	stats. See DOCS for needed configurations for use with multiple stats. 
	Due to userfile size limitations and what not, up to ten separate 
	sections may only be defined. 
	Site users, site give, site take, site ginfo, all stats, ALL show
	relavent information depending on what the current directory is.
New:	SITE STATS, SITE STATS <user> 
	Displays 'user.stats' of all sections.
	Additional stats are appended onto the display and read in their own
	text file to gather display format.  
	eg. A stat_section with a keyword of ISO would read from ISOuser.stats.
New:	SITE SHOW <user>, for SITEOPS.  Displays a user's userfile in raw form 
	to be used in troubleshooting and outside scripts.
New:	Optional inetd.conf parameter added:  -n <num>
	Set the number for dns retries.  0 disables dns resolving all together.
Change: call to zipscript totally rewritten.  Stdout from zipscript now
	lreply'd.  Use of color cookies within zipscript possible.
Change: call to dupescript rewritten as well.  Stdout IS ALLOWED.
Change: SITE GROUP split.  Listing of available groups now done with a new
	site command of SITE GROUPS.
Change: flags allowed changed back to A - Z, a - z, 1 - 9.  For the benefit
	of external scripts again.
Change: pid/online file routines rewritten and now taking advantage of shared memory.
Fix:	Few Online cookies fixed.
Fix:	Requested security fix for bouncer by Eagle_1 put into place. 
Fix:	GPWD showing gpwk header.
Fix:	Bug in changing user flags.
Fix:	DEL & RMDIR modified to work with (dir_names / file_names) configs.
Fix:	site delip user 0 fixed.

v1.13.6
Fix:	Long standing random uid bug that showed up under certain
	cicumstances fixed.  Should fix those [UNKNOWN] nuke announcements.
New:	Bandwidth controls on users (downloads only)
	SITE CHANGE <USER> max_speed <BYTES/SEC>
	0 = Unlimited. <Default>
New:	%[%f]Iz User cookie added for max_speed.
Fix:	creditdir on deletes wasn't working.   
New:	DUPE_CHECK_DAYS in glftpd.conf changed to just DUPE_CHECK and reads
	in an additional parameter.  A path to an external script may be 
	specified which will be ran before a file is actually transferred.
	Exit status of 1 denies upload, 0 allows it to continue.
	Simple dupescript included as sample.
Change: nodupechk, nostatdir, creditdir, freedldir all moved over to using
	the same wildcard matching scheme that was implemented in 1.13.4.
	Add the /* at the end of your paths if you need them.
Change: ! & " characters now not allowed when using 'site unfo'
Change: dirlog updates modified to show total files/bytes for all files directly
	below it including all those within subdirs.
	This should benefit ISO sites mostly due to the majority of their
	releases containing subdirs of CD volumes.
Fix:	Changing the DELETED flag via the 'site change <user> flags' command 
	wasn't properly setting the ownership of the userfile.  Only deluser/
	readd will be allowed to modify this flag from now on.
New:	ignore_noop in glftpd.conf.  Usual [1/0] On/Off usage.
	Ignores the NOOP command and keeps that idle time ticking.. :)
Fix:	Abort fix on Downloads.
	 
v1.13.5
Change: SITE NEW, SITE NUKES, and SITE UNNUKES rewritten.
	100% speed improvement from earlier versions.

v1.13.4 
Change: glftpd.conf now will accept [:space:] anywhere and will translate
	it into a space.  Default_tagline, sitename_long, private group
	descriptions will most likely need this.
	This also makes it possible to specify arguments on the command line
	of your custom site cmds.
Change: New wildcard matching scheme employed.  Directory wildcard matching
	is as it should be finally.  Is now able to limit new directory
	announcements, nukes, etc,, to a specific directory.
	See sample glftpd.conf for some great samples and explanations.
Change: Force_Tagline and Default_Tagline in glftpd have been combined.
	See sample glftpd.conf file.
Change: SITE SEARCH does it matching like that of site dupe. 
	(Wildcards not used)
New:	Gadmins can be assigned their own default.<group> userfiles
	as templates to be used when they add a user.
	Defaults to the default.user file if none is found.
	Suggest chown 99.99 all default.* files to keep them out of the
	displays.
Change: SITE USERS now accepts a GROUP NAME along with DELETED,
	SITEOP, GADMIN, and LEECH in its lists of optional arguments.
	SITE LGRP seems obsolete now and has been removed.
Fix:	With the port bouncer enabled certain fxp clients were unable
	to transfer files through the bounce.  Broke in 1.13.3 with 
	the stupid security enhancements that were put into place.  

v1.13.3 
New:	DOC file included.  Supplied & maintained by icetrain.
New:	SITE GRPLOG now has a build in help display showing the current
	group login restrictions.
New:	PGROUP environment variable (Just the 1st private group of user)
Fix:	Dirlogscanner broke with the new userfile format.  Also in add-ons.
Fix:	More security enhancements made when the port_bouncer is in use.
Fix:	RMD associated with the delete right in glftpd.conf now.
Fix:	RENAME, & DELETE by default now only allow those who own the file/dir to
	rename or delete unless they have the NUKE flag set.
	If the rename or delete right is set to yes in the rights section of
	glftpd.conf, anyone will be allowed to rename or delete another's
	file/dir.  Samples included with the packaged glftpd.conf for better
	clarification.
Fix:	A check for invalid flag values put into the SITE CHANGE function.
	Invalid flag values won't be written out to the userfile.
Fix:	SITE UNFO broke.  Thanks to Devestato for tracking down
	the creation of those strange files in the users dir.
New:	FILE_NAMES in glftpd.conf has the caps_first_letter option.
	Same setup as DIR_NAMES below it.
New:	%= COOKIE,  SAMPLE: %=123/dir/file  '123' are flag values.  
	If the user has any one of them set then the specified file is 
	displayed.  NOTE: the path must begin with a '/' 
	See the site.help file for more samples.
New:	USEREDIT flag added.  Basically a GADMIN for any group on site, 
	and given limited access to some of the 'site change' commands. 
Fix:	GRPPATHs slightly modified and is now accurate.  Use spaces or tabs
	to separate groups/users instead of commas from now on.
Fix:	Private groups not showing up in the 'site chgrp user' listing.
Change  Private groups now shown on the 'site group' listings.

v1.13.2
New:    New install text files thanks to Fenris.
Fix:	The group ids popping up instead of names when comments are 
	included in the group file.
New:	Date Created Cookie for the 'SITE USER' display.  See README.COOKIES
Fix:	Changing flags for users who are currently online.
	This should also take of those strange named userfiles showing up
	in the users directory.
Change: Flag of KILL allows the user to use SITE SWHO
Fix:	SITEOPS can now kick themselves.. :)
Fix:	Some colors displayed in SITE GROUP was crashing the daemon on FBSD.
 
v1.13.1
Fix:	SITE WHO displaying the same user/group/unfo information.
Change: ftpwho.c (pidfile struct) has tagline added.
Fix:	%! was removed in 1.13.0.
New:	STATS bin - UNTESTED
	Also does not require SUID ROOT anymore!   Just needs read
	access to the userfiles and glftpd.conf.
New: 	glconvert bin to convert from the old < 1.13.0 versions.
	This does not set the flags of users on the site, so all siteops,
	nukers, and gadmins will need to have their accounts modified 
	afterwards.  BACK-UP all userfiles before using.
	Usage:  copy to the users directory and run.
New:	New ftpwho source available with the new struct defined.

v1.13.0
Change: TOTAL rewrite of the loading and updating of userfiles.
	Should get rid of the old LOCK.ERR problem as well as ALOT of
	the unnecessary disk io's.  Userfile structure regettably has to 
	change to become more efficient.
Change: LEVELS are history.  FLAGS now in effect.  Thanks to KATMAN for
	the great flag routines.
	LOTS of code and command changes were made to make this one
	possible. 
Change: Internal getgrpid() call to hopefully fix the problem
	some systems have with obtaining the group name for the show_diz
	cookies.
Change: If dir_names is selected to convert spaces to _'s, CWD will also
	match.
New:	Default site help list is displayed if no site.help file exist.
	The site.help by levels are removed.
Fix:	Target Directory Nuke fix.
New:	site vers (version)
Change: Level 25+ users being set to uid 0 is gone.  There will only be one
	root user on the ftp site, IF the passwd file holds an entry for uid0.
	Initially this was the glftpd user.
Fix:    Localtime macro trimmed.
Fix:	SITE USER now takes into account the user's last login and shows
	the true transfer stats for that day/week/month.
Change: Free Space cookie changed to only refresh during change dirs.
New:	-b option.  Support for a Port Bouncer added.  The port bouncer
	must send its output to the daemon in the following format.
	IDNT authuser@remoteip:remotehost
	Available remote ftp connections to the site is left up to tcpd.
New:	SITE FLAGS <user>, available for reference.
Fix:	Ratio Macro fixed.
New: 	Custom 'SITE USER <USER>' display.  Two text files are used, site.txt &
	site.extra.  Site.extra is only displayed to users displaying themselves,
	gadmins viewing others in their group, and siteops.
New:	All conceivable individual user cookies added / fixed.  
Change: The group that a gadmin is responsible for is set by their primary group.
Change: SITE CHANGE <USER> group_slots #  to change the number of open adduser
	slots for a gadmin.
New:    SITE CHANGE <USER> FLAGS to change someone's assigned flag values.
	eg.  site change testusr flags +135-C
	See SITE FLAGS for reference.

v1.12.10 
Fix:	Reset of stats.
New: 	Total percent and group of uploader added to the show_diz cookies.
Fix:	Receive abort fix.

v1.12.9 
Change: Directory statistics enhanced, sorted, and is user customizable via
	show_diz.head/body/foot files.  See README.COOKIES for more goodies.
	Original idea and look from Hackrat's own shell script.
Fix:    Display bug in site nfo.
New:	Time Limits, Per LOGIN SESSION.  (set in minutes. 0 = Unlimited)
	Support in site change added.  Help file also modified.
New:    -e switch added for those backward places in which the week starts on 
	Monday.  :)    Untested.
Change: caps_first_letter in glftpd.conf merged in with "dir_names"
	See sample glftpd.conf for available options.
	WARNING!!!, some of the selected options may make your
	site incompatible with certain windows ftp clients.

v1.12.8 
Fix:	FreeBSD passwd file update fix.
Fix:	Broken file transfers "should" now be deleted and unduped.
New:    Traffic shaping for those downloading while the file is still
	being uploaded.
Change: SITE DUPE has new syntax.  SITE DUPE BLAH 100
	Default listing is still set at 20.
Change: Default_restrict in glftpd.conf renamed to default_homedir which
	is more accurate and should be less confusing to those who still 
	have site restrict path relapses.
New:    More requested CWD facelifts included.
New:	file_names (glftpd.conf)
	Syntax: file_names [0/1]  [lower/upper]
	First option turns off/on the conversion of spaces to _ characters.
	Seconds option determines case of filenames.	
Fix:    creditcheck:  Older versions were looking for the incorrect variable 
	name of creditdir.

v1.12.7
Fix:    Rights for those who weren't assigned to a group were always
	denied access.
Fix:    Users who change groups now have their effective and group ids changed
	immediately instead of on the next login.
Fix:    Nuke and Unnuke failing to properly execute botscript.
Fix:	Several 'site change' fixes also in place.

v1.12.6
Fix:	Another security problem eliminated.
Fix:	Damn rights straightened out in glftpd.conf
New:	show_diz has a new parameter.
	show_diz .message
	show_diz FILE_ID.DIZ
	Displays either or both of these files when entering dirs.
Change: Some code changes made to make the daemon more easily portable.

v1.12.5
Fix:	The old sh was found to be incompatible with certain systems.
	This version should now work with your original provided system's sh.
Fix:	Bug found which under certain conditions would make uploaded files 
	own by root.
Change: nodirlog in glftpd.conf has been moved into the rights section of 
	glftpd.conf as dirlog.   Enables siteops to pick which directories
	newly made dirs will appear in the dirlog and dupedatabase files.
	See sample glftpd.conf.

v1.12.4
Fix:	cd ~, ls ~
Fix:	Resuming uploads disallowed because of the dupe checker, fixed.
Fix:	Dirlogscanner fixed to work with groups without descriptions.
	It used to report the ids instead of names in the old ver.
Change: Some mods to zipscript, crc_check.c and sfv_check.c to serve
	as examples for those who have ftp clients that hang during these
	checks.
Change: TZ variable removed in glftpd.conf.  Didn't work for redhat users
	anyway.

v1.12.3
New:	TZ variable in glftpd.conf to set the correct timezone.
New:	noretrieve in glftpd.conf  (man ftpd for usage)
Change:	SITE RESTRICT PATHS ripped out!
	Got tired of trying to work around it for all these ftp clients
	while mainting security.
	Userfiles will be updated automatically as each user logs in.
	Use of grppath's and the noretrieve features are recommended now
	that this is history..  SEE sample glftpd.conf file.
Change: Dupefile structure change to allow 255 characters for filenames.
	Damn mp3 sites!!!  :)
	Remove the old /glftpd/ftp-data/logs/dupefile database file and 
	touch a new one before upgrading.

v1.12.2  
Change:	Statline displayed after uploads/downloads, instead of 
	"Transfer Complete."
Change:	.crc & .sfv files now ignored for dupes.
Change: Some code improvements.  (Smaller daemon size)

v1.12.1
Fix:	Windows clients who use full paths to upload files failing. (bulletproof)

v1.12.0  
Change: /ftp-data/dupes removed and coverted over to a single binary database
	/ftp-data/logs/dupefile.
	This file is maintenance free in that you shouldn't have to touch it 
	unless you change the dupe_check_days setting in glftpd.conf.
	Its final size is dependant on system usage and the dupe_check_days 
	setting. 
Change: Wildcards now used in 'SITE UNDUPE'
New:	New wildcard compare routine for the rights section in glftpd.conf.
	"Should" give more control using wildcards with directory paths.
	For example:
	upload 		*			*	yes
	upload		/site/incoming/????	*	no
	1st line will allow anyone (* = all groups) to upload anywhere on the site.
	2nd line will not permit uploads directly under the dated dirs under
		incoming, but will allow people to create directories there and 
		upload into them.
	This should get rid of those stray files appearing under the dated dirs.
Fix:	'*' in the rights filters for the group field wasn't matching those users
	who were without a group relationship.
Fix:	username's weren't working in GRPPATHS.
Change: *NUKED* listings removed from SITE NEW.
Fix:	User's able to login more times than allowed FINALLY fixed, I hope.
	
v1.11.0 
Change: ALL COOKIES rewritten to accept PRINTF style formats with cookies.
	eg. %[%-15.15s]S   will limit the sitename_long to min/max length of 15.
	All new text files are available in package for examples.
Change: External file support to accept multi-line entries.
Change: Auto dir completion for complete paths on a CWD.  
	This is a patch for flashfxp users on sites which have 
	'caps_first_letter' selected.
New:	dl_incomplete  option in glftpd.conf.
	dl_incomplete 0  will set the permissions on files while uploaded to
	-rw-------.  Default is -rwx-r-xr-x to allow people access to download
	files while they are being uploaded.
Change: Most of the ONLINE user structure was rewritten and cleaned in hopes
	of fixing a sporatic problem of people being able to connect to the site
	more times than they are allowed.  FEEDBACK on whether this is a fix or not
	is welcomed.
Change: site.head / site.foot support removed.  Header and footer are hard coded
	for external admin utility, siteop.
Change: SITE UNNUKE will accept both types of directory named entries.
	"site unnuke [NUKED].directory" or "site unnuke directory" are valid.
Fix:    Files with nonstandard characters failing through the zipscript process.
New: 	PATH-FILTERS: with a rip of rftpd's space support style. ie [:space:] 
	Path filters are assigned by groups and can even be used to restrict all users
	of a group from MKDIR/RENAME/STORE functions.
	See sample glftpd.conf.
New:	Settable command rights for, DELETE, NUKE, UPLOAD, and RENAME.
	Configurable by specific directory and/or group.
	See sample glftpd.conf for examples.
Change: GRPPATH's redone with a new configuration style.
	Only one directory per line allowed, but multiple groups/users may be
	included on that same line.  See glftpd.conf.

v1.10.8
Change: SITE ZIPCHK now accepts wildcards.
Change: TIMEZONE is now saved before the chroot call.  The old localtime file
	is now obsolete.
Change: A completely new ident authentication is now implemented due to possible
	bugs in the old code.
Fix:	site kill
Fix:	Download/Upload bytes this call cookie.
Fix:	Some nasty memory leaks.

v1.10.7
Change: Exempt_from_limit also exempts users from idle time limits.
New:	Custom STAT cookies + external file support.
New:    Additional text/body files added to /text dir to serve as samples..

v1.10.6
New:	Custom SITE NEW support.
New:	Variable length NEW cookies.  See README.COOKIES
New:	Custom SITE NUKE/UNNUKE support.
New:	Variable length NUKE/UNNUKE cookies.  See README.COOKIES

v1.10.5
New:	Custom SITE WHO/SWHO support.
	New text files added into the /text dir. (who.body, swho.head,body,foot)
New:	Special variable length WHO cookies.  See README.COOKIES

v1.10.4
Fix:	site change <user> gadmin none
New:	%EXEC FILENAME  cookie.
	All files are executed under chroot and with the same external variables
	as the site commands.   Any output from FILENAME is also displayed.
Fix:	dupe by message.
Fix:    nuked by message dir.
New:    valid_ip option.  Used in glftpd.conf to specify which IP address the ftp
	daemon should recognize on a multi-IP system.
Change: glftpd.conf variable sitename -> sitename_long
New:    glftpd.conf variable sitename_short
Change: COOKIE's rewritten/reassigned in preparation for external 
	custom file support.
New:	Custom STATLINE  { /ftp-data/text/statline.txt }
Change: Nuke formula.

v1.10.3
Fix:	Initial change dir fixed.
Fix:	Permissions fix.
Fix:	-i -o options fixed.

v1.10.2
Change:	site grpadd <group> <group nfo>
	If group nfo is missing the entry is now made blank.
Fix:	group file will accept a blank entry in its description field.
Change: groups made case sensitive.
Fix:	ls ..
Change: Dupe checker now adds all filenames except .message, *.nfo, & *.diz.
Change: NUKE & UNNUKE: rewritten.  Nukes recursively while ignoring .nfo, .message, .diz
	files.
Added:  Option in glftpd.conf to have the nuker bypass certain file sizes in its
	determination of an empty directory.
Fix:	Rename function to work with restrict paths.
Fix:	More directory logging fixes.
Change: -i -o added to the available options of glftpd.  Used within inetd.conf
	to log incoming and or outbound xfers.  
	Both used to be selected by default if the -l option was given. 
	
v1.10.1
Fix:	Deletes using full paths, ala flash fxp.
Fix:	Minor dirlog update improvements.

v1.10.0
New:	CUSTOM SITE CMDS..  see glftpd.conf
New:    CUSTOM NUKE STYLE's... see glftpd.conf
New:    SITE GRPREN.. group rename added.
New:    New Improved LS binary
New:	cd paths.. see glftpd.conf
New:    cd aliases..  see glftpd.conf
New:    Force tagline support.. see glftpd.conf
New:    Custom paths for oneliner, requests, & lastonline.. see glftpd.conf
New:    Custom paths for welcome, goodbye, newsfile, & banner.. see glftpd.conf
New:    User Creation Date added in "SITE USER <USER>" display.
Change: CMD syntax of GRPUNFO and GRPLOGINS changed to GRPNFO, GRPLOG.
Change: groups.priv REMOVED, see glftpd.conf
Change: msgpath REMOVED, see glftpd.conf
Change: gpath REMOVED, see glftpd.conf
Change: hideuser file REMOVED, see glftpd.conf
Fix:    ABORT fixed.
Fix:	Group nfo's not displaying in weektops.
Fix:    file listings in Dirs with spaces not displayed.
    
v1.9.9
Change: SITE SEARCH now uses the dirlog database and wildcards.
Fix:    Downloads specified using full paths would fail. 
New:    New ls compiled.  Old gpath limits within ls removed.
	Dl: count now is only displayed when in color mode.
Fix:    Invalid Nuke Factor fixed.

v1.9.8
Fix:    -l logging to glftpd.log
Added:  %NEW10 <Specific Directory>  eg. "%NEW10 /site/Games" will list the 
	last 10 dirs created in Games.

v1.9.7	
New:	SITE UPDATE , Updates dirlog database. (Accepts Wildcards)
	Help file included.
Change: Group stats fixed.
Change: Groups dynamically allocated. (The 40 groups limit is history)
Fix:	Rename function.
Added:  More signal handling.  (killall glftpd was leaving behind old pid files.)
Added:  Stale pid check/removal.  
Fix:    DirLog logging.  Incorrect paths were being entered into the database under
	certain conditions.
Change: -l on the glftpd command line within inetd.conf now logs all LOGINS,
	LOGOUTS, NEWDIRS, NUKES, and UNNUKES to a /logs/glfpd.log file which
	has been designed to be easily parsed out for use with scripts.
	WTMP (support) entries removed from ftpd.
Change: Authentication modified, timeout increased.	

v1.9.5
change: ZIPSCRIPT is now ran as the REAL (logged_in) user.
	The temp fix: chmod commands may be removed.
	Added: command line parameters passed depending on how 
	is was called.  SAMPLES..
		NEWDIR /site/uploads/newdir1
		NUKE /site/uploads/newdir1
		UNNUKE /site/uploads/newdir1
change: glftpd.conf  - CHECK IT OUT for new additions.
	max_users 0  will only show the banner before disonnecting remote users.
New:    Binary NUKELOG / DIRLOG
	*** REMOVE your OLD DIRLOG/NUKELOG ***
New:    STATS - all stats can take an additional parameter being the number
	of users to list.  eg. SITE WKUP 10.  
	Cookie support for this function is also included.
change: /text & /help files updated.
New:    Dirlogscanner / Nukelogscanner
	See their help for the different display outputs.
	glftpd.tcl has been updated to work with the new bins.
Fix:  	Many, MANY, and many more fixes.
Fix:	Redhat problems with SITE GRPDEL, GRPUNFO.
New:	SITE GRPLOGINS <- changes the number of allowed logins from this group.
New	Static ls binary recompiled to completely comply with standards.
	Another ugly windows ftp client (cuteftp 2.5beta) which can't handle
	special characters in the directory listings.  The only change was the
	removal of the "Dl:" characters in front of the filenames.

v1.9.1	
Fix:	DELE / RMDIR fixes.
New: 	nodirlog - variable in glftpd.conf.  The "nodupechk" will only handle
	dupe checking from now on.
New: 	USERS in gpath available.  Same syntax as with the groups.  Only
	one user per line.
Fix:	PASV stripping seteuid(0) from level 25 users.

v1.9.0  NEW - Improved SITE NEW using a binary database.
	NEW - Download count on files.  Must use the included LS binary.
change: SITE UPDATE removed.  An external executable will be provided 
	for this instead, soon.
	NEW - glftpd.tcl   <- Addition of !new
Fix:    SITE READD now only shows users of level 0.
Fix:    SITENAME variable would sometimes get corrupted.
change: SITE KICK available for gadmins against any of their lower level members.

v1.8.0  NEW - SITE PURGE
	NEW - SITE UNNUKE & SITE UNNUKES
change: SITE GADMIN abolished.. normal ADDUSER, DELUSER, READD, ADDIP, DELIP
	apply to GADMIN's now.
	

v1.7.0  NEW - SITE GRPADD, GRPDEL, GRPUNFO
	Now GADMIN's can also be assigned a max number of users that they may add
	via slots..  see site change.

v1.6.4  NEW - BBS style listing of last online users.
	%LASTON cookie, or 'site laston' to call.
fix:    Sysloging fixed and made available with the -l logging switch in inetd.conf
change: Login.log now logs ALL logins and logouts.  
change: Cosmetic changes made to SITE USERS.

v1.6.3  NEW command.  SITE USERS   See 'site help users' for available options.
	glftpd.conf added site_users to custom level configs.
fix:	Bad files were not being unduped from the dupe database.
fix:    site gadmin addip - failing to send a reply.

v1.6.1  NEW - Custom sitecmd levels (glftpd.conf)
change: Sitecmd names / help / text files have all changed.  Lame pheard 
	naming convention is gone...
change: Upon max simultaneous user connections, user is not disconnected.
change: 'SITE NEW' has a new improved look.
fix:    Timeout values during transfer now match those in wu-beta16.

v1.6.0  Fixes, fixes, and more fixes..
	See glftpd.conf for the new / additional settings -
	Also check out the /text & /help dirs for the names of additional
	used text files.
added:	NEW "nukestyle"
	Choose between the [NUKED] or --NUKED 
	create_nukedirs now has addition info.  ie. NUKED 1x by Sysop - dupe.
	Nuking also gives addition info including the names of nukees and
	sizes of nuke.
change:	*IMPORTANT*   groups.priv & gpath should be located in the etc 
	directory from this release on.
added:  Static LS binary is available for the site and is required if you want 
	hidden-group-directory support.  Paths specified in gpath
	will become hidden to users who are not in the related group.
added:  More COOKIES. (See the README.COOKIES file.)
change: GroupAdmins now can see all stats for users of their same group.
new:    STATS program with additonal options including NUKETOP, 
	ALL TIME GROUP DOWN, WEEK GROUP DOWN.
change: msgpath now accepts wildcards. ie...
	/site/incoming/1??? /ftp-data/msg.new
	/site/incoming/0??? /ftp-data/msg.new
change: 'site adduser' now accepts up to 5 ips on the command line to be added
	to the user's stats.

v1.5.0  Fixes, fixes, and more fixes..
	See glftpd.conf for the new / additional settings.
	All bins have been updated.
	New group restrictions added.. see /glftpd/etc/group  for format.
	User stats now hold nuking statistics.  See 'site user USER'
	Support for spaces now available.  Use '{' and '}' to nuke those dirs.
	eg.  site nuke {test dir} 1 testing
	Several Environment Variables also Added.. See VAR.TXT

v1.4.2  
	Cosmetic fixes only.  Installation doc updated also.

v1.4.1
added:  More color cookies added. (Blink)  See /glftpd/ftp-data/README.COLOR

v1.4.0
fix:    More bugs squashed.
added:  SITE ZIPCHK
change: extract_nfo & file_check from glftpd.conf removed.  Internal zip checker
	removed along with the crc32 checker.  
	xftpd implementation of filechecking now in place ala scripts only.
	See "/glftpd/bin/zipscript" for an example.

v1.3.1
change: Minor enhancements to SITE NFO & ZIPLIST.

v1.3.0
change: 'SITE DUPE'  Now reads from a database called dupelog in 
	cf.datapath/logs.  "incomingdir" in /etc/glftpd.conf must be set to
	whatever your incoming directory for new releases is. 
	DUPE BOT TCL and external dupelog program available in /scripts.
added:  'SITE ZIPLIST' nuff said.
added:  'SITE NFO'  Usage: "site nfo zipfile nfofile"  If nfofile is not
	specified then all nfo's will be displayed.
fix:    Few login discrepencies.
fix:    SITE DEL would sometimes announce an undupe message.
fix:    Credit check on downloads for those users who had over 4gigs 
	of credits and were unable to download.

v1.2.5
fix:    Problem of some windows clients (leapfxp) not able to connect to server
	has been fixed.
added:  New dirlogscanner program with '-r' option for alternate config files.
	NOTE: Mucho thanks to PRICE of TFA for this great utility.

v1.2.4
change: 'Site Undupe' changed.   SITE UNDUPE WIN  will now undupe all files
	matching the string "WIN"
added:  Reporting with the site undupe command.

v1.2.3
added:  new 'stats' file in /glftpd/bin.  Multiple command line options 
	supported including '-r' to use an alternate config file.
fix:	No default config file was set.  Oops. 
	Default configfile = /etc/glftpd.conf

v1.2.2
fix:	DELCMD was destroying transfer rate statistics.

v1.2.1
fix:    Weak password encryption method fixed.
change: 'site userpass' changed to chpass.  See help.

v1.2.0
change: Adding users is now done internally within the site.  Script call to 
	'ua' removed.
added:  Weekly Allotment - user stat.  eg. A Weekly Allotment of 100000 would
	give that user 100megs of credit at the start of the week only if 
	their current credit status falls below that.

v1.1.1
added:  LastOnline display. %LASTONLINE cookie.   Displays the last # of users
	to have connected to the site indicating logout time, how long they 
	were online and how many files/megs were uploaded or downloaded 
	if any.  NOTE: Hidden users are not added.
change: Nuke multiplier 0 is now allowed.

v1.1.0  
change:	Groups Totally reworked.  
	/etc/group file used instead of groups.user.  See group file for format
	details.
change: -o option from DIR LISTINGS removed now that GROUP stucture is in place.
change: xferlog: user@host changed to dest/source ip_address of transfer.	

v1.0.2
added:  SITE UPDATE:  Use to add all dirs in the CWD to the search database.
added:  SITE TAKE

v1.0.1
fix:    Credit calculation after downloads grossly outta wack.
fix:    'SITE USER XX' fixed credit display.
fix:    Oneliners (site chat) was broke.
change: Nuked empty directories are deleted even if "create nukedirs"
	is selected.
change: Empty dir nukes added to dirlog.
added:  TCL script for newdir and nuke announcements.
change: dupe checker now replies with ( 00d 00h 00m) format.

v1.0.0
added:  Default Num of credits to take for a nuked emtpydir.
fix:    cwd into a dir that started with a numerial would fail.
added:  -r option for ftpwho & ftpghost utilities.
added:  -r option for alternate config files.  Syntax: glftpd -r /etc/glftpd.conf
fix:    Upgraded ftp daemon to wu-ftp beta16 standards.
added:  Timeouts for data connection and block transfers.
added:  Nukes now chmod dirs to 555.
added:  RealTime transfer rates to statline, sitewho and ftpwho utility.
fix:    ascii file retrievals < 51200 bytes would fail.
added:  Nuked dirs now also added to the dirlog database.
added:  Dirlog database now holds user taglines as well..
added:  Server now runs in chrooted environment and still uses the normal
        path restrictions found in bftpd.  ie. now noone has to see the 
	dev, etc, lib dirs anymore.
added:  chpass site cmd - allow users to change their own password on the site.
added:  userpass site cmd - allow siteops to change other users password.
fix:    invalid options on commandline would corrupt buffer.
added:  Option for either the normal zip checker, the crc32 file checker
        for isos, or no file checker at all.
added:  Option to extract/not to extract nfos.  Extracting of nfo's is still
	limited to those greater than 5k in size.
added:  '-'passwd option on login to disable lreply's.  ie. Quiet mode.
added:  '!'name  option in login to kill any prior logins on the site for
	that user.. ie. ghost connections.
change: Dir creations and files owned for sysops are now owned by their unique
	uid/gid instead of root's.
change: Nuked dirs now have the --NUKED extension.
change: FILE_ID_DIZ filename convention changed to .message.
fix:    Non valid archives not counted in the directory totaling.
fix:    All the commands that didn't work hopefully work now. :)
change: Sitewho greatly improved.
added:  passwd file downloads forbidden.
added:  New useradd program to comply with the chrooted env. and to add 
	users externally.
change: Shadowed password support removed to comply with chroot.
added:  Freedisk space added to the statline.  Ratio removed.
added:  site exec - Runs a script or executable located in the /bin/exec dir.
added:  All Stats are now done internally and on demand.
	(GWEEKUP, GWEEKDN, ALLUP, ALLDOWN, MONTHUP, MONTHDOWN,
	WEEKUP, WEEKDOWN, DAYUP, DAYDOWN)
added:  More viewable xfer stats within 'site user'
added:  logging to xferlog option
added:  -t -T options along with SITE IDLE.


