View Single Post
Old 07-17-2009, 07:18 PM  
Yil
Too much time...
 
Join Date: May 2005
Posts: 1,194
Default TODO list, Feature suggestions

Here's some stuff on my TODO list. If you want something really bad speak up so I can try to prioritize it, and feel free to offer suggestions.

In no particular order:

Code:
Intelligent disk spanning logic: recognize complete/incomplete dirs, keep-
together feature for multi-dir releases, min space on disk needed for new
dir, etc.

Free space callback support for when there is no free space anywhere.

Add site stats - show TransferComplete type info: section, ratio, credits...

Add sitename configuration option in ioFTPD.ini and available %[SITENAME]

finish MLSD implementation?  support wildcards as well.  Verify FlashFXP fixed
all upper/lowercase names bug.

TCL feature to expose locking a directory that will be moved/renamed/deleted?
Currently you just kick everyone and then move the dir, but now that dir
moving actually does lock the directory why not make it possible to lock,
then kick the user?  Wipe needs this feature as well since it may take a
while to wipe a big tree and nothing prevents a user from logging in again
to another portion of the tree being locked right now...

expose directory move and directory delete functions to TCL.

iTCL resolver needs to have a way to return the list of raid/merged dirs
via new option.

Support OnCwdChange event which is called whenever the user's cwd or target of
command (i.e. LIST /foo/bar) changes.

Remove/change Hosts.Rules file and replace with functionality that allows you
to add/modify the permanently banned/allowed list via site/tcl commands.

Support a separate FXP controlled list which automatically includes all
banned hosts above as banned, but allows you to limit connections to
certain hosts, impose bw limits, allow only certain port ranges, etc to
hosts and set these rules to apply to all devices by default but could be
limited to particular if you want.  This would allow the server to only
connect to certain hosts behind a firewall and only on certain ports, etc...

Allow manual additions to temporary/auto-banned list via site bans add.

Allow way to get full ip of the last few error messages so it's possible to
ban an IP manually.

Make "site users" show summary data, maybe like:
  200- MASTER=1, VFSADMIN=1, SITEOPS=3, GADMINS=3, LEECH=41, DELETED=0

Enable an option where you can configure a list of flags that cause special
processing during logins.  This way users without any of these flags can
avoid having the overhead of a script being called.  This would support
things like temp banning, etc.  Maybe make this a separate section in the
.ini and move the closed/deleted/shutdown events there as well to handle
server flags which are checked before user flags...  first to reject user
login is the message displayed.

SITE SET TRANSFERPROGRESS [ON/OFF] - turn progress notification on/off.
This just replies every 30 seconds or so with the number of bytes sent/
received so far and the current speed.  Quite useful for FXP transfers.

SITE FXPUP # / SITE FXPDOWN # - self limit your FXP bandwidth.  Useful
because there isn't any other way for non-siteops to do this.  Some FTP's
can have a superfast close host so trash the bandwidth of everyone else
that limiting themselves to 75% or something of max really makes a difference.

Support WHO cookie getting access to file size for downloaded files and
allow % completed output and perhaps time to finish estimates.

SITE UTIME support (1 arg version?)
SITE ATIME/PTIME support (alternate-time) setting for dirs

Allow option to disable MDTM set and site UTIME feature completely so
file/dir times cannot be changed.  You can already pretend not to support
the MTDM set feature via MTDM-- in the Feature_Suppression setting.  Make
this new setting controlled via permissions, different for dir and files?
Also disallow FEAT mtime adjustments > now + small fudge

allow for read-only mounted dirs so you can mount a network drive from another
ioftpd server?  or guarantee that the server won't change anything?  Won't
protect against scripts doing stuff to the drive though.

Allow the high bits of user/group field in .ioFTPD file to be used as a site
identifier so multiple servers can access networked/shared directories and
the server knows it should use default user/group or remote lookup or
something.

Site addlocal and gaddlocal to create user accounts that force local
accounts to be created in case a shared user module is loaded.

Track directory changes behind the servers back and report them via a callback
to catch changes made in explorer?  Scan the NTFS journal entries on disk to
see if files/dirs under mountpoints were changed when server was offline?

New formatting cookie that takes a string, a min field length and a padding
character to make nicer output possible...  Need this to handle random site
embedded in a border around stuff.

Support large write operations to disk?  2MB, 50MB?  This would dramatically
cut down on disk fragmentation when multiple uploads occuring.

Directory list operations that are taking a really long time should print
something every 30 seconds or something to keep clients happy.  This might
remove the need for DELAY option to preload as well... STAT different?

uptime tcl command

lock user to homedir feature

restrict site size command to a certain paths or have a max runtime so
can't run from root for instance if you don't have correct perms?

help/site help support

onuseradd, onuserdelete triggers?

make reset, config update, rehash callable from tcl

enable/disable devices via site command for multi-homed hosts.

auto-create SSL cert?

enable M flagged users to login even if missing vfs or invalid / entry

allow MDTM and XCRC on a just transfered file even if shutdown/close is
happening as they are instant operations.

new feature site killzombie should create a log entry about it

site scheduler command to list active scheduler entries and view schedule?

Use TCL resource limits to make 30 sec wallclock timeouts which can be used
to force TCL to exit after a while, i.e. during shutdown...

option to prevent storing last login from field into userfile and cookie to
test to see if feature is disabled so uinfo won't show it at all

alphabetical who listing?

download slots per dir? so no dual leech on a dir but multiple downloads ok

data ip column in ioGUI blank during transfer (useful for multi-homed hosts),
ONLINEDATA->ulDataClientIp not filled in... can't tell what device in use

implement user flag toggling feature!

user flag to show/hide .diz, .message on cwd (.ioFTPD.message always shown)

re-display the .message stuff on a re-list?  track 2nd list of a dir?

document NTFS vs FAT (2 second write resolution and it's caching issue) --
should cache add 3 seconds to time to make sure it's valid?

add load balancing across multiple external IPs via round robin or something
for multiple devices/services somehow...  DEVICE feature already does this?

site chgadmin <user> <group>

Always track credits feature?  How would that work with a user with a ratio
in some sections but not others?

Warn about incorrectly configures PORT requests to private non-routable
addresses 192.168.*, etc when the device the user is connected on isn't on
that network.  DrFTPD like ==YOU'RE BEHIND A NAT ROUTER== messages...

download counters on files or dirs?

"You've been auto-banned... wait X min message to reset" to user when banned?
Add an option for it.

What happens when you try to move/rename a merged directory?  it only
handles the first one?  Should do all, BUT needs to be smart enough to
turn moves into renames when it can...  remove across all as well.

change .ioFTPD/user/group file writing to transacted operations on vista+
to make them atomic.
Yil is offline   Reply With Quote