PDA

View Full Version : ioFTPD v7.7.3 (STABLE) Released


Yil
04-26-2011, 04:49 PM
UPDATE: v7.7.2 (it must be .2) appears really stable. So far nobody has reported any crashes and the few sites I can see all have nice uptimes. If you have had stability problems in the past try this version. The switch to OpenSSL might have solved the lockup bug as I hoped (a bizarre dll loader lock bug probably caused by the MS encryption library always triggering dll loads/unloads), but it wasn't until I noticed I screwed up and didn't register locking functions with OpenSSL that it became thread safe and the random crashes stopped.


Looks like I've uncovered a new serious bug in the directory caching code. Probably a good thing I decided to scrap all the existing code are re-write it huh? The previous serious bug I fixed in v7.6 appears to have helped a number of people with stability. I'm hoping this one will as well. This particular bug has to do with the directory locking code that in some cases with a lock holder and 2 waiters leaks handles and does other bad things. The good news has to be that I'm finding these bugs (in code that I didn't write!), the bad news is I didn't find them earlier when I looked before.

For this release I've decided to grab all the pure bug fixes and the "simpler" new features I added for v8 along and put them into this v7.7 release. I'm also considering taking the rest of the v8 changes like the new configuration module which affects a lot of code, user modifiable site flags and the things that depend on that, and TCL access to the ban lists and putting out a v7.8 release That would leave v8 with just the new directory caching stuff so it wouldn't seem like a big deal anymore but it might be the better way to go.

Highlights
* Matching list ('site user' plus the '--' and '-+' glob prefixes)
* Single-user/admin site close
* Login/logout logfile suppression via user flag
* Limited Banned user support
* Several user-friendly error messages added
* A heck of a lot of bug fixes.

NOTE: Both the TCL/OpenSSL libraries are upgraded and so is the /lib dir so I suggest making a backup of your current ioFTPD directory before upgrading.


**** NOTE: These links will be updated soon. Evidently my ISP has stopped supporting FTP/web pages for all it's users and the links are broken.

Latest Version:
Link: ioFTPD-v7.7.3.zip (http://home.comcast.net/~yil/ioFTPD-v7.7.3.zip)

STABLE Version:
Link: ioFTPD-v7.7.2.zip (http://home.comcast.net/~yil/ioFTPD-v7.7.2.zip)

SOURCE:
Link: ioFTPD-v7.7.3-src.zip (http://home.comcast.net/~yil/ioFTPD-v7.7.3-src.zip)

Yil
04-26-2011, 04:51 PM
v7.7.0 Release Notes:

1) Files in \System:
Changed : ioFTPD.[exe,pdb] - Version 7.7.0.0
Changed : tcl85t.[dll,pdb] - Version 8.5.2.9
Changed : libeay32.dll, ssleay32.dll - Version 1.0.0.4
Added : libeay32.pdb, ssleay32.pdb - Version 1.0.0.4
Changed : Help-SiteCmds.ini
Changed : ioFTPD.ini - summary of changes by section...
[FTP_Service] : OpenSSL_Options options and comments changed.
[VFS] : Default_Directory_Attributes = 777 0:0
[FTP_SITE_Permissions] : Rename "sectionnum" to "sectionums"
stat = *
[Ftp] : Single_Closed_Exempt_Name added
Who_Sort_Output added
Who_Hidden_Users comment changed
Banned_User_Flag added
Quiet_Login_Flag
[Threads] : Io_Threads = 4
Remove Encryption_Threads option.
Section commands changed.

2) Directories in \lib:
Replace entire reg1.2 directory.
Replace entire dde1.3 directory.
Replace entire tcl8 directory.
The tcl8.5 directory is a bit trickier. Probably the easiest thing to
do is copy and overwrite all the files from the new directory into your
existing dir. For the record, here's some info on the subdirs:
TCL: http1.0, msgs, opt0.4, tzdata (encoding not shipped w/ioFTPD)
ioNinja-v0.8.9.6-2009-06-29: encoding, http, http2.5, twapi, zlib1.1
*** nxHelper shipped with ioNinja is v2.3 but you need the v2.4
one from nxTools else you get package require errors!
*** opt0.4 is part of TCL, use the one shipped with ioFTPD
*** reg1.1 is old, ioFTPD includes lib/reg1.2 which is better
lib/nxHelper and lib/sqlite3 are part of nxTools

3) Files in \text\ftp:
Changed : GroupList.[Header, Body]
Changed : MyInfo.[Sections, Totals]
Changed : UserInfo.[Sections, Totals]
Changed : UserList.Footer

4) Files in \Doc:
Changed : Cookies.txt
Changed : Events.txt
Changed : iTCL.txt
Changed : Site-cmds.txt

5) Files in \Source
Changed : Site-cmds.help


*** New Features:

6) New site command (site stat). Displays all the information normally
displayed after a file transfer including server close / shutdown
notifications, any personal messages, and the TransferComplete file with
the statline(s) which usually contains things like section, ratio, credits
stats, freespace, etc for the current dir. The speed will be from the last
data channel transfer be it from a file transfer or a directory listing.

7) Modified site command (site users [ -errors ] [ -- | -+ ] [ <user-glob> ]).
Previously this command just listed users matching the <user-glob> pattern
or returned a list of all known users if no arguments were given. That
still works the same, however the list of matching users is now remembered
and called the 'matching' list. You can then refer to the users in the
matching list via the '--' and '-+' syntax:
'--' => start with the current matching list, but remove users from it
who don't match the new <user-glob>.
'-+' => add previously non-matching users to the list who match the new
<user-glob>.

Because all negative search terms in <user-glob> are processed first the
ability to iteratively include / exclude users is much more powerful.
Consider the command 'SITE USERS !V .1 -Bob' which will find all SiteOps
and the user Bob provided they aren't also VFS Admins. Now compare that
to 'SITE USERS !V .1" followed by 'SITE USERS -+ Bob' which will match all
SiteOps who aren't also VFS Admins and the user Bob. You can see that if
Bob happened to be a VFS Admin you would get different results. In fact
ONLY by using the matching list could you get the results you probably
wanted.

Now for the really cool bit. The '--' and '-+' prefixes that refer to
the matching list are now valid arguments to these other site commands:
'SITE [S]WHO', 'SITE STATS', and 'SITE CHANGE'.

This is really useful because it's sometimes tricky to craft a 'site
change' command to modify just the users you wanted. At the minimum it
has always been a good idea to use 'SITE USERS <user-glob>' to see who
would be effected, but with the new matching list feature you can view the
list of users, make sure it's correct, and use 'site change --' to modify
only the users you just verified.

If there are any users records who couldn't be accessed the command will
report a count of them if the caller has the Master flag. You can then
use the '-error' option to see what usernames had problems. Errors should
only be possible with the use of a 3rd party shared user module like
nxMyDB.

8) Modified site change commands (site change <target> { homedir | vfsfile |
tagline | opaque | groupvfsfile | groupdescription } <none>). You can
now specify "<none>" as the new value to any of the above change commands
and the field will be cleared. This is important because some commands
like 'site change tagline' had no way to clear a user's tagline once set.
Some commands like site change vfsfile and groupvfsfile still accept
"default" to clear the field, and site change groupdescription will allow
"none" to do the same thing, but "<none>" is now standardized across them
all.

9) By default the server will no longer accept logins (except from a single
exempt user defined in the .ini file) until all OnServerStart events have
finished. I'm not aware of any 3rd party scripts except NxMyDB who
currently use this event and the new guarantee should be useful to it.

10) Modified site command (site close [ -single ] [ { -kick | -new } ]
[<reason>]). Site close now accepts the '-single' option (available only
to 'M' flagged accounts) which puts the server into "single user" or
"administrative" mode. This mode doesn't exempt the users defined by
the 'Close_Exempt' .ini option, so the only users allowed to stay logged
in is the user issuing the command and the user defined by the new
'Single_Closed_Exempt_Name' .ini option. Ordinary users will see the
normal site close message, users who would normally be exempt from site
closure will now see this additional line when trying to login:
530-ADMIN MODE CLOSURE BY '<username>'.
This new option can be useful if you have a bunch of siteops and you want
to close the site but they are all normally exempt. It also provides a
way to perform actions best done without any active transfers.

11) New ioFTPD.ini option (Single_Closed_Exempt_Name under [FTP]). The single
username defined here can always login to the server even if the server
is in single-user / administrative mode or if the startup scripts are
still running.
WARNING: ioGUI uses the ioFTPD account and probably should NOT be running
if single user mode is entered to do things like renumbering sections,
mass modification of userfiles, etc because it won't pickup the changes
so just disconnect and reconnect when done.

12) New ioFTPD.ini option (Banned_User_Flag under [FTP]). This defines a
single user flag character to indicate a user has been banned from logging
in. By default, the user will see the message
'Account has been temporarily banned'
if they try to login, however the actual text may be different if using
an OnBannedLogin event. Default is 'B'. Leave undefined to disable.
NOTE: The ability to set a ban time for users is not currently provided
because it would require a change to the userfile or some tricks
with overloading a field and that could cause issues with nxMyDB
and/or 3rd party scripts. However a very simple script and a new
scheduler event should be able to add the ability while also showing
the reason for the ban when the user tries to log in. In the future,
when there are enough changes to make it worth modifying the
userfile, these features will be supported by ioFTPD itself.
NOTE: Banning a user doesn't automatically kick them if already connected.

13) New event (OnBannedLogin). This event is run whenever a user tries to
login and has the Banned_User_Flag as one of their user flags. Treated
the same as OnExpiredLogin and OnDeletedLogin which means if the event
returns an error code the generic 'Invalid password' error is displayed
instead.

14) New ioFTPD.ini option (Quiet_Login_Flag under [FTP]). This defines a
single user flag character to indicate that normal LOGIN: and LOGOUT:
log entries to ioFTPD.log should not be made. This flag is very useful
to prevent BNC log spam. Default is 'Q'. Leave undefined to disable.

15) New ioFTPD.ini option (Who_Sort_Output under [FTP]). If set to True then
the 'site who' output is case-insensitive sorted rather than shown in
connection-id-slot (like site swho) since this is more useful to users.

16) Site Who for 1M flagged users no longer obscures the arguments to site
commands, or hides paths. It will, however, apply the Who_Hidden_Users
attribute provided the hidden user isn't actively transferring a file.
This still allows you to filter out sitebots, ioGUI, etc. from listings
provided they aren't consuming bandwidth in which case you probably want
to know about it as a SiteOp.

17) Site Who is a even more restrictive about hiding a user's actions if the
user is determined to be in or transferring from a hidden path.

18) If the user has logged in with a '-' password prefix indicating they are
a bot/script and wish for only single line command responses the server
will no longer display the .ioFTPD.cwd and .ioFTPD.messages files when
the bot CWD's into a directory and it will disable theme support.

19) The server will now return more descriptive login failure messages in a
couple of cases if a valid username and password has been supplied. In
particular, if the VFS file specified by the groupfile, userfile, or the
system default .vfs file is unable to be opened you will now see:
530 Login failed: Error with VFS file.
and if the VFS file was able to be loaded but the user's home directory
or the '/' directory were unable to be resolved you will see:
530 Login failed: Error with home directory.
This should favorably resolve one of the most common issues new ioFTPD
administrators have since lots of people seem to forget to setup the .vfs
file and the 'Invalid password' error was misleading.

20) The server will now verify that the default TCL initialization script can
be run successfully, or it will fail to start with an error message and a
logfile entry. This is particularly important because someone (including
me!) will forget which version of TCL libraries is in the /lib directory
and won't figure out why scripts are failing in weird ways. The most
common indication you had a TCL dll/lib mismatch is with the [clock]
command not working.

21) Initialization errors with TCL will still report that the 'Event' module
failed, but will now mention it was a TCL version issue.

22) ioFTPD error messages to the logfile during initialization will now record
the textual error message if the log system has been initialized.

23) New super cookies (%[Max]). Valid when processing UserList.Footer this is
the total number of users found. %[Pos] holds the total matching users.

24) %[Ratio(999)] now returns the LeechName setting from [Ftp] section in the
.ini file, i.e. Leech, Unlimited, etc.

25) When processing [UserInfo,MyInfo].Totals the %[CreditSection] cookie will
be set to -1 if per-section stats shown, else 0 and %[ShareSection]
will be the total number of sections defined.

26) Added a "safety" word to all AllocateShared() memory allocations and to
all FileInfo's that is checked prior to decrementing the reference count.
If corruption is detected an entry is made to the Error log and details
about the callstack are made to the Debug log. If this does get triggered
perhaps a pattern will emerge so we can find the problem.

27) Updated OpenSSL to v1.0.0d.


*** iTCL Changes

28) Updated TCL to v8.5.9.

29) New TCL command (ioServer { open | closedfor | close ... }).
open : Returns -1 if server already open, else the time the server
was originally closed.
closedfor : Returns -1 if the server is not closed, else a tuple like
{ time-server-closed close-msg-reason }
close [ -single <username> ] [ -new ] [ <reason> ]
Returns 0 if the server was just closed else the time it was
previously closed. The -single <username> option enables
single user mode for the given username. The -new option
prevents logging non-exempt users off and just prohibits new
users. Unlike 'site close' this command doesn't offer a way
to immediately kick users, just use [client kill] after the
server has been closed.
NOTE: The open/close commands generate ioFTPD.log events just like site
open/close would. The user/group names displayed in the log are
based upon the currently active userfile, else "<unknown>" if not
available.
With programmatic access to the site open / close command and the new
guarantee that all OnServerStart events will be executed before the server
accepts connections you can now start a server up closed to logins and
keep it that way while performing operations that are best done without
anyone online.

30) New TCL command option ([user SingleLineResponse]). Returns 1 if the '-'
prefix was used on password during login indicating a bot/script, else 0.


*** Bug Fixes:

31) Fixed a bug with "Invalid symbolic path (pwd was <path>)." lines showing
up in the error log improperly. This created a lot of log spam when
scripts like nxAutoNuke would run as the [resolve pwd] calls would
trigger the bug.

32) Fixed a bug where the individual directory lock for cached dirs wasn't
handling all cases correctly. If the directory was locked and there were
2+ other threads waiting on the event created to hold waiters and then the
directory was release by the original owner and another waiter was added
a new event would be created to hold waiters even though there were threads
waiting on the original event still! I'm not sure exactly what happens
besides the event handle being leaked, but it's possible users could get
stuck on the abandoned event, multiple users could "own" the lock, etc...

33) Fixed a bug where the RETR command was decreasing the active download
count immediately as well as after the download finished. This meant
that the active download count goes increasing negative and rendered the
max concurrent download setting for the user ineffective.

34) Fixed a bug where the STOR command could leave the active upload count
incremented if the server had trouble creating / appending the file.

35) Fixed a bug with the STOR command where the data channel could be reset
twice if the download failed in certain situations like not enough
credits, etc.

36) Fixed a bug with AllocateBuffer() that always doubled the size of the
buffer even if the minimum size requested was met.

37) Fixed a bug where invalid login attempts may leave the mountfile open.

38) Fixed a race condition with newly registered connections.

39) Fixed a bug where Login_Attempts = 1 under [FTP] would prevent users
from logging in. Default is 3.

40) Fixed a bug in determining if a path is a mountpoint or not.

41) Fixed a bug with message files not ending with \r\n generating an extra
blank line.

42) Fixed a race condition on counting total logins for a user.

43) Fixed a race condition on the device share count.

44) Fixed a bug in PWD_Copy() that didn't handle pure virtual directories
properly and could result in the server crashing in some cases.

45) Fixed a bug where the virtual event field associated with an item that
resolved to a real path in a pure virtual directory wasn't being updated.

46) Fixed a bug if both sides of the %[IF] super cookie were zero length.

47) Fixed a bug in PWD_CWD2() which didn't close an open FileInfo which would
lead to a memory leak if the directory was later updated or flushed from
the cache.

48) Fixed a bug where the data channel socket might not be initialized before
its first use if the first data transfer command failed.

49) Fixed a bug where it might be possible to close the wrong socket if the
server ran out of passive/active local ports.

50) Fixed a memory leak when displaying a list of users for site re-add/purge.

51) Fixed two memory leaks with 'site grpdel'.

52) Fixed a memory leak in 'site help'.

53) Fixed a bug in DeleteLockObject() not marking the 2nd handle as invalid.

54) Fixed a memory reference count issue in 'site devices|services'.

55) Fixed a memory leak in 'site ioverify'.

56) Fixed a bug in 'site perms' which didn't close an open FileInfo, and fixed
a pathname memory leak.

57) Fixed a bug with 'site perms -<yourself>' which would improperly update
your userfile reference count.

58) Fixed a bug in 'site chattr' which wasn't closeing the FileInfo.

59) Worked around a bug in TCL during shutdown after TCL_FinalizeThread() had
been called and returned in each thread with a TCL interpreter, but when
TCL_Finalize was called on the main thread it would crash because not all
the threads had actually cleaned up completely. From the manual I fail to
see how ioFTPD did anything wrong, but I've added code to mitigate the
problem.

60) Fixed a bug in 'site who' which would call Free() on NULL if no excluded
paths were defined.

61) Fixed a bug in 'site refresh' which wouldn't free all paths when dealing
with merged directories.

62) Added a workaround for WinSock returning an odd error that resulted in:
426 Connection closed: The semaphore timeout period has expired.
and changed it to more accurately reflect what was going on:
426 Connection closed: Data transfer timeout.

l.d.m
04-27-2011, 03:23 AM
wow, a lot of changes and fixes bugs!
thanks for your hard work.. I try this release

Flow
04-27-2011, 03:45 AM
Thanks Yil!

mr.babek
04-27-2011, 04:39 AM
Much appreciated! gogogo!

Yil
04-27-2011, 04:35 PM
Hmm, looks like I fixed the per-user download counter, but broke the per-user upload counter! LOL. Let me know what else I got wrong.

Yil
04-28-2011, 02:25 AM
*SMACKS HEAD* I've been debugging a few crash dumps, and I've been up a long while, so it might not be true, but it looks like I completely missed initializing part of the threading system in the OpenSSL library. I mean, I compiled it with thread support, but evidently you need to call some function to register a bunch of locks for it to use at runtime, sort of like you need to register malloc/free.

This would only be an issue with v7.4+ obviously since that's when we started using OpenSSL, but it's clearly a really big deal and this is probably causing all the crash dumps I've seen recently.

I'll get a new release out tomorrow.

Flow
04-28-2011, 03:05 AM
Can i smack too? ;)

mr.babek
04-28-2011, 03:34 AM
well, up till now its amazingly stable for me, better than previous versions

Yil
04-28-2011, 06:50 PM
v7.7.1 Release Notes:

1) Files in \System:
Changed : ioFTPD.[exe,pdb] - Version 7.7.1.0


*** Bug Fixes

2) A HUGE BUG fixed in how ioFTPD uses the OpenSSL library. It appears that
even though I compiled the OpenSSL libraries with thread support they
provide no default locking implementation! What kind of idiots are they?
Oh sure, they provide a default implementation for getting the thread ID
with all sorts of tests in the source to figure out how to do it on each
platform, but then they ignore locking on a -DTHREAD compiled library?
I mean, it isn't like they already distribute the code for the locks in
the fricken source dir with all the platform tests to get it right, but
they don't bother to enable it?!? Did I mention they are idiots? Heck,
they even claim that the library is thread safe lots of places but fail
to mention that isn't really true unless you setup some callbacks! Anyway,
ioFTPD internally protects each SSL object so it's in use by just one
thread at a time, but shared state in the SSL context and cache wasn't being
protected because it had no locking so sooner or later things would break
if the server had lots of SSL connections starting/ending at the same time.

3) Fixed a bug with the per-user upload count for users.

4) Fixed a bug where 'site myinfo' wouldn't return an error if too many args
passed to it, and in some cases wouldn't display anything.

Yil
04-29-2011, 11:21 PM
Now that I've released the matchlist feature I'm going back to play with the new FlashFXP command set that I started a while ago. If you've written custom Flash command menus please let me get a copy so I can see other examples in case the way you've organized them makes more sense than how I did it.

One thing I've noticed is that the current help files with ioFTPD aren't quite right. I updated the current help file to have the new/changed commands from the v8.0 helpfile, but they take advantage of a feature or two that only exist in the new v8 help module. It only affects a couple of commands and isn't a big deal, but I expect I'll be updating them shortly with the Flash stuff just in case I find more things I want to change... Besides a cosmetic difference or two the "unworking" part is limit to normal users, SiteOps+ won't notice anything different/wrong.

m4r3z
05-01-2011, 02:57 PM
Updated and running.
Lets see how it does for the next week :)

Flow
05-02-2011, 01:09 PM
Hmm ... 550 msg display correctly?. File is transfered, file is thare, but 550 report No such file or directory.

SIZE 213-me_naked.mp3
550 213-me_naked.mp3: No such file or directory.

Yil
05-02-2011, 04:05 PM
File uploaded to a regular dir and then SIZE doesn't find it? This the same login as uploaded the file? I wouldn't think that should be possible unless the file wasn't uploaded but extracted like a .nfo/.diz or something. On the other hand, if it was uploaded by a different user you'll have to pay attention to the timestamps carefully... Any chance it was it in the process of being uploaded in another login at the time?

On the other hand, it's possible I missed marking the directory as dirty somewhere with all the changes in v7.6 but I'd need more details, you can PM me logs if you think it shows the problem clearly. BTW, anyone can force ioFTPD to re-cache a directory using 'site refresh' to see if that makes the problem go away.

Does this happen for more than 1 file in a directory?

ArtX
05-03-2011, 05:38 AM
Hmm ... 550 msg display correctly?. File is transfered, file is thare, but 550 report No such file or directory.

SIZE 213-me_naked.mp3
550 213-me_naked.mp3: No such file or directory.

I have got that message for a while, files are always there though, so i never really paid much notice to it :)

[R] SIZE a.little.test.file.rar
[R] 550 a.little.test.file.rar: No such file or directory.
[L] PRET RETR a.little.test.file.rar

yet in the directory D:\FTP\Test there is a file called - a.little.test.file.rar

Flow
05-03-2011, 11:35 AM
Yea, Yil, it happen amost after every in this case mp3 file (1album=10-14 file) uploaded into the directory. Just scrolled my logs with nothing to report.

Yil
05-03-2011, 12:43 PM
I'm not seeing any problems. First, let's double check what is going on.

