Code:
v6.4.0 Release Notes:
*** File Modifications:
1) File system\ioFTPD.exe changed. Version 6.4.0.0
2) File system\ioFTPD.pdb changed.
3) File system\tcl84t.dll and system\tcl84t.pdb changed.
4) File system\ioFTPD.ini changed (Out_Ports, NoFxpOut, NoFxpIn added).
5) FILES: text\ftp\[AllUp,AllDn,MonthUp,MonthDn,WkUp,WkDn,DayUp,DayDn].Footer
changed.
*** New Features:
6) New ioFTPD.ini option (Out_Ports under Devices like [Any]) : This option
allows you to control which ports the server uses for outgoing connections.
If Out_Ports is undefined that means use the old default of Port-1 for the
service initiating the connection. However to avoid "Connection closed:
Only one usage of each socket address (protocol/network address/port) is
normally permitted" errors caused by the receiving server or FTP client
not having a large enough port range you can specify additional local
ports to use. An Out_Ports of 0 means use any port which for almost all
cases eliminates the problem and is the new prefered settings unless you
have a router/gateway that needs you to limit the outgoing port range.
7) It is now possible to view and/or modify the Default.User and Default.Group
settings from within ioFTPD. Simply refer to them as /Default.User or
/Default.Group in any "site change" command, or "site chgrp" to change
the default groups for new users. Currently the only thing you can't set
are IPs for the Default.User although if there is a need this can be
added. To view the current defaults use "site uinfo /Default.User" or
"site ginfo /Default.Group".
8) New site change command (site change <who> nonleech <ratio> [<section>]).
This command is very similar to site change ratio except it will only
change the ratio of users who don't have leech on the section already.
This turns out to be really useful if you used to use 1:3 but now want
to go to 1:4 or something and using "site change * ratio 4" would force
everyone to 1:4 but you probably didn't want siteops, etc to be modified.
Modification of the Default.User or Default.Group setting requires the M
flag.
9) New ioFTPD.ini options (NoFxpIn, NoFxpOut under [VFS]). You can now
specify file paths to deny FXP to/from along with regular permissions
expressions to specify matching users. Thus "NoFxpOut /MP3/* 3" would
make all 3 flag users unable to FXP out from the /MP3 section while
allowing everyone else like siteops who presumably don't have the 3 flag.
The actual test is performed only after the connection is established
because only then is it possible to determine whether the transfer is an
FXP or not... You can still deny a user any FXP no matter what these
settings are via the user flags 'f' and 'F' which take precedance.
10) New "site stat" options (NoZeros and Zeros). When NoZeros is specified
entries that have a 0 in the sorted field will no long be shown. You can
specify the Zeros option to get the current style of output that includes
0 fields. NOTE: The new style of NoZeros might become the default
behavior in the future hence the need for the Zero option which is
currently useless.
11) New "site stat" feature (summations). The requested type of stat
(AllUp, AllDn, MonthUp, MonthDn, WkUp, WkDn, DayUp, or DayDn) now has
a summation counter available for bytes, files, and time that can be
accessed in the associated .Footer file. The %[pos] cookie will be set
to the total number of userfiles that matched in the Footer as well.
12) New "site stat" feature (count 0). Specifying a count of 0 previously
would imply the default of the top 10 matches, but it now means don't
show any matches at all which is useful when you're just interested in
viewing the total via the new summation feature.
Some site stat examples assuming the default text/* files.
NOTE: day stats reset at midnight UTC, weeks at the start of whatever day
you defined as WeeklyReset in ioFTPD.ini, months at the start of
whatever day you defined as MonthlyReset in ioFTPD.ini.
NOTE: Section 0, Byte order, Week Up, and top 10 are the defaults.
site stats monthdn
-- shows the monthly download statistics for the top 10 downloaders by
bytes for the current month along with the total of all downloaders.
site stats section 1 monthdn
-- shows the monthly download statistics in section 1 for the top 10
downloaders for the current month in section 1 and the total of
all downloads in section 1.
site stats count -1 wkup nozeros
-- shows the weekly upload statistics for everybody who uploaded at
least one byte in the current week along with the totals.
site stats alldn limit ".1 .G" count 0
-- show just the total of all the downloads for users with the 1 and/or
G flags.
site stats monthdn files limit ".3 !=GroupA" count -1 nozeros
-- show the monthly download statistics for all users who downloaded at
least 1 file who have the 3 flag but are not in GroupA along with
the monthly totals.
13) New site command (site ioverify [fix]). This command will walk through
the in memory user and group tables and examine all users and groups
and report any inconsistencies found. This command requires the M flag.
If the [fix] argument is supplied it will correct the number of users
in a group if it differs from the number actually discovered. Useful
for deleting a group whose user count is wrong since a group without
users but a user count greater than 0 cannot be deleted.
Command is untested with the shared db modules loaded, but should work.
14) New limited startup error reporting! When ioFTPD is not being run as a
service the server will now pop up an error message indicating why it
failed to start. Except for not being able to read/find the config file
and a few other critical errors the information isn't very detailed yet.
It will report which of the 30 or so modules caused the failure though
and this is much more than we had before!
*** Functionality changes:
15) Added code to IdDataBase_Init to report and reject duplicate id/names,
create a log entry in the SysOp log to report user/groups which are
deleted by a module during initialization (presumably someone deleted
a user/group in a shared database so the id is no longer valid), and
report unparsable lines to the error log.
16) Added code to the generic field parser used by Ascii2GroupFile and
Ascii2UserFile to report lines that couldn't be parsed to the error log.
Unfortunately the Ascii2* functions are exported and hence can't take
extra arguments, and to make things worse the ioFTPD calls are from
functions that don't know the group/user id or name so extra arguments
to a duplicate function aren't possible without lots of changes.
Therefore these errors will be relatively useless for pinpointing the
problem since you'll get the line but nothing else! However seeing
errors in the logfile is an indication a script or something is
having problems.
17) NOOPs no longer update the last action field of the client data
structure if an active transfer is in progress, but does reset the
associated idle timer. This idle timer is used in swho and external
scripts as a record of when the last input from the client was received.
It is not the new internal idle timer used to determine when to kick a
user according to the idle rules. The end result of this is that when
transfering a large file the last action will displayed for a user will
not be a NOOP sent as a keep-alive but the actual transfer command
itself. By keeping the NOOPs being recorded when no transfer is in
progress there should be no impact on external idle kick scripts.