An FTP client can often issue a SIZE xyz and/or MDTM xyz to verify the file's size and timestamp PRIOR to transferring the file. If the file doesn't exist, because it hasn't been uploaded yet, then of course you're going to get an error, but the client should then upload the file... [I probably should consider removing the themed answer from these so they don't stand out.]

On the other hand, uploading a file, THEN checking it's size isn't a behavior I have seen with the popular FTP clients. I know some support XCRC to verify the checksum of the uploaded bytes, or MDTM to set the timestamp on the newly uploaded file, but I haven't seen post upload size checks. Because ioFTPD supports the MDTM change command and this is done immediately after the file is uploaded and seems to always find the file so I don't see why the SIZE command would have trouble...

I should also point out that Flash v3.x silently issued the SIZE (maybe MDTM?) commands but never showed them to you in the status window which is why you would sometimes see it slowly process queue items that had already been uploaded. Flash v4 shows you the play by play so you can see what is going on which is probably a good thing, but may explain why you aren't used to seeing this done. You can actually control this behavior in v4.

Can you confirm that you are seeing the file uploaded and THEN failing to be found by SIZE and not the other way around?


Carpo: That's correct and expected behavior... See how it tests to see if the file was uploaded by someone else and then starts to setup an FXP from somewhere with the PRET command?

ArtX
05-03-2011, 02:38 PM
Ah okay, thought it was what Flow was on about :)

Zer0Racer
05-04-2011, 07:25 AM
Now that I've released the matchlist feature I'm going back to play with the new FlashFXP command set that I started a while ago. If you've written custom Flash command menus please let me get a copy so I can see other examples in case the way you've organized them makes more sense than how I did it.

...

Here is the one I made ages ago, but with some updates. Alot is probably obsolete and I haven't added much from all your new additions to ioFTPD since I rarely use the command set myself these days (and haven't updated my ioFTPD to v7.x yet). There are also parts in the command set that only work when you have some scripts installed.

The first command set that I made got several thousand downloads and seems to have worked well. Use it and update it as you please.

Regards
ZR

Yil
05-04-2011, 02:36 PM
Thanks Zer0Racer. Looks like that is one of two examples I already had (though I had an older version of it) and I can confirm it works well and appeared popular :)

Flow
05-04-2011, 03:01 PM
Hmm ...is thare any chanse to have somethin to do with credit section config?

Yil
05-04-2011, 03:14 PM
My guess would be no Flow. The section config part of the .ini file has a hard coded default to 0 if nothing matches and the same resolver is used to determine the path to upload and the path to check its size so I would expect both would fail since determining the section occurs only at the very end and would be common to both operations.

Were you able to confirm the order of events?

ArtX
05-05-2011, 01:44 PM
here is an fce from ages back

Flow
05-05-2011, 02:37 PM
Yil, check you forum Inbox yet?

Yil
05-05-2011, 02:42 PM
Good news Flow. There's nothing "wrong" with the logfile. It's the expected SIZE A, PORT/PASV, STOR A behavior. All is fine.

Flow
05-06-2011, 11:58 AM
Errrr .... so what with the 550 No such file or directory then? FTPClient?

Yil
05-06-2011, 12:17 PM
The client learns info by requesting the size of a file before uploading. It confirms it doesn't exist if it gets an error (which is why you see an error if you are uploading but not racing), or it gets its current size which it will use for resuming the transfer or deciding it's complete.

In flash you can actually turn this behavior off by disabling the Request file size/date prior to transfer option under file transfer rules. This is a good thing most of the time, the only reason you might want to turn it off is if the site supports x-dupe.

Flow
05-06-2011, 01:27 PM
Cool, thanks for the clarifications :)

Zer0Racer
05-07-2011, 03:44 PM
Yil, I think I need your help here. I get alot of CreateProcess failure (error = 87) in Systemerror.log when trying to EXEC the zipscript I'm using (the one that worked fine in v7.3.3).

If I change/toggle Keep_Links_In_Paths and/or OnlineData_Extra_Fields either I get the error of the exe crashes.

Any ideas?

Yil
05-07-2011, 04:50 PM
Zer0Racer: error number 87 is ERROR_INVALID_PARAMETER and based on a quick search seems to indicate that either the command line is too long (32k - unlikely!) or the environmental variables are too long (32k). If you do 'set' from a command prompt it should show you the currently defined variables. ioFTPD then adds to that whatever is in etc/ioftpd.env after expanding all the cookies...

If you have say 25-30k worth of normally defined variables perhaps when ioFTPD adds it's own with longer named directories you are getting errors but with shorter you are fine. My guess is you've installed more software that automatically added some environmental variables or appended its path to the PATH variable and now you are hitting the 32k total limit...

You can modify the list of windows environmental variables via system properties -> advanced system settings -> environmental variables or something like that depending on which version of windows you are running.

Yil
05-07-2011, 05:04 PM
Oh, I should mention that the OnlineData_Extra_Fields is a potential issue with old .exe based scripts which is why it's an option but it appears to work ok with sitewho and ioGUI in shared memory mode. However I don't think zipscripts normally use the client data field, but if they do you might need to disable the feature.

On the other hand, keep_links_in_paths is sort of ignored and the full real path used because old .exe zipscripts don't understand symlinks in paths very well since they never had to deal with them. The big issue here is the full real path wasn't always correct if the keep_links_in_paths feature was disabled because of bugs. Was fixed in various ways in v7.6.3 and v7.5.7. My guess is disabling the feature in the older versions exposed the problems I fixed and that was causing your issues, but I don't see any reason why disabling it now would be causing problems.

Zer0Racer
05-08-2011, 06:35 AM
Zer0Racer: error number 87 is ERROR_INVALID_PARAMETER and based on a quick search seems to indicate that either the command line is too long (32k - unlikely!) or the environmental variables are too long (32k). If you do 'set' from a command prompt it should show you the currently defined variables. ioFTPD then adds to that whatever is in etc/ioftpd.env after expanding all the cookies...

If you have say 25-30k worth of normally defined variables perhaps when ioFTPD adds it's own with longer named directories you are getting errors but with shorter you are fine. My guess is you've installed more software that automatically added some environmental variables or appended its path to the PATH variable and now you are hitting the 32k total limit...

You can modify the list of windows environmental variables via system properties -> advanced system settings -> environmental variables or something like that depending on which version of windows you are running.

Yeah I searched for it too and shortened it so now I only have Path=C:\Windows\system32;C:\Windows;C:\Windows\Sys tem32\Wbem But that didn't help.

Edit: Same zipscript executable still works with 7.3.3 without the CreateProcess failure. When I try it in 7.7.1 it doesn't work. Same machine.

Yil
05-08-2011, 07:02 PM
Did you see what 'set' from a command prompt shows? I know some things like java, tcl, etc can end up having really long environmental variables for include, class, etc paths... 32k is big, so it should be obvious if that's the issue. Other than that we could try running cmd.exe directly and make it print the output of 'set' to a file and then see what the actual args getting to the child process are just in case it's an ioFTPD cookie issue.

There's also the args.exe script that pops up a window with the args to the program so you can see what the command line looked like. Unlikely, but not that hard to check.

Can you see if the paths you are having issues with have anything in common. In particular do they have symbolic links in the path, really long names, etc.

Zer0Racer
05-09-2011, 05:35 AM
You mean something like this?OnUploadComplete = EXEC c:\windows\system32\cmd.exe /c set > c:\temp\set.txt

Just leaves me with an empty file in 7.3.3 and 7.7.1.

The zipscript works in 7.3.3 but not in 7.7.1. What differences are there between those two versions of ioFTPD?

Yil
05-09-2011, 11:53 AM
Well, you probably don't want to use an event because it appends arguments to the command line... Just define a new EXEC site command.

However, I decided to test it locally to make sure that would work and it sorta did, but I think I might have an idea of what the problem might be. One of the v7.7.0 changes indicates that I fixed a problem with handling extra blank lines being generated when processing message files. However, the ioftpd.env file is processed as a message file so you can use cookies in it, and it's likely I broke something. Checking that now.

Zer0Racer
05-09-2011, 12:24 PM
EXEC c:\windows\system32\cmd.exe /c set > c:\temp\set733.txtIn v7.3.3 it seems to print the ioftpd.env correctly. See: http://pastebin.com/K7ZNX2GL

In v7.7.1 I get this, and this only:

ACCSPEED=403.1115

COMSPEC=c:\windows\SysWOW64\cmd.exe
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.JS;.WS;.MSC
PROMPT=$P$G

Yil
05-09-2011, 12:57 PM
I found the problem. Processing the cookies in ioftpd.env is weird because each "line" is terminated with \0 instead of \r\n, plus there is an extra \0 at the very end. My "fix" assumed a normal C-style \0 terminated string and thus couldn't handle this weird environmental output style. Undoing the v7.7.0 change and things worked over here as well, but I'll need to figure out another solution.

Testing for a new solution exposed another issue however, and I really should fix that as well so not sure if a new version will be out today.

Yil
05-09-2011, 04:21 PM
v7.7.2 Release Notes:

1) Files in \System:
Changed : ioFTPD.[exe,pdb] - Version 7.7.2.0


*** Bug Fixes

2) Fixed a bug introduced in v7.7.0 in the message cookie preprocessor that
treated \0 terminated strings as the end of the input. That holds true for
all message cookie files, but was not true when processing the ioftpd.env
file into individually \0 terminated strings suitable for passing to child
processes.

3) Fixed a bug introduced in v7.4.0 when all the input/output functions were
modified to use the new transfer engine with OpenSSL support. A variable
was not reset which resulted in mangled commands if the command that was
sent by the client didn't contain a return character. Since FTP clients
send a single command with a return on the end this wasn't noticed until
I manually connected a raw TCP stream to test the previous fix.

Yil
05-09-2011, 04:23 PM
Zer0Racer: See if 7.7.2 fixes your problem. Thanks for bring this up since this could break all EXEC scripts.

Zer0Racer
05-09-2011, 11:56 PM
Yil, you fixed it! Cool. Thanks!

opcode
05-18-2011, 06:55 AM
From the 7.7.0 release notes:

[Threads] : Io_Threads = 4
Remove Encryption_Threads option.
Section commands changed.


What does "Section commands changed" mean, e.g. what am i supposed to change in my ioftpd.ini when upgrading from 7.6.3 ?

ArtX
05-18-2011, 12:06 PM
From the 7.7.0 release notes:

[Threads] : Io_Threads = 4
Remove Encryption_Threads option.
Section commands changed.


What does "Section commands changed" mean, e.g. what am i supposed to change in my ioftpd.ini when upgrading from 7.6.3 ?

All this


v7.7.0 Release Notes:

1) Files in \System:
Changed : ioFTPD.[exe,pdb] - Version 7.7.0.0
Changed : tcl85t.[dll,pdb] - Version 8.5.2.9
Changed : libeay32.dll, ssleay32.dll - Version 1.0.0.4
Added : libeay32.pdb, ssleay32.pdb - Version 1.0.0.4
Changed : Help-SiteCmds.ini
Changed : ioFTPD.ini - summary of changes by section...
[FTP_Service] : OpenSSL_Options options and comments changed.
[VFS] : Default_Directory_Attributes = 777 0:0
[FTP_SITE_Permissions] : Rename "sectionnum" to "sectionums"
stat = *
[Ftp] : Single_Closed_Exempt_Name added
Who_Sort_Output added
Who_Hidden_Users comment changed
Banned_User_Flag added
Quiet_Login_Flag
[Threads] : Io_Threads = 4
Remove Encryption_Threads option.
Section commands changed.

2) Directories in \lib:
Replace entire reg1.2 directory.
Replace entire dde1.3 directory.
Replace entire tcl8 directory.
The tcl8.5 directory is a bit trickier. Probably the easiest thing to
do is copy and overwrite all the files from the new directory into your
existing dir. For the record, here's some info on the subdirs:
TCL: http1.0, msgs, opt0.4, tzdata (encoding not shipped w/ioFTPD)
ioNinja-v0.8.9.6-2009-06-29: encoding, http, http2.5, twapi, zlib1.1
*** nxHelper shipped with ioNinja is v2.3 but you need the v2.4
one from nxTools else you get package require errors!
*** opt0.4 is part of TCL, use the one shipped with ioFTPD
*** reg1.1 is old, ioFTPD includes lib/reg1.2 which is better
lib/nxHelper and lib/sqlite3 are part of nxTools

3) Files in \text\ftp:
Changed : GroupList.[Header, Body]
Changed : MyInfo.[Sections, Totals]
Changed : UserInfo.[Sections, Totals]
Changed : UserList.Footer

4) Files in \Doc:
Changed : Cookies.txt
Changed : Events.txt
Changed : iTCL.txt
Changed : Site-cmds.txt

5) Files in \Source
Changed : Site-cmds.help

Replace all the files it tells you to replace, then look at new ioftpd.ini and look at your old one and make the changes it suggests

For example, look under

[Threads]

in ioftpd.ini and change (if required)

Io_Threads = 4

then lok for the

Encryption_Threads - line and remove it

As for the section commands changed, im guessing that

Changed : ioFTPD.ini - summary of changes by section...

Is all you have to worry about as it lists what has been changed there.

After you have done all that follow the ChangeLog.txt for 7.7.2, and you should be good to go

opcode
05-18-2011, 01:03 PM
yes, i replaced all the files etc etc and changed the .ini accordingly to the changelog. i am just not sure what a "section command" is supposed to be and wether "section commands changed" means that i have to edit some specific part in the ioftpd.ini besides the stuff that got mentioned above.

Yil
05-18-2011, 04:07 PM
Oops, that should read "section comments" not "section commands". I just changed the comments (the # lines) for the section to remove references to the encryption threads, etc. Nothing functional changed, just the comments.

Yil
05-29-2011, 02:28 PM
I'm looking for some uptime/crash feedback. On a reasonably busy v7.7.1 server (no exec scripts so 7.7.2 wasn't necessary) I've seen 30 days. 7.7.2 hasn't been out that long, but I'm really interested in any crashlogs anyone might have of 7.7.2. I'm hoping nobody has any and it's finally relatively stable...

Let me know what you're seeing.

"Site uptime" will give you OS and FTP uptime in case the server auto-rebooted to patch and stuff. These should be pretty close, but not exact if the server requires drive mounting, etc be done manually they can differ by half a day or so I'd guess.

mr.babek
05-29-2011, 04:26 PM
Hi Yil,
7.7.2 is VERY stable,I haven't had a single crash since installation. With older versions I had several crashes a week.

Thanks for further devoloping the BEST windows FTPD!

Ullman
06-01-2011, 03:20 AM
Hi and thanks for further developing this awsome ftpd software although I've stumbled upon some sort of strange problem. I've configured everything to my liking in the ioFTPD.ini file an example is to turn on Encryption login and data transfers using TLS and also check for ident.

The thing that has happened is, yesterday I could logon but when I boot it up today I can't, it says that my password is wrong even though I haven't changed it. When I check the Error.log it reports the following:
06-01-2011 09:48:55 Host '*@80.92.#.#' () did not match any of user 'tempuser' allowed ident responses.

Another thing is that it doesn't seem to really check for an ident even when I have the first Secure_Ip_1 checking for it.

In case you want to see it this is how it looks in my config:
Secure_Ip_1 = 1 1 2 G1M

/Ullman

Yil
06-01-2011, 12:12 PM
Ullman: I think you're confusing the options a bit. Secure_Ip only forces constraints on the SETTING of a user's hostmasks via 'site addip' and 'site [g]adduser'. You can use 'site uinfo <user>' to view the hostmasks for a user and my guess is you'll see something like "user@1.2.3.4". The line you are seeing in the error log indicates that the server did not receive a timely reply to the ident request so the default ident '*' was used (i.e. the *@80.92.#.#), but because an IP-only match was found it's giving you the ident mismatch error to help you understand what is going on. If you have the Show_HostMask_Error option enabled you'll also see this error returned instead of the generic bad password. Hmm, that really should be the default for that option these days...

The most obvious answer is you don't have a responder for ident requests running. Some FTP clients like FlashFXP and IRC clients like mIRC can do this. If you run both on your computer make sure they have the same reply else you'll never be sure which answer you might get.

If you think that's working fine, the next thing to check is to make sure you gave the server enough time to wait for a response. Check Ident_Timeout under [Network] and make sure you didn't set it to 1 or something which might be too fast. I think the default is 5. If you set this to 0 then the server won't issue ident requests at all and the server will completely ignore the ident portion of any hostmasks when validating them.

Ullman
06-01-2011, 05:37 PM
Thanks for the quick reply and yes I might have gone through the settings a bit fast (did the setup at midnight -_^ ) I noticed that I had a different ident response on my irc client so that might be it.

The Ident_Timeout is set to 5 but might change it to 10 if I keep getting an error. I also turned on the Show_HostMask_Error :) Thanks for clearing it up for me. I'll be back if I find anything else that might be strange :)

/Ullman

Flow
06-05-2011, 12:29 PM
Oh YEA ... a STABLE Release! - Thanks Yil!

Ullman
06-06-2011, 05:46 PM
Yil: I don't know if I missed something in the config but after I have added a new user with gadduser to a specified group and with an ident@12.34.*.* that user can't logon even if I wait a while. But when I restarted ioftpd.exe (by killing it through task manager and then start it again) they can connect.

/Ullman

Yil
06-06-2011, 08:05 PM
Ullman: When you say they can't login does it reject their password or can they not even get that far?

If you are using the 'Reject_Unknown_Ips' option that will immediately disconnect anyone whose IP or reversed hostname doesn't match the hostmask for at least one user. That makes for a more secure site, but does mean the server is picky about who can connect. I haven't used the feature in a while, but obviously there's a lot more chance for me to goof something up since the server has to track all hostmasks. For the record, it also interacts with the dynamic DNS hostmask feature (the : prefix) of user's hostmasks and the work-around is the Knock feature. I don't think restarting the server would make a difference, but if you are using a dynamic DNS hostname that could take a while for a newly updated name to timeout in DNS caches (including the local windows one) and thus waiting a while may make a difference.

If, however, this is a simple login failed rejection then check what the error log says was the reason along with the hostmask. I can't think of any reason gadduser would be different than adduser in this case since they use the same code.

Is the problem reproducible and does it happen to every user, just some users, and if some what do they have in common?

Flow
06-07-2011, 04:12 AM
Ullman: could also be that if server is behind a router and port 113 is not portfarwarded to the server itself.

Ullman
06-07-2011, 02:13 PM
Flow: Unfortunately the server is not behind a router it's connected directly to the internet via the outlet in the wall that my ISP installed.

Yil: It might be reproducable, you could try and just add a new user, assign them to a group and have the ident@xxx.xxx.*.* (where x are numbers) and then try and connect to the server "right away" after the account has been created, I tried this "locally" (I have 5 public IPs via my ISP and the outlet is shared with a home-use gigabit switch from netgear). Every user that I add is forced to have the ident@xxx.xxx.*.* with only numbers no hostmasks or dynamic DNS names. I do use the Reject_Unknown_Ips but not the knock knock feature (even secure I think ;))

The error.log has this entry when it didn't work:

Host '*@99.25.#.#' (#.#.#.se.net) did not match any of user 'new_user' allowed ident responses.

The client was set up to send the correct ident for that user and send it through port 113.

If you want I could send you my ioFTPD.ini file so you'll have the same config :)

/Ullman

Yil
06-07-2011, 03:24 PM
Ullman: Actually the pure fact that you have an entry in the error log tells me it isn't a problem with the Reject_Unknown_Ips feature because they clearly connected! It also tells me that the problem is purely limited to the ident response. I feel like I just answered this on another thread, but can't find it, but look at the 'Ident_Timeout' setting and make sure it's at least 5 seconds or so. If you set it to 0 ident checking in hostmasks is disabled entirely and no requests for it will be made. You need at least 5 seconds, if not more, to reliably get ident responses returned so they can be used. I know some people set it smaller because it allows quicker logins for people who don't have an ident response setup on their end, but don't do that. Either disable the feature entirely or leave it at 5. Instead, you might choose to make the ident cache timeout much larger so reconnects in the future will use the cached value which usually solves the problem of the user trying again in a few minutes/seconds...

Flow
06-14-2011, 12:33 PM
Yil, is thare a simple workaround, you know, if disk is full (nxTools related). Um ... like, spit out plenty of error indicate that disk is full, upload not allowed, contact sysop etc ...

mr.babek
06-16-2011, 08:43 AM
would be a nice feature to build in a autodelete function to delete the oldest stuff when reaching a low watermark (like 20GB free on volume) and be able to specify the directories in which IOftpd is allowed to delete files to free up to a high watermark

Yil
06-16-2011, 03:52 PM
mr.babek: I've thought long and hard about how to support auto-deletion, and agree that it's an important feature. However, I don't believe ioFTPD should do this internally. It's just way too complicated to get right for everyone so some support will be provided from the server, but the real decision making should be done by a script that gets called when the server needs more space. This would make it completely customizable. I've even mentioned how we could use the various +x bits of the directory access modes to indicate what can be allowed to be auto-deleted and what can't be. I'm willing to work with anyone who wants to write such a script, but my version probably won't get written until the site script I toy with from time to time gets released since the directory database it keeps is what I'll use to figure out the oldest dirs able to be deleted.

mr.babek
06-16-2011, 03:56 PM
Well, it was worth the try =)

Yil
06-17-2011, 12:37 AM
Future version update. I had this REALLY big and far ranging v8.0 code that I started working on back sometime after v7.5.0 came out. As I was working on the new stuff I kept finding serious issues and decided to pull out simple parts of what I was working on along with the bugfix and thus we got v7.6 and v7.7 that weren't planned...

Since v8 just proved to be too massive a change and things appear somewhat stable I think in a little bit I'll release a v7.8 that is essentially already done and contains a few more bug fixes, some simple tweaks, and a few new features. Pretty straightforward.

I'll follow that up with a v7.9 or v8.0 that includes the first phase of the new internal configuration changes and a bunch of new features that depend upon that. Then another one after that with the rest of the stuff from v8 that didn't make it.

The good news is most of this stuff is already written and just needs to be tweaked a bit and merged into the current branch. So development should go relatively quickly if I find time to work on it. And if the new stuff starts to break things the number of changes between versions don't be too large to track down any new problems.

mr.babek
06-17-2011, 02:57 AM
Yil, I just want to tell you again how much I appreciate your work on IOftpd and I think its really amazing than you can manage and code the whole project by yourself.
:exclam::exclam:Kudos:exclam::exclam:

Dahlia
06-21-2011, 02:45 AM
Well i did update on my server from 'old' v7.0.1 to new version 7.7.2 and i couldnt even start ioFTPD :). I was getting this error: CreateProcess(ioFTPD) failed with error 14001

"running ioFTPD 6.x-7.0.1 on windows 2003 SP2 -probably without any other updates- for years"
Anyway after 1-2h of updating from m$ i could finally start the last version. What exactly ioFTPD need, last updated ms_netframework ?

Yil
06-21-2011, 05:13 PM
ioFTPD back in v7.3.0 changed over to dynamically linked runtime libraries to see if that made a difference in stability. It now requires the VS2008 SP1 runtime be installed which is by default in win7 and possibly vista as well, but not XP/2003. Lots of apps install this as part of their installation, but without a real installer for ioFTPD the best I could do was note the error you'll see in the README and the Changelog file along with a link on how to get it.

Looking up windows error 14001 gives 'The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tools for more detail.'

That's the dynamically linked SxS runtime library having an issue. Not sure if it was because it wasn't installed or you had a version mismatch but looks like you figured it out. It isn't the error I expected you to get if it wasn't installed though.

Dahlia
06-22-2011, 06:18 AM
Ah yea its my bad sorry. I've read the change log but just too many new features and i skip this one line with 'important: VB2008 sp1 required from now on' :-)

Anyway, i asked long time ago about setting up a timezone in ioftpd config. Since im not so good in explanations i made a simple screen. Where you can see the date of dir which i created in ioFTPd (so the date which all users see thru their client) and 'real' date/time of server and date/time details in totalcommander and in attribute manager
http://img52.imageshack.us/img52/5679/timezone.png
- 1600x900 resolution

Question is: why ioFTPD showing different time (doesn't matter what client i choose) and is it possible to add the timezone option ? Did the same test on friends glFTP daemon and date is everywhere same (correct).

Yil
06-22-2011, 12:34 PM
ALL times in the server are UTC (GMT) times and are unconverted as I believe is the case with glftpd as well. Many commands like MDTM even formally require that.

However, CLIENTS often convert server times into local times as does windows explorer and most software showing times to the user. In flash open up the site manager, and check the timezone option for the site. I think it defaults to "attempt to discover". Set it to UTC, or Use Server Time and see what that does. Oh, also check out the RAW directory listing in Flash from the Directory menu to see what the server is actually returning.

Dahlia
06-25-2011, 05:28 PM
Maybe ur right. Just saying what i see. Don't know how the mechanic in such programs work. glFTPd using some 'timezone fix'. Can't force users to 'change' any timezone settings in their clients when its working somwhere else.

Whatever i tried to change it in other client - ftprush (since in flashfxp i could not find such option), but its same as everywhere. In client i see always UTC(GMT), but raw directory listing or any filemanager shows 'server' time (in my case GMT-2).

Well since it looks like i'm the only one who cares about some 'time' thingies, forget it.

Sorry for disturbing. You doing great job.

ArtX
06-26-2011, 02:36 AM
Whatever i tried to change it in other client - ftprush (since in flashfxp i could not find such option), but its same as everywhere. In client i see always UTC(GMT), but raw directory listing or any filemanager shows 'server' time (in my case GMT-2).



Try looking under

Sites
Site manager
Your site

You will find it at the bottom of the list

pion
06-28-2011, 03:45 PM
I have a problem with nxmydb and version 772. I keep getting 'Invalid password' using the same nxmydb setup as in 757.

I can't see anything in particular in the logs, except for a SyncTimer error. There is no trace of 'invalid login' in the log anywhere

This is all the log I'm getting:

nxmydb.log

06-28-2011 22:32:31 ------------------------------------------------------------
06-28-2011 22:32:31 SetUuid - Server lock UUID is "abc".
06-28-2011 22:32:32 ConnectionOpen - Connected to nxdb.host via TCP/IP [nxMyDB_Server0], running MySQL Server v5.1.32-community-log.
06-28-2011 22:32:32 DbInit - nxMyDB v2.1.1 loaded, using MySQL Client Library v5.0.51a.
06-28-2011 22:33:03 SyncGetTime - Unable to fetch results:
06-28-2011 22:33:03 DbMapError - Unmapped MySQL result error 0.
06-28-2011 22:33:03 SyncTimer - Unable to retrieve server timestamp (error 1).

ioftpd.log

06-28-2011 22:35:37 SSL: "Found certificate" "name=xxx" "Service=FTP_Service" "(Certificate_name)"
06-28-2011 22:35:37 START: "PID=2128" "CmdLine="
06-28-2011 22:35:37 PRELOAD: "begin" "..\etc\default.vfs"
06-28-2011 22:35:37 PRELOAD: "points=25" "..\etc\default.vfs"

Ideas on what might be wrong here?

Is there any plans to put the io code up on github or something? Would be handy for future in place upgrades, as well as source tracking :)

Yil
06-28-2011, 08:01 PM
pion: From what I can tell nxMyDB failed to connect or read the userfiles from the database so the reason you aren't seeing any login failures is because none of the people trying to login have accounts as far as ioFTPD is concerned.

Is it possible that the new version can't connect because of a firewall that's treating the new .exe differently?

There honestly weren't that many changes between 7.5.7 and 7.7.2, and the only one that springs to mind that might be important is the OnServerStart event change. Can you first make sure this is in the .ini file and didn't get lost in the upgrade? The change is actually a feature I thought useful to nxMyDB (it's even mentioned in the ChangeLog) but perhaps I missed some interaction.

Update: I just check the nxMyDB source and the SyncGetTime error being reported is just trying to ask the database what time it is and it's failing... Whatever the problem is it isn't related to userfiles, but connectivity and/or permissions.

pion
06-30-2011, 02:02 AM
Turns out the fault was entirely my own :)

I was missing the libmysql.dll from the system directory in my migration to 772

Flow
07-07-2011, 05:27 AM
man, i Wish that dude @tuff were still active zs scripter. His works were pure php based. Surely ioFTPd is stable ready for some seriuos addons.

mr-b
07-18-2011, 10:22 PM
Yil, Thanks for your hard work on keeping ioFTPD up to date. I just want to confirm that I upgraded from 7.7.1 to 7.7.2 today and I am happy to report all is working well.

paja1
07-21-2011, 03:04 PM
Hi Yil,
i found an error in 7.7.2, if i use NTFS SYMLINKs, and methods SYMLINK or SHARE, i'm not able to delete any file, always just error "500 - .. No such file or directory.".
If i switch back to "IGNORE" (old way), directory cache will be not updates as before, but i'll be able to delete any file i want.

Please can you check it out?

Thanks for all your work!

Yil
07-21-2011, 09:21 PM
paja1: Hmm, I can confirm that manual deletion of a NTFS directory junction as a file delete isn't being handled correctly under SYMLINK mode. FlashFXP issues a FILE delete command which is correct since it treats symbolic links as a file, but ioFTPD is only testing to see if it's an ioFTPD symbolic link and not a NTFS junction when deciding to turn the file deletion into a directory deletion at the filesystem level. Thus it tries to delete a file but it's really a directory and it fails. However, in this situation I get a permission denied and not a file not found error......

However, I think you are experiencing a different problem. Can you see if the default 'VFS_Exported_Paths_Only = True' is set? If this is true then you cannot have the target of any directory link be outside of normally exported directories. Examples .vfs:
c:\site /
d:\Games /Games

A link like c:\site\Latest\Game1 -> d:\Games\Game1 would be OK because the target dir is also visible in the .vfs file, but c:\site\Bad -> c:\windows would not because the windows dir isn't exported.

This is a safety feature. However, you can try turning it off to see if it makes a difference in the problem you are seeing. Also, can you double check the target of the link?

paja1
07-22-2011, 02:33 AM
Hi Yil,
thanks you for your answer.
I do have a folder /FOO/ and only symlinks below (as replacement of VFS merge becouse you cant upload or change anything within next lines in vfs file).
So imagine this situation:
/FOO/FOLDER1/subfolder2/file1.ext

FOO = real folder mapped in VFS file
FOLDER1 = SYMLINK to a different drive (which is not accessible via any other normal VFS path!)
subfolder1 = real folder in linked folder (different drive)
file1.ext = real file in subfolder1.ext

Now, the strange is that i'm able to delete empty folders or ioFTPD's links, but not a files!

Yes, i do have "VFS_Exported_Paths_Only = True" set as you described.

So i tried to switch it to "VFS_Exported_Paths_Only = False" in SHARE mode nothing changed... in SYMLINK mode.. still the same. I'm notable to delete any file.

In addition if i switch VFS_Exported_Paths_Only to False, all my iTCL sripts are not able to access or see any file or folder behind NTFS SYMLINK. :(

Any idea?

Thx

o_dog
07-22-2011, 09:40 AM
just thought i'd mention a new alpha release of ioninja is up at:
https://oss.azurewebsites.net/forum/new-scripts-announces-updates/14768-ioninja.html

I need people to report bugs and try it. have fun

Yil
07-24-2011, 05:03 PM
I'll have a new bugfix release out in a day or so that will fix the NTFS junction issues.

o_dog
07-25-2011, 07:07 PM
whats wrong with them?

Yil
07-25-2011, 10:37 PM
v7.7.3 Release Notes:

1) Files in \System:
Changed : ioFTPD.[exe,pdb] - Version 7.7.3.0
Changed : ioFTPD.ini - summary of changes by section...
[FTP_SITE_Permissions] : ciphers = M
[Ftp] : Show_HostMask_Error = True


2) Changed the default configuration for 'Show_HostMask_Error' in the .ini
file to True, and explicitly stated the Cipher command permissions.


*** Bug Fixes

3) Fixed a bug in the internal resolver that was improperly resolving paths
involving NTFS junctions/symlinked directories when NTFS_Reparse_Method
was either SHARED or SYMLINK.

4) Fixed two bugs when trying to delete a NTFS junction/symlink via the file
DELE command when NTFS_Reparse_Method was set to SYMLINK. The first one
didn't account for the fact that SYMLINK mode should work on directories
that are shown as symlinks, and the second didn't remove the NTFS junction
or symlink before attempting to delete the directory so it would only
delete empty dirs.

5) Fixed a bug where files created or deleted from a directory didn't mark
the cached parent directory as stale which meant that the parent wouldn't
show the size of the subdir correctly. This bug was masked by the fact
that most zipscripts touched or modified the directory in some way and
that forced an update.

6) Fixed a bug where unkillable zombie connections could be created if a data
connection was arranged but the connection had not been established and the
control connection was closed via a kick/kill or the client closed it.
What was particularly annoying about these zombie connections is that
you couldn't get rid of them until the FTP was restarted.

NOTE: There are still 2 known ways to create zombies.
a) An idle control connection where the user machine bluescreens, looses
power, or has a network interruption. In this case TCP/IP on the client
cannot inform the server that the client closed the connection. These
clients can be kick/killed at anytime, and TCP KEEPALIVES could be
enabled on the machine to test the connection every few hours if this
ever becomes an issue. These are not a problem.
b) TCL scripts that never return are not currently handled. EXEC scripts
have for a while checked to make sure they aren't zombies, but TCL
scripts can create an unkillable zombie. There is an interface to let
TCL check status after a certain number of commands or after a timeout
has expired but I'm not using it because it won't handle all situations
and this hasn't been a big problem.

Yil
07-25-2011, 10:50 PM
Source for 7.7.3 posted as well. I meant to do this a while ago once it looked like things were stable...

paja1
07-27-2011, 03:55 PM
Hi Yil,
i just founded another strange behavior. One folder is "invisible" for ioFTPD.
VFS file is still the same like in version v6.6.0 (where all worked fine), but now with version 7.7.3 i'm getting only "No such file or directory." Is there any limitation of number of folders/files?

Btw, i have about 1200 sub-folders in that folder.

Is there any way "debug" why it's not "accessible"?

Thx
Pavel


SOLVED: there was an errors on NTFS level. Sorry guys.

o_dog
07-27-2011, 03:56 PM
does the folder contain strange characters?

Yil
07-28-2011, 08:02 AM
There isn't any current limitation in the number of subdirs so that shouldn't be a problem. Can you see it in the parent's directory listing but not enter it? In that case my guess would be similar to o_dog's, check if there any special characters in the name if you look at it in window's explorer? If you can't see the subdir from its parent then it could still be a weird character, but it could also be a number of other things including being a NTFS hidden/system dir, an ioFTPD hidden dir (unless you're a VM flagged user), etc.

If you were to zip/rar the dir and extract it somewhere else does the FTP show it? If you manually delete the .ioFTPD* files from the copy does that change anything (use 'site refresh' to force cache of parent and dir itself to get new copies)? If it's still missing then delete the big files from the dir, zip/rar the nfo/sfv/etc and I'll look at it.

o_dog
07-28-2011, 05:54 PM
YiL: how about adding a custom filed or three to the userfiles? =)
Would like a nice way of storing custom individual information, like settings for xdupe

Yil
07-28-2011, 07:24 PM
o_dog: You mean something like the "opaque" field in the userfile? 255 bytes of whatever you want designed for script use - just make sure there isn't a return char in there as the line break would probably break the stupid userfile parser... I suggested scripts store trivial things in there using TCL style quoting and use a <name> <value> pair setup so multiple scripts could get along with each other. I was personally thinking of using [array get/set]. This field can also be modified via 'site change opaque'.

I read the ninja thread first and mentioned how you can get your x-dupe to easily override the one coming in v8. I wasn't sure if I was going to preserve the x-dupe level across logins though so at the moment it doesn't even try and users would need to add it to the list of commands to enter after connecting.

I'd love a bunch of new fields to the userfile for things like banned time/reason, etc but I'm really trying to avoid that because that means updating nxMyDB as well. I think we need a few more fields so I can do a whole bunch at once. Please feel free to chip in whatever fields you think we might need in the future. I would love dynamically created fields, but that would totally break nxMyDB and it's easy enough to use SQLite or a simple text file to store stuff.

On a related note, I've played with storing the CRC32 value for each file in the .ioFTPD file (there's 4 bytes left free to do so) so you can enable a .ini option to make the server compute the CRC32 value of downloaded files and compare it after the file is sent, sort of like drFTPD does as an added check. The TCL interface to record the CRC32 value isn't implemented yet but it should be trivial to just pass the value already passed to the script for upload events, or re-compute with the existing TCL CRC32 function it you modify the file and need its new value.

o_dog
07-28-2011, 07:49 PM
well, storing them might be a good idea so you get them on resolve list. Only thing it would be really good for as far as i can see is rescan though, or if a sfv file is being uploaded after files, i store them in the .ioftpd file now. As for comaprison of downloaded files, i have no idea what good it would do since most things have to be handled on other side of the connection.

for tcl storing the crc values or updating it rather? it's needed for rescan purposes. link the [crc32] to update the field for the file, otherwise things might not turn out all that well. This is really needed before rolling it out since it might mess things up for people.

My main problem right now is that i moved away from locks to stats using [resolve list ...]
This however does not contain information for the file being uploaded, it's all zeros. Might be a good idea since otherwise it would present a problem with people seeing filesize but not being able to access the file before the script release it. But some way of getting the info in same format for the file uploaded as [resolve list ...] would be nice.

Downloading of partially uploaded files would be nice too. Didn't like it before but starting to warm up to the idea.

As for nxdb:
Was actually thinking of finishing the script i was writing for syncing the user dbs through a mysql db. This is really a better way of doing it in my experince, since nothing at all is dependent on a module, and each site operates totally indivdual. I actuallly think the script i wrote works. It just copies the userfiles/groupfiles to a mysql db and sync fileds over sites that are connected. can transfer credits with a 20s delay or something which is something people would have to live with. It also stores stats for the individual sites.
How well it works at the moment is hard to say since i never used it on any larger scale. I don't even know what the interst of something like that would be.

o_dog
07-28-2011, 07:51 PM
Btw we should really get a site for the scripts and ioftpd rather than this obscure forum =)

o_dog
07-28-2011, 07:53 PM
I was also thinking of adding md5 check for things, might add this as a separete script though since it's a better way of checking fileintegrity but without a single damn rule about how it's done it's a pain to write any kind of script for it.

Yil
07-28-2011, 08:53 PM
Isn't [resolve list] really useful? My first attempt at ioYil duplicated that functionality entirely in TCL and it was rather annoying getting all the mountpoints right, finding all entries across merged filesystems and making sure the first found controlled the permissions, etc. It worked but was slow and prone to eventually diverging from how the internal resolver worked...

If you intend to work on your userfile tool let me know if there's something that would make your life easier. I've got a list of "optimizations" on my TO-DO list that I've been adding to for a while that could increase the server speed substantially and one of those was to provide a hint field to the userfile module which would indicate what portion of the userfile was updated. That may not mean anything if you just copy all the fields every time or deal with the complete file itself, but the vast majority of the time only the stat/credit fields are updated and thus there is no need to check/update the normally static portions of the userfile. This would help the server itself skip checks for hostmask changes, etc which trigger internal updates but it would also mean things like nxMyDB wouldn't have to do that either. This will necessitate changing the dll user module interface in one or two places as well... The other "feature" this would enable would be logging userfile changes to a new logfile which would have a simple 1 line entry for file up/down stat/credit changes and another for full check needed. The idea here would be a new ioGUI replacement would have up-to-date userfile data by just applying the changes from the logfile as they appear so you wouldn't have a reload userfiles button or something like that or have to scan all the userfiles all the time. However, you could just read the stream and apply the changes locally and forward them to another site if you wanted... If you think that would help let me know and I'll take a 2nd look at the idea.

Yil
07-28-2011, 09:07 PM
Oh, the downloading of partial files idea... I mentioned that list of optimizations, and one of them includes a number of tweaks to how and when things are done in the file transfer engine. I have a pretty good idea of what I'd like to do to make it go faster but when I re-wrote a lot of that to switch over to OpenSSL I didn't want to introduce anything that was too complex in case it broke lots of things... I did however keep the idea of downloading an active upload in mind, since a couple of people wanted it as an option, and it wouldn't be trivial but I can think of one or two ways it might be done. It won't be anytime soon though...

Some things that might come sooner would be smaller things like an option to bypass using the windows file cache for files being downloaded. I think this might be useful since right now files downloaded go into the file cache like everything on the machine normally does, but this ends up pushing newly uploaded files out sooner than I'd like. If most of the time you end up downloading files that were just uploaded this could be a performance win especially since it's far more likely that a newly uploaded file would be downloaded more than once so it's best if it stays in the windows file cache. It's important to point out that this is windows file caching in extra unused memory on the machine, the actual memory footprint of ioFTPD itself wouldn't change at all. Obviously this would help systems with lots of memory much more.

o_dog
07-28-2011, 09:07 PM
it acutally copies all the usersfiles on a command from a source site that uplaodes them, then the rest syncs them so you go a master site. It does not update the whole userfile, it does that twice a day for sync if remember correctly. On change it just replicate the filed changed on site command.


yeah the [resolve list ..] is useful, i don't use it to the full extent i could right now because it would mean rewriting some things that work, but i'll go over to it as I sort out new bugs that appear.

paja1
08-12-2011, 02:02 AM
Hmm... do you have a speed issue with the 7.7.* (OpenSSL) version?

I switched to 7.7.2(3) and some users started to complain about speed, so i run two versions on the same machine, same configuration (when possible), tried to download 50.000.000 bytes long files and here are my results:

ioFTPD 6.5.1.0:
Transferred: speedtest.dat 47.68 MB in 2.88 seconds (16.56 MB/s)

ioFTPD 7.7.3.0:
Transferred: speedtest.dat 47.68 MB in 18.77 seconds (2.54 MB/s)

Same file, same drive, same network, same port.. different ioFTPD version... any idea?

Thanks!

Pavel

o_dog
08-12-2011, 05:18 AM
what hardware are you using and what settings for the ssl?

paja1
08-12-2011, 09:15 AM
Hi,
it's the same hardware:

Pentium D 3.0 GHz
Windows Server 2003
4 GB of RAM

SATA3 Disk Array RAID5.

What setting details do you need from ini file?

Thanx!

Yil
08-12-2011, 12:17 PM
paja1: I personally don't see any major speed difference, but here's a couple of things to check...

1) Are transfers using SSL? If so then you may notice a small difference from the switch to certain much more secure (though more computationally expensive) algorithms available under OpenSSL. There are ways to compare apples to oranges by forcing ioFTPD to use certain algorithms but I wouldn't recommend that.

2) How many transfers do you have going at a time? I'm assuming you're comparing speeds of just a single transfer (remember to count the OTHER ioFTPD on the machine as well!). If that's true then make sure nothing else is using the CPU on the machine...

3) Check for Io_Threads = 4 in the .ini file, I'd suggest your dual core CPU use 4 io_threads.

4) Make sure you aren't limiting speeds in any way, if you know you never do set Scheduler_Update_Speed = DISABLED. If you enable speed throttling on a transfer (either via the userfile or for every connection on a device) it will effect maximum throughput, sometimes substantially because it breaks things up into smaller packets if your network is faster than the limit. This is exactly what you want if you need to share your bandwidth with skype or video conferencing but not what you want if speed is your only concern...

5) See how fast things go locally. This is the surest test to rule out the enormous number of network issues/settings that can effect transfer speeds. If you see that huge transfer difference locally then we'll have to take a deeper look at network stuff. I forget who it was who helped diagnose the OpenSSL problem for # of transfers > CPUs but that bug was fixed and it was reproducible locally.

Yil
08-12-2011, 12:30 PM
Oh, and try non-SSL transfers locally to see if that makes a difference.

paja1
08-13-2011, 03:25 AM
Oh, and try non-SSL transfers locally to see if that makes a difference.

Ok, will try all and let you know.

Btw, scheduler was set to HIGH on 6.* and DISABLED for 7.* :)

1, network is the same, 1 GB , Cisco switches.
2, server is the same, port as well.. i only stopped 7.* and started 6.*, with the same etc, users, groups...


I'll let you know more later today.

Pavel

lin036
08-13-2011, 05:25 AM
This would only be an issue with v7.4+ obviously since that's when we started using OpenSSL, but it's clearly a really big deal and this is probably causing all the crash dumps I've seen recently.

paja1
08-13-2011, 08:16 AM
1) Are transfers using SSL? If so then you may notice a small difference from the switch to certain much more secure (though more computationally expensive) algorithms available under OpenSSL. There are ways to compare apples to oranges by forcing ioFTPD to use certain algorithms but I wouldn't recommend that.


Yes, default settings as it's in distribution zip file.


2) How many transfers do you have going at a time? I'm assuming you're comparing speeds of just a single transfer (remember to count the OTHER ioFTPD on the machine as well!). If that's true then make sure nothing else is using the CPU on the machine...


Just one at the time, in both cases. CPU is quite ok, max. 7-8% utilization, during SSL transfer.
NO other application(s) are running, except system, explorer, etc.. of course :)




3) Check for Io_Threads = 4 in the .ini file, I'd suggest your dual core CPU use 4 io_threads.


Was set to 4, already (as it's by default)



4) Make sure you aren't limiting speeds in any way, if you know you never do set Scheduler_Update_Speed = DISABLED. If you enable speed throttling on a transfer (either via the userfile or for every connection on a device) it will effect maximum throughput, sometimes substantially because it breaks things up into smaller packets if your network is faster than the limit. This is exactly what you want if you need to share your bandwidth with skype or video conferencing but not what you want if speed is your only concern...


Disabled by me, as first try to "fix" the speed issues. But i always had it as HIGH before upgrading to 7.7 from 6.5.



5) See how fast things go locally. This is the surest test to rule out the enormous number of network issues/settings that can effect transfer speeds. If you see that huge transfer difference locally then we'll have to take a deeper look at network stuff. I forget who it was who helped diagnose the OpenSSL problem for # of transfers > CPUs but that bug was fixed and it was reproducible locally.


Ok, here are my results over network:

7.7.3 - with SSL 256 bits
Transferred: speedtest.100 95.37 MB in 42.28 seconds (2.26 MB/s)

7.7.3 - without SSL
Transferred: speedtest.100 95.37 MB in 5.32 seconds (17.94 MB/s)

6.5.1 - with SSL 128 bits
Transferred: speedtest.100 95.37 MB in 6.06 seconds (15.73 MB/s)

6.5.1 - without SSL
Transferred: speedtest.100 95.37 MB in 5.31 seconds (17.97 MB/s)


Ok, here are my results locally:

7.7.3 - with SSL 256 bits
Transferred: speedtest.100 95,37 MB in 4,95 seconds (19,25 MB/s)

7.7.3 - without SSL
Transferred: speedtest.100 95,37 MB in 4,22 seconds (22,60 MB/s)

6.5.1 - with SSL 128 bits
Transferred: speedtest.100 95,37 MB in 2,94 seconds (32,47 MB/s)

6.5.1 - without SSL
Transferred: speedtest.100 95,37 MB in 2,75 seconds (33,67 MB/s)


-- so i founded what caused that --
There is installed "Microsoft Security Essentials". Strange is that it didn't affect output stream in 6.5.1 but 7.7.3 (OpenSSL) yes...

I turned it off (actually only "Monitor programs activity" was enow) and I've got comparable speed like with 6.5.1 :)

Sorry to bother you all and thanks for your responses even it was my fault.
Thanks a lot guys!

Pavel

Yil
08-13-2011, 03:55 PM
Glad you found the issue, I wouldn't have thought Microsoft Security Essentials could caused that kind of performance dip. Have you rebooted recently? Perhaps it's just in a confused state...

paja1
08-14-2011, 02:45 AM
Yes, rebooted several times, install all updates and hot fixes, still the same.
Only turning off monitoring of applications activity helped. Even switching it into check only incoming data helped as well.
Why it affected only OpenSSL version, dunno.

Pavel

Yil
09-02-2011, 01:41 AM
Does anybody actually use the etc/Hosts.Rules file? If so do you simply use it mostly as is and just add a few deny rules to ban particular hosts? Does anybody define user classes and use the per-ip connection limits? Is there any situation where the userfile per-IP limits wouldn't work just as well or even better?

I'm looking into making this file a .ini style file instead of a custom format and ditching some of the stuff I don't think anyone needs.

A long time ago this file served a purpose. I used it on a personal FTP to lock down the logins to just a few IP addresses I used, but I've since added the Reject_Unknown_Ips option which if enabled is more flexible and for the moment the only way to get dynamic IP addresses added. I even had the KNOCK protocol so I could get in from unknown IPs if I needed to. Today I just don't see any reason why the server would need ALLOW rules except as a way to get around overly broad DENY rules blocking large ranges of hosts.

If want to make this so you can modify it at runtime but have the server permanently remember entries if desired, but I get into a problem if the order of entries matters like it does today. I'm thinking there isn't really a need for anything except a way to ban hosts and perhaps allow a few specific ones and thus I could process the allow list and if a match it's allowed, else walk the deny lists and if found it's denied, else it's allowed. Of course "allowed" is relative, it STILL has to match the host/IP portion of at least one user's hostmask if the Reject_Unknown_Ips option is enabled (or have KNOCK'd).

A separate FXP allow/deny ruleset would work the same way.

Before I make the change I just wanted to see if anyone is actually doing anything tricky that couldn't be done another way...

In short, the "policy" would always be ALLOW as the option would be removed, all user definable classes and thus per-class login limits would be removed (with no alternative way to get this functionality), and per-login limits defined by IP/host would be removed though you can use the per-user per-IP limit to get the same thing for most cases. Allow/Deny rules would be order-independent and thus not as expressive, but dynamically updateable.

Flow
09-02-2011, 04:40 PM
whare does this info goes if i execute site ban *@x.x.y.y ?

Yil
09-02-2011, 07:46 PM
Flow: You're probably using the ioDELUSER script and in that case 'site ban' is handled by it (it's not a built-in command). The ban info simply goes into to a temp file the script keeps. That's actually a nice little script, but the site deluser, readd, purge features it offers are now all built-in commands that are much nicer. The big problem I have with it is it has to catch the PASS command at login to check for banned logins, and every SITE command to override deluser. Today this would not be an issue since you can use the ^ command prefix to have a script override any particular built-in command you want, but when this script was written they did it the only way possible.

The ban/unban feature isn't 100% replaceable yet because even though I've added a low overhead method of banning a user via a .ini file option and a userfile flag so that it only calls the script only when a ban is detected, there is no simple command to ban a user for only a specified time. That functionality either requires a new small script or for me to add the required field into the userfile or overload a field which I'm waiting on because doing so breaks things like nxMyDB.

Yil
09-02-2011, 10:23 PM
Flow: Hmmm, I just had a 2nd thought... you mentioned site ban and I thought of ioDELUSER, but you know what, that only takes USERS to ban. If you have a script that allows you to ban based on a IP address then I'm not sure what you are using...

Banning users rejects them after a valid login/pass, banning them via Hosts.Rules doesn't let the server talk to them at all, you get the dropped connection immediately after accepting it. That's the same as you'd get with the Reject_Unknown_Ips option, but since that only grants access it can't ban an IP addresses if it matches a hostmask by any user so that's what Hosts.Rules is for.

Dahlia
09-03-2011, 07:36 AM
Error.log
09-03-2011 01:58:49 System detected loader lock compromised! Terminating!
Watch.log
09-03-2011 01:58:50 Received deadlock signal from ioFTPD, killing it.

Running ioftpd on fully updated win2003sp2/intel dual core cpu. What can i improve or change so this will not happen again ? Might be some hw or software compatibility problem ?

Ioftpd as service automatically restarted. But again need to cache all the directories in deep VFS structure, which is annoying :/

Found in Debug.log this:
09-03-2011 00:12:03 Worker exit: total=5, free=5, blocking=0, initial=5.
But since the time is differnet its probably somthing else.

Yil
09-03-2011, 08:08 PM
Dahlia: Unfortunately that's the dreaded lockup bug. There isn't much you can do unless you're running an older version of ioFTPD. If it's still happening then you'll just have to live with the rare auto-restart because my next attempt at specifically trying to eliminate it won't happen before v8.1. The good news as you pointed out is it does detect this problem now and it will restart itself if run as a service...

Oh, the worker thread message just means at some point you needed more than the default 5 worker threads so one was dynamically created and then it exited. It probably can't hurt to adjust the minimum number of Worker_Threads under [Threads] to like 8 or something and see if you get any more of those debug messages.

Dahlia
09-04-2011, 11:07 AM
Thank you for reply.

Dahlia
09-11-2011, 06:57 AM
Found something weird with the timestamps(date/time) of subdirs in daydirs. Maybe its just some bad settings in my configs, but i dont know what to change.

Time/Date od DAYDIRs is not changing when i upload new dir into it. The Time/Date of the DAYDIR change only after i create a new DAYDIR. Well its little more complicated to explain so i did some screens.

In VFS structure is: private/_mp3/%DAYDIR (tried with mp3/%DAYDIR) its not working there either.

[1]
I created some sample dirs in DAYDIR: .../0913 like test03,test05,... (just mkdir, no del or anything)
http://img189.imageshack.us/img189/7647/daydirs11.jpg
Time/Date of DAYDIR is not changing.

[2]
but after i create a new DAYDIR, the previous dirs got updated (something wrong with timestamp cache there?)
http://img546.imageshack.us/img546/3133/daydirs22.jpg
I tried to even delete .ioftpd from those dirs but no effect on timestamps.

And why i want to have a real date there ? Its good for sorting so i see the dirs with new stuff first/last.


I have ioftpd 7.7.3, ioninja, nxtools.

Yil
09-11-2011, 03:16 PM
Dahlia: I can confirm that if you create a simple directory that the parent of that directory isn't being marked stale in the cache. Isteana pointed out a very similar problem with plain files and I fixed that in 7.7.3, but looks like the same thing is happening with dirs as well...

I should point out that if you are using a zipscript the problem is mitigated because the creation of the incomplete symlinks in the parent dir after the first file is uploaded usually forces the cache to be updated...

Dahlia
09-12-2011, 09:59 AM
Is it possible to do some 'force' manual update of that cache ? Or ill crontab some mkd/del dir for now :)

Yil
09-12-2011, 05:46 PM
Actually there are several ways to force cache updates.

You can use 'site refresh' or 'site refresh <dir>' to invalidate a cache entry at any time which is probably all you need. You can use the TCL command [vfs flush <dir>] in a script which you could tie to a POST MKD event, or there is an exe script (I forget the name though) which you can call to do the same thing.

pion
09-19-2011, 03:26 PM
Another case of lockup bug in ioFTPD 7.7.2

Error.log

09-19-2011 21:16:26 System detected loader lock compromised! Terminating!

Watch.log

08-18-2011 18:33:30 Received deadlock signal from ioFTPD, killing it.
08-18-2011 20:56:39 Received deadlock signal from ioFTPD, killing it.
08-19-2011 13:30:24 Received deadlock signal from ioFTPD, killing it.
08-20-2011 01:48:05 Received deadlock signal from ioFTPD, killing it.
08-20-2011 03:15:59 Received deadlock signal from ioFTPD, killing it.
08-20-2011 10:21:13 Received deadlock signal from ioFTPD, killing it.
08-20-2011 11:03:56 Received deadlock signal from ioFTPD, killing it.
08-20-2011 14:16:11 Received deadlock signal from ioFTPD, killing it.
08-20-2011 14:59:21 Received deadlock signal from ioFTPD, killing it.
09-19-2011 21:16:26 Received deadlock signal from ioFTPD, killing it.
09-19-2011 22:03:48 Received deadlock signal from ioFTPD, killing it.

Yil
09-19-2011, 04:06 PM
pion: Interesting... Especially to see a whole bunch grouped together and then nothing for a month.

I do have one idea based upon Dahlia's info. See if the 'Log_Exiting_Workers_Threads' under [Threads] is enabled in the .ini file and then see if you can find any lines like 'Worker exit: total=5, free=5, blocking=0, initial=5.' in logs/Debug.log.

A long time ago I fixed a number of side effects of worker threads exiting. This included things like timers and async events being canceled. I'm not aware of any remaining issues like this, BUT whenever a thread is created/destroyed all the dll's are offered a chance to run. Most don't do anything, but the important point here is the lock that protects the dll's while they do this is what is getting stuck.

In my opinion removing the Microsoft encryption library really helped stability because it would acquire/release that lock every time an SSL connection was made. The MS encryption library dynamically reference counted the underlying encryption modules it was using. This greatly increased the odds of something going wrong it looks like!

My guess is during those times when you saw a problem the server was really busy and perhaps worker threads were being created / destroyed. Either this causes the problem because ioFTPD is doing something wrong (an uncaught side effect) or because some other weird thing is happening and the odds go up...

Anyway, it's a thought and perhaps looking at the logs we might be able to tell one way or the other.

paja1
09-19-2011, 04:17 PM
I have strange "error" as well.
I simply can't see some files. There are fine, i can copy them see them in console, total commander and explorer. But their are unvisible in ioFTPD. All are quite big MKV files. Any idea?

Is there anything that can help you to find why?

Thanks!

Yil
09-19-2011, 05:25 PM
paja1: ioFTPD is pretty good about checking the timestamp on a directory to detect changes so it can invalidate its cache whenever it lists a directory. The only problem I'm aware of is with zipscripts dealing with files uploaded onto FAT32 filesystems because the last modified timestamp isn't accurate enough to catch changes. NTFS works fine and if you have large files you're using NTFS.

You can test to see if it's a caching issue by going to the dir and using 'site refresh' and re-listing the dir. That should force it to go grab a new snapshot of the directory. On the other hand you also need to rule out that the FTP client isn't at fault. It's standard fare for clients to cache directory listings and you need to make sure you have a current copy. Try re-starting the FTP client (make sure ALL copies of it are closed first!) and see if that makes a difference.

If none of that works then there might be something funny about the file. ioFTPD will refuse to show "hidden" or "system" files and directories. This prevents it from exporting special protected things like the recycle bin, the page file, etc. Open up the properties tab for the file and see if it's special in any way. I don't think access permissions on an individual file can prevent it from showing up in a directory listing if other files are showing up in that dir (which means the dir's permissions must be ok).

See if any of that helps. If all else fails, try deleting/renaming the .ioFTPD file just in case it's corrupted. I'm not sure how that could prevent some files from showing up, but it's something to try. You'll need to 'site refresh' the dir or even restart the server after touching the .ioFTPD file. I guess restarting the server is another option to try in some of the above cases as well.

If you have an active server and restarting is painful let me know and I'll show you how to setup a local test server you can run side by side with your regular one.

paja1
09-20-2011, 03:28 AM
Yil,
thanks for answer, but I've restarted ioFTPD several times, all attributes are set only to "a" archive, and security is set to r/w for all users.

Other files are visible normally in the folder, if I create new e.g. "foo.txt" it appears immediately nut no this one big MKV file.

Yes, i did tried to delete all .ioFTPD files, no change :(

Even if i rename it to *.txt or anything else, still invisible ;(

And I've tried about 5 different version from 5.xx to 7.xx of ioFTPD, still the same.

Any more hints?

Thanks!

pion
09-22-2011, 06:18 AM
I might add that the lockup is happening quite frequently when under load, and more so on lower spec'ed machines.

paja1
09-22-2011, 03:41 PM
Yes, rebooted several times, install all updates and hot fixes, still the same.
Only turning off monitoring of applications activity helped. Even switching it into check only incoming data helped as well.
Why it affected only OpenSSL version, dunno.

Pavel


Unfortunately my speed issues are still there. Is there anybody else having similar issue?
That version 6.x is much faster than 7.x?

I thought it was because of MS Security Essentials, but i was wrong.

I had to roll back back to 6.6. But 7.7.3 is more stable and have no issue with refreshing of folders behind NTFS Symlinks. So i would like to go back to 7.7. but i have to choose between features and stability vs. ultimate speed.

I have to clue what to do at this point. Additionally i still have the issue with "invisible" files. Any help? Anyone? Please!

Yil
09-22-2011, 05:45 PM
paja1: I tried looking at some large .mkv files (10gig or so) locally and I don't have any problems. If the directory doesn't have a .ioFTPD file I can't see any reason the file wouldn't be visible.

Do you use FlashFXP? If so check out Directory->View Raw Directory and see what it says. ioFTPD outputs data in alphabetical order with Folders before Files so if you can see the entry above and below where it should then it's missing from the listing and not a client issue. Perhaps similar options exist in other FTP clients. I just want to rule out a client having problems with >4gig files since that's the limit of a 32bit file size.

Also, pay attention to the size of the directory (the ".") entry or the size in the parent's listing for the dir. Can you tell from the size if the file must be present? I..e a dir with small files is somehow 10gig because of the missing .mkv?

If you manually create a .txt file and then refresh the dir listing do you see the new file? What about after a 'site refresh'? If you see the new file then it isn't a stale cache problem.

If you are using a path that involved hard links try to find one that doesn't just to see if that changes anything.


As far as your speed issue goes... Does this happen if you are only transferring one file? What's the CPU load on the machine? # of processors? Try increasing the number of io_threads from the number of cores on your machine to double that or at least 4-5 if only a single core. That might make a difference.

Yil
09-22-2011, 05:51 PM
paja1: Oh... another idea... try 'site size <filename>' and see if you get a response. If so ioFTPD knows about the file...

pion: It's reasonable to expect that the server under load increases the chances. Did you get a chance to look for the worker thread lines? I'm really hoping we can find some correlation there.

ArtX
09-23-2011, 04:46 AM
when can we expect a test version of the infamous v8 ;)

Dahlia
09-23-2011, 05:14 AM
Unfortunately my speed issues are still there. Is there anybody else having similar issue?
That version 6.x is much faster than 7.x?

I thought it was because of MS Security Essentials, but i was wrong.

I had to roll back back to 6.6. But 7.7.3 is more stable and have no issue with refreshing of folders behind NTFS Symlinks. So i would like to go back to 7.7. but i have to choose between features and stability vs. ultimate speed.

I have to clue what to do at this point. Additionally i still have the issue with "invisible" files. Any help? Anyone? Please!

Well i have some speed problems too. When im downloading with AUTH SSL and 'Encrypt data while transfering' i get always max 300-350kb/s. But if i connect and start download from same ftp with another 2-3 threads i get my max 2mb/s download. Same is with FXP on other 100mbit/gbit sites. With more thread i get higher speed. Well so for local download im using option when i disable 'Encrypt data while transfering = so no ssl'. But for FXP i cant do anything coz other site has 'Use encrypted FXP only'. And one more thing. Upload with SSL is max 10MB/s (on 100mbit line), but download with SSL is much more lower. around 1-3MB/s



How to tweak up SSL transfers ?
When i change the Io_Thread and Worker_Thread, do i need to full restart ioftpd or i can do just rehash ?

I have Intel CPU 6320, 1.86GHz (2 cores). 1GB of RAM (still like ~500mb free) on win2003 system. Io_Thread = 8, Worker_Thread = 10 (i had 4 and 8 before but nothing changed)

Yil
09-23-2011, 06:05 AM
Carpo: Hmm, probably not for a bit as I'm pretty busy for the next few weeks and the code is in flux. I'm still trying to consolidate a few things and the reality will be a v8 that's probably half of what I wanted. Ah well, there's always v8.1...

Dahlia: Changes to threading settings require a restart of the FTP for them to take effect.

I'm not sure I understand your speed issue. If you get say 100K/s on 1 connection, but you can do 100K/s on each of 3 connections to the same FTP then the problem isn't the server itself, it's network delay. Try pinging or tracerouting the server to get an idea of what kind of delay you are dealing with. Assuming a consistent route and no packet loss you can increase speeds by playing with the TCP buffer sizes. This is something that I haven't done much with ioFTPD internally, but in the client make sure it's as large as can be and see if that helps.

SSL verses non-SSL to the same FTP is more interesting. Dramatic speed differences like say 100K/s vs 1MB/s shouldn't happen unless the CPU on the server machine is really poor or it's busy doing other things.

I see you updated it with up/down differences. Make sure your client has the same TCP buffer sizes for each direction, and that you are testing to the same disk drive with nobody else transferring if you can.

Rusher
09-23-2011, 09:28 AM
Hi again

im using 7.7.2

havent expirenced to much trouble with it.. looking in my errorlog today i saw something i havent seen before..

09-22-2011 20:27:18 Zero length field or data on line 'flags '.
09-23-2011 03:10:58 No services appear to be online! Defined=1, Active=1, Online=0, Failed=0!

i have not installed ioftpd as a service so dont know why it would hassle me about that.

pion
09-23-2011, 09:55 AM
08-20-2011 16:56:07 Worker exit: total=5, free=5, blocking=0, initial=5.
08-20-2011 16:58:32 Worker exit: total=5, free=5, blocking=0, initial=5.
08-20-2011 18:38:40 Worker exit: total=5, free=5, blocking=0, initial=5.
08-20-2011 19:08:42 Worker exit: total=5, free=5, blocking=0, initial=5.
08-20-2011 19:49:02 Worker exit: total=5, free=5, blocking=0, initial=5.
08-20-2011 19:49:02 Worker exit: total=5, free=5, blocking=0, initial=5.
08-27-2011 16:44:22 Worker exit: total=5, free=4, blocking=0, initial=5.
09-06-2011 03:23:15 WSAAsyncSelect error: 10022
09-06-2011 03:23:16 WSAAsyncSelectCancel error: 10022
09-19-2011 13:54:26 Worker exit: total=5, free=5, blocking=0, initial=5.
09-19-2011 14:30:29 Worker exit: total=5, free=5, blocking=0, initial=5.
09-19-2011 20:41:27 Worker exit: total=5, free=5, blocking=0, initial=5.
09-19-2011 20:43:36 Worker exit: total=5, free=5, blocking=0, initial=5.
09-19-2011 20:59:37 Worker exit: total=5, free=5, blocking=0, initial=5.
09-19-2011 21:42:19 Worker exit: total=5, free=5, blocking=0, initial=5.
09-19-2011 21:42:21 Worker exit: total=5, free=4, blocking=1, initial=5.

Yil
09-23-2011, 06:32 PM
pion: I can't prove anything from those worker exit debug lines, but assuming that those are all the lines it's REALLY interesting that the dates you were having multiple lockups are exactly the dates you were seeing the highest load. That might mean that thread creation, which requires the dll lock, is equally likely to trigger the lockup. Try upping the number of worker threads to like 10 and see if that makes a difference!


Rusher: That means that your CPU must be VERY busy or insane numbers of control connections all at one time. Try looking for other lines in error.log or debug.log that look like:
Services_Test: Failed to connect to service '%s' (IP=%s) %d times in a row!

ioFTPD clearly thought it couldn't connect to the FTP service defined in the .ini file (not a windows services). Since there was only 1 it figured it should suicide...

That can happen under high CPU load or network load on the control connection. If this is happening I can tweak the timeouts to avoid this for other people or to disable the feature. The ONLY times I've personally seen this is when older machines burn CD/DVDs or play high def video. Any chance of that kind of thing going on?

There is a workaround in the short term, you define a 2nd local-only FTP service. Now if one of them appears offline the server notes it unless under extreme stress the local only one shouldn't fail...

In the future I'll adjust thread priorities to avoid this perhaps.

Rusher
09-24-2011, 01:02 AM
Yil :

that are the only lines in the error.log i found 1 line in debug log :

09-18-2011 20:27:49 AsyncSelectProc: Socket 1504 not found.

ioftpd is installed on a core2duo 3.0 ghz, 6gb ram, windows server 2008 r2 x64. and this is the only thing installed on that computer.

for the service error maybe it was the symcleaner that caused that error ? the only thing that is scheduled at that time.
network load could of only been 100mbit at most, nic is gigabit though...

and also this error has only showed itself in error.log 2 times since i installed ioftpd bout 4 weeks ago so its not a major problem, Zero length error was a first.

today there were no errors since the ones ive asked of in this thread.

paja1
09-25-2011, 10:12 AM
paja1: Oh... another idea... try 'site size <filename>' and see if you get a response. If so ioFTPD knows about the file...




My "missing" files issue was because of invalid date, all "missing" files had date in the future, somewhere in the year 2019, i was able to see them if I used "raw view" in FlashFXP, so ioFTPD worked well, only FlashFXP failed to parse it.

So this mystery is having a good end. Another mystery is still my speed issue, between 6.6. and 7.7.3. If i do try it locally, means download on the same machine where ioFTPD is, i'm getting quite good and comparable speeds. But not over network. :(

Any hint, anybody, please? I want to upgrade back to latests 7.7.3.

Thanks for any tip!

Yil
09-25-2011, 10:11 PM
paja1: Glad to hear that the invisible file thing has a solution! Regarding your speed problem. Can you get 4 numbers? Speed to send a file and to receive a file both plain and over SSL? You can use FXP from a fast site if you want since I'm just looking at the ratio of plain/SSL and if differs between up/down. See if things are reproducible if you get weird answers, and see if you can watch the CPU load on the server. Obviously try and see if you are the only user on ioFTPD transferring files if you can...

paja1
11-10-2011, 11:05 AM
paja1: Glad to hear that the invisible file thing has a solution! Regarding your speed problem. Can you get 4 numbers? Speed to send a file and to receive a file both plain and over SSL? You can use FXP from a fast site if you want since I'm just looking at the ratio of plain/SSL and if differs between up/down. See if things are reproducible if you get weird answers, and see if you can watch the CPU load on the server. Obviously try and see if you are the only user on ioFTPD transferring files if you can...

Hi Yil,
so i've upgraded my box to:
CPU: 6x3800Mhz
RAM: 16GB DDR3@3300
HDD: SATA3@6GB

Network is stable 1GB.

I'm getting max 3.6MB/s on 7.7.3, but average 27-32MB/s with 6.6.0.

Few stats, as requested:

7.7.3 down Plain (no SSL) - 700.92 MB in 18.49 seconds (37.92 MB/s)
7.7.3 down SSL (ECDHE-RSA-AES256-SHA) - 700.92 MB in 2 minutes 34 seconds (4.53 MB/s)
7.7.3 up Plain (no SSL) - 705.61 MB in 16.10 seconds (44.23 MB/s)
7.7.3 up SSL (ECDHE-RSA-AES256-SHA) - 705.61 MB in 32.78 seconds (21.53 MB/s)

6.6.0 down Plain (no SSL) - 700.92 MB in 18.09 seconds (38.76 MB/s)
6.6.0 down SSL (AES128-SHA) - 700.92 MB in 25.29 seconds (27.72 MB/s)
6.6.0 up Plain (no SSL) - 705.61 MB in 16.43 seconds (42.95 MB/s)
6.6.0 up SSL (AES128-SHA) - 705.61 MB in 24.34 seconds (28.99 MB/s)


Upload was from my laptop, so the CPU/HDD is not fastest one :)

This can't be HW issue :(

Paja

Rusher
11-10-2011, 11:40 AM
Hi Yil,
so i've upgraded my box to:
CPU: 6x3800Mhz
RAM: 16GB DDR3@3300
HDD: SATA3@6GB

Network is stable 1GB.

I'm getting max 3.6MB/s on 7.7.3, but average 27-32MB/s with 6.6.0.

This can't be HW issue any more :(

Paja

im using 100mbit wan and getting almost 11MB/s on 7.7.2 never tried 7.7.3 cause 7.7.2 is so stable never have any problems with it.

im using ssl/tls transfeers and cpu is old c2d 3.0 ghz and 6gb ram on windows server 2008 x64

paja1
11-10-2011, 11:52 AM
im using 100mbit wan and getting almost 11MB/s on 7.7.2 never tried 7.7.3 cause 7.7.2 is so stable never have any problems with it.

im using ssl/tls transfeers and cpu is old c2d 3.0 ghz and 6gb ram on windows server 2008 x64

Can you please give me your SSL settings? Did you changed anything? I changed only port, rest is as downloaded.

thx

Rusher
11-10-2011, 01:13 PM
Require_Encrypted_Auth = !-ioFTPD *
Require_Encrypted_Data = !-ioFTPD *

;Certificate_Name = ioFTPD

Create_Certificate = True

Explicit_Encryption = True

;Encryption_Protocol = SSL3

OpenSSL_Options = ALL

OpenSSL_Ciphers = DEFAULT:!LOW:!EXPORT

speedtest just single disk and there was other activity at the same time so not so good as it should be.. but okey. and i also changed port.. not using 21

[R] RETR xxxx.xxxx-sst.mkv
[R] Connected. Negotiating TLSv1 session
[R] TLSv1 negotiation successful...
[R] TLSv1 encrypted session using cipher ECDHE-RSA-AES256-SHA (256 bits)
[R] 150 Opening BINARY mode data connection for xxxx.xxxx-sst.mkv (1156306883 bytes) using SSL/TLS.
[R] 226-[ Section (#5): TV ] [ Ratio: Leech ] [ Credits: 0 MB ]
[R] 226 [ UL: 0 MB ] [ DL: 1.17 GB ] [ Speed: 39.3 MB/Sec ] [ Free: 886 GB ]
Transferred: xxxx.xxxx-sst.mkv 1,08 GB in 28,06 seconds (39,30 MB/s)

paja1
11-10-2011, 01:30 PM
Hmm.. i have the same settings, but a lot different speed. Any idea? :S

Yil
11-10-2011, 09:01 PM
Paja1: Clearly you see a difference, now to determine possible causes... BTW, I'm relatively convinced this isn't a common problem as I know lots of people aren't seeing this.

1) Let's compare apples to apples since the non-SSL transfers are similar let's set it up so that we can rule out the client/server having really poor CPU time or really bad encryption.

Try this .ini setting:
OpenSSL_Ciphers = DEFAULT:!LOW:!EXPORT:!HIGH

The !HIGH on the end should exclude the > 128bit suites along with some 128bit ones, if you don't get AES128-SHA then try

OpenSSL_Ciphers = DEFAULT:!LOW:!EXPORT:!HIGH:AES128-SHA

which I think should work but I've never tested... This is just passed to the OpenSSL library directly so you can consult the OpenSSL documentation for examples and more information.

If that doesn't show a difference then let's try to make sure it's just an encryption library difference. Since v6.6.0 is a long ways from 7.7.3, how about you try 7.3.3 which is the last of the non-OpenSSL releases? That way we can rule out a lot of changes. In general v7.4 and 7.5 were really about OpenSSL and 7.6 and 7.7 were primarily bugfix releases with a few non-vital changes thrown in.

paja1
11-11-2011, 04:26 AM
Hi Yil,
thanks for your post, here are some results:

7.7.3
TLSv1 encrypted session using cipher DHE-RSA-SEED-SHA (128 bits)
700.73 MB in 1 minute 47 second (6.49 MB/s)

So it's slightly better, just not as fast as 6.6.0.

I tried both:

OpenSSL_Ciphers = DEFAULT:!LOW:!EXPORT:!HIGH

and

OpenSSL_Ciphers = DEFAULT:!LOW:!EXPORT:!HIGH:AES128-SHA

Both versions are running on the same port, same hdd. :S

I'm going to download 7.3.3. and will see :)

Paja

paja1
11-11-2011, 04:58 AM
OK, 7.3.3 installed, configuration updated and here is the result:

TLSv1 encrypted session using cipher AES128-SHA (128 bits)
700.73 MB in 24.26 seconds (28.89 MB/s)

TLSv1 encrypted session using cipher AES256-SHA (256 bits)
700.73 MB in 23.82 seconds (29.42 MB/s)

What else can i test or try?

thx

Yil
11-11-2011, 12:43 PM
Ok. Now try 7.4.5 which is basically 7.3 with initial OpenSSL support and an older compiled encryption library. Since this doesn't have the priority fix to make things fairer with multiple downloaders the encryption should run at high priority which is good for testing since you are the only user downloading anyway. If that appears the same then try disabling your anti-virus / MSE / etc and see if that makes a difference...

paja1
11-11-2011, 01:04 PM
Ok. Now try 7.4.5 which is basically 7.3 with initial OpenSSL support and an older compiled encryption library. Since this doesn't have the priority fix to make things fairer with multiple downloaders the encryption should run at high priority which is good for testing since you are the only user downloading anyway. If that appears the same then try disabling your anti-virus / MSE / etc and see if that makes a difference...

Hi, I can't find 7.4.5 only 7.4.3, can you give me a link?

thx

Yil
11-11-2011, 02:07 PM
Oops, 7.4.3 is fine. .4 was a limited release debug version, and .5 added some iTCL stuff for socket protection but neither are needed for your test.

paja1
11-14-2011, 06:40 AM
Oops, 7.4.3 is fine. .4 was a limited release debug version, and .5 added some iTCL stuff for socket protection but neither are needed for your test.

OK, todays results:

6.6.0
TLSv1 encrypted session using cipher AES256-SHA (256 bits)
699.68 MB in 29.32 seconds (24.12 MB/s)

7.3.3
TLSv1 encrypted session using cipher AES256-SHA (256 bits)
699.68 MB in 28.69 seconds (24.39 MB/s)

7.4.3
TLSv1 encrypted session using cipher AES256-SHA (256 bits)
699.68 MB in 4 minutes 58 seconds (2.34 MB/s)

7.7.3
TLSv1 encrypted session using cipher ECDHE-RSA-AES256-SHA (256 bits)
699.68 MB in 5 minutes 17 seconds (2.20 MB/s)


I'm running Windows 2008/R2 x64. No anti-virus is installed.
Not a single CPU Core is going over 6% utilization.
Same file, same HDD, all is the same. :(

Any idea?
Thanks!

PaJa
:eek:

Yil
11-14-2011, 09:06 PM
paja1: Could you please double check what you posted? The Microsoft encryption library used by ioFTPD in v7.3 and before I believe only supports up to 128bit AES keys. I just double checked an old build and that was the best I could do. That doesn't change the recorded speeds, but it highlights the fact that we aren't comparing the same algorithm across 2 different encryption libraries... I expect you meant AES128-SHA in the first 2 timings.

If that's correct, then go back to 7.7.3 and tweak the OpenSSL_Ciphers line to make it use AES128-SHA as well. See the previous post for details. That should get all the timings on 128 bit AES.

I think we can speculate that since the ONLY significant difference between 7.3 and 7.4 (provided it just has the 1 transfer!) was the encryption library so it must be at fault, and I have an idea why. You mentioned the cores, ghz, etc but what architecture is the CPU? 6 cores got me thinking this is an AMD machine? That got me thinking that even though v7.4 and v7.7 use different OpenSSL compiled libraries both were compiled by me from unmodified sources. In both cases I used the optimized assembly language optional compilation option for max speed and perhaps this is somehow horrendous on AMD CPUs... I can't see why that would be, but I'm running out of ideas.

Since ioFTPD uses unmodified OpenSSL code this means you can use anybody's compiled ssleay32.dll and libeay32.dll files provided they are v1.0+. Grab both of them from a newer FlashFXP release, mIRC, etc and try it to see if it makes a difference. Perhaps they are compiled without the assembly language routines or with a different compiler.

The only machines I know the speed of are all Intel based and all appear fine. Perhaps someone else out there can confirm that their AMD based machine is doing fine?

Flow
11-15-2011, 09:42 AM
Is this on only issue with filetype .mkv ? Have you tried rename file to .rar or .zip (just try) and do same transfer test.

paja1
11-15-2011, 10:18 AM
paja1: Could you please double check what you posted? The Microsoft encryption library used by ioFTPD in v7.3 and before I believe only supports up to 128bit AES keys. I just double checked an old build and that was the best I could do. That doesn't change the recorded speeds, but it highlights the fact that we aren't comparing the same algorithm across 2 different encryption libraries... I expect you meant AES128-SHA in the first 2 timings.

If that's correct, then go back to 7.7.3 and tweak the OpenSSL_Ciphers line to make it use AES128-SHA as well. See the previous post for details. That should get all the timings on 128 bit AES.

I think we can speculate that since the ONLY significant difference between 7.3 and 7.4 (provided it just has the 1 transfer!) was the encryption library so it must be at fault, and I have an idea why. You mentioned the cores, ghz, etc but what architecture is the CPU? 6 cores got me thinking this is an AMD machine? That got me thinking that even though v7.4 and v7.7 use different OpenSSL compiled libraries both were compiled by me from unmodified sources. In both cases I used the optimized assembly language optional compilation option for max speed and perhaps this is somehow horrendous on AMD CPUs... I can't see why that would be, but I'm running out of ideas.

Since ioFTPD uses unmodified OpenSSL code this means you can use anybody's compiled ssleay32.dll and libeay32.dll files provided they are v1.0+. Grab both of them from a newer FlashFXP release, mIRC, etc and try it to see if it makes a difference. Perhaps they are compiled without the assembly language routines or with a different compiler.

The only machines I know the speed of are all Intel based and all appear fine. Perhaps someone else out there can confirm that their AMD based machine is doing fine?


Hi Yil,

i've changed setting for 6.6.0 and 7.3.3 to this:

Min_Cipher_Strength = 256
Max_Cipher_Strength = 256

It gives me 256 bit encryption.

Yes, i'm running on AMD but i had the same speed issues on my old box with intel as well :(

I tried to connect my laptop to the same switch where my box is, so nothing on the way, with similar results. :S

Even switched the Windows Firewall off, but still the same results :(

I'm quite desperate.

PaJa

Yil
11-15-2011, 04:41 PM
paja: I was able to confirm that 256aes did indeed work on 7.3.3 under win7 to my chagrin. I'm going to have to go back and test that on an old XP SP2 release because it didn't work when I tested it years ago (pre-vista) so it's possible they have added support for it and didn't document it, or it's only on the newer OSs, or it only works if you disable 128 bit support which I can't prove I tested back then...

We'd still have switched to OpenSSL because the stupid MS encryption library does all that DLL ref counting that was making the loader lock problem worse.

I'm really at a loss unless you try a different compiled OpenSSL library. Anything else odd installed on the server machine like some performance optimizer, network monitor, etc? There just isn't much difference between 7.3 and 7.4 and as far as network traffic goes there shouldn't be any difference which would account for performance changes like you are seeing.

One other thing you could try. V7.4 shouldn't have the Deny_Port_Host feature so why don't you connect to the server via 127.0.0.1 and select the Use Host IP for PASV feature and then FXP to the server from itself and see what kind of performance you get locally. Do the same test using the 192.168.x.y address of the machine to see if that makes a difference. If that works then it means we're dealing with just a network issue.

paja1
11-16-2011, 04:22 AM
Is this on only issue with filetype .mkv ? Have you tried rename file to .rar or .zip (just try) and do same transfer test.

Hi,
on all file types :(

I do not have any FW, Antivirus, optimizer... it's quite fresh Windows 2008 R2 installation with only ioFTPD on it.

PaJa

paja1
11-16-2011, 04:41 AM
paja: I was able to confirm that 256aes did indeed work on 7.3.3 under win7 to my chagrin. I'm going to have to go back and test that on an old XP SP2 release because it didn't work when I tested it years ago (pre-vista) so it's possible they have added support for it and didn't document it, or it's only on the newer OSs, or it only works if you disable 128 bit support which I can't prove I tested back then...
OK, good to know, hehe :)

We'd still have switched to OpenSSL because the stupid MS encryption library does all that DLL ref counting that was making the loader lock problem worse.
I can totaly understand that.

I'm really at a loss unless you try a different compiled OpenSSL library. Anything else odd installed on the server machine like some performance optimizer, network monitor, etc? There just isn't much difference between 7.3 and 7.4 and as far as network traffic goes there shouldn't be any difference which would account for performance changes like you are seeing.
Nothing, it's really fresh install with only ioFTPD on.
I did have tried another version of OpenSLL (0.9.8e) with this result:
7.4.3
TLSv1 encrypted session using cipher AES256-SHA (256 bits)
696.79 MB in 2 minutes 47 seconds (4.17 MB/s) (same switch, only two PCs connected, my laptop and the box itself.

One other thing you could try. V7.4 shouldn't have the Deny_Port_Host feature so why don't you connect to the server via 127.0.0.1 and select the Use Host IP for PASV feature and then FXP to the server from itself and see what kind of performance you get locally. Do the same test using the 192.168.x.y address of the machine to see if that makes a difference. If that works then it means we're dealing with just a network issue.
If i try to download file directly on the box, via external IP, i'm getting good reasonable speed, but i did know that.

Example of localy downloaded file:
7.7.3
SSL encrypted session using cipher DHE-RSA-AES256-SHA (256 bits)
699,54 MB in 32,62 seconds (21,45 MB/s)

Example of local FXP (public IP) transfered file:
7.4.3
150 Opening BINARY mode data connection using SSL/TLS.
Transferred 1 file totaling 702,63 MB in 29,08 seconds (24,98 MB/s)

Example of local FXP (127.0.0.1) transfered file:
7.4.3
150 Opening BINARY mode data connection using SSL/TLS.
Transferred 1 file totaling 702,63 MB in 24,52 seconds (28,74 MB/s)

So it's a network problem, but i had it on my old box as well, with OpenSSL builds. I don't understand why is it, as there was not much changes in the code, as you mentioned. I'm going out of options.

PaJa

Flow
11-16-2011, 12:36 PM
Hi,
on all file types :(

I do not have any FW, Antivirus, optimizer... it's quite fresh Windows 2008 R2 installation with only ioFTPD on it.

PaJa

What duplex is your networkcard on?

paja1
11-16-2011, 04:55 PM
What duplex is your networkcard on?

1Gb, Full-Duplex.

Btw, I don't have any speed issue to download from IIS HTTS (256 bit) up to 38MB/s and ioFTPD up to version 7.3.* about 28-30MB/s. So doesn't looks like an LAN adapter issue.

And I had the same problem on different HW box as well. (Intel P4 Dual Core, Windows 2003 32 bit), i do have AMD Phenhm II X6, Windows 2008 R2, with the same result.

I already tried three different switches as well, without any change.

PaJa

Yil
11-16-2011, 09:22 PM
If this is nearly a default install of Win2k8R2 and you had the issue with Win2k3 on a different box I'm beginning to wonder if it isn't a problem with the Server releases of the OS's. Now I don't believe that the problem is the OS per-se, but I do know that the networking defaults for server boxes are different than the user versions. It's also possible that in the OpenSSL change-over there might just be a socket option somewhere that got modified but on Win7 makes no difference, but under Win2k8 it does. I'll take a look at every change between 7.3.3 and 7.4.3 to see if I can spot any socket changes. But this should effect non-SSL transfers as well, and that appears to be working fine...

paja1
11-17-2011, 07:20 AM
Yil,
thank you for your effort. I can try to test it on WinXP if possible.

Pavel

g.loth
11-17-2011, 01:08 PM
Hello,

I would like to know if anyone have make a tutorial about install/setup/manage ioftpd, because there is nothing ! (or url broken)
I want to install ioftpd on windows but it's hard.

I am knowledge of *.fce for add/delete/manage user, ip, slots, etc... but it's the very simple command.

I would like to have more information suche as :

- make group with special right ( example : create AZERTY GROUP does not show any directory. - or create QWERTY GROUP with only download right. )

- force SSL connection ( to download / upload / etc... )

Thanks

Yil
11-18-2011, 09:38 PM
g.loth: I really hate the lack of documentation myself. Given time I can do a pretty good job of it, but it's not something I do quickly so it tends to not get done. On the plus side I have implemented 'site help' and documented every interactive built-in command with a description and examples as well as the commands for nxTools and ioNinja. This doesn't help much with configuring the server, but it sure is better than what was available when I picked the project up (though nxHelp wasn't bad).

Here's a list of things to check after you get through the trivial stuff in the README file and 'site help'. Speaking of 'site help', if you have an ANSI color enabled client like FlashFXP use the 'site color' feature because the online help looks MUCH nicer when arguments, other commands, etc are in different colors.

If you use FlashFXP grab one of the ioFTPD custom commands from the board here. There are a couple of good ones out there, and an "official" really cool version should be available when v8 comes out or shortly thereafter.

Don't forget the Changelog. This is the definitive guide to how things really work. I document every change, new feature, etc in this file and often include examples and/or reasons. It's not all in one place as changes happen over time, but search the file from the top for the keyword your interested in.

Check out the /docs folder. There's a Site-cmds.txt file that looks like the output of 'site help' for every build-in command so searching that can help you locate the command or arguments you need to do what you want.

The Forum. There's lots of useful stuff here over the years so try searching it, and if that fails just ask...

Read the .ini file all the way through. You would be surprised at how many features the server really has and what can be customized. It will also introduce you to a number of things you should be aware of.


Regarding your 2 questions.

You want to "classify" or "group" users so they can have different rights. There are two general ways to do that. If you are dealing with a handful of users on a small server you can use user flags. Just avoid the 1, M, L, etc ones reserved by the system (v8 will make this much cooler and easier).

If you have a lot of different groups of users or if the groups that a user belongs to should limit/allow directory access use traditional groups created via 'site grpadd'. Place users into one or more of those groups via 'site chgrp' and then set directory permissions via 'site chown' and 'site chmod'. I suggest you examine the idea behind new-user group defaults. Check out 'site help /Defaults'. In conjunction with 'site gadduser' you can setup each group of users to have different numbers of logins, default user-flags, additional groups to join, you name it. It's very useful and powerful.

In either case you will want to examine the VFS section of the .ini file to grant/deny the ability to upload, download, etc. I do NOT recommend using a lot of rules in the VFS section, but it makes sense to deny some users the right to delete files they don't own. Traditionally the 3 user flag is used for users who can upload and any user account without that can only download. So just define the global rules there and control access to directories by filesystem permissions. The "group owner" of a directory grants access if the user is a member of that group. Since users can be members of lots of groups this should handle most cases if you just remove the +r flag via 'site chmod' for "other" like UNIX filesystems would do. [As a side note: the +x bit currently does nothing. +r controls both look/enter]

If you really need to hide things (and not just deny access) from some groups don't use custom etc/group.vfs files. That will work fine but if you ever need to edit the .vfs file you'll have to apply the change to all the .vfs files and that sucks and is error prone. Instead, I suggest you use the 'site chattr +h' feature to enable private directories which means if the user doesn't match the user/group/flag glob then they can't even see the directory at all.

For SSL use 'Require_Encrypted_Auth' and 'Require_Encrypted_Data' options in the .ini file to control that per-service.

pion
12-03-2011, 01:57 PM
I have horrible uptime.. 7.7.3 As soon as there's any load on it, it gives out.

You might want to consider removing the 'STABLE' tag? :-P

11-19-2011 17:00:19 System detected loader lock compromised! Terminating!
11-19-2011 17:37:39 System detected loader lock compromised! Terminating!
11-20-2011 11:43:02 System detected loader lock compromised! Terminating!
11-20-2011 12:03:57 System detected loader lock compromised! Terminating!
11-20-2011 12:44:19 System detected loader lock compromised! Terminating!
11-20-2011 12:55:42 System detected loader lock compromised! Terminating!
11-20-2011 13:54:42 System detected loader lock compromised! Terminating!
11-20-2011 14:15:35 System detected loader lock compromised! Terminating!
11-20-2011 14:26:57 System detected loader lock compromised! Terminating!
11-21-2011 08:06:50 System detected loader lock compromised! Terminating!
11-21-2011 08:33:09 System detected loader lock compromised! Terminating!
11-21-2011 09:04:00 System detected loader lock compromised! Terminating!
11-21-2011 09:20:22 System detected loader lock compromised! Terminating!
11-23-2011 13:34:49 System detected loader lock compromised! Terminating!
11-23-2011 17:42:45 System detected loader lock compromised! Terminating!
11-26-2011 22:46:09 System detected loader lock compromised! Terminating!
11-28-2011 05:31:52 System detected loader lock compromised! Terminating!
11-30-2011 04:07:44 System detected loader lock compromised! Terminating!
12-01-2011 17:13:06 System detected loader lock compromised! Terminating!
12-01-2011 20:00:19 System detected loader lock compromised! Terminating!
12-01-2011 20:23:16 System detected loader lock compromised! Terminating!
12-01-2011 20:47:38 System detected loader lock compromised! Terminating!
12-01-2011 21:01:29 System detected loader lock compromised! Terminating!
12-01-2011 21:41:21 System detected loader lock compromised! Terminating!
12-01-2011 22:21:13 System detected loader lock compromised! Terminating!
12-01-2011 22:31:10 System detected loader lock compromised! Terminating!
12-01-2011 22:56:04 System detected loader lock compromised! Terminating!
12-01-2011 23:44:31 System detected loader lock compromised! Terminating!

Rusher
12-03-2011, 06:33 PM
I have horrible uptime.. 7.7.3 As soon as there's any load on it, it gives out.

You might want to consider removing the 'STABLE' tag? :-P

12-01-2011 23:44:31 System detected loader lock compromised! Terminating!


well....

doesnt it say :

"ioFTPD v7.7.3 (STABLE) Released
UPDATE: v7.7.2 (it must be .2) appears really stable."

have ya tried that one ? i'm running 7.7.2 and uptime is 100% unless i have restarted the server cause of something else. but io has never given upp :P

Yil
12-04-2011, 10:20 PM
7.7.x releases are light years ahead of previous releases in terms of stability.

7.7.1 got rid of the OpenSSL memory corruption issues caused by poor OpenSSL documentation. I still can't believe they don't provided a default locking mechanism for thread compiled libraries...

7.7.0 includes fixes for a large number of memory issues. I tested every built-in site command with a number of different arguments as well as a variety of other things. It also includes a simple corruption detector to check the internal reference counted allocations. To date nobody has shown any corruption detected log entries which I can only take to be a good thing :)

On the other hand the annoying loader lock problem still exists for some people, but as long time users will know by now it's a subtle problem and very tricky to debug given that it's a windows internal lock and ioFTPD has no control over it directly and that it breaks nearly everything when it locks up. The switch to OpenSSL really helped reduce the problem, but I still don't know what the real cause is, only that some things make it worse or better which helps point me to other things to check.

I can say that I have yet to see a lockup/crash myself on the new versions personally even on servers with 3-5 average transfers at a time and 20 online users. I have seen a machine burning dvds or watching a movie timeout a service and force a restart but that's because it was a slow machine and the server didn't get CPU time to run... I presume those with problems must have lots of users online so hopefully you've set the number of worker threads high enough that they aren't being created/destroyed as I know that helps trigger the bug.

I've gotten no time to play with anything for a while, so you'll just have to make do for the time being...

pion: You're using nxMyDB right? Using the customized version of that I made for you I can't see why that would be an issue, but I'd be curious if you still have the problem if you could find a way to test your setup without it since that's a pretty sizable difference between what you are running and what most people are using.

peep
12-06-2011, 06:35 AM
pion: You're using nxMyDB right? Using the customized version of that I made for you I can't see why that would be an issue, but I'd be curious if you still have the problem if you could find a way to test your setup without it since that's a pretty sizable difference between what you are running and what most people are using.

There's a customized version for it? Customized in what way? I'm curious since I'm using it myself as well..

zag2me
12-06-2011, 09:41 AM
Just installed this after some time away.

I get "No such file or directory." error on all file uploads

[R] 150 Opening BINARY mode data connection for 2100380.pdf.
[R] 226-[ Section: Default ] [ Ratio: Leech ] [ Credits: 0 MB ]
[R] 226 [ UL: 0 MB ] [ DL: 0 MB ] [ Speed: 35.7 MB/Sec ] [ Free: 332 GB ]
[R] MDTM 20110517093725 2100380.pdf
[R] 550 2100380.pdf: No such file or directory.
Transferred: 2100380.pdf 330 KB in 0.01 seconds (330.9 KB/s)

The file is not uploaded successfully. Creating directories seems to work fine though.

Any ideas whats wrong? permissions issue?

EDIT: Nevermind, it was a script issue. I was using an old ioNiNJA

Yil
12-06-2011, 09:45 PM
peep: I created a new thread in this forum and stuck it that includes the "custom" nxMyDB and mySQL libraries that should be used with ioFTPD. If you use EXEC scripts but don't use these libraries it's likely you might experience server lockups.

o_dog
12-10-2011, 05:54 AM
YiL: could you remove the sticky from ioninja alpha and add one to ioninja?

Sc0tTy
01-02-2012, 07:42 PM
I disabled SSL transfer, but i still get errors :

[01:20:26] [L] 226-.----== ioNiNJA v1.0a ==---------------------------.
[01:20:27] [L] 226-| + CRC-Check: FaileD! |
[01:20:27] [L] 226-`--------------------------------=====-------------'
[01:20:27] Transferred: <filename-removed>.r32 143.05 MB in 19.13 seconds (7,659 KB/s)

Why doesnt it return an error to the client ?
Also im wondering why it fails it seems to do it randomly

also

[01:49:36] [L] site invite XXXX
[01:49:36] [L] 200-250- "XXXX" was invited to join our chan(s)
[01:49:36] [L] 200-250-

i think it doesnt change the return code

( Latest ioFTPd & ioNinja )

o_dog
01-02-2012, 09:50 PM
this is in the wrong thread. Should be in ioninja. Wht do you mean return error?

Yil
01-03-2012, 01:25 AM
There isn't enough info there to actually see the result. Any line with a number and a DASH i.e. 226- means nothing really, the only thing that matters is the final line with a number and a SPACE i.e. 226 Something. So the piece you've shown doesn't really tell us anything...

When FXP'ing lots of things that look like complete transfers really aren't. Take a close look at how many bytes the receiving side claims it got. You can also check out the logs/xferlog file if someone else got the error so you can't see the details yourself. Often times things like failed SSL negotiations, etc look like failed CRC checks, but it's really a failed transfer and not a complete send that just failed the CRC check.

Sc0tTy
01-03-2012, 01:56 PM
Well yeah i wasnt sure where to post it since any crc error is not ioninja's fault. ( i can repost there if you like )

With return code/error i mean the 3 digit code returned to the client. The client doesnt get notified properly that a transfer has failed wich imho is bad.

o_dog
01-04-2012, 05:11 PM
it shoudln't be. I could probably modify the return codes if it's needed. But a crc error is not really an error. It means the file is corrupt, that the transfer failed or that it's incomplete on source.


CRC errors can be ioNiNJAS fault since it compares it with the sfv file. And alot of people jsut have to screw things up by leaving crap in there thats not needed.

Tuffal_Simon
01-21-2012, 06:18 AM
http://www.webcam-steamate.com/cookies/35/b/happy.gif


Apr 26, 2011 – UPDATE: v7.7.2 (it must be .2) appears really stable. So far nobody has reported any crashes and the few sites I can see all have nice uptimes. 5 years has passed - is ioFTPD still worth using ?? - Aug 12, 2011 ioFTPD leech issue? - Ap

Yil
01-22-2012, 03:45 AM
A quick update. I started playing with C# and WPF a bit around Christmas as I wanted to learn the language. I haven't done a lot with it yet, but I can see why people find it easy to use. Figuring I knew enough I decided to write the C# shared memory library for the scripters out there. Unfortunately I found out that there are a lot of subtle details C# just glosses over if you are only writing pure managed code... I think I've got a handle on things now as the library can make simple shared memory requests to the server, but I've still got to implement all the possible calls and do a lot of cleanup though. I'm also trying to make the API an interface so in the future you could connect to the server over an FTP login and perform the same operations which would allow remote administration. Something similar to how ioGUI offers you the option of how to communicate with the server now.

After the C# shared memory library exposes the current functionality I'll probably go ahead and implement a whole lot more functions and/or an entirely new interface under the covers to help catch it up to functionality that TCL currently has access to. I believe things like path resolving, querying the active mountfile, etc are all things that a script is likely to need to do and I think it's better to have the server do it than each scripter write their own routines to try and mimic the server, parse server config files, etc...

ArtX
01-22-2012, 05:06 AM
so 2012 is going to be the year of ioftpd v8? ;)

Ullman
01-30-2012, 11:54 AM
Is there a list of clients that are allowed to connect to the ioFTPD server or what could be the cause of getting the following in my Error.log-file:

Rejected unmatched client 70.62.#.#

I've searched the forum and found a thread for the ioFTPD v6.3.5 Beta release but it didn't turn up much info on what was the exact cause or how it was solved.

I myself use FlashFXP and another user also uses FlashFXP but the one who keeps getting the rejected entry uses FileZilla (since it's free). Is there a certain way an ftp-client should connect to ioFTPD or?

I've got the log printout from the user with FileZilla and it is as follows:

Status: Connecting to 1.2.3.4:9000...

Status: Connection established, waiting for welcome message...

Error: Could not connect to server

Cheers! :)

Yil
01-31-2012, 12:42 AM
Ullman: You have enabled the 'Reject_Unknown_Ips' option in the .ini file and the IP/hostname of the user trying to connect doesn't match ANY hostmask across ALL the users so the server won't talk to him.

You can probably verify this using the 'site findip <IP>' and then 'site findip <hostname>' option which won't return any matching user hostmasks.

Of course the solution is simple, just add a new hostmask to the user :)

Ullman
01-31-2012, 05:17 AM
Yil: I did use the site findip 70.62.254.254 to see all users that has that IP range and the only user that came up was the one who couldn't connect :(

I did add the following IP to that user: *@70.62.*.* but it didn't seem to solve the problem right away :(

Just thinking out loud ;) is there a delay for when I update a users profile for instance adding a new IP to a user and he/she can't connect right away? Could ioftpd cache all the user profiles and then update the cache after a while or is it done instantly? Or does it write the changes to that users profile and then when they try to connect it checks the user profile?

Many thoughts hehe hope you could follow what I was thinking otherwise I guess I'll have to explain a bit better :)

Cheers!

Yil
01-31-2012, 03:05 PM
That's weird. Updates are applied immediately so that shouldn't be it. Try a 'site rehash' which should rebuild everything. If that fails you could also try restarting the server just to see if that fixes things...

On the other hand, make sure you aren't chasing two different problems. Check 'site bans list' to make sure the user hasn't auto-banned themselves.

Double check that the logfile is reporting the same rejected IP address just in case their IP changed on them as well.

Ullman
01-31-2012, 05:24 PM
Unfortunately their IP hasn't changed between connects, and no user has been banned... :confused:

Yes the changes should be auto-updated, but thats whats strange since it happened today to another user who had a new IP I added the new IP but the user had to wait around 5-6 minutes before they could connect successfully.

I did a site config rehash but might have to try that site rehash instead :)

Haven't tested to restart the server, but I have to wait and see if I stumble upon another IP change if that might fix the problem :)

Cheers!

o_dog
02-24-2012, 08:18 AM
nevermind. New settign i forgot to add on update

Yil
02-28-2012, 04:07 PM
Hmm, not sure when it happened, but it appears that I broke dynamic DNS hostname supports in user hostmasks. Thus things like :ident@name.no-ip.org won't work for the moment. I guess nobody is using this feature which I believe is unique to ioFTPD. I think it's pretty handy in those rare cases where users have a crazy range of IPs they could be assigned.

mr.babek
03-16-2012, 07:30 AM
Hmm, not sure when it happened, but it appears that I broke dynamic DNS hostname supports in user hostmasks. Thus things like :ident@name.no-ip.org won't work for the moment. I guess nobody is using this feature which I believe is unique to ioFTPD. I think it's pretty handy in those rare cases where users have a crazy range of IPs they could be assigned.

Some of my users requested to add their ip by dns , sinces it didnt work I guessed it wasn't implemented at all

Yil
03-22-2012, 06:33 PM
o_dog: Testing shows another issue that will be of interest to scripters. It's starting to look like a script that runs longer than the idle timeout on a non-exempt user will end up returning a script failure message and be disconnected when the script finally finishes. This probably only matters for things like 'site rescan all' on a big directory since the default idle timeout of 6 minutes is pretty long for a script to be running. Idle exempt users won't trigger this which is probably why I never noticed it before :) I've duplicated the result, but haven't confirmed the exact problem but thought I'd mention it so you can make sure you test your script with an idle exempt user since this wouldn't be a bug in your script that you need to find.

o_dog
03-25-2012, 05:08 PM
nah, if you run it with a master account and your client does not disconnect it shouldn't stop the script as long as it sends something to ioftpd every now and then.

mr-b
04-09-2012, 12:34 PM
Yil, is there any way to get around MAX_PATH? I am hitting directory/filename length limits and it's very annoying. Does ioFTPD need to abide by the limits of the Windows API cuz NTFS can support longer? Maybe it is the TCL scripts that are truely limited, I haven't tested without them.

Yil
04-09-2012, 05:05 PM
The short answer is there really isn't an easy way around the mess right now. Window's MAX_PATH (260 char) limit infects most paths in a LOT of applications including explorer itself! Using the \\?\ syntax, you can get 32K char limits for real paths using the windows API which allows for both long paths and unicode support. ioFTPD doesn't understand that syntax very well though... Long term there's some chance that this will be fixed as I re-wrote a portion of the directory cache code before yanking it and that would have partially addressed this issue. I still don't know about TCL support though.

On the other hand, ioFTPD VFS paths are limited to 512 characters so you can create virtual paths that are longer than real paths. The only reason I mention this is if you are having issues you might consider shortening/flattening your real paths. So if you have something like d:\Site\Games consider renaming that to d:\G instead. In the VFS you can still mount d:\Site as / but then add a d:\G as /Games entry so everything from the user's perspective looks the same but the real path is 10+ chars shorter. It's not a huge help, but every little bit...

Are you doing post-processing on uploads? Like auto-extracting or something which would make the problem worse?

mr-b
04-09-2012, 06:50 PM
No, I think TCL can understand it fine because rescan usually works fine after I download and move the files into the dir. It's only on upload (STOR) fails: No such file or directory. -- 261 total dir/filename length. Anyways thanks for your answer, I have no interest in using the VFS to solve this problem though.

jeza
04-10-2012, 01:46 PM
A quick update. I started playing with C# and WPF a bit around Christmas as I wanted to learn the language. I haven't done a lot with it yet, but I can see why people find it easy to use. Figuring I knew enough I decided to write the C# shared memory library for the scripters out there. Unfortunately I found out that there are a lot of subtle details C# just glosses over if you are only writing pure managed code... I think I've got a handle on things now as the library can make simple shared memory requests to the server, but I've still got to implement all the possible calls and do a lot of cleanup though. I'm also trying to make the API an interface so in the future you could connect to the server over an FTP login and perform the same operations which would allow remote administration. Something similar to how ioGUI offers you the option of how to communicate with the server now.

After the C# shared memory library exposes the current functionality I'll probably go ahead and implement a whole lot more functions and/or an entirely new interface under the covers to help catch it up to functionality that TCL currently has access to. I believe things like path resolving, querying the active mountfile, etc are all things that a script is likely to need to do and I think it's better to have the server do it than each scripter write their own routines to try and mimic the server, parse server config files, etc...

any news on this?

Yil
04-10-2012, 05:38 PM
jeza: I've been pretty busy lately, so not a lot of progress to report, but I'll see what I can do.

Train
04-19-2012, 04:29 PM
Yil,

I read some OpenSSL discussion in this thread. This might be of interest to you.

http://lists.grok.org.uk/pipermail/full-disclosure/2012-April/086585.html

Yil
04-19-2012, 11:14 PM
Train: Thanks for the heads up. For the record, ioFTPD uses unmodified implementations of OpenSSL and thus you should be able to grab the latest version and upgrade it any time either by compiling it yourself or just snagging the DLLs from somewhere. Obviously I can't say that will always work but provided you don't try to use older versions the odds are good.

o_dog
06-24-2012, 05:12 PM
Yil: site read2 does not work?
and why does read return mode as 100755 100777 etc?

Yil
06-25-2012, 12:01 AM
o_dog: Hmm, read2/write2 were something I was playing with implementing so you could get the uploaded time for a single file and I guess it made it into the the iTLC docs but never into the server as I can't find it in the code nor is it documented in the Changelog. Definitely a screw-up on my part. Right now I think you can only get uploaded time for all the entries in a directory via [resolve list] which is an INSANELY useful command since it uses the actual resolver / directory list code so it's identical to what a user would see in a directory listing.

[vfs read] should return 0777, 0755, etc, but doesn't in the released versions. It was an intentional idea to return extra info but you already convinced me that was a bad idea and I changed it back a while ago but there just hasn't been another release in a long time... :( Right now you'll have to mask it with 0777 like you would have to for [resolve list]. Some of the bits after 0777 indicate if [chattr 0-3] are set. Chattr 0 is for private/hidden dirs, 1 is ioFTPD symlink, 2/3 aren't currently used...


#define S_SYMBOLIC 020000
#define S_PRIVATE 010000



[resolve list] return these 4 chattr's for each entry anyway so it probably doesn't make any difference, but read2 (and 'read' but that caused more problems than I expected) was supposed to return these so you could see if you had an ioFTPD symlink, etc without having to test each dir all the time...

crl2007
08-09-2012, 02:57 AM
Hi all,

I recently purchased a TP-Link TL-WR1043ND router and I have somewhat of a hassle to configure ioFTPD to work with it. The router open ports only on demand, it doesn't keep'em open all the time. And because ioFTPD runs as a service, I can't connect. Until now I had a DIR-615 and it kept the ports I forwarded always open, so I had no issue. Thanks in advance for your responses. I have Win 7 x64.

o_dog
08-10-2012, 07:36 AM
crl2007: not an ioftpd problem. There are settings in your router that should forward the ports needed (all the time). If this is not present, then you just bought one of the worst routers i have ever heard of. Consult your router manual for (port forward, virtual server..etc)

Yil
08-10-2012, 07:42 AM
You try something like http://www.pcwintech.com/port-forwarding-tp-link-tl-wr1043nd-tp-link-firmware? That seems to indicate you can forward ports so long as you locally assign your PC a static IP (i.e. 192.168.1.10). That's a very common requirement as most routers won't forward by name.

crl2007
08-10-2012, 09:20 AM
I'm starting to think that the DHCP is to blame. I use a DHCP server and I have an automated IP adress (192.168.XXX.XXX). I'll stop DHCP and add a manual ip.


LE: The same story. ioFTPD is the only software that doesn't work. I forwarded the ports correctly, this is not my first router. But I don't think this is the main issue, because canyouseeme.org can't connect on my forwarded ports either. It can connect only on my utorrent port and that's because utorrent is already using it. If no application uses a specified port, the port isn't open. Or I don't know how to set this router.

crl2007
08-10-2012, 01:31 PM
I tried Cerberus FTP Server Trial and it worked. Cerberus also works as a service. So the issue seems to be my skills in configuring ioFTPD to bind to localhost/local ip. If you could help me by pointing out what to do would be much appreciated. I see that Cerberus is binded to both localhost and local IP.

Thanks in advance.

crl2007
08-10-2012, 02:05 PM
Solved the initial issue: I binded the external ip 188.XXX.XXX.XXX to the local one 192.168.XXX.XXX and the ftp server accepts connections. Now I stumbled into another issue. I receive the following error when logging in to ioGUI.

3:28:16 wSock_Error() -> Connection is forcefully rejected (10061)
23:28:16 ----------- connection closed -----------

crl2007
08-10-2012, 02:13 PM
nvm, double post.


LE: Solved everything. Thanks for your answers.

ArtX
09-11-2012, 02:02 PM
Any ETA on a new update? :)

o_dog
09-11-2012, 03:00 PM
in order for updates to be released, bugreports needs to be filed. You all had all summer, and not alot of people bothered. Right now i'm busy IRL so updates will come when they come. Please file bug reports though.

ArtX
09-11-2012, 11:56 PM
I was asking about ioFTPD not ioNINIJA

Yil
09-12-2012, 12:56 AM
Hmm, I guess it has been a long time since I've released anything after things got pretty stable... I'm pretty busy over the next month or so but after that I'll get back to work, but I'm not sure on what. I started played around with a C# library early this year and toyed with the idea of a ioGUI replacement built on top of that, but I found some issues / missing features that it appeared Microsoft would be fixing with .NET 4.5 so I decided to wait to see how that would turn out. It came out Aug 15th and will be in win8, but annoyingly they decided not to support XP SP3. That's not a deal breaker, but I was hoping the final would include that even if the betas didn't. More annoying to me was the whole direction, or lack of it, MS is taking. Nobody has a flaming clue what is going to be further developed these days. What's the future of C# XAML, etc? I was hoping to hear some positive notes about what MS sees as the future, but so far they keep talking HTML5 and all this WinRT stuff but that doesn't really seem like a good fit for line-of-business type apps at the moment. I'd hate to develop a whole UI just to see the effort wasted in a few years.

The other reason I'd like a GUI is to handle some new features easier. The first version would just show users, etc, but eventually things like the task scheduler, bandwidth limiting (rule driven), user-flag definitions, host/FXP bans, etc would, in my mind, be handled much easier with a UI. I wasn't planning on dumping the .ini files though, the UI would just edit the config through the server which could write the .ini file back out.

The HUGE HUGE HUGE benefits a better ioGUI could make is pretty tempting reason to write one. You could for instance get all sorts of useful info out of the server in a pretty format (that's why I wanted XAML). But even better is the configuration help because ioGUI could apply some sanity checking to .ini settings which is needed and provided feedback on what rules apply where, etc. The whole .vfs editing thing would be much cleaner too.


Anyway, I was hoping for some new features and commitment from MS and didn't really get most of it. None of that stops me from releasing new ioFTPD versions though, and no reason I can't hold off on some of the bigger stuff and get all stuff I've done already out there.

On the other hand, I really haven't seen many bug reports. I've obviously fixed a whole pile I've uncovered, but I'd really appreciate it if people would let me know what's broke.

o_dog
09-12-2012, 02:05 AM
I was asking about ioFTPD not ioNINIJA

sorry, forgot i was suscribing to this thread. =)

IUnknown
09-29-2012, 03:37 AM
Hmm, I guess it has been a long time since I've released anything after things got pretty stable... I'm pretty busy over the next month or so but after that I'll get back to work, but I'm not sure on what. I started played around with a C# library early this year and toyed with the idea of a ioGUI replacement built on top of that, but I found some issues / missing features that it appeared Microsoft would be fixing with .NET 4.5 so I decided to wait to see how that would turn out. It came out Aug 15th and will be in win8, but annoyingly they decided not to support XP SP3. That's not a deal breaker, but I was hoping the final would include that even if the betas didn't. More annoying to me was the whole direction, or lack of it, MS is taking. Nobody has a flaming clue what is going to be further developed these days. What's the future of C# XAML, etc? I was hoping to hear some positive notes about what MS sees as the future, but so far they keep talking HTML5 and all this WinRT stuff but that doesn't really seem like a good fit for line-of-business type apps at the moment. I'd hate to develop a whole UI just to see the effort wasted in a few years.

The other reason I'd like a GUI is to handle some new features easier. The first version would just show users, etc, but eventually things like the task scheduler, bandwidth limiting (rule driven), user-flag definitions, host/FXP bans, etc would, in my mind, be handled much easier with a UI. I wasn't planning on dumping the .ini files though, the UI would just edit the config through the server which could write the .ini file back out.

The HUGE HUGE HUGE benefits a better ioGUI could make is pretty tempting reason to write one. You could for instance get all sorts of useful info out of the server in a pretty format (that's why I wanted XAML). But even better is the configuration help because ioGUI could apply some sanity checking to .ini settings which is needed and provided feedback on what rules apply where, etc. The whole .vfs editing thing would be much cleaner too.


Anyway, I was hoping for some new features and commitment from MS and didn't really get most of it. None of that stops me from releasing new ioFTPD versions though, and no reason I can't hold off on some of the bigger stuff and get all stuff I've done already out there.

On the other hand, I really haven't seen many bug reports. I've obviously fixed a whole pile I've uncovered, but I'd really appreciate it if people would let me know what's broke.

Many people jumped on the conclusion that .NET will be somehow dropped in favor of WinRT coming, but the whole ecosystem .NET & WPF won't go away soon. .NET will still be there for Desktop applications, so I would not mind about this whole RT thing and just continue the effort in .NET.

zag2me
11-15-2012, 06:14 AM
Nice new ioGUI would be cool ;)

It looks like it was built in 1990 right now! :D

hennie1nl
11-15-2012, 06:35 AM
ioGui2 seems to have stopped working...could this be fixed somehow please?

---------------------------
ioGui2
---------------------------
Run-time error '35613':

ImageList must be initialized before it can be used
---------------------------
OK

Yil
11-17-2012, 09:15 AM
hennie1nl: No idea on that runtime error for ioGui. I've never seen it or even heard of it... Any chance this is under win8 or something?

hennie1nl
11-18-2012, 10:47 AM
Thanks for the fast reply Yil.

It's under windows 7 ultimate sp1 64 bit.
I really hope it can be fixed.
Thanks again!

Yil
11-18-2012, 03:17 PM
hennie1nl: I think you have a problem with the .ocx files. Try re-registering the 2 .ocx files in the ioGUI directory and that should hopefully fix your problem. Here's the relevent portion of the README file.

8) You can use the very-old, but still working, ioGUI application to see who
is online and modify user accounts with a simple GUI. It can be found
under ioFTPD\ioGUI\ioGui2.exe. Under Vista and later operating systems
you'll probably have to register the old visual basic .ocx files or else
you will get an error like:
"Component 'mscomctl.ocx' or one of its dependencies not correctly
registered: a file is missing or invalid."
To fix this you need to open up an administrator command prompt. Right
click on
start menu->all programs->accessories->command prompt
and then choose "run as administrator" and click yes if it prompts you.
Then perform the following commands:
cd \ioFTPD\ioGUI (or wherever you installed it)
regsvr32 MSWINSCK.OCX
regsvr32 MSCOMCTL.OCX
You should get a popup window indicating success after each regsvr32 cmd.

PSA9
11-23-2012, 12:51 PM
hennie1nl: I think you have a problem with the .ocx files. Try re-registering the 2 .ocx files in the ioGUI directory and that should hopefully fix your problem. Here's the relevent portion of the README file.

8) You can use the very-old, but still working, ioGUI application to see who
is online and modify user accounts with a simple GUI. It can be found
under ioFTPD\ioGUI\ioGui2.exe. Under Vista and later operating systems
you'll probably have to register the old visual basic .ocx files or else
you will get an error like:
"Component 'mscomctl.ocx' or one of its dependencies not correctly
registered: a file is missing or invalid."
To fix this you need to open up an administrator command prompt. Right
click on
start menu->all programs->accessories->command prompt
and then choose "run as administrator" and click yes if it prompts you.
Then perform the following commands:
cd \ioFTPD\ioGUI (or wherever you installed it)
regsvr32 MSWINSCK.OCX
regsvr32 MSCOMCTL.OCX
You should get a popup window indicating success after each regsvr32 cmd.

If u open ioGUI2 it will not open cause it says u missing some files, fix is this!

Easier method is Right click on ioGUI2, Click Properties, Click Compatibility tab
check Run this Program as an administrator, click apply then OK!

run ioGUI2 then close it and Right click again on ioGUI2, Click Properties, Click Compatibility tab
uncheck Run this Program as an administrator, click apply then OK!

From here on out it will work fine!

:confused:Yil anyway i could get the flashFXP ioFTPD command set?

:eek: Its been couple of years since i got to play with ioFTPD and ioNiNJA
:eek: Yil is still friendly while o_dog still hard head and troublesome
:eek: Much respect to the both of you tough
:eek: any grips i had about ioFTPD was fixed and added plus much more
:eek: any grips i had about ioNiNJA i had trouble getting o_dog to add as
:eek: he always said it was useless but they all have been added so i happy
:eek: cause now i dont have to edit the script when new updates come out
:eek: i have a feature i want in ioNiNJA but i going to wait till my 3 12.7TB
:eek: raid setup is 100% completely up and running and then i will add to
:eek: the script and see if i could get o_dog to add it!
:eek: any bugs with ioFTPD ill let u know Yil but seems to work perfect thus far

Yil
11-23-2012, 02:55 PM
PSA9: I was working on a new one built around the new 'site user -- -+ -=' ability to add/remove/view matching users and then operate on them as a group with other commands but the final version wouldn't be ready to v8 (some of it's in v7.7 and you can use it now) so I decided to wait until then to release everything together.

Try this Zer0Racer version now:

o_dog
11-27-2012, 11:23 AM
PSA9: Nice, insulting me is the way to go to get features added.

PSA9
11-27-2012, 12:17 PM
o_dog: I have much respect for Yil and You cause without ioFTPD and ioNiNJA i would be without a windows solution that performes like SCENE FTP TOPSITES! I meant no disrespect from what i wrote! Its been a long time since i played with ioFTPD and ioNiNJA and i am very impressed! Features i asked for back then that u refused to add are now in the script! I seen others asking for features in recent post! Its good o_dog much respect!

PSA9
11-28-2012, 06:53 AM
[R] 500 'STOR': Command failed. (pre-cmd-event script)

Can someone tell me if this is ioFTPD or ioNiNJA causing this?

Yil
11-28-2012, 01:16 PM
The error is a failing script registered for the STOR command under the [FTP_Pre-Command_Events] section of the .ini file. Both nxTools and ioNinja I believe have such events so the first thing I'd look at is the logs/SystemError.log file as such failures usually are the result of an exception being thrown by the script that isn't caught. Also check out the other logfiles in case the problem is a bad path to the script, etc. At a minimum you can figure out which of the 2 is the problem by commenting one or the other out.

PSA9
11-29-2012, 05:35 AM
Scripts are disabled and did a start and stop and logs are as followed

Error.log
11-29-2012 04:10:14 Unable to open/parse pre-load VFS file: DISABLED

ioFTPD.log
11-29-2012 04:10:14 SSL: "Found certificate" "name=ioftpd.ftpserver.biz" "Service=FTP_Service" "Device=Any" "(HOST=)"
11-29-2012 04:10:14 START: "PID=4456" "CmdLine="
11-29-2012 04:10:14 PRELOAD: "begin" "..\etc\default.vfs"
11-29-2012 04:10:14 PRELOAD: "points=5" "..\etc\default.vfs"
11-29-2012 04:11:02 STOP: "PID=4456"

other logs are blank

default.vfs
"O:\_" /
"S:\Apps" /Apps
"M:\Books" /Books
"S:\Games" /Games
"S:\Movies" /Movies

o_dog
11-29-2012, 11:27 AM
have the scripts enabled instead, that might actually tell you whats wrong.

zag2me
12-11-2012, 11:31 AM
I just moved to a VFS file system with some extra drives but now I get this error message when uploading any file.

[R] 550 film.rar: Permission denied (config file).
Upload: film.rar 47.68 MB in 3 seconds (18.60 MB/s)

Any idea whats up?

PSA9
12-11-2012, 11:50 AM
I just moved to a VFS file system with some extra drives but now I get this error message when uploading any file.

[R] 550 film.rar: Permission denied (config file).
Upload: film.rar 47.68 MB in 3 seconds (18.60 MB/s)

Any idea whats up?

U changed the VFS setup but forgot to edit ioNiNJA Config file to work with the change! Also in my case I would need to edit ioFTPD.ini

zag2me
12-11-2012, 12:57 PM
Thanks, I updated ioNINJA to beta 4 and also found an answer in this post

https://oss.azurewebsites.net/forum/81626-post6.html

ArtX
12-21-2012, 05:27 PM
so 2013 will be the year of ioFTPD 8 ?;) :D :p

PSA9
01-08-2013, 03:53 AM
Yil Thanks very much for your work on ioFTPD it works as a charm! The only troubles i have is with the buggy ioNiNJA. Some things with ioNiNJA work like a charm while others is just buggy! So i not sure if the crashes are caused from ioFTPD, ioNiNJA, or my PC Setup

I have 7 MINIDUMP, 7 TINYDUMP, CRASH-log, Debug, Error files

Would u like me to upload them to u or u Prefer me to wait? If so how and where!

I will give u a general idea of my pc setup which is a lil more extreme them most users!

C:\ OCZ Vertex 3 Max IOPS 240GB SATA 6Gb/s 2.5" Solid State Drive (SSD) with up to 550MB/s read and 65k IOPS write

Adaptec Raid 3805 connected to
Dual chenbro sas expander ck13601 connected to
48 Western Digital WD10JPVT 1TB setup as 3 RAID 5EE

MEDIA
M:\ RAID 5EE with 16 1tb hd with GPT (GUID Partition Table)
OTHER
O:\ RAID 5EE with 16 1tb hd with GPT (GUID Partition Table)
STORAGE
S:\ RAID 5EE with 16 1tb hd with GPT (GUID Partition Table)

MxxCon
01-08-2013, 09:40 AM
Holy-Piracy-Batman :/

Yil
01-09-2013, 01:28 PM
If you are experiencing crashes then it's ioFTPD/window's fault and I'm more than happy to look into it. ioNiNJA is TCL and in theory can't cause crashes directly which is one benefit to scripting languages.

I'll PM you info about sending the crashlogs and I'll see what I can turn up.

I'm not currently aware of any crashing issues with the server. I have identified some specific scenarios that can still lock it up under win2k3 but that doesn't cause a crash.

PSA9
01-10-2013, 02:58 PM
I deleted all the minidumps, tinydumps, etc from the logs directory except ioFTPD and xferlog

If i delete or decide to erase anything out of ioFTPD and/or xferlog will it effect in any way ioFTPD or ioNiNJA?

CLNT FlashFXP 4.2.5.1813
200 Noted.
PWD
257 "/" is current directory.
TYPE A
200 Type set to A.
PASV
227 Entering Passive Mode (192,168,20,10,21,73)
Opening data connection IP: 192.168.0.192 PORT: 5449
LIST -alT
150 Opening ASCII mode data connection for directory listing.
226-[UL: 2732.4GB] [DL: 27.4GB] [Speed: 123.4KB/s] [Free: 13346139MB]
226 [Section: Default] [Credits: 0.0MB] [Ratio: Leech]
List Complete: 1 KB in 0.31 second (1.0 KB/s)
Calculating timezone offset of server...
MDTM msdia80.dll
213 20061202053714
Timezone offsets: Server: 0 seconds. Local: -21600 seconds. Difference: -21600 seconds.
msdia80.dll is in the root of my ftp and i have no clue how it got their! I know for sure it wasn't their for most of the dumps but was their for the last few! Do u know what that file is Yil? i want to delete it but not sure if its from ioFTPD or ioNiNJA or got their some other weird way! But i letting u know about it for incase it helps! Also in the log u can see
Calculating timezone offset of server... MDTM msdia80.dll

Yil
01-10-2013, 11:33 PM
http://support.microsoft.com/kb/927665 says it's dumped there by mistake when installing the C++ 2005 runtime.

ioFTPD uses the C++ 2008 runtime so it shouldn't care, but something you've probably installed on your system does need it. Check the MS page which tell you were to move the file and how to re-register it so it won't show up on the FTP.

Stardog
04-11-2013, 09:40 AM
Wow, can't believe ioFTPd is now open sourced. Did Dark0ne finally get a paying job?

SRH99
10-02-2013, 04:01 PM
Yil, you hopefully soon reveal the new ioFTPD v8 although v7 is running great. Were always desperate to get new and fancy features, whatever they are. :D
O_dog, very sad to hear about your accident, I wish you a swift and fast recovery.

I have some speed issues with ioFTPD, I could use some advise. Strangely, io seems to be stuck at approx. 200mbit speed. Simplex it is steady at 200mbit regardless of up or download transfer. At duplex transfer is all over the place, sometimes 150 up and 50 down, sometimes the other way around, but never 200mbit both ways at the same time. Measure is done with and without ssl, as ftp and fxp. From LAN and WAN but still the same. Never beyond 22mb/sec. Secondary logins doesn’t change overall speed at bit.

Lan and harddrives tested from explorer, preforms ok, approx. 850mbit duplex.

CPU i7, LAN intel Gigabit GT both ends, hardware RAID5.

Please advise..

Yil
10-03-2013, 03:45 PM
SRH99: I'm a bit surprised that you see the same limit on WAN and LAN especially with multiple logins without using SSL. Have you tried uploading/downloading a file locally via the 127.0.0.1 interface? The loopback address should show you the max speed you can expect without actually using the network. I think in my testing I was getting 40-50mb/sec per connection (with SSL even I think) on my machine with ioftpd sending to ioftpd so long as I didn't up/down using the same disks so there isn't any magic 200mb/sec limit I'm aware of.

When testing your local LAN are you using a 192.168.x.y addr or are you using your external IP addr if behind a NAT router? The reason this is important is that using the external IP addr makes the router process the packets just like any other WAN connection and I believe most home routers can't handle 200mb+ traffic. They claim they're gbit but that's only for local traffic. They skimp on the CPU to save costs so when they have to process firewall rules, bandwidth limits, etc it causes everything to slow down. Try googling your particular router. In fact, I'm not aware of any router (except maybe the newest AC varieties) that get even 600mb/sec external traffic with most modems in the 200mb/sec effective range. When you mentioned the varying speeds with both up/down traffic that's a pretty sure sign of a limited resources somewhere (the router CPU being one possibility).

The way to use a LAN ioFTPD server is to set the address to 192.168.x.y in FlashFXP, etc and enable the Use Site IP for PASV connection option in the site settings. This tells your client to ignore the IP address given in the PASV command response (which would be your external IP so everyone else gets the correct answer) but you know you can get to it directly so you just use the locally routed IP. This should eliminate all firewall rules in your router which helps speed things up, just make sure you don't have speed limiting enabled for particular hosts on the local LAN in your router configuration. I doubt you'll get that feature unless you're using custom firmware like tomato, etc. NOTE: You'll have to add the 192.168.x.y host to your hostmask if not already there, and you won't be able to use PORT connections (non-passive mode) unless you relax your Deny_Port_* rules which I don't recommend since you should be using passive mode anyway. By default ioftpd is prohibited from talking to itself locally because of these rules. That is considered a safety feature and operating as intended.

SRH99
10-04-2013, 01:36 AM
Yil, first thank you for your fast answer. I am very grateful of your work and efforts in making ioFTPD the server to use. Further, I would like to show my appreciations and donate a few bucks. If it is possible to do so, could you PM me with details.

The router is a tweaked Asus RT-AC66U so it should be able to deliver more than 200mbit, even through NAT. Anyway, it’s tested using 192.168.xx with same results. Last night I even build and tested with a pfSense firewall, just to take the router out of the equation. Still the same.

With the 40-50mb/s speed you mentioned in mind, it only leave the hard drives to blame. I decided to break down the Raid and test each disk by itself. It seems that two drives is faulty, only delivering very low transfer speeds, very low indeed. SMART says they are all good, and individually the transfer data as expected, but in Raid the performance is ridiculous. I think I’ve might found the answer to the problem :)

brgds..

Yil
10-04-2013, 01:09 PM
Nice work figuring out it's the RAID at fault! Definitely not the first thing I would think would be the issue. In my experience SMART as a pass/fail is pretty poor. Usually I know a drive has serious issues before SMART claims it's failing. However, individual SMART attributes are really good to look at especially when watching trends! I've had some experience with drives developing bad blocks which get marked as pending before actually failing. Performance suffers when accessing them but the dumb drive won't remap the sectors until they are written to. The worst is when the pending blocks are part of the filesystem and not an actual file with performance taking minutes to access files... Bleck.

Check out Hard Disk Sentinel. There are other SMART monitoring tools including a number of free ones, but that's the only program I know that handles USB external drives. Useful to know if your external backup drive is having issues :) Anyway, grab a trial or something and see if any of the raw smart DATA varies between the drives that look good and those that don't. Should be very similar data since they are RAIDed drives.

I usually use WD Green drives as internals for bulk storage even though their performance isn't the greatest since they run cool. However WD intentionally makes those drives have huge bad block timeouts. They do that so people buying lots of drives for RAIDs will buy WD Red's (same drive, more money, small timeout). Seems like that should just be a jumper option to me or something. I'm not sure how your RAID handles a single drive not responding because of bad blocks. Some drop the drive from the array, other work around it for a while, etc. I'm sort of surprised you won't see warning messages from the RAID controller somewhere though.

Rusher
12-10-2014, 12:36 PM
just wanted to share a problem i had..

noticed my symlinks didnt show as symlinks one day. was visible as regular directories but when i entered them they redirected me as a symlink. but if i deleted the directory it started deleting the target of that link.
anyways the problem was that in ioftpd.ini i had set
No_SubDir_Sizing = True

because i dont want io to size all directories. this seems to have messed upp the symlinks. so i commented ut out as it is default. and now symlinks works perfect again.
so seems i have to live with io sizing my dirs..

TeRRaNoVA
12-20-2014, 03:41 PM
can anyone help me with this error?,

posted here: Runtime Error on site pre cmd - FlashFXP Forums (https://oss.azurewebsites.net/forum/ioftpd/ioftpd/ioftpd-beta/ioftpd-general/16456-runtime-error-site-pre-cmd.html)

thx

Prodigy
01-04-2015, 12:41 PM
@Yil
I have got build error (http://pastebin.com/13YvyVzf)when using visual studio 2008 sp1 :

1>IoDebug.c
1>.\src\IoDebug.c(550) : error C2039: 'Eip' : is not a member of '_CONTEXT'
1> C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h(2830) : see declaration of '_CONTEXT'
1>.\src\IoDebug.c(552) : error C2039: 'Ebp' : is not a member of '_CONTEXT'
1> C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h(2830) : see declaration of '_CONTEXT'
1>.\src\IoDebug.c(554) : error C2039: 'Esp' : is not a member of '_CONTEXT'
1> C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h(2830) : see declaration of '_CONTEXT'
1>.\src\IoDebug.c(707) : error C2039: 'Eip' : is not a member of '_CONTEXT'
1> C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h(2830) : see declaration of '_CONTEXT'
1>.\src\IoDebug.c(709) : error C2039: 'Ebp' : is not a member of '_CONTEXT'
1> C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h(2830) : see declaration of '_CONTEXT'
1>.\src\IoDebug.c(711) : error C2039: 'Esp' : is not a member of '_CONTEXT'
1> C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h(2830) : see declaration of '_CONTEXT'



1>.\src\Buffer.c(338) : error C2143: syntax error : missing ')' before 'type'
1>.\src\Buffer.c(338) : error C2059: syntax error : ')'
1>.\src\Buffer.c(341) : error C2143: syntax error : missing ')' before 'type'
1>.\src\Buffer.c(341) : error C2059: syntax error : ')'
1>.\src\Buffer.c(344) : error C2143: syntax error : missing ')' before 'type'
1>.\src\Buffer.c(344) : error C2059: syntax error : ')'
1>.\src\Buffer.c(347) : error C2143: syntax error : missing ')' before 'type'
1>.\src\Buffer.c(347) : error C2059: syntax error : ')'
1>.\src\Buffer.c(358) : error C2143: syntax error : missing ')' before 'type'
1>.\src\Buffer.c(362) : error C2181: illegal else without matching if
1>.\src\Buffer.c(368) : error C2143: syntax error : missing ')' before 'type'
1>.\src\Buffer.c(379) : error C2143: syntax error : missing ')' before 'type'
1>.\src\Buffer.c(395) : warning C4267: '=' : conversion from 'size_t' to 'DWORD', possible loss of data
1>.\src\Buffer.c(458) : error C2143: syntax error : missing ')' before 'type'
1>.\src\Buffer.c(653) : error C2046: illegal case
1>.\src\Buffer.c(655) : warning C4244: 'function' : conversion from '__int64' to 'DWORD', possible loss of data
1>.\src\Buffer.c(660) : error C2059: syntax error : '}'
1>.\src\Buffer.c(668) : error C2061: syntax error : identifier 'FormatStringW'
1>.\src\Buffer.c(668) : error C2059: syntax error : ';'
1>.\src\Buffer.c(668) : error C2059: syntax error : 'type'

Is there any chance moving into 64 bit and visual studio 2013?

Yil
01-08-2015, 04:12 AM
I've been using VS 2008 to build with and it works fine. I'm not sure why you would be seeing those build errors. I believe I've also used VS 2010 when working on v8 so that should work as well and I don't see any reason why 2012/2013 wouldn't work either as this is just C code and not C++ stuff. x64 would require a lot of work in my opinion though I'd love to do it just to get better encryption performance out of OpenSSL. However it would probably break any existing shared memory add-ons. I was actually willing to do that but I figured if I was going to break stuff I'd want a much nicer interface to replace it with and that was one of the sidetracks I got off on when playing with v8.

The IoDebug.c stuff has to do with crashlog generation. That requires you have installed the Window Debug kit so you have dbghelp.dll and it's headers plus you might need the Windows Platform Kit/headers as well. Can you check to see if you have those installed?

Yil
01-08-2015, 04:14 AM
Oh and you'll also need TCL/OpenSSL or course. I think there should be .txt files in the source explaining what I did with both and the changes to the TCL source to prevent socket handle inheritance problems with EXEC scripts.

Prodigy
01-08-2015, 04:19 AM
Thanks again Yil, managed to compile it on visual studio 2013, viewing around openssl.c and cannot managed to generate 4096 bits certificate, in which function does the openssl with bits options to generate the certificate?, or is it not possible by ftp ssl design ?.

Do you have any plan to hosting the source code in github ?, ioftpd surely need more exposure, hence it will be possible to add more peoples to realize x64.

Yil
01-08-2015, 06:09 AM
Check out MakeCert in OpenSSL.c, in particular you'll want RSA_generate_key_ex() to up it from 1024 to whatever. I honestly don't know if using 4096 bits is supported everywhere though. I think I remember reading google was going to 2048 with their public cert so I would assume most encryption libraries can handle that, but just can't say for sure with 4096 but I think it should be OK.

Given that so few (maybe you and one other person) have even tried to compile the code I've just been lazy with using a code repository. If you do find yourself doing more than tweaking the cert size I'll see about putting it online somewhere.

The one other thing I think you'll want to look at is the GetSslOptionBit() function. I'm not a big OpenSSL user so I really don't know if there is a built-in library function to parse text into bits so I wrote that one. There is obviously one to take the wanted cypher text and generate a list of cypers from that, but I didn't see one for options but the docs kinda suck. I think I even searched the code for some of the rare text strings and didn't turn up any conversion function but they may have added one or I just missed it. The obvious issue is it's probably missing a new option or three by now so I'd update that since you're likely using the latest OpenSSL libs.

Prodigy
01-08-2015, 06:30 AM
Thanks alot Yil!, btw how is v8 going?

Prodigy
01-09-2015, 07:21 AM
@Yil
Can you please attach in here your modified TCL source code?, it seems i have modified it wrongly.

What is the cause of

[18:02:59] [R] 530 Login failed: Error with VFS file.


I have recheck that the file it's there and i have modified & customize it.

LuffarJoh
03-17-2015, 02:34 AM
The links in the first post are dead. Any mirrors?

zombies
04-14-2015, 06:16 AM
The links in the first post are dead. Any mirrors?

https://web.archive.org/web/20140825160136/http://home.comcast.net/~yil/ioFTPD-v7.7.3.zip
https://web.archive.org/web/20121002221013/http://home.comcast.net/~yil/ioFTPD-v7.7.2.zip

urskog
07-28-2015, 10:04 AM
Have anyone tested ioftpd in Windows 10 yet and know if its working as it should?

Yil
07-29-2015, 02:38 PM
I haven't tested with windows 10, but it should work. You might need to install the VS2008 runtime from Download Microsoft Visual C++ 2008 Redistributable Package (x86) from Official Microsoft Download Center (http://www.microsoft.com/en-us/download/details.aspx?id=29) if for some reason they aren't shipping it with that pre-installed.

We can always recompile it if necessary though :)

Seems my stupid ISP stopped supporting personal ftp/web pages for it's users so I will have to upload the source and builds somewhere else.

A couple of people have noticed slower transfer speeds on >100mbit connections. I will try to look into this.

urskog
07-31-2015, 03:03 AM
Still running ioftpd 7.0.3 here, never really seem to find the time to update it so I'm a bit anxious about updating to win 10 in case ioftpd should stop working for any reason.

TeRRaNoVA
09-01-2015, 09:53 AM
I haven't tested with windows 10, but it should work. You might need to install the VS2008 runtime from Download Microsoft Visual C++ 2008 Redistributable Package (x86) from Official Microsoft Download Center (http://www.microsoft.com/en-us/download/details.aspx?id=29) if for some reason they aren't shipping it with that pre-installed.

We can always recompile it if necessary though :)

Seems my stupid ISP stopped supporting personal ftp/web pages for it's users so I will have to upload the source and builds somewhere else.

A couple of people have noticed slower transfer speeds on >100mbit connections. I will try to look into this.

Io on Windows 10 Works fine!

urskog
09-02-2015, 09:33 AM
Io on Windows 10 Works fine!

Even certs for SSL?

TeRRaNoVA
09-02-2015, 10:08 AM
Even certs for SSL?

yes olso the SSL work!

Robert_ack
09-02-2015, 03:41 PM
guys sorry for disturb i even created a thread about this but maybe is in wrong section and no one havein a look at it... i need to know to pass parameter to an exe when it is launched by a triggered OnUploadComplete Event of ioftpd

im using ioninja with ioftpd latest stable .

i need to lunch an exe and attach to it path and file name of the uploaded file

for example

when upload of rncr.part1.rar of Release.name.x264.blah.blah-CREW is complete i need that the triggered events executes my exe and passes it path and file name

so in this case on rncr.part1.rar complete
run ..path/to/my/exe/myexe.exe /path/to/Release.name.x264.blah.blah-CREW/rncr.part1.rar

Robert_ack
09-02-2015, 03:44 PM
hello ,sorry to disturb , i already posted this but maybe is in wrong section sonot gettin visibility so here i post it here hopeing someone can help me ! thank you in advance! i need that my ioftpd executes an exe on event OnUploadComplete starts an exe with argument the path and filename including its extension of the file that caused the event

i know how to start the exe but i dont know how to make it getting those arguments . is there any way to achieve this ?



result should be something like this

file uploaded to site: /pwd/rel/filename.part1.rar

ioftpd says windows to exec myexe.exe /pwd/rel/filename.part1.rar"


so far i have achived (very easily)

file uploaded to site: /pwd/rel/filename.part1.rar

ioftpd says windows to exec myexe.exe

by adding the event on ioftpd.ini


is there a way to make it send the parameters ? regards

Prodigy
09-20-2015, 12:21 AM
I am on windows 10 x64, for strange thing i am getting slow upload speed from the ioFTPD, max speed that i have got only around ~1500 KBps in the same subnet.

My connection is connected through a wifi, the transfer was done using ftprush on windows 7 x64, is there anything i can do increase the upload speed?.

@Robert_ack
I suppose you could done it by

OnUploadComplete = EXEC myexe.exe %[environment(PATH)]

Don't know if %[environment(PATH)] variable will include filename along with the real path. More environment variables available in ..\etc\ioftpd.env .

@Yil
Maybe Yil, could you please add the real path + filename as the environment variables?. Maybe naming it fullpath.

Prodigy
09-24-2015, 07:36 AM
@Yil
Found out a bug, if let say a user edited "Active_Services" under [Network] on ioFTPD.ini to other name other than FTP_Services and forgot to rename service name on above line "# FTP SETUP #", ioFTPD will crash with a crash dump. As it will failed to recognize proper "Active_Services" in which in this case the user forgot to rename it as the same as in the Active_Services.

I think ioFTPD should log and handle with like "Cannot found "ServiceName" Active_Services", and gracefully exit the process.

Another bug, ioFTPD will crashes without a crash dump when executing "Site Drives" command from nxtools 1.2.1. Looks like it's a buffer overrun :

************************************************** *****************************
* *
* Exception Analysis *
* *
************************************************** *****************************

*** WARNING: Unable to verify checksum for C:\ioFTPD\system\tcl85tg.dll
*** WARNING: Unable to verify checksum for C:\ioFTPD\lib\nxHelper\nxHelper.dll
*** WARNING: Unable to verify checksum for C:\ioFTPD\system\ioFTPD.exe

FAULTING_IP:
ucrtbased!issue_debug_notification+30 [d:\th\minkernel\crts\ucrt\src\appcrt\internal\repo rt_runtime_error.cpp @ 125]
0fe08500 cc int 3

EXCEPTION_RECORD: (.exr -1)
ExceptionAddress: 0fe08500 (ucrtbased!issue_debug_notification+0x00000030)
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 1
Parameter[0]: 00000000

FAULTING_THREAD: 000026ec

DEFAULT_BUCKET_ID: STATUS_BREAKPOINT

PROCESS_NAME: ioFTPD.exe

ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached.

EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid

EXCEPTION_PARAMETER1: 00000000

NTGLOBALFLAG: 0

APPLICATION_VERIFIER_FLAGS: 0

APP: ioftpd.exe

ANALYSIS_VERSION: 10.0.10240.9 x86fre

BUGCHECK_STR: STATUS_BREAKPOINT

LAST_CONTROL_TRANSFER: from 0fe086a1 to 0fe08500

STACK_TEXT:
02efb8ec 0fe086a1 0fd82fe4 50c6d6b8 00000000 ucrtbased!issue_debug_notification+0x30
02efb904 0fe22b8a 0fd82fe4 896eb4a8 02efb940 ucrtbased!__acrt_report_runtime_error+0x11
02efb914 50bede0e 02efbcdc ffffffff 77cf8b24 ucrtbased!abort+0x1a
02efb940 50bedc0e 50c7035c 02efb980 02efb960 tcl85tg!Tcl_PanicVA+0x1ce
02efb954 50c057d3 50c7035c 50c70348 02efbcdc tcl85tg!Tcl_Panic+0x1e
02efb96c 77c506db 04463510 77cf8b24 ffffffff tcl85tg!Tcl_SetStringObj+0x23
02efbcc4 50b36930 00000000 026ea478 00000004 nxHelper!VolumeObjCmd+0x28b
02efbd78 50b9641e 026ea478 00000004 043dae20 tcl85tg!TclEvalObjvInternal+0x350
02efd358 50bfdc05 026ea478 04ae86c8 02efd3bc tcl85tg!TclExecuteByteCode+0x20ee
02efd388 50bfd53d 026ea478 04462f28 00000001 tcl85tg!TclObjInterpProcCore+0xb5
02efd3a4 50b36930 04b08a40 026ea478 00000001 tcl85tg!TclObjInterpProc+0x4d
02efd458 50b9641e 026ea478 00000001 043dad64 tcl85tg!TclEvalObjvInternal+0x350
02efea38 50bfdc05 026ea478 04b3a050 02efea9c tcl85tg!TclExecuteByteCode+0x20ee
02efea68 50bfd53d 026ea478 04463060 00000001 tcl85tg!TclObjInterpProcCore+0xb5
02efea84 50b36930 027d2e30 026ea478 00000002 tcl85tg!TclObjInterpProc+0x4d
02efeb38 50b34f90 026ea478 00000002 043dab58 tcl85tg!TclEvalObjvInternal+0x350
02efec6c 50b335a0 026ea478 04b2a3e0 000084c9 tcl85tg!TclEvalEx+0x9f0
02efec90 50bd0570 026ea478 04b2a3e0 000084c9 tcl85tg!Tcl_EvalEx+0x20
02efed38 50bcfc52 026ea478 044627f0 00000000 tcl85tg!Tcl_FSEvalFileEx+0x2f0
02efed4c 50bcde02 026ea478 044627f0 cccccccc tcl85tg!Tcl_FSEvalFile+0x12
02efed6c 00484e13 026ea478 027ee144 02eff17c tcl85tg!Tcl_EvalFile+0x42
02eff0bc 004842f4 02eff154 02eff138 00000000 ioFTPD!TclExecute2+0xb13
02eff0d4 0041b48c 02eff154 02eff138 02effe64 ioFTPD!TclExecute+0x14
02eff17c 00426d41 02effe40 02efff4c 02effe88 ioFTPD!RunEvent+0x34c
02effe64 00426972 044cf570 02efff34 00000000 ioFTPD!FTP_AdminCommands2+0x3c1
02effe78 00421e3c 044cf570 02efff34 02efff54 ioFTPD!FTP_AdminCommands+0x12
02efff4c 00489eb5 044cf570 00489a00 00489a00 ioFTPD!FTP_Command+0x66c
02efff80 748a3744 025de878 748a3720 7f92f328 ioFTPD!WorkerThread+0x4b5
02efff94 7776a064 025de878 9f964bee 00000000 KERNEL32!BaseThreadInitThunk+0x24
02efffdc 7776a02f ffffffff 7778d7ee 00000000 ntdll!__RtlUserThreadStart+0x2f
02efffec 00000000 00489a00 025de878 00000000 ntdll!_RtlUserThreadStart+0x1b


FOLLOWUP_IP:
ucrtbased!issue_debug_notification+30 [d:\th\minkernel\crts\ucrt\src\appcrt\internal\repo rt_runtime_error.cpp @ 125]
0fe08500 cc int 3

FAULTING_SOURCE_LINE: d:\th\minkernel\crts\ucrt\src\appcrt\internal\repo rt_runtime_error.cpp

FAULTING_SOURCE_FILE: d:\th\minkernel\crts\ucrt\src\appcrt\internal\repo rt_runtime_error.cpp

FAULTING_SOURCE_LINE_NUMBER: 125

SYMBOL_STACK_INDEX: 0

SYMBOL_NAME: ucrtbased!issue_debug_notification+30

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: ucrtbased

IMAGE_NAME: ucrtbased.dll

DEBUG_FLR_IMAGE_TIMESTAMP: 559f3a99

STACK_COMMAND: ~7s ; kb

BUCKET_ID: STATUS_BREAKPOINT_ucrtbased!issue_debug_notificati on+30

PRIMARY_PROBLEM_CLASS: STATUS_BREAKPOINT_ucrtbased!issue_debug_notificati on+30

FAILURE_PROBLEM_CLASS: STATUS_BREAKPOINT

FAILURE_EXCEPTION_CODE: 80000003

FAILURE_IMAGE_NAME: ucrtbased.dll

FAILURE_FUNCTION_NAME: issue_debug_notification

FAILURE_SYMBOL_NAME: ucrtbased.dll!issue_debug_notification

FAILURE_BUCKET_ID: STATUS_BREAKPOINT_80000003_ucrtbased.dll!issue_deb ug_notification

ANALYSIS_SOURCE: UM

FAILURE_ID_HASH_STRING: um:status_breakpoint_80000003_ucrtbased.dll!issue_ debug_notification

FAILURE_ID_HASH: {873e5c52-b2c0-29e3-e2ff-a9970cd592ad}

Followup: MachineOwner
---------



From the looks of it it seems either tcl or nxhelper module has been crashed?, i have searched about hot-loading dll module in c/c++ and found out about project Aurora (https://github.com/RuntimeCompiledCPlusPlus/RuntimeCompiledCPlusPlus):

Runtime-Compiled C++ is a way to reliably make major changes to your C++ code at runtime and see the results immediately.

So whenever a module/code crashed, it won't crash the whole program, mostly noticeable in game application and telecommunication industry, when user can hot swapping features without restarting the apps. Or for example in other language such as erlang.

Is there any plan to implement project aurora to ioFTPD?.

I am dreaming of ioFTPD for being run for couple of years without crashes, where tcl/modules crashes will be notified and reloading its modules after crash.

jeza
12-22-2015, 01:31 AM
download link is broken...

ioluver
12-22-2015, 05:18 AM
Hello, I wonder if ioFTPD is still being worked on? It's basically the only alternative to glFTPD and it would be sad seeing development stop. I would love to see any kind of update being done (just to know that the project is still alive) but if it's a one-man project and noone is helping out with coding i understand why frequent updates can't be done. I only wish the very best for this project and thanks for all the good work!

riktring
01-01-2016, 08:12 AM
is there a new link to download from please as none of teh link are working

dagnew
02-02-2016, 03:35 PM
I'm trying to get an ftp site up and running. I've used ioftp in the past (version 5) and I would love to get my hands on the latest 7.7.3 build...can someone help me out? Thanks.

Zer0Racer
02-12-2016, 01:43 PM
Try TinyUpload.com - best file hosting solution, with no limits, totaly free (http://s000.tinyupload.com/index.php?file_id=03316828546517297092)

useretail
03-03-2016, 01:25 PM
Hi, can anyone share source code for versions 7.7.2 and 7.7.3 ?

eremini
03-06-2016, 08:46 AM
fyi ioFTPd does not work with latest OpenSSL 1.0.2 or 1.0.1 versions (related to SSlV2 being disabled by default?). Error is "the ordinal 113 could not be located in the dynamic link library". This is a security issue, so perhaps dev can look into it.

Prodigy
04-11-2016, 04:38 PM
@Yil
Is there any chance to update the code and solution files for visual studio 2015 update 2, there is some runtime performance improvement on update 2, i have got compiling error when trying to compile :

1>------ Build started: Project: ioFTPD-v7, Configuration: Release Win32 ------
1> Array.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Buffer.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Change.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Command.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Compare.c
1> ConfigReader.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Crc32.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> DataCopy.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> DataOffset.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> DirectoryCache.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Execute.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> File.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> FtpBaseCommands.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> FtpDataChannel.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> FtpServer.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> FtpSiteCommands.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> GroupFileModule.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> GroupNew.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Help.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> IdDatabase.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Compiling...
1> Identify.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> InternalMessageHandler.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> IoDebug.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> IoProcs.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> IoString.c
1> IoTime.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Locking.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> LogSystem.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Main.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Memory.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Message.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> MessageHandler.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> MessageObjects.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> MessageVariables.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> NewList.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> OpenSSL.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1>src\OpenSSL.c(47): error C2122: 'LPSTR': prototype parameter in name list illegal
1> Permission.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> PWD.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> RemoteAdmin.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> RowParser.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Compiling...
1> Scheduler.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Services.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> sha1.c
1> Socket.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> SocketAPI.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Stats.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Tcl.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Threads.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Timer.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> UserFileModule.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> UserNew.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Who.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> WinErrors.c
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


The code lead to this "typedef void (*TRANSFERPROC)(LPPACKAGETRANSFER, DWORD, DWORD);" . How to fix it?

th3d00d1
04-28-2016, 05:45 AM
@Yil
Is there any chance to update the code and solution files for visual studio 2015 update 2, there is some runtime performance improvement on update 2, i have got compiling error when trying to compile :

1>------ Build started: Project: ioFTPD-v7, Configuration: Release Win32 ------
1> Array.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Buffer.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Change.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Command.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Compare.c
1> ConfigReader.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Crc32.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> DataCopy.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> DataOffset.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> DirectoryCache.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Execute.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> File.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> FtpBaseCommands.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> FtpDataChannel.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> FtpServer.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> FtpSiteCommands.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> GroupFileModule.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> GroupNew.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Help.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> IdDatabase.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Compiling...
1> Identify.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> InternalMessageHandler.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> IoDebug.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> IoProcs.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> IoString.c
1> IoTime.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Locking.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> LogSystem.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Main.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Memory.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Message.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> MessageHandler.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> MessageObjects.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> MessageVariables.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> NewList.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> OpenSSL.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1>src\OpenSSL.c(47): error C2122: 'LPSTR': prototype parameter in name list illegal
1> Permission.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> PWD.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> RemoteAdmin.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> RowParser.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Compiling...
1> Scheduler.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Services.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> sha1.c
1> Socket.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> SocketAPI.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Stats.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Tcl.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Threads.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Timer.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> UserFileModule.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> UserNew.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> Who.c
1>C:\Users\Prodigy\Documents\Works\Compiling\ioFTPD-v7.7.3-src\include\IoSocket.h(102): error C2122: 'DWORD': prototype parameter in name list illegal
1> WinErrors.c
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


The code lead to this "typedef void (*TRANSFERPROC)(LPPACKAGETRANSFER, DWORD, DWORD);" . How to fix it?

can you share your details on getting IO to run on windows 10 pro x64 i am running into some errors when launching and a run time 53 error file not found when it looks for gui.exe

th3d00d1
04-28-2016, 05:46 AM
can you share the way you got IO running on windows 10 x64 i am running into a error when it launches and a run-time 53 error when it looks for the gui.exe

dozegfx
06-12-2016, 07:45 AM
Is there anywhere that this can be downloaded?

larazaa
11-02-2017, 08:39 AM
where can i download the latest version of ioftpd ? all links of the latest version down. please fix

Zio
05-09-2019, 10:55 AM
Reviving an old thread, but if anyone is still after these...
https://myfile.is/J8N7h1p3nc/ioFTPD-v7.7.2_zip
https://myfile.is/I6N8h8panb/ioFTPD-v7.7.3_zip
https://myfile.is/L8N4h2pbnb/ioFTPD-v7.7.3-src_zip

sunshared
07-18-2019, 10:55 AM
bitte reuploaden die ioFTPd datein

danke im vorraus

namkyland
08-25-2019, 09:31 AM
Updated and running.
Lets see how it does for the next week

sun
12-29-2020, 08:52 PM
search ne ioFTPD download link please

UltraFine
02-01-2021, 07:07 AM
The original 7.7.3 sources found here: https://github.com/DigitalTuna/ioFTPD-v7.7.3

Discord community here: https://discord.gg/j6GGPXg

Prodigy 7.7.9.5-1 release: https://mega.nz/file/xMVAQTaA#M20m2kPPn1ZGRPjLWv2bXIi26FTsoJHOEcSIv3pPM xw