PDA

View Full Version : ioFTPD v6.3.5 Beta Released


Yil
11-03-2007, 02:39 AM
Here it is folks. 6.3.0 with a whole bunch of new features and bug fixes!

The most important long term change is that this version should finally make debugging easier for me since it offers 3 ways to provide info on crashes. A text file for the paranoid which is often pretty useful and everyone can send me, a small stack trace which provides lots more data and can be loaded in a debugger to make my life easier, or finally a complete memory image of everything but the executables/libraries for the harder to solve problems.

New features include: Dynamic DNS support in hostmasks, a whole new utility (ioKnock), a rule based system for editing hostmasks so you can control who can set what, better support for immunity from auto-banning, built in IP/Host obscuring in the logfiles which should remove the need for local BNCs, new commands to generate/manage SSL certs automatically, logfile spam protection, etc...

Notable fixes: MDTM, 0 byte file problems, removing "empty" dirs, etc...

Report problems here and if crashing include the logfile. Also remember to PM me for info on how to send the dump files as they are easier to work with.

Latest Version:
ioFTPD-v6.3.5.zip (http://home.comcast.net/~yil/ioFTPD-v6.3.5.zip)

Yil
11-03-2007, 02:40 AM
v6.3.0 Release Notes:

*** File Modifications

1) File system\ioFTPD.exe changed. Version 6.3.0.0

2) File system\ioFTPD.pdb added. Debugging info. v6.3.0.0

3) File system\tcl84t.dll changed. Upgraded tcl to version 8.4.15.

4) File system\tcl84t.pdb added. Debugging info. v8.4.15

5) File system\php4ts.dll changed. Upgraded php to version 4.4.7.

6) File system\dbghelp.dll added. Support for minidumps. v6.8.4.0.
Redistributable from the MS Debugging Tools for Windows package.

7) File system\symsrv.dll added. Support for remote symbol lookups. v6.8.4.0
Redistributable from the MS Debugging Tools for Windows package.

8) File system\makecert.exe added. Generates self-signed SSL certificates.
v5.131.3790.0. It appears that unlike CertMgr.exe which requires you to
download the entire platform SDK (300+ MB for the older XP release or
1GB+ for Vista) you can distribute just makecert.exe via the old original
XP redist license or via the VS2005 license. See "site removecert"
below for ways to run a GUI to manipulate installed certs.

9) File system\ioFTPD.ini changed. Lots of changes detailed below, and I
re-ordered the sections just a little to put the "must-change" stuff right
at the top.

10) File system\ServiceInstaller.exe changed.

11) Directory source\include\* changed.

12) File ioKnock\ioKnock.exe added. Version 1.0.0.0.

13) File ioFTPD-Start.exe changed. Version 1.1.0.0.

14) File README changed.


*** Functionality changes

15) Zero byte files are no longer created if no data connection was
established. This should prevent most of those pesky 0 byte files.

16) Existing zero byte files that are the object of a STOR command (upload)
will no longer apply the Overwrite rule but instead use the Resume rule.
This will allow less permissive settings in the .ini file for average
users. The OnUpload event instead of OnResume will still be called though.
Formally requesting a resume from 0 and then a STOR will continue to use
the resume rule and the OnResume event. I haven't seen any FTP clients
do this though.

17) Resuming a file you do not have permission to write to in the VFS (i.e.
somebody else's file) now returns an immediate file permission error.
Previously it would signal all is OK, wait for the data connection to be
established then close the connection with a transfer complete response
without actually doing anything.

18) Resuming a file or overwriting a zero byte file now updates the owner
of the file to the resuming user.

19) A successful non-anonymous login now resets the auto-ban connection
count for the associated IP. This should hopefully reduce the chance
a user with 8-10 connections which all get dropped at the same time
from getting auto-banned when reconnecting.

20) Only 1 "Rejected auto-banned IP..." message per minute per host will be
added to the error logfile. Previously each rejection was logged.

21) Only 1 "Rejected unmatched client..." message per minute per host will
be added to the error logfile. Previous each rejection was logged.

22) Only 1 "Rejected client from..." message per minute per host will
be added to the error logfile. Previous each rejection was logged.

NOTE: These 3 error messages use separate timers. This is particularly
important when a user with an unmatched host mask tries to login several
times and gets himself auto-banned. That message would be suppressed if
they shared one timer...

23) Changed the "site change" commands to enable the modification of any user
account if done from a Master user. Previously Master accounts that were
granted specific group admin rights would be unable to modify accounts
outside of the indicated groups.

24) Fixed the MDTM command. Previously it wouldn't report or modify the
timestamp.

25) Changed the way the Bind= option in ioFTPD.ini is handled. This is the
local IP address to actually create the socket and listen for connections
on. Previously if you did not define this it would use the Host= field.
Since so many sites are behind NAT firewalls failing to specify 0.0.0.0
for Bind= when specifying an external ip or dynamic dns name could cause
the server to fail to start properly or result in unroutable sockets.
Now if you do not specify a Bind= option it will default to all local
interfaces (which is good) and you need only set this option in those
specific situations where you must force a particular interface to be
used. Changed ioFTPD.ini description of how to setup Host/Bind options.

26) Modified behavior for finding a SSL certificate to use. If the service
specifies a Certificate_Name (the normal place to define it) then that is
tried first. If not valid or not specified then the Host= value for the
device associated with the service is tried provided it is different than
the generic ANYHOST value of 0.0.0.0. Finally as a fallback the default
name of "ioFTPD" will be used.

27) Errors in loading the TLS/SSL library (the SSPI stuff), opening the
certificate store, or creating the server/client credentials (i.e.
you didn't specify a valid certificate name) are now logged to the
error logfile. This should hopefully provide more information for
users having issues setting up TLS/SSL.

28) A directory is considered "empty" if it consists only of files starting
with ".ioFTPD", thumbs.db, and/or desktop.ini. Previously the two hidden
system files would prevent a directory that looked empty from being
deleted.

29) An "empty" directory that is marked read-only can now be deleted. The
reason this is necessary is because customized folders (such as from
"Customize this Folder...") specifically enable the read-only
bit for the directory and fail to clear it even if customizations are
removed. This is tricky to notice since ALL directories claim they are
read-only when you examine their properties in explorer.

30) Crashes will no longer result in the c:\ioFTPD.crash.log file being
created.

31) The error log entry for hosts not matching the user mask changed from
"Host 'IDENT@HOST-ELSE-IP" did not match any of user 'USER' allowed hosts."
to
"Host 'IDENT@IP' (HOST) did not match any of user 'USER' allowed hosts."


*** New Features

32) New ioFTPD.ini option (Max_Resolver_Threads under [Network]). Added an
option to change the maximum number of worker threads that may be used to
resolve hostnames. Large heavily used sites may wish to raise this.

33) New ioFTPD.ini option (Immune_Hosts under [Network]). List of space
separated wildcard IPs/hosts that should be immune from auto-banning.

34) New ioFTPD.ini option (Immune_Users under [Network]). A full ioFTPD
user permission specifier to indicate users whose IP/host masks should be
immune from auto-banning. Be VERY careful here since just one immune
user with *@* now or in the future effectively turns off everything. I
don't suggest using this option.

35) New site command (site bans immune) displays the immune IP / host list
and indicate the source [.ini->immune_hosts, username->immune_users match].

36) New ioFTPD.ini option (Secure_Ip_# under [Network]). A series of optional
rules used to enforce what user IP/Host masks must look like depending on
who is changing the user account. Similar to glftpd's secure_ip option,
but more powerful. See the .ini file for full documentation.

37) If site addip rejects an IP/Host mask because Secure_Ip is enabled and
no rule matches then a human readable form of the rules is displayed.

38) Site addip will now remove and/or reject redundant entries. For example
if a user already has *@* it makes no sense to allow the addition of
*@1.2.3.4 (new). Similarly if you add *@* all other existing entries
will be removed automatically (existing behavior). Attempts to add an
exactly matching entry will no longer result in remove/add events in the
admin log since nothing actually changed.

39) New site command (site MakeCert). First determine the preferred name for
the certificate by looking for a Certificate_Name= for the service, or
the Host= value for the device specified for the service provided it isn't
0.0.0.0, or finally the default value of ioFTPD. Then create and install
in the CurrentUser My/Personal store a new certificate if one doesn't
already exist. Requires the file system/makecert.exe and the M flag.

Yil
11-03-2007, 02:42 AM
40) New site command (site RemoveCert name). If no SSL connections are in
use but a SSL cert is loaded then this command will attempt to unload the
cert and remove it from the CurrentUser My/Personal store. Primarily
useful for removing certificates stored under the Local System account
when running ioFTPD as a service. Requires the M flag and the cert name
must be one of the checked names used by makecert. Thus you can't
delete arbitrary certificates.

NOTE: To view installed certificates for regular users you can use the
certificate snap-in for the Microsoft Management Console as this should be
available on W2k+. (start->run, "MMC", File->Add/Remove Snap-In, Add,
Certificates, Add, My user account, Finish, Close, OK. As a shortcut you
can try from start->run prompt "certmgr.msc" which will allow you to
manage the certs for the current user only with fewer steps.

NOTE: I know of no way to do anything related to the LocalSystem account
using the default store using any GUI tool. Thus if you have installed
ioFTPD as a service and are running it under the default LocalSystem
account site makecert/removecert are your friends. For security purposes
you probably should be using a limited rights account anyway though...

41) New ioFTPD.ini option (Obscure_IP under [Network]). This allows you to
specify how many elements of the dotted IP address should be obscured in
all logfiles. Thus instead of 1.2.3.4 it will show up as 1.2.3.* or
1.2.*.*, etc. A setting of >=4 will result in "-hidden-" being shown.

42) New ioFTPD.ini option (Obscure_Host under [Network]). This allows you to
specify how many elements of a printed hostname should be obscured in
all logfiles. Thus instead of foo.bar.com it will show up as *.bar.com
or *.com. If the entire hostname is obscured the text "-hidden-" will
be shown instead.

NOTE: The combination of Obscure_IP and Obscure_Host should remove the
need for any locally run BNCs. However their use obscures even items
like auto-ban messages and user hostmask mismatch messages which can
be annoying at times.

43) New ioFTPD.ini option (Dynamic_DNS_Lookup under [Network]). If a user
hostmask begins with a colon ":" and is a hostname without any wildcards
then during the login event you can force a DNS lookup of this hostname
to see if matches the user's IP. This should add support for people who
use dynamic DNS services like no-ip.com.

44) New ioFTPD.ini option (Knock_# under [Network]). When running a server
with Reject_Unknown_Ips there is no way to even get to a login prompt
if your IP has changed. This can now be a common problem if using just
a dynamic IP address hostmask. The solution is a very simple knock-
knock system which will add the knocking IP to a temporary list so
you can connect. Knocking essentially means connecting via TCP to
between 1 and 5 ports in a short amount of time. This can easily be
done in most FTP programs by just setting up fake ftp servers on the
knock ports and trying to connecting in order, or using the ioKnock
GUI on windows machines.

45) New executable (ioKnock.exe). This creates a very simple frontend
that allows you to store knock sequences for various sites and to
easily execute them. With no arguments it pops up a GUI, or with
1 command line argument it will attempt to locate a saved site by
that name and execute the knock.

46) Support for enhanced crash reporting added. Instead of writing to the
c:\ioFTPD.crash.log file with just the exception ID and crash address
the server will now create 2 or 3 new files...

47) New output file (CRASH-Log.txt) generated on program crashes. Contains
a human readable reason for the crash, useful information like the
operating system version and processor information, address ranges of
all the loaded modules for the program, as well as stack backtrace info.

It looks something like this:

Fri Sep 21 02:32:12 2007 - ioFTPD v6.3.0
Unhandled exception: Access Violation (0xC0000005)
Address: 0x00436A4D [attempting to write data to 0x00000000]
PID=1988, PATH=c:\Projects\ioFTPD6\ioFTPD\system\ioFTPD-debug.exe

System information:
Processor #0 Name: AMD Athlon(tm) 64 Processor 3000+
Processor #0 Identifier: x86 Family 15 Model 12 Stepping 0
OS: Windows 0.0 (build 0)
Registry: Microsoft Windows XP
Decoded: XP - Service Pack 2
Page size: 4096

Modules:
--------
[00400000 - 004d8000]: c:\Projects\ioFTPD6\ioFTPD\system\ioFTPD.exe (v6.3.0.0)
Rest of Modules...

Threads:
--------

ID: 2608 [00130000-0012fe94]
# 1: 7C90EB94 -> [ntdll + DB94] _KiFastSystemCallRet@0() + 0x0
# 2: 7E4191BE -> [USER32 + 81BE] _NtUserGetMessage@16() + 0xC
# 3: 00416B50 -> [ioFTPD + 15B50] ProcessMessages() + 0x40
[c:\projects\ioftpd6\6.3.0\src\internalmessagehandl er.c, line 106]
# 4: 0041A2B0 -> [ioFTPD + 192B0] CommonMain() + 0x30
[c:\projects\ioftpd6\6.3.0\src\main.c, line 250]
# 5: 0041A6F3 -> [ioFTPD + 196F3] WinMain() + 0x273
[c:\projects\ioftpd6\6.3.0\src\main.c, line 390]
# 6: 004431E9 -> [ioFTPD + 421E9] __tmainCRTStartup() + 0x177
[f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c, line 324]
# 7: 7C816FD7 -> [kernel32 + 15FD7] _BaseProcessStart@4() + 0x23
Rest of Threads...


48) New output file (MINIDUMP-date.time-pid.dmp). Contains a near perfect
image of the application at the time of the crash. Size is roughly 4MB
using the provided dbghelp.dll for a simple server. Larger sites with
a large directory cache size will obviously be bigger.

49) New output file (TINYDUMP-date.time-pid.dmp). Contains just basic
information, the thread stacks, and variables directly referenced by
things on the stacks. Size is roughly 200k using the provided dbghelp.dll.

50) New ioFTPD.ini option (Crash_Dir under [Locations]). Allows you to
specify the directory to create CRASH-Log.txt, MINIDUMP* and TINYDUMP*
files in. Default is directory where ioFTPD.exe is located.

51) New ioFTPD.ini option (TinyDump_Only under [Locations]). Allows you to
disable the generation of the MINIDUMP* files. This is disabled by
default since many problems can only be solved with this larger memory
image.

Yil
11-03-2007, 02:43 AM
52) New ioFTPD.ini option (Symbol_Path under [Location]). This is very
similiar to the _NT_SYMBOL_PATH environmental variable and thus useful
when running ioFTPD as a system service.

When writing stack backtrace information to CRASH-Log.txt it's nice to
see correct function names instead of just addresses. This is only
required for the text in CRASH-Log.txt to display accurately. If you
submit Tiny/Minidumps for debugging they can retrieve the correct
information regardless!

With no help the stack trace for the original thread in ioFTPD looks like:

ID: 3708 [00130000-0012fe94]
# 1: 7C90EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 00416B50 -> [ioFTPD + 15B50]
# 3: 00443219 -> [ioFTPD + 42219]
# 4: 7C816FD7 -> [kernel32 + 15FD7] ? RegisterWaitForInputIdle() + 0x49

If the ioFTPD.pdb, tcl84t.pdb, etc files are in the directory where
ioFTPD.exe is run from then function names and line numbers can be
displayed for those files. Resulting in:

ID: 1212 [00130000-0012fe94]
# 1: 7C90EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 00416B50 -> [ioFTPD + 15B50] ProcessMessages() + 0x40
[c:\projects\ioftpd6\6.3.0\src\internalmessagehandl er.c, line 106]
# 3: 0041A2E0 -> [ioFTPD + 192E0] CommonMain() + 0x30
[c:\projects\ioftpd6\6.3.0\src\main.c, line 250]
# 4: 0041A723 -> [ioFTPD + 19723] WinMain() + 0x273
[c:\projects\ioftpd6\6.3.0\src\main.c, line 390]
# 5: 00443219 -> [ioFTPD + 42219] __tmainCRTStartup() + 0x177
[f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c, line 324]
# 6: 7C816FD7 -> [kernel32 + 15FD7] ? RegisterWaitForInputIdle() + 0x49

The ? indicates dll's that do not have loaded debugging info and thus the
name printed is the first previous exported symbol found which is often
correct for the entry point into a library but usually wrong after that.

With system symbol searching enabled the same stack looks like:
ID: 364 [00130000-0012fe94]
# 1: 7C90EB94 -> [ntdll + DB94] _KiFastSystemCallRet@0() + 0x0
# 2: 7E4191BE -> [USER32 + 81BE] _NtUserGetMessage@16() + 0xC
# 3: 00416B50 -> [ioFTPD + 15B50] ProcessMessages() + 0x40
[c:\projects\ioftpd6\6.3.0\src\internalmessagehandl er.c, line 106]
# 4: 0041A2E0 -> [ioFTPD + 192E0] CommonMain() + 0x30
[c:\projects\ioftpd6\6.3.0\src\main.c, line 250]
# 5: 0041A723 -> [ioFTPD + 19723] WinMain() + 0x273
[c:\projects\ioftpd6\6.3.0\src\main.c, line 390]
# 6: 00443219 -> [ioFTPD + 42219] __tmainCRTStartup() + 0x177
[f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c, line 324]
# 7: 7C816FD7 -> [kernel32 + 15FD7] _BaseProcessStart@4() + 0x23

Notice that even the number of stack frames is incorrect without access
to the .pdb file for optimized code.

See the .ini file for how to setup a local symbol cache, enable access
to MS's downloadable symbol store temporarily so you can download the
appropriate symbol files once, and then set it to only use the local
files from then on.

53) New site command (site LoadSymbols). Very similar to "site CrashNow"
except it will force the resolving of all modules, not just those
currently referenced on the stack, and display additional information
such as the path to the located PDB for each module used for resolving
in the generated CRASH-log.txt file. Limited to master (M) accounts only.

54) Register the Allocate, ReAllocate, and Free procedures to the module
system. Should fix problems with user modules. Not sure if it will
work if _DEBUG_MEM is enabled when compiling ioFTPD (it's not by default).

55) ioFTPD-Start now defaults to a 10 (was 5) second delay before starting
ioGUI, and also takes an optional command line argument which is the
number of seconds to delay.


*** Internal changes

56) Moved version information lookup from the executable's resources from the
site ioversion command to the main startup function to support printing
version information in crash logs and eliminate redundant lookups.

57) Changed the logfile write of denied connections for auto-banned IP
addresses to be done outside of the critical section lock.

58) Fixed a bug during initialization which resulted in a call to closesocket
with an invalid socket handle.

59) Fixed a bug in the shared memory allocator of debug builds that could
result in an incorrect share count which could eventually lead to
improperly freed memory.

60) Removed old #ifdefs and defines for Registered versions only code.

61) About 100 other little things I forgot to write down...

Yil
11-03-2007, 03:41 AM
Quick note: ioKnock.exe seems to have a runtime dependency on a VS2005 library so some people may have trouble running it. Really quick googling shows it's a common problem and some people report having .NET 2.0 installed fixes things.

I solved this for ioFTPD a long time ago, but because the GUI is using MFC I'm not sure how to do this yet since it complains when trying to link to a static CRT...

rolan
11-03-2007, 08:17 AM
nice work, thx, will try it...

fr0st
11-03-2007, 09:05 PM
you rule yil!

zkx
11-04-2007, 12:55 AM
nice, i'm sure that debugging stuff will come in handy... and the usual "Source?" :p
and that ip/host obscure stuff looks nice

nice work

Yil
11-04-2007, 01:14 AM
Source:
ioFTPD-v6.3.0-src.zip (http://home.comcast.net/~yil/ioFTPD-v6.3.0-src.zip)

isteana
11-04-2007, 02:14 AM
the killing scripts times are still 2minute?
or could you make new option as define killing scripts time
cuase some scripts need very long time for make finish
ex) site rebuild on nxtools or site createlog on ioA
that makes log of all dir/files in vfs for site search/dupe
so bigger dir/files needs more time to make log
then usually if over 5000 dirs, script going dead(server time out)cuase over 2 minute when creating dupe log

Yil
11-04-2007, 03:31 AM
isteana: I'm not positive how ioFTPD handles timeouts. A really quick look at the EXEC module seems to indicate a script can run as long as it wants provided it outputs something at least every 2 minutes and the client is reading the output...

Do the scripts in question in fact print something while working? If not, then I suggest they should be modified to do so and see what happens. Removing the timeout just seems like a really bad idea, although I'm open to making it an option.

On the other hand clients like FlashFXP often terminate connections when the server appears unresponsive which may be as short as 1-2 minutes. I had to add status output to long running internal commands like file moving, etc to make the clients happy...

As an aside, it looks like the EXEC module doesn't terminate the started child processes under any condition but does close the stdin handle. This probably means the command will actually finish even if you are disconnected...

isteana
11-04-2007, 06:50 AM
Yil, anyway make a that option plz if you could:)

the daemon dropping me if over 2 minute then script does not works anymore its indeed if even using any clients any options


then another old issue below

i really hope 6.3.x will support unicode option(raw incoding) for TCL

you can refer this page below for directly return to External (this page not for only english..but you can watch that code)

http://tcltk.co.kr/moniwiki/wiki.php...CE%C4%DA%B5%F9

then could you also make that raw incoding option?

Flow
11-04-2007, 02:00 PM
You Rock Yil! thanks for the lovely new toy and fixes.

Linkster
11-04-2007, 11:51 PM
one word....IMPRESSIVE. So nice to see such amazing headway being made.

noelek
11-05-2007, 03:52 AM
hi, in Error.log I have sometimes bad reverse name

11-03-2007 11:53:57 Rejected unmatched client 88.xx.xx.xx (X˙).
11-03-2007 11:55:57 Rejected unmatched client 88.xx.xx.xx ().
11-04-2007 13:59:34 Rejected unmatched client 84.xx.xx.xx (X˙).

thanks for your good work

Yil
11-05-2007, 05:51 AM
noelek: Can you be a bit more specific? I probably have messed something up in the obscuring logic but I need to know a bit more. In your example did the first and third come out OK, but the middle one didn't? Are the 1st and 2nd the same and thus it worked once, but not the second time? There just isn't enough info there to figure out what's wrong since you obscured the obscured :) What do you have obscure host/IP set to? I should point out that not all IP addresses will reverse resolve, or do so in the time period allowed. Thus empty hostnames are perfectly fine in the logfiles.

DOH! It appears if the feature is entirely disabled the reject* messages might have invalid/random text. That's a bug. Expect a fix shortly.

NOTE: The new Secure_Ip options to control which users can enter which hostmasks is turned on by default and really shouldn't be since I don't normally enable new features in the default config file. I was supposed to comment that entirely but didn't before zipping things up.

The most obvious problem with the enabled defaults is only M accounts can enter *@* as a valid hostmask for a user. I'm sure there are people who will find that too restrictive...

Yil
11-05-2007, 06:20 AM
v6.3.1 out:

v6.3.1 Release Notes:

*** File Modifications:

1) File system\ioFTPD.exe changed. Version 6.3.1.0

2) File system\ioFTPD.ini changed.

3) File ioKnock\ioKnock.exe changed.


*** Fixes:

4) Secure_Ip option in the .ini is now disabled by default.

5) Fixed Random/corrupt hostnames being reported in "reject ..." logfile
messages if the new obscure host feature was disabled.

6) ioKnock no longer has any library dependency as it statically links MFC
and CRT. 50k file now 248k but who cares these days.

pion
11-05-2007, 10:31 AM
Does the new io handle group admins correctly?
I.E. site ginfo and site uinfo only applies to users own admingroup?

Yil
11-05-2007, 11:25 AM
pion: I'm not aware of any posted bug/feature request regarding group admins. Can you point me to the post?

The example you give of site uinfo/ginfo only applying to the users own admingroups certainly sounds like a good idea to me though. I'll add that.

hukker
11-05-2007, 11:28 AM
I just tested that, and it doesnt seem to be doing that.
IE user xxx is groupadmin of group GGG.
site change xxx admingroup GGG
site change xxx flags +G (3G)
After logging on with user xxx I tried the command site ginfo SiteOp, and sure enough the information was shown.

(17:26:55) [2] site ginfo SiteOp
(17:26:55) [2] 200-Description: Administrators
(17:26:55) [2] 200-MountFile : ..\etc\admin.vfs
(17:26:55) [2] 200-User slots : -1 (-1)
(17:26:55) [2] 200-Users : 2
(17:26:55) [2] 200-
(17:26:55) [2] 200- Name Flags Groups
(17:26:55) [2] 200- ioFTPD 1MTHL SiteOp
(17:26:55) [2] 200 ginfo Command successful.

hukker
11-05-2007, 11:30 AM
ahh Yil you beat me to the reply ;)

nice to hear that function is going to be added

Flow
11-05-2007, 01:00 PM
Hi Yil, did you killed this $user thingy long ago? Read below post.

http://www.inicom.net/forum/showthread.php?t=12745

pion
11-05-2007, 04:02 PM
I think there's a problem with the slots system for gadmin also. If admingroup isn't set, just the gadmin flag, the gadmin can add as many leech slots as he wish, regardless of what the slots for his group sais. Maybe also users, haven't tested it proper.

Could argue that it's a fault in the user adding the gadmin, but it's not really a superior behavior to have gadmin flag act as siteop flag on such matters.

neoxed
11-05-2007, 05:51 PM
That's how it should function. As far as ioFTPD is concerned there is no "gadmin" or "siteop" flag. There are only a few hard-coded flags:

A - Anonymous (any password works)
f/F - FXP permissions (deny FXP download/upload)
M - Master (cannot be changed by non-masters, can see private paths)
V - VFS admin (can see private paths)

Any other powers these flags give are defined by the permissions they're given in the ioFTPD.ini.

If a flag gives permission to a command, and a user has that flag, they can use that command.

Users are defined as "gadmins" by using site change <user> admingroups <groups> and nothing else. Commands must be specifically implemented to be aware of "gadmin" privileges by using User_IsAdmin API.

A better system is how glFTPd handle's it's group admins - which will require ioFTPD to have a special hard-coded gadmin flag.

The FTPD must be aware of the hard-coded gadmin flag.
Any "site change" command defined with the gadmin flag in ioFTPD.ini will have ioFTPD call User_IsAdmin to verify the user is a gadmin.
This moves the hard-coded gadmin checks from certain commands to configurable commands in ioFTPD.ini.
Optional: When a user is given administrative privileges over a group, they automatically receive the gadmin flag.
Optional: When a user is revoked administrative privileges over a group, they automatically lose the gadmin flag.
These optional features can be implemented by scripts very easily, not required to be part of the daemon.

Yil
11-06-2007, 02:51 AM
There are actually 2 more hard coded flags.

L - always allow login (M implies L - just learned that!)
1 - inside the add user code M and 1 are tested to determine if the user is a pure admin or a group admin.

The G flag isn't hardcoded, it is simply a convention in ioFTPD.ini as neoxed points out. The problem is if you have the G flag but are NOT explicitly the groupadmin of any groups you are sort of considered a regular admin because the User_IsAdmin function allows that. I'm not sure if that is a long standing bug, or a historical artifact...

On the other hand if you ARE an admin of specific groups the code ALREADY limits all site change commands to members of those groups. In fact it was so limiting that I had to bypass the check in 6.3.0 for M flagged accounts (#23 above). Commands like addip/delip/etc check as well. Now that I think about it they may also screw up and not bypass the check for M flagged accounts either...

Outside of the change commands the site uinfo/ginfo and perhaps a few more really need to be made aware of groupadmin status so as not to reveal private info of other groups as this is what got this whole discussion going...


PROPOSAL:
I'm content to define hardcode 1 and M flagged users as "real" admins and thus they can admin all groups all the time. By default they can change admingroup settings for themselves so it's not like you can stop them! Everybody else MUST have specific groupadmin rights granted and they can only modify or see private info of users in those groups.

I also like the idea of a user who has groupadmin rights being automatically granted the G user flag and having the G flag revoked if no longer the admin of any groups. Therefore an attempt to add G to a user won't actually work, but the G flag will get set once a groupadmin right is defined. G would thus become sort of hardcoded as well. However all tests for admin rights will NOT test for G, but rather the absence of 1/M and/or admingroups. This is probably safer since I'm sure they will sooner or later get set wrong since user files can be manually edited.

The only drawback of this scheme is if in ioFTPD.ini a specific user/group was granted addip rights i.e "addip = G1M =trusted". Assuming a user in the trusted group doesn't have any admin flags (say just the 3 flag or something) and no admingroups are defined that user previously could have added IPs for anyone and now they can't.

The only way around this would be to revert to what we have now. If no admingroups are defined then that implies all groups. I think I'd rather go for the more secure setup and if necessary a script can be used to handle the =trusted type situations, but for the majority of FTP setups no scripts would be required.

isteana
11-06-2007, 06:06 AM
Yil: did you read about unicode issue in this page of 1/2
plz read and reply about it. i cant understand why noone intrest to tcl directly return to External cause no asian here? :(

and other request here

could you include site dupe/search function like a glftpd?
it will really better than depends on scripts in every way
1st, cause need long time to creating new log(ex:site rebuild on nxtools) for scripts if got better dir/files
2nd, need standardize! i think this is major function so glftpd does it
then no one need more make to each other scripts of search/dupe

Yil
11-06-2007, 06:54 AM
isteana: Enabling unicode inside ioFTPD just isn't going to happen as I've explained before. The code sucks, and it would take an enormous amount of work to get everything able to compile using wchars and debugging it would be a real pain. It would be better to just start over again actually. There is a reason darkone started to rewrite the whole thing from scratch...

Site dupe/search is what scripts are good for. It's a complex problem actually. Especially when dealing with symbolic links trees to sort/categorize things. Do you return them as well? Did the simple search just become trickier?

It would be kinda cool if we consolidated around a single script tool though...

Flow
11-06-2007, 12:32 PM
Yil? killed $user ?

Yil
11-07-2007, 03:05 AM
Flow: didn't change $user. You check etc/ioftpd.env to make sure it's exported? It's there in the released version.

monk-
11-07-2007, 12:44 PM
tested it on a mp3 site
every time a race is started, it crashes
im guessing it happens on leech, cos when i turn off the sitebot, it doesnt happen..

Wed Nov 07 04:03:30 2007 - ioFTPD v6.3.1
Unhandled exception: Access Violation (0xC0000005)
Address: 0x7C81BD02 [attempting to read data from 0x0081000D]
PID=14232, PATH=C:\PROGRAMME\ioFTPD\system\ioFTPD.exe

System information:
Processor #0 Name: Intel(R) Pentium(R) 4 CPU 2.80GHz
Processor #0 Identifier: x86 Family 15 Model 2 Stepping 9
OS: Windows 5.2 (build 3790)
Registry: Microsoft Windows Server 2003
Decoded: Server 2003 - Service Pack 2
Page size: 4096

Modules:
--------
[00400000 - 00463000]: C:\PROGRAMME\ioFTPD\system\ioFTPD.exe (v6.3.1.0)
[7c800000 - 7c8c0000]: C:\WINDOWS\system32\ntdll.dll (v5.2.3790.3959)
[77e40000 - 77f42000]: C:\WINDOWS\system32\kernel32.dll (v5.2.3790.4062)
[10000000 - 10163000]: C:\PROGRAMME\ioFTPD\system\php4ts.dll (v4.4.7.7)
[77380000 - 77411000]: C:\WINDOWS\system32\user32.dll (v5.2.3790.4033)
[77c00000 - 77c48000]: C:\WINDOWS\system32\gdi32.dll (v5.2.3790.4033)
[77f50000 - 77feb000]: C:\WINDOWS\system32\advapi32.dll (v5.2.3790.3959)
[77c50000 - 77cef000]: C:\WINDOWS\system32\rpcrt4.dll (v5.2.3790.4115)
[76f50000 - 76f63000]: C:\WINDOWS\system32\secur32.dll (v5.2.3790.3959)
[71bb0000 - 71bb9000]: C:\WINDOWS\system32\wsock32.dll (v5.2.3790.0)
[71c00000 - 71c17000]: C:\WINDOWS\system32\ws2_32.dll (v5.2.3790.3959)
[77ba0000 - 77bfa000]: C:\WINDOWS\system32\msvcrt.dll (v7.0.3790.3959)
[71bf0000 - 71bf8000]: C:\WINDOWS\system32\ws2help.dll (v5.2.3790.3959)
[77670000 - 777a9000]: C:\WINDOWS\system32\ole32.dll (v5.2.3790.3959)
[77d00000 - 77d8b000]: C:\WINDOWS\system32\oleaut32.dll (v5.2.3790.4098)
[48890000 - 488cd000]: C:\WINDOWS\system32\odbc32.dll (v3.526.3959.0)
[77530000 - 775c7000]: C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_5.82.3790.3959_x-ww_78FCF8D0\comctl32.dll (v5.82.3790.3959)
[7c8d0000 - 7d0ce000]: C:\WINDOWS\system32\shell32.dll (v6.0.3790.3959)
[77da0000 - 77df2000]: C:\WINDOWS\system32\shlwapi.dll (v6.0.3790.3959)
[762b0000 - 762f9000]: C:\WINDOWS\system32\comdlg32.dll (v6.0.3790.3959)
[00480000 - 00551000]: C:\PROGRAMME\ioFTPD\system\tcl84t.dll (v8.4.2.15)
[761b0000 - 76243000]: C:\WINDOWS\system32\crypt32.dll (v5.131.3790.3959)
[76190000 - 761a2000]: C:\WINDOWS\system32\msasn1.dll (v5.2.3790.3959)
[77b90000 - 77b98000]: C:\WINDOWS\system32\version.dll (v5.2.3790.3959)
[77420000 - 77523000]: C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.3790.3959_x-ww_D8713E55\comctl32.dll (v6.0.3790.3959)
[00ce0000 - 00cf7000]: C:\WINDOWS\system32\odbcint.dll (v3.526.3959.0)
[03000000 - 03115000]: C:\PROGRAMME\ioFTPD\system\dbghelp.dll (v6.8.4.0)
[76920000 - 769e2000]: C:\WINDOWS\system32\userenv.dll (v5.2.3790.3959)
[71c40000 - 71c97000]: C:\WINDOWS\system32\netapi32.dll (v5.2.3790.3959)
[71b20000 - 71b61000]: C:\WINDOWS\system32\mswsock.dll (v5.2.3790.3959)
[5f270000 - 5f2ca000]: C:\WINDOWS\system32\hnetcfg.dll (v5.2.3790.3959)
[71ae0000 - 71ae8000]: C:\WINDOWS\system32\wshtcpip.dll (v5.2.3790.3959)
[01cd0000 - 01d72000]: C:\PROGRAMME\ioFTPD\modules\nxmydb.dll (v0.3.0.0)
[01d80000 - 02004000]: C:\PROGRAMME\ioFTPD\system\libmysql.dll (v0.0.0.0)
[76ed0000 - 76efa000]: C:\WINDOWS\system32\dnsapi.dll (v5.2.3790.3959)
[76f70000 - 76f77000]: C:\WINDOWS\system32\winrnr.dll (v5.2.3790.3959)
[76f10000 - 76f3e000]: C:\WINDOWS\system32\wldap32.dll (v5.2.3790.3959)
[76f80000 - 76f85000]: C:\WINDOWS\system32\rasadhlp.dll (v5.2.3790.3959)
[68000000 - 68035000]: C:\WINDOWS\system32\rsaenh.dll (v5.2.3790.3959)
[76b70000 - 76b7b000]: C:\WINDOWS\system32\psapi.dll (v5.2.3790.3959)
[76750000 - 76777000]: C:\WINDOWS\system32\schannel.dll (v5.2.3790.4068)
[68100000 - 68127000]: C:\WINDOWS\system32\dssenh.dll (v5.2.3790.3959)
[02980000 - 029a6000]: C:\PROGRAMME\ioFTPD\lib\nxHelper\nxHelper.dll (v2.3.0.0)
[029c0000 - 02a13000]: C:\PROGRAMME\ioFTPD\lib\sqlite3\tclsqlite3.dll (v0.0.0.0)
[748c0000 - 748c7000]: C:\WINDOWS\system32\powrprof.dll (v6.0.3790.3959)


Threads:
--------
ID: 14264 [00130000-0012fe94]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 00417910 -> [ioFTPD + 16910] ProcessMessages() + 0x40
[c:\projects\ioftpd6\6.3.0\src\internalmessagehandl er.c, line 106]
# 3: 0041AFF0 -> [ioFTPD + 19FF0] CommonMain() + 0x30
[c:\projects\ioftpd6\6.3.0\src\main.c, line 250]
# 4: 0041B433 -> [ioFTPD + 1A433] WinMain() + 0x273
[c:\projects\ioftpd6\6.3.0\src\main.c, line 391]
# 5: 0044478A -> [ioFTPD + 4378A] __tmainCRTStartup() + 0x177
[f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c, line 324]
# 6: 77E6F23B -> [kernel32 + 2E23B] ? ProcessIdToSessionId() + 0x209


ID: 1836 [01060000-0105ff10]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 77E61C8D -> [kernel32 + 20C8D] ? WaitForSingleObject() + 0x12
# 3: 0043A68E -> [ioFTPD + 3968E] TimerThread() + 0x19E
[c:\projects\ioftpd6\6.3.0\src\timer.c, line 141]
# 4: 77E64829 -> [kernel32 + 23829] ? GetModuleHandleA() + 0xDF


ID: 13056 [01260000-0125ff14]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 77E61C8D -> [kernel32 + 20C8D] ? WaitForSingleObject() + 0x12
# 3: 00439F8F -> [ioFTPD + 38F8F] WorkerThread() + 0x5F
[c:\projects\ioftpd6\6.3.0\src\threads.c, line 441]
# 4: 77E64829 -> [kernel32 + 23829] ? GetModuleHandleA() + 0xDF


ID: 12308 [014d0000-014cff14]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 77E61C8D -> [kernel32 + 20C8D] ? WaitForSingleObject() + 0x12
# 3: 00439F8F -> [ioFTPD + 38F8F] WorkerThread() + 0x5F
[c:\projects\ioftpd6\6.3.0\src\threads.c, line 441]
# 4: 77E64829 -> [kernel32 + 23829] ? GetModuleHandleA() + 0xDF


ID: 12700 [015d0000-015cff14]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 77E61C8D -> [kernel32 + 20C8D] ? WaitForSingleObject() + 0x12
# 3: 00439F8F -> [ioFTPD + 38F8F] WorkerThread() + 0x5F
[c:\projects\ioftpd6\6.3.0\src\threads.c, line 441]
# 4: 77E64829 -> [kernel32 + 23829] ? GetModuleHandleA() + 0xDF


ID: 12968 [016d0000-016cff14]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 77E61C8D -> [kernel32 + 20C8D] ? WaitForSingleObject() + 0x12
# 3: 00439F8F -> [ioFTPD + 38F8F] WorkerThread() + 0x5F
[c:\projects\ioftpd6\6.3.0\src\threads.c, line 441]
# 4: 77E64829 -> [kernel32 + 23829] ? GetModuleHandleA() + 0xDF


ID: 13536 [017d0000-017cff48]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 0043A1F0 -> [ioFTPD + 391F0] IoThreadEx() + 0x30
[c:\projects\ioftpd6\6.3.0\src\threads.c, line 563]
# 3: 7C8277AB -> [ntdll + 267AB] ? NtRegisterThreadTerminatePort() + 0xC


ID: 12024 [018d0000-018cff48]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 0043A1F0 -> [ioFTPD + 391F0] IoThreadEx() + 0x30
[c:\projects\ioftpd6\6.3.0\src\threads.c, line 563]
# 3: 7C8277AB -> [ntdll + 267AB] ? NtRegisterThreadTerminatePort() + 0xC


ID: 13460 [019d0000-019cff14]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 77E61C8D -> [kernel32 + 20C8D] ? WaitForSingleObject() + 0x12
# 3: 0043A3E0 -> [ioFTPD + 393E0] EncryptionThread() + 0x20
[c:\projects\ioftpd6\6.3.0\src\threads.c, line 649]
# 4: 77E64829 -> [kernel32 + 23829] ? GetModuleHandleA() + 0xDF


ID: 12496 [01ad0000-01acff14]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 77E61C8D -> [kernel32 + 20C8D] ? WaitForSingleObject() + 0x12
# 3: 0043A3E0 -> [ioFTPD + 393E0] EncryptionThread() + 0x20
[c:\projects\ioftpd6\6.3.0\src\threads.c, line 649]
# 4: 77E64829 -> [kernel32 + 23829] ? GetModuleHandleA() + 0xDF


ID: 13304 [01bd0000-01bcff00]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 77E424ED -> [kernel32 + 14ED] ? Sleep() + 0xF
# 3: 00432EAC -> [ioFTPD + 31EAC] SocketSchedulerThread() + 0x35C
[c:\projects\ioftpd6\6.3.0\src\socket.c, line 1765]
# 4: 77E64829 -> [kernel32 + 23829] ? GetModuleHandleA() + 0xDF


ID: 13260 [01cd0000-01ccfcec]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 77E64829 -> [kernel32 + 23829] ? GetModuleHandleA() + 0xDF


ID: 12816 [02b30000-02b2ff7c]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 77E64829 -> [kernel32 + 23829] ? GetModuleHandleA() + 0xDF


ID: 12676 [02c30000-02c2ff20]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 004FEE95 -> [tcl84t + 7DE95] _TclpGetDate() + 0x395
# 3: 77E64829 -> [kernel32 + 23829] ? GetModuleHandleA() + 0xDF



also tried it with all scripts off, but that doesnt matter

monk-
11-07-2007, 12:45 PM
doesnt fit so here's the rest

ID: 12472 [02f60000-02f5e6c4]
# 1: 7C8285EC -> [ntdll + 275EC] ? KiFastSystemCallRet() + 0x0
# 2: 012AE9B0 -> [[unknown module]]
# 3: 7C826D2B -> [ntdll + 25D2B] ? NtClose() + 0xC
# 4: 03062123 -> [DbgHelp + 61123] ? MiniDumpReadDumpStream() + 0x6703
# 5: 0305D50D -> [DbgHelp + 5C50D] ? MiniDumpReadDumpStream() + 0x1AED
# 6: 03063089 -> [DbgHelp + 62089] ? MiniDumpReadDumpStream() + 0x7669
# 7: 030657A9 -> [DbgHelp + 647A9] ? MiniDumpReadDumpStream() + 0x9D89
# 8: 7C82779B -> [ntdll + 2679B] ? ZwReadVirtualMemory() + 0xC
# 9: 77E4232D -> [kernel32 + 132D] ? ReadProcessMemory() + 0x1B
#10: 03062871 -> [DbgHelp + 61871] ? MiniDumpReadDumpStream() + 0x6E51
#11: 03062920 -> [DbgHelp + 61920] ? MiniDumpReadDumpStream() + 0x6F00
#12: 00418FAD -> [ioFTPD + 17FAD] UnhandledExceptionLogger() + 0x68D
[c:\projects\ioftpd6\6.3.0\src\iodebug.c, line 1088]
#13: FFFFFFFFFFFFFFFF -> [[unknown module]]



-------------------------------------------------------------------------------

i have more crashlog and mini dumps

o_dog
11-07-2007, 01:37 PM
on upload (not fxp) and MDTM, it just hangs. Client seems to be waiting for a response from ftpd that it doesn't receive. it does change date on the files but it takes forever for it to do so.

mr_F
11-07-2007, 05:03 PM
strange problem of scripts crossing over into places that aren't their territory. i have a media script activated by 'site mi', the line is:

mi = %TCL ..\scripts\media.itcl %[$path]

when i cwd into a directory called 'tv-01' (this is the ONLY directory on my ftp that does this, a similarly named 'tv-02' does NOT produce the same results) this is what happens:

[14:53:42] [L] CWD tv-01
[14:53:42] [L] 250- .----===<( badaazs )>===--------=== (C) 2003 ===---.
[14:53:42] [L] 250- | h: |
[14:53:42] [L] 250- +-=[AVItag]=----------------------------===--------+
[14:53:42] [L] 250- | Unknown @ Unknown |
[14:53:42] [L] 250- +--------------------------------------------------+
[14:53:42] [L] 250- | Video codec : Unknown @ Unknown Kbps |
[14:53:42] [L] 250- | Framesize : Unknown * Unknown |
[14:53:42] [L] 250- | Aspect ratio: Unkn @ Unknownfps |
[14:53:42] [L] 250- +--------------------------------------------------+
[14:53:42] [L] 250- | Audio codec : Unknown channels of Unknown |
[14:53:42] [L] 250- | @ Un Kbps @ Unknown |
[14:53:42] [L] 250- `----------------------===-------------------------'
[14:53:42] [L] 250- .----===<( badaazs )>===--------=== (C) 2003 ===---.
[14:53:42] [L] 250- | h: |
[14:53:42] [L] 250- +-=[AVItag]=----------------------------===--------+
[14:53:42] [L] 250- | Unknown @ Unknown |
[14:53:42] [L] 250- +--------------------------------------------------+
[14:53:42] [L] 250- | Video codec : Unknown @ Unknown Kbps |
[14:53:42] [L] 250- | Framesize : Unknown * Unknown |
[14:53:42] [L] 250- | Aspect ratio: Unkn @ Unknownfps |
[14:53:42] [L] 250- +--------------------------------------------------+
[14:53:42] [L] 250- | Audio codec : Unknown channels of Unknown |
[14:53:42] [L] 250- | @ Un Kbps @ Unknown |
[14:53:42] [L] 250- `----------------------===-------------------------'
[14:53:42] [L] 250 CWD command successful.
[14:53:42] [L] PWD

as you can see, it is executing the script for some reason. could you look into this yil?
thx

hukker
11-08-2007, 12:45 AM
on upload (not fxp) and MDTM, it just hangs. Client seems to be waiting for a response from ftpd that it doesn't receive. it does change date on the files but it takes forever for it to do so.

Same issue here, fxp works like a charm but on upload it halts just like o_dog explains.

(06:35:00) [2] STOR ChangeLog.txt
(06:35:00) [2] 150 Opening ASCII mode data connection for ChangeLog.txt.
(06:35:00) [2] 226-[UL: 6.0GB] [DL: 0.0GB] [Speed: 15263.1KB/s] [Free: 89149MB]
(06:35:00) [2] 226 [Section: Default] [Credits: 0.0MB] [Ratio: Unlimited]
(06:35:00) [2] MDTM 20071105051358 ChangeLog.txt
(06:36:00) [2] Timeout, Connection closed

*reconnecting to site you notice the file is there, when I tried to view the file, download and open, the code below is what happend

(06:37:33) [2] RETR ChangeLog.txt
(06:37:33) [2] 550 ChangeLog.txt: The process cannot access the file because it is being used by another process.

*after this I was a bit suspect that the file maybe even wasnt there, so I checked upload directory localy on HD and sure enough it was where I started the upload before getting connection closed on me. I open the file and its 100% functionell.

trying to retrieve the file again, download, crashed the server.
(06:38:07) [2] RETR ChangeLog.txt
(06:38:15) [i] Transfer Failed: ChangeLog.txt
(06:38:15) [i] Failed 1 file(s) and Skipped 0 file(s)
(06:38:15) [2] HUKKER Disconnected

got the crash log or this thingy TINYDUMP-20071108.063807-8396 which ever you prefer if you want it?

Yil
11-08-2007, 08:04 AM
Yup MDTM still needs to have the file handle closed which is why accessing the file is having issues and the FTP response isn't correct in some cases. Fix done, but looking into the groupadmin updates and why hukker might have gotten an actual crash...

mr_f: 10-1 the script you are using wrote to the .message file twice for some reason. I don't think you are seeing the script firing off, but instead the server just printing the contents of the .message file. Can you confirm that the file contents are what you are seeing, and if that is the case then it's the script which goofed and double printed or ran twice or something. I can easily see that problem if it failed to lock the file and a race condition ended up appending instead of overwriting it's contents...

PM's sent to hukker and monk.

BTW, the reason fxp works but uploads don't is because the FTP client is seeing the MDTM command and adjusting the timestamp on an upload. FlashFXP and others do not do this yet for FXP transfers although Flash will in a future version I'm told.

Expect a new release soon.

Flow
11-08-2007, 11:48 AM
Great i dont haveto report that FTP MDTM one, cant wait for the new version.

Flow
11-09-2007, 08:29 AM
Gawd, hey Yil, is it possible for you to release a quickfix for FTP MDTM thingy?

weisan
11-10-2007, 06:18 PM
If I would like to Upgrade from 6.2.1 to 6.3.1 .. what should I do ??

razoor
11-10-2007, 06:39 PM
replace the exe??

weisan
11-10-2007, 06:48 PM
hehe .. I guess it's a little more complicated than that ...
it stays nothing in the readme or changelog.txt about HOW TO UPGRADE from previous version...

hukker
11-10-2007, 06:50 PM
I doubt that razoor, theres a whole bunch of features added from 2.1 to 3.1.
weisan: in my opinion you should start with a new config and try to make sence of everything new added :)

weisan
11-10-2007, 07:38 PM
how nice to do a new install .. just a few weeks after i've updated from 5.8.5r to 6.2.1 ...

Yil
11-11-2007, 11:20 AM
Haven't had any time on the computer the last few days. GF's birthday is today and we just haven't been home lately :)

I'll try to get that new release out by tomorrow (monday).

As for upgrading try reading the changelog again. At the top is every file that needs to be replaced, and below that changes to the ioFTPD.ini file are documented. Even if no changes to the .ini file are made it should probably still work, just without the new features.

weisan
11-11-2007, 02:16 PM
Should be nice though to have some upgrading instruction to look at ...
U're doing a great job Yil .. i fully understand u have no time to do all the doc's in time ..

Mave
11-11-2007, 02:47 PM
Darn i,m really amazed again and again and again!!! :mrgreen:

You are like a angel from heaven.
I,m so glad that you do continue and continue and continue on this project.
Sometimes i wonder .... Are you really a human from earth?
Looks more you did come from some planet ( Some planet called high tech programming ).
Never seen this kind of development,support, before.

GREAT WORK YIL ..... :) :) :)

o_dog
11-11-2007, 03:53 PM
YiL: you should start a fan club. Beware of stalkers though!!

weisan
11-11-2007, 08:09 PM
I've just upgraded to v6.3.1 and it took me about an hour .. to read carefully the changelog.txt and to edit ioftpd.ini .. well .. i guess I was a little bit lazy ... but everything seems to run fine :)

hukker
11-12-2007, 11:55 AM
Got a crash log from ioftpd 6.3.1 running on a windows 2003 server, I cant really tell you what it might be thats causing it, happends a few times / day, if you want to have a peak let me know yil.

Else I can wait for .3.2 version and check if it happends again.

Yil
11-12-2007, 06:59 PM
New Version

ioFTPD-v6.3.2.zip (http://home.comcast.net/~yil/ioFTPD-v6.3.2.zip)

v6.3.2 Release Notes:

*** File Modifications:

1) File system\ioFTPD.exe changed. Version 6.3.2.0


*** Fixes:

2) MDTM now closes the filehandle it opened when adjusting timestamps and
marks the directory cache as stale so the new timestamp will be picked
up.

3) The MDTM success response now includes a trailing newline, this was
causing clients to hang.

4) When attempting to download a file that cannot be opened for reading (such
as when the file is still being uploaded or a zipscript locks it) shared
memory was being incorrectly freed. This eventually results in memory
corruption. This must have been longstanding 5.x bug as well.


*** Functionality changes:

5) CRASH-Log.txt now includes the thread ID of the crashing thread to resolve
ambiguity in stack dumps.

6) Users with 1 flag are now considered administrators of all groups and thus
ignore their admingroup settings. Previously only M accounts did this.

7) A user without the 1 or M flag who has access to privileged commands (i.e.
someone with the G flag) who has no admingroups defined is no longer
considered an administrator of all groups. Such a user must be granted
authority over specific groups now.

8) Site uinfo/ginfo commands now apply the same test as above which means G
only flagged users cannot see detailed info about users or groups besides
those explicitely granted them.

9) As a side effect of the above changes, the site kick command now uses the
same rules. Non 1/M flagged users must have group admin rights defined
for the user they wish to kick.

10) M flagged accounts logged in via 127.0.0.1 can now add/delete the M flag
from any account, delete/rename other M flagged users, and add/remove IP
hostmasks from other M flagged users.

monk-
11-12-2007, 07:02 PM
yil: maybe a good idea to add a line in the ioFTPD.log when ioFTPD is crashing,
this way a bot can read the log and spam a crash on irc
or make an event of it..


edit:
oh nice, new release
those grpadmin features have been missing for a long time
this sounds like the problem i had :):
4) When attempting to download a file that cannot be opened for reading (such
as when the file is still being uploaded or a zipscript locks it) shared
memory was being incorrectly freed. This eventually results in memory
corruption. This must have been longstanding 5.x bug as well.
great work,
respect

Flow
11-13-2007, 02:39 AM
errrr, no word to describe the gratitude for the hard great work you putting into this peojekt... err... "i love you?" ...err .... you really rock Yil !. btw, you think you can generate a code a small prolggy to generate ssl certificate based on newer version of oenssl togo with these upcoming ioFTPD and Openssl version?

Yil
11-13-2007, 08:40 AM
monk: I think that's exactly the bug you, hukker, and lots of other people on busy servers were having. Of course it could be a long time before the corrupted memory makes things go bad and that made it really hard to find. The funny part here is I don't think I would have found this bug if I hadn't goofed up on the MDTM command and forgot to close a file handle. That started triggering the old bug all the time so I could catch it in a debugger.

Flow: Err, you lost me... openssl? ioFTPD uses the windows SSL libraries. There are ways to use openssl to generate a self signed cert, and I think it might be possible to even use makecert to generate one if you export it correctly... Of course as far as ioFTPD goes you can now create/delete certs using site commands now :)

Update: I forgot to include this in the changelog.

File system\ioFTPD.pdb changed.

That file is necessary for printing the text in crashlogs correctly.

Flow
11-14-2007, 07:07 AM
Oh kool, dohh, thanks. Dang that MDTM bugg brought up a few fixes. Really nice to have those fixed.

Zer0Racer
11-15-2007, 08:18 AM
Yil, very nice updates indeed! :)

Only thing that I've had problems with is symlinks. Sometimes when I upload new dirs (to a dir which I have a symlink pointing to) the symlink somehow updates to that newly uploaded dir or something and is screws the original dir up so that it appears empty. I have to manually reset the symlink and rename to original dir and then back to the correct name for the dir list to show everything again.

This has appeared for me a couple of (random) times since the new symlink functions of 6.2.0. It doesn't trigger a crash so I'm not sure on how to debug it. Any ideas?

/ZR

Yil
11-15-2007, 01:45 PM
Zero: When the new site symlink function was added I changed the way relative symbolic link paths were evaluated:

7) Fixed relative symlinks. You can now use links of the form a -> b,
a -> ../b, a -> ../../foo/b. Previously you could use relative links
but it was necessary to prepend an extra "../" which is clearly wrong
when viewing a directory listing.


Are you using relative symbolic links? And/or are their scripts that use them that may be using the old method? From my experience most scripts tended to use absolute links which won't have been affected, but suffer from being incorrect if the directory structure is moved around.

As far as the new site symlink function goes it's just a shorthand for creating symlinks. If you aren't using the function it should have no effect as everything under the covers remained the same. Since you aren't creating a new symlink in this case I don't think it's even involved in this problem. If you are using it let me know though.

Next time you notice this happing, try a couple of things. Get the names of the dirs involved so we can see the relationships to any potential renaming effects that might be going on. Then try logging into the server with a fresh ftp client so none of the directories are cached in the client. See if the problem exists on the 2nd login as well. If ioFTPD has a messed up cache it should be wrong in both. Now shut the server down and restart it to see if the problem was cache related or if it's wrong on disk somehow...

dairinin
11-15-2007, 04:41 PM
Just installed subj, and here is the problem.
If user with d/l manager (such as FlashGet) begins multithreaded d/l from server with limited connections per ip, and if connection limit in d/l manager exceeds connection limit in ioFTPD, he eventually gets banned by this section:
# To be removed from the ban list a user MUST NOT attempt to connect during
# the temp ban time else he'll just keep pushing the ban farther out...
Connections_To_Ban = 6 # 6 connections without a reset and
# IP is temp banned (5)
Ban_Counter_Reset_Interval = 60 #
Temporary_Ban_Duration = 300 # Seconds host remains banned


When this happens, ioFTPD crashes after a small amount of connection attempts from banned IP. Windows just reports that application stopped working.

System is Vista Ultimate x64

Zer0Racer
11-16-2007, 07:07 AM
Yil,

I guess I'm using a combination of the new and old way to create or modify the symlinks. The new way of creating symlinks is very nice since you don't have to create an empty dir manually and then converting into a symlink. So I use it for creation. Then, to modify the symlink, I use the good ol' chattr command.

Basically I have two symlinks, with absolute paths ie. /section/year/month, in the ftp root dir pointing a couple of levels down in the dir structure and no symlinks going back. Once a month I change the targets manually and rename the dir/symlink so it represents the correct month in this case.

Will try your suggestions if it happens again.

Thanks

/ZR

pion
11-17-2007, 01:04 PM
How come credits aren't updated when user got ratio 0?

Wouldn't it be more logical to have credits update on user upload? In case you want to change the ratio at a later stage...

Yil
11-17-2007, 04:16 PM
pion: the credit question is a good one. I can definitely see why we should keep track of credits even with a no ratio account, but what about negative credits? I suppose we could pin credits to 0 instead of going negative though...

neoxed
11-17-2007, 08:53 PM
Because with the ratio multiplier being 0, they don't get any credits.

If a user has a upload ratio of 1, they get the same amount of the credits as the amount they upload.
If a user has a upload ratio of 2, they get twice the credits of the amount they upload.
If a user has a upload ratio of 0 (unlimited), how many credits should they get? 1x, 2x, 3x, or none?

Last I checked 15,000 multiplied by zero is zero.

I suppose we could pin credits to 0 instead of going negative though...
Negative credits are needed for nukes, to punish users. (I have seen negative credits very often with large nukes).

Yil
11-17-2007, 11:00 PM
neoxed: very good point about 0 multipliers, though I think it might be possible to extracting the ratio from the group, group.default and/or default.user settings. If nothing was defined then just ignore it like now.

Given the difficulty in looking up ratios from multiple places though I'm gonna punt on this idea... You can always look at the alltime up/down totals per section for the user and reconstruct a "credit" for the user via a script if necessary.

o_dog
11-17-2007, 11:02 PM
Yes negative credits are definitely needed, but it would be ncie if it kept track on credits for users with leech.

Zer0Racer
11-18-2007, 04:00 AM
Keeping track on credits for users with leech seems like a useless idea imho. Users with leech don't need credits to download and don't have to upload anything to be able to download. And if they DO upload...

...their STATS are counted and if a particular user is changed from leech to ratio (and even if that user hasn't had leech all the time) you as administrator can give him the amount of credits you think he is entitled to based on his upload stats. That amount probably won't be 100% accurate but close enough and will be a good start for that user to get used to ratio instead of leech on the site.

/ZR

Flow
11-18-2007, 12:43 PM
Hi Yil! , i rebooted my pc just for the fun sake, i was surprise when i cant login when system is up. This was found in pc log.msg. I manually start ioFTPD service, and it works again.

Händelsetyp: Fel
Händelsens källa: Application Error
Händelsekategori: (100)
Händelse-ID: 1000
Datum: 2007-11-18
Tid: 13:08:21
Användare: Saknas
Dator: ioFTPD
Beskrivning:
Felaktigt program ioFTPD.exe, version 6.3.2.0, felaktig modul ioFTPD.exe, version 6.3.2.0, felaktig adress 0x000422cf.

Mer information finns i Hjälp- och supportcenter på sidan http://go.microsoft.com/fwlink/events.asp.
Data:
0000: 41 70 70 6c 69 63 61 74 Applicat
0008: 69 6f 6e 20 46 61 69 6c ion Fail
0010: 75 72 65 20 20 69 6f 46 ure ioF
0018: 54 50 44 2e 65 78 65 20 TPD.exe
0020: 36 2e 33 2e 32 2e 30 20 6.3.2.0
0028: 69 6e 20 69 6f 46 54 50 in ioFTP
0030: 44 2e 65 78 65 20 36 2e D.exe 6.
0038: 33 2e 32 2e 30 20 61 74 3.2.0 at
0040: 20 6f 66 66 73 65 74 20 offset
0048: 30 30 30 34 32 32 63 66 000422cf

I cant find crashlog anywhare on box, i can do full search if i knew what filename it is. Anyway, whats the plan for 6.4x ?

Yil
11-18-2007, 08:15 PM
Flow: That's a new one to me. The address is so low it's beneath ioFTPD as well as any system library I know of so that's not much help. It's possible ioFTPD started before something it depended on and got really confused so it never even got to install the crash handlers. As a service though, after 30 seconds or something it probably should have auto-restarted if it really did die.

If you use the lame service installer I wrote it makes ioFTPD dependent on a couple of subsystems like TCP, etc during bootup. Perhaps there is another one it needs and you found a rare race condition. Library functions don't document their dependencies so it kinda sucks trying to figure out what is needed... This might also be a version issue as well with the dependencies where XP differs from 2003/vista. I've got ioFTPD running under XP and 2003 and perhaps 50-60 reboots later no issues that I've seen so it can't be common.


6.4 will probably deal with drive spanning (which really can't be handled by a script), and drives running out of space since I haven't seen scripts deal with this well. I also think I'm going to add pre/post processing for site commands like regular commands have. This should allow scripters to provide finer grained control and/or verify arguments if necessary. I've also got a couple of cool ideas for new features but we'll have to see about those.

o_dog
11-18-2007, 10:44 PM
what you mean "drives running out of space"? warchive works for that. If not it's like a 1h thing to write.

Yil
11-19-2007, 01:25 AM
Drive spanning and running out of space in this case go hand in hand. When a raid/merged directory runs low on disk space on the last listed drive, it should switch uploading to the next drive with free space. I discussed a number of issues associated with this (it's a hard problem to get right) so it's tricky. As a side effect of determining when to switch to the new drive it will handle a regular single directory mountpoint by just halting uploads and/or new directory creation.

It looks like warchive doesn't actively prohibit uploads or dir creation, but starts deleting stuff automatically. That's cool for people who want that done automatically, but even in the best of cases it doesn't understand raided directories and won't switch drives.

Unfortunately this is considerably harder than a 1hr solution and I pulled my first attempt from 6.3 just to get it out the door :(

o_dog
11-19-2007, 08:11 AM
wouldn't it be easier to just use the drive with the most amount of free space?

zkx
11-21-2007, 06:43 PM
wouldn't it be easier to just use the drive with the most amount of free space?

easier?
maybe.
does it make sense?

not really, it's not really all that nice when every other dir/file gets created on a different drive, and that is what would happen if it would just blindly use whichever drive has most free space.

o_dog
11-22-2007, 04:22 AM
depends what you're going to use it for i guess.

Soxiz
11-24-2007, 11:08 AM
Hi Yil

Great work with the new version, i have a simple question tho. In the readme you write the following:

1) Extract the zip file to C:\ If you put it anywhere else you will need to
change the path of the link in the handy ioFTPD-Start shortcut if you want
to use it to start the server and ioGUI.

I wonder what you mean with change the path of the link.. The ioFTPD-Start is a .exe file and not a windows shortcut..

Best Regards
Mads

Yil
11-24-2007, 02:22 PM
mads: Yea, just ignore that. It used to be a shortcut in older versions, but I made it a really simple executable to eliminate that shortcut issue :)

rolan
11-26-2007, 09:27 AM
hi,Yil
i had close SSL connect , but remain gimme these error , and restart ioFTPD.
Require_Encrypted_Auth = !-ioFTPD !*
Require_Encrypted_Data = !-ioFTPD !*

11-26-2007 20:35:17 SSL: "Unable to locate default certificate" "name=ioFTPD" "Service=FTP_Service"
11-26-2007 20:35:17 START: "PID=2884" "CmdLine="

11-26-2007 20:38:38 SSL: "Unable to locate default certificate" "name=ioFTPD" "Service=FTP_Service"
11-26-2007 20:38:38 START: "PID=1612" "CmdLine="

thx.

o_dog
11-26-2007, 03:25 PM
you haven't installed the certificate or you have entered the wrong certificate name in ioftpd.ini

PSA9
11-26-2007, 03:30 PM
Yil i want to fight u unless u teach me your coding skills! Keep up the awesome work. 6.3 added many new features and i can't wait to try!

Originally Posted by o_dog
wouldn't it be easier to just use the drive with the most amount of free space?

while Drive spanning is the only thing i left i waiting for in ioFTPD i would rather wait a as long as possible for yil to get it working good while its not a feature i have to have just something that would be nice. however please dont do it the way o_dog suggest. every time i would upload a release it would be on a different hdd or even maybe even every other file would be on another hdd which would be super dumb. say i have 5 750GB for x264 i fell it should send to the last hdd in the VFS as it does now, then when full send to the next, and then when that full to next, etc.

however i dont know if this is planned or if even possible, but it would be nice if on upload a release to check if their is enough free space to put whole release on hdd, if not put to next. a STRONG reason why this would be nice is, if the realease is on 2 different drives u would not be able to extract it as easy. while this would not be important on say a topsite FTP, it would be very nice if the FTP is on a computer u actually extract and burn stuff on!

rolan
11-26-2007, 08:16 PM
you haven't installed the certificate or you have entered the wrong certificate name in ioftpd.ini

yes, i not install that certificate, but i not need the SSL connect.

Yil
11-27-2007, 02:17 AM
rolan: that "error" is just notification that it can't find a certificate. If you aren't using SSL and thus never bothered to create a certificate (now available via "site makecert") just ignore the logfile message as it's just informational in your case.

PSA9: I haven't started working on it again, but check out the end of the 6.2 thread for some of my thoughts on the subject. I believe I have figured out a solution that does exactly what you expect. Files in a directory are never split, but it will starts new directories on a new disk if free space on the current one is below some threshold based on the VFS path. I.e. xvid may require 2 gig, but dvdr 5 gig. It also has a mechanism to specify which directories need to stick together. So CD1 will always be next to CD2, etc... The only piece I'm not sure of is how to handle deletions. I.e. you delete 1 directory and now free space exists on the first disk so should the next dir go onto the first disk, or the current disk. I see arguments both ways, so I'm guessing it will be another option... Or perhaps it can switch to the new drive, but a site command resets it to the original... I also need to handle the annoying case where 2 releases are OK when they start but consume the drive, and perhaps a way to punt a dir to another drive via a site command...

hukker
11-28-2007, 12:55 AM
hey yil
Iam having issues where ioftpd just locks up, it doesnt crash at all, restarting the service does not seem to help, I even had to change ports in order to make it run again. I had a look at netstat on windows and I noticed (after ioftpd locked up a second time) that the old port was still being used or it hadnt closed or what ever... at one point it did crash it seems... I have a crash log from a vista system if you wish to have a peak.

ioftpd latest

hukker
11-28-2007, 03:21 AM
looked something like this, I edited a bit to hide ip / host

TCP 85.xxx.xxx.xxx:51234 c-24:38f680 CLOSE_WAIT
TCP 85.xxx.xxx.xxx:51234 c-25fg:42603 CLOSE_WAIT
TCP 85.xxx.xxx.xxx:51234 c-d5:42607 CLOSE_WAIT
TCP 85.xxx.xxx.xxx:51234 c-245:42609 CLOSE_WAIT
TCP 85.xxx.xxx.xxx:53321 05-taa:20817 CLOSE_WAIT
TCP 85.xxx.xxx.xxx:53321 c-5:57029 CLOSE_WAIT

and it kept on going... the box aint behind a firewall or router of some sort.

Yil
11-28-2007, 05:06 PM
hukker: I think you are seeing two different problems. On a quad processor system I have seen many cases of ioFTPD locking up in a weird fashion I explained a while ago and have yet to really understand. Basically the process was sorta running, you could even login sometimes but it wouldn't show directory listings. Interestingly enough you couldn't even use "site crashnow" to force a crash. It was like an undead zombie! The only way to actually restart it was to kill the process outright in task manager. I simply can't figure out how the exception handler isn't being called so when I rewrote it for 6.3 I tried to not use any function I thought had a chance of trying to acquire the loader lock (my first thought) before printing out something to the crash logfile. I was hoping this would provide some more info...

Having said that using the service manager to try and restart the service stands a worse chance than a hardware exception does. So I'm not surprised that your efforts failed, although killing the process in the task manager first should allow the service to restart fine. I wasn't running the server as a service, but in all those lockups I had no trouble restarting the server. I think the original zombie process locked up and you never actually restarted it so the port was still held...

Of course I'm still no closer to figuring out what is going on to cause this than before so feel free to send me anything you can... I was really hoping 6.3 would fix this, but I've had it happen twice more so the problem is still there.

hukker
11-29-2007, 12:48 AM
hmm ok, sounds like a nasty one :\

Ive sent over a crashdump from a vista system and one from server 2003, the vista does contain the problem we just talked about. The other system, server 2003, Iam not sure if its the same issue or another but I guess you can check that out aswell. Server 2003 crashed once and that was it.

Sabour
12-02-2007, 08:00 AM
@Yil
will you release the 6.3.2 source code?

Yil
12-07-2007, 05:06 PM
noelek: Enable PMs from people. I can't reply to you :) The minidump you sent me is crashing during a shutdown event (site shutdown or computer shutting down) and will be tricky to fix since I've previously mentioned ioFTPD sorta crashes during shutdown because that's the way it was written. I'll see what I can do, but I'll add an option to suppress dump creation during shutdown events in case this becomes a wider problem...

I've got about 10 fixes for a new release that will be out in the next few days although I'm really trying to figure out the lockup issue and not making any real progress yet...

pion
12-08-2007, 11:12 AM
site change admingroup doesn't show in syslog?
(neither does site take, or site give)
When excecuting the admingroup command, io returns modified, but not removed or added.

And there is no command to show what admingroups that's added?

Hard to tell if the setting is correct or not on a user then :P

Also:
If a user with privileges site wide add or purge a user within a group, the groupslots doesn't update. Neither if a user is given leech do from outside do the slots update. Only if gadmin of that group does it.


But the rest of the gadmin feature seems to be working smooth now! Go Yil! ;)

pion
12-08-2007, 04:50 PM
Is the next io going to support more than 256 characters in filename / dirname? :)

tuff
12-08-2007, 09:28 PM
thats a windows limitation

pion
12-09-2007, 09:49 AM
thats a windows limitation


Why do you figure that?

I tested it... could rename files and folder with 300 chars just fine

Yil
12-09-2007, 04:34 PM
Filenames: I believe it's like 260ish chars and that is a windows limitation for ordinary filenames. You can use a special filename suffix on I think windows 2k+ and later to indicate a unicode filename which can be up to 32k characters long so you're both right :) Windows explorer does it correctly, and some other apps that don't do it right appear to work with longer paths because they set the current working directory and then use only relative paths under 260 characters from there... The FTP with paths all over the place on different drives has to use full paths though.

The problem is I'm not sure how hard it would be to change over all places where a fixed width is used. The good news is the most common place is inside the path structure and it doesn't assume 260 chars. Inside ioFTPD itself the max VFS length is 512 so in some cases you can already fake things out by mounting top level physical dirs deep inside the VFS...

Full unicode filename support such as isteana wants is really hard with this codebase as I've pointed out in the past. However, longer filenames is much easier because the code would still be compiled using single byte characters and thus won't break things all over the place. I don't plan on doing anything about this problem right now though...


pion: site change admingroup doesn't create a logentry. I agree, seems like it should and I'll add one.

Viewing admingroups: I changed the default "site uinfo" somewhere around v6.2 when the default group for newly created users started using the first listed admingroup of the creator. If you haven't updated that file you might want to as it shows a list of all the admingroups in order for the user now... It's a bit tricky to get the order of the entries in the admingroup correct since you can only add/remove entries. Thus to get a newly added admingroup to the front you need to remove all existing entries and then add them back. Kinda sucks, but it's the same problem the normal group list has as well and the first entry there is important since new files/dirs get that group by default... ioGUI will also show groups and admingroups but there isn't a good way from the user editor to tell which are the first entries.

site take/give: Those are not internal ioFTPD commands, the script needs to create a log entry.

site adduser/deluser: These commands appear to update the group user and slot count correctly. Are you using these commands or a script to do it?


hukker, noelek, pion: I think all 3 of you are using nxmydb and the libsql libraries and seeing crashes pretty often. Since I'm not seeing that elsewhere and you all have it in common I suggest you try not using it for a couple of days and see if things are otherwise stable... It's probably a simple bug but at least we would know where to start to look.

monk-
12-09-2007, 09:52 PM
yil: about viewing groupadmins, oke, maybe when i update a text file with cookies, it shows the groupadmin the user is added to on site uinfo, but what i really want is just a list of all users that have which groupadmin(s) added, whithout careing in which order they are added (assuming a gadmin only is groupadmin of 1 grp)
with nxmydb i just look in the db to see a list of groupadmins (SELECT * FROM io_user_admins)
but theres no site command to view a list
like site users, site groupadmins?

ps: site users is missing a feat to show a list of users with a certain flag
viewing a group works, wildcard users works, but no flags

hukker
12-10-2007, 03:25 AM
yil: ok np, Ive disabled nxmydb, Ill let it run for a few days or something, see what happends... transfer some larger data aswell, see if it holds out.

oldhouse
12-10-2007, 09:49 AM
I can't see 1st file line in ioFTPD.log anymore. This was used by some scripts and now obviously they can't announce it.

Is it just me noticing this behaviour?

Using same zipscript with older ioftp version I had that line...

hukker
12-10-2007, 11:49 AM
works fine with ioninja. Its possible that some zipscripts havent followed the ioftpd development.

[xxxx]-[UPDATE] xxxxxxxxxx.xxxxxx.x-xxxx got first file from xxxx of xx at xxxKB/s. Now expecting x.xGB.

Flow
12-10-2007, 01:53 PM
Hi Yil, how many arguments is allowed in the pasv port range settings? Does this format supported:

Exmp: pasv_ports 10000-11000 20 21 22 23 80 110 1600-1610 35000-35050

If not, is it hard to implement?

Yil
12-10-2007, 05:01 PM
oldhouse: 1st file notification in the logfile is entirely up to the zipscript. ioFTPD itself does not generate such a message.

Flow: Darn good question. Looking at the code it appears that a single number or a range (i.e. x-y) are fine and that combinations are ok. However spaces between entries doesn't appear to be a valid separator. A comma (",") without any leading spaces appears to be though. So 10000-11000,20,21,22... should work.

I think that's unclear, and certainly not documented, so I'll probably change it so spaces work :)

Yil
12-11-2007, 01:41 AM
Just a quick update on the port range question. Above the loop reading the port details there is a call to a function to remove all spaces from the line that I missed. Thus port elements still must be comma separated but spaces around the -'s and ,'s are fine. Your example however will probably fail since the multiple elements are not properly separated and all those numbers are likely to be turned into one big one...

Flow
12-11-2007, 01:58 AM
ok, should update the .ini info on that one. If is working with comma, no worries about adjusting codes then i guess, dunno. Just good to know what/howto it support.

Zer0Racer
12-11-2007, 09:49 AM
I think that's unclear, and certainly not documented, so I'll probably change it so spaces work :)

I beg to differ ;)

http://www.inicom.net/pages/en.ioftpd-documentation.php?s=4

Ports --> Ports used for data transfers. May contain comma seperated list of port ranges.
Example: Ports = 1024-2048, 3355, 5000-5999, 25001-26000, 31337

At least the comma seperated part is correct. Just my example that is wrong then. :P

/ZR


Edit: so the function filters out spaces? weeee the docs are correct then ;)

PSA9
12-12-2007, 07:21 AM
SSL HELP PLEASE

This is the first time i try SSL since Yil took over, and when i did have SSL setup i was using winXP. i am using winVISTA Ulimate x64. either this dont work with x64 or am i dumb on trying to set it up.

from a master account, i trying to do a raw command site makecert
when i do so nothing shows in status and no sign of a cert.

Also do the logs have a size limit on them, or will xferlog end up being 1gb one day?

Yil
12-12-2007, 04:35 PM
PSA9: If you could cut/paste the results of "site makecert" that would be good. Also perhaps the relevant portions from the ioFTPD.ini file. I can't verify x64 results locally, but you can manually try to run makecert and see what happens like you did in the past. If that works then we'll have to figure out what didn't work. Take a look in the Changelog file to find the section on makecert to find the trick that might work to let you view installed certs without downloading CertMgr from MS.

Logs don't have a size limit, they will indeed continue growing. Use an external log rotating script if it's a big issue.

hukker
12-13-2007, 03:21 AM
yil: ioftpd is running still without any errors what so ever... it just might be the sharedb / ioftpd thats causing theese strange crashes or lockups whatever you want to call it.

I hope it makes it a tad easier for you now...

Yil
12-13-2007, 07:20 PM
Glad to here that hukker. ioFTPD exposes a rather limited interface to modules and actually makes use of some of them internally so I'm betting it's a simple memory corruption issue in sharedb since it's a lot of new code. I've written my share of them and am still trying to clean up existing ones in the code as shown by the latest download corruption issue I fixed...

Yil
12-15-2007, 03:07 AM
New version which I suggest everyone upgrade to sooner rather than later...

ioFTPD-v6.3.3.zip (http://home.comcast.net/~yil/ioFTPD-v6.3.3.zip)

v6.3.3 Release Notes:

*** File Modifications:

1) File system\ioFTPD.exe changed. Version 6.3.3.0

2) File system\ioFTPD.pdb changed.

3) File system\ioFTPD.ini changed.


*** New Features:

3) New ioFTPD.ini option (Max_Log_Suppression) : The maximum time (in minutes)
to suppress rejection log entries (auto-banned, unmatched client, or
Host.Rules) for the same reason from the same IP. Previously the
connection rejection messages were limited to 1 per minute per type (it
didn't work right), but now the time between entries goes up by a minute
per printed message so the 2nd entry won't be printed unless 1 minute has
passed, the 3rd entry until 2 minutes has passed since the last entry, and
so on until Max_Log_Suppression (default of 10) is reached. This should
prevent hammered servers from producing lots of log spam. These counters
do not reset unless the host falls out of the internal hostcache, however
auto-banned hosts who come off the auto-ban list can connect normally
until they would be auto-banned again at which point the time between
log entries resumes where it left off.

4) "Site change admingroups" and "site chgrp" now allows a leading dot (.)
before a groupname to signify that this group should be the default, or
first listed group. The .group is a special case because if the group
is already first nothing happens, else it's moved to the front of the
list if already present (instead of being removed), or it's added into
the first position if it wasn't already there. They now also echo the
appropriate list of groups, in order, after all changes are applied.

5) "Site users" now accepts a leading dot (.) before a 1 character search
term which is the user flag to match. This option may be negated
with '!' like the other search terms. Thus "site users .1" will find all
admins, and "site users .3 !=foo te*" will find all users who are not a
member of the foo group but have the 3 flag or whose name starts with "te".

6) The Secure_IP option now applies to "site adduser" instead of just
just "site addip".

7) "Site change admingroups" and "site change stats" now generates logfile
entries when performed by an administrator like all other site change
commands.


*** Functionality changes:

8) Hostmasks composed exclusively of numbers, '*', and '.' will now be
considered IP addresses and will only be matched against the IP address
of the client during login verification and/or connection rejection.

9) ioFTPD is now case insensitive when dealing with mountpoints. File and
directory names were already case insensitive, but mountpoints weren't.

10) The obscure routines now use # in place of * for obscured fields to
make what is going on much more obvious. They now also preserve field
structure so *@1.2.3.4 (with Obscure_IP set to 2) would be *@1.2.#.#
but *@1.2.*.* wouldn't be touched as it is already ambiguous enough.

11) The Obscure_Host/Obscure_IP options now apply to site addip/delip syslog
events. I originally didn't think this was a good idea since the log
would be useful to see what was going on and who did what. However with
people printing the sysop log to admin channels it's probably better to
do this.

12) If a site or scheduled EXEC style event cannot create the process the
failure is now recorded in the error log along with the command line.
Many other types of failures are possible that don't result in the
process being started, but this should enable users to easily see when
missing executables, invalid paths, etc are being used.

13) ioFTPD.ini incorrectly sets permissions for the "site space" builtin
command when it is really called the "site size" command.

14) The Secure_IP option now indicates in the log and output if no rule
was matched but the hostmask was added because the user making the
changed has the M flag. It prints "(master override)" after the change.
You can turn this feature off, by just enabling the rule that lets M
accounts do anything since that will always match.

15) In ioFTPD.ini the text and default settings for Secure_IP changed.

16) All "site change" commands now respond with text very similar to the
logfile entry when entered interactively to verify the change that just
occurred.

17) User and group names can no longer begin with '=' or '-'.


*** Fixes:

18) Site chmod and site chown didn't properly check their arguments. Failure
to supply a file/directory name in some cases would crash the server.

19) Changed a test for an empty string in the auto-ban logic that was causing
crashes for servers rejecting some connections.

20) The Immune_Hosts and Immune_Users options should now be working correctly.

21) The ioFTPD.ini documentation for the passive port range setting (ports=)
under the device section ([Any] in default) has been updated.

Yil
12-15-2007, 03:38 AM
Quick note: If you managed to download v6.3.3 within 15 minutes of my posting it go grab it again as it had a version of site users which I was still debugging and not the final build.

noelek
12-15-2007, 05:16 AM
Hi Yil, you have PM.

pion
12-16-2007, 10:37 AM
Is RNFR and RNTO working across different harddrives now?

Yil
12-16-2007, 08:55 PM
pion: Yup, you can move files/directories across drives all you want. It even prints status messages for longer moves :)

Yil
12-16-2007, 10:15 PM
Just 2 quick notes:

1) If you attempt to use a recursive command (site size, moving dirs across filesystems, site chmod, site chown, etc) and it runs across a directory that contains names longer than the 260 character default of windows it will "crash" the server because I'm using the "safe" versions of the string manipulation functions that fail rather than corrupt memory... I'll change this to use the fixed length version of these commands so this doesn't happen in the future. The "good" news is that my using these commands makes finding problems easy instead of having to track down random memory corruption somewhere totally unrelated later on :)

2) If you get regular program crash messages instead of ioFTPD producing a crashlog and minidump it's caused by my use of the string safe routines. I was under the impression these should be throwing an exception which isn't caught which should results in my unhandled exception handler generating the crashlog, etc. However it appears that since the code isn't using regular exceptions since it's C code that it's somehow just crashing immediately. This is probably the right thing for the library to do, but I'll have to find a way to get around it so the program can create a minidump and crash without a dialog box popping up...

Hooch
12-18-2007, 06:55 PM
hi there.. i am new to this version and get the following crash.txt on adding a new ftp user:

Wed Dec 19 00:41:39 2007 - ioFTPD v6.3.3
Unhandled exception: Access Violation (0xC0000005)
Address: 0x00401431 [attempting to write data to 0xB4040002]
PID=2480, PATH=D:\ioFTPD\system\ioFTPD.exe
Thread ID: 3904

System information:
Processor #0 Name: Intel(R) Core(TM)2 CPU 6320 @ 1.86GHz
Processor #0 Identifier: x86 Family 6 Model 15 Stepping 6
Processor #1 Name: Intel(R) Core(TM)2 CPU 6320 @ 1.86GHz
Processor #1 Identifier: x86 Family 6 Model 15 Stepping 6
OS: Windows 5.1 (build 2600)
Registry: Microsoft Windows XP
Decoded: XP Home - Service Pack 2
Page size: 4096

Modules:
--------
[00400000 - 0047c000]: D:\ioFTPD\system\ioFTPD.exe (v6.3.3.0)
[7c910000 - 7c9c7000]: C:\WINDOWS\system32\ntdll.dll (v5.1.2600.2180)
[7c800000 - 7c907000]: C:\WINDOWS\system32\kernel32.dll (v5.1.2600.3119)
[10000000 - 10163000]: D:\ioFTPD\system\php4ts.dll (v4.4.7.7)
[7e360000 - 7e3f0000]: C:\WINDOWS\system32\user32.dll (v5.1.2600.3099)
[77ef0000 - 77f37000]: C:\WINDOWS\system32\gdi32.dll (v5.1.2600.3159)
[71a30000 - 71a3a000]: C:\WINDOWS\system32\wsock32.dll (v5.1.2600.2180)
[71a10000 - 71a27000]: C:\WINDOWS\system32\ws2_32.dll (v5.1.2600.2180)
[77be0000 - 77c38000]: C:\WINDOWS\system32\msvcrt.dll (v7.0.2600.2180)
[71a00000 - 71a08000]: C:\WINDOWS\system32\ws2help.dll (v5.1.2600.2180)
[77da0000 - 77e4a000]: C:\WINDOWS\system32\advapi32.dll (v5.1.2600.2180)
[77e50000 - 77ee2000]: C:\WINDOWS\system32\rpcrt4.dll (v5.1.2600.3173)
[77fc0000 - 77fd1000]: C:\WINDOWS\system32\secur32.dll (v5.1.2600.2180)
[774b0000 - 775ed000]: C:\WINDOWS\system32\ole32.dll (v5.1.2600.2726)
[770f0000 - 7717b000]: C:\WINDOWS\system32\oleaut32.dll (v5.1.2600.3139)
[745d0000 - 7460d000]: C:\WINDOWS\system32\odbc32.dll (v3.525.1117.0)
[5d450000 - 5d4ea000]: C:\WINDOWS\system32\comctl32.dll (v5.82.2900.2982)
[7e670000 - 7ee90000]: C:\WINDOWS\system32\shell32.dll (v6.0.2900.3241)
[77f40000 - 77fb6000]: C:\WINDOWS\system32\shlwapi.dll (v6.0.2900.3199)
[76350000 - 7639a000]: C:\WINDOWS\system32\comdlg32.dll (v6.0.2900.2180)
[00480000 - 00551000]: D:\ioFTPD\system\tcl84t.dll (v8.4.2.15)
[77a50000 - 77ae5000]: C:\WINDOWS\system32\crypt32.dll (v5.131.2600.2180)
[77af0000 - 77b02000]: C:\WINDOWS\system32\msasn1.dll (v5.1.2600.2180)
[77bd0000 - 77bd8000]: C:\WINDOWS\system32\version.dll (v5.1.2600.2180)
[773a0000 - 774a3000]: C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll (v6.0.2900.2982)
[20000000 - 20019000]: C:\WINDOWS\system32\odbcint.dll (v3.525.1117.0)
[03000000 - 03115000]: D:\ioFTPD\system\dbghelp.dll (v6.8.4.0)
[5b0f0000 - 5b128000]: C:\WINDOWS\system32\uxtheme.dll (v6.0.2900.2180)
[00a80000 - 00a8f000]: C:\Programme\Logitech\SetPoint\lgscroll.dll (v4.0.121.0)
[78130000 - 781cb000]: C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a 1e18e3b_8.0.50727.42_x-ww_0de06acd\msvcr80.dll (v8.0.50727.42)
[7c420000 - 7c4a7000]: C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a 1e18e3b_8.0.50727.42_x-ww_0de06acd\msvcp80.dll (v8.0.50727.42)
[77660000 - 77681000]: C:\WINDOWS\system32\ntmarta.dll (v5.1.2600.2180)
[76f20000 - 76f4d000]: C:\WINDOWS\system32\wldap32.dll (v5.1.2600.2180)
[71b70000 - 71b83000]: C:\WINDOWS\system32\samlib.dll (v5.1.2600.2180)
[76620000 - 766d5000]: C:\WINDOWS\system32\userenv.dll (v5.1.2600.2180)
[597d0000 - 59824000]: C:\WINDOWS\system32\netapi32.dll (v5.1.2600.2976)
[20b00000 - 20b4b000]: C:\WINDOWS\system32\imon.dll (v2.70.39.0)
[20c00000 - 20c0c000]: C:\Programme\Eset\pr_imon.dll (v0.0.0.0)
[719b0000 - 719f0000]: C:\WINDOWS\system32\mswsock.dll (v5.1.2600.2180)
[66710000 - 66769000]: C:\WINDOWS\system32\hnetcfg.dll (v5.1.2600.2180)
[719f0000 - 719f8000]: C:\WINDOWS\system32\wshtcpip.dll (v5.1.2600.2180)
[76ee0000 - 76f07000]: C:\WINDOWS\system32\dnsapi.dll (v5.1.2600.2938)
[76f70000 - 76f78000]: C:\WINDOWS\system32\winrnr.dll (v5.1.2600.2180)
[76f80000 - 76f86000]: C:\WINDOWS\system32\rasadhlp.dll (v5.1.2600.2938)
[767a0000 - 767c7000]: C:\WINDOWS\system32\schannel.dll (v5.1.2600.3126)
[0ffd0000 - 0fff8000]: C:\WINDOWS\system32\rsaenh.dll (v5.1.2600.2161)
[68100000 - 68124000]: C:\WINDOWS\system32\dssenh.dll (v5.1.2600.2133)
[74a50000 - 74a58000]: C:\WINDOWS\system32\powrprof.dll (v6.0.2900.2180)


Threads:
--------
ID: 3964 [00130000-0012fe94]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 004185E0 -> [ioFTPD + 175E0] ProcessMessages() + 0x40
[c:\projects\ioftpd6\6.3.3\src\internalmessagehandl er.c, line 106]
# 3: 0041BCD0 -> [ioFTPD + 1ACD0] CommonMain() + 0x30
[c:\projects\ioftpd6\6.3.3\src\main.c, line 250]
# 4: 0041C113 -> [ioFTPD + 1B113] WinMain() + 0x273
[c:\projects\ioftpd6\6.3.3\src\main.c, line 391]
# 5: 00445A2A -> [ioFTPD + 44A2A] __tmainCRTStartup() + 0x177
[f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c, line 324]
# 6: 7C816FD7 -> [kernel32 + 15FD7] ? RegisterWaitForInputIdle() + 0x49


ID: 3888 [00eb0000-00eaff14]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 7C802532 -> [kernel32 + 1532] ? WaitForSingleObject() + 0x12
# 3: 0043B81E -> [ioFTPD + 3A81E] TimerThread() + 0x19E
[c:\projects\ioftpd6\6.3.3\src\timer.c, line 141]
# 4: 7C91E2DC -> [ntdll + D2DC] ? ZwRegisterThreadTerminatePort() + 0xC


ID: 3952 [010b0000-010aff1c]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 7C802532 -> [kernel32 + 1532] ? WaitForSingleObject() + 0x12
# 3: 0043B11F -> [ioFTPD + 3A11F] WorkerThread() + 0x5F
[c:\projects\ioftpd6\6.3.3\src\threads.c, line 441]
# 4: 7C80B683 -> [kernel32 + A683] ? GetModuleFileNameA() + 0x1B4


ID: 3904 [011b0000-011ad93c]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0


ID: 4040 [012b0000-012aff1c]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 7C802532 -> [kernel32 + 1532] ? WaitForSingleObject() + 0x12
# 3: 0043B11F -> [ioFTPD + 3A11F] WorkerThread() + 0x5F
[c:\projects\ioftpd6\6.3.3\src\threads.c, line 441]
# 4: 7C80B683 -> [kernel32 + A683] ? GetModuleFileNameA() + 0x1B4


ID: 4068 [013b0000-013aff1c]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 7C802532 -> [kernel32 + 1532] ? WaitForSingleObject() + 0x12
# 3: 0043B11F -> [ioFTPD + 3A11F] WorkerThread() + 0x5F
[c:\projects\ioftpd6\6.3.3\src\threads.c, line 441]
# 4: 7C80B683 -> [kernel32 + A683] ? GetModuleFileNameA() + 0x1B4


ID: 3908 [014b0000-014aff1c]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 7C802532 -> [kernel32 + 1532] ? WaitForSingleObject() + 0x12
# 3: 0043B11F -> [ioFTPD + 3A11F] WorkerThread() + 0x5F
[c:\projects\ioftpd6\6.3.3\src\threads.c, line 441]
# 4: 7C80B683 -> [kernel32 + A683] ? GetModuleFileNameA() + 0x1B4


ID: 2240 [015b0000-015aff44]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 0043B380 -> [ioFTPD + 3A380] IoThreadEx() + 0x30
[c:\projects\ioftpd6\6.3.3\src\threads.c, line 563]
# 3: 7C91E2DC -> [ntdll + D2DC] ? ZwRegisterThreadTerminatePort() + 0xC


ID: 740 [016b0000-016aff44]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 0043B380 -> [ioFTPD + 3A380] IoThreadEx() + 0x30
[c:\projects\ioftpd6\6.3.3\src\threads.c, line 563]
# 3: 7C91E2DC -> [ntdll + D2DC] ? ZwRegisterThreadTerminatePort() + 0xC


ID: 1876 [017b0000-017aff1c]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 7C802532 -> [kernel32 + 1532] ? WaitForSingleObject() + 0x12
# 3: 0043B570 -> [ioFTPD + 3A570] EncryptionThread() + 0x20
[c:\projects\ioftpd6\6.3.3\src\threads.c, line 649]
# 4: 7C80B683 -> [kernel32 + A683] ? GetModuleFileNameA() + 0x1B4


ID: 1872 [018b0000-018aff1c]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 7C802532 -> [kernel32 + 1532] ? WaitForSingleObject() + 0x12
# 3: 0043B570 -> [ioFTPD + 3A570] EncryptionThread() + 0x20
[c:\projects\ioftpd6\6.3.3\src\threads.c, line 649]
# 4: 7C80B683 -> [kernel32 + A683] ? GetModuleFileNameA() + 0x1B4


ID: 3884 [01a20000-01a1ff0c]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 7C802451 -> [kernel32 + 1451] ? Sleep() + 0xF
# 3: 00433FDC -> [ioFTPD + 32FDC] SocketSchedulerThread() + 0x35C
[c:\projects\ioftpd6\6.3.3\src\socket.c, line 1765]
# 4: 7C80B683 -> [kernel32 + A683] ? GetModuleFileNameA() + 0x1B4


ID: 4072 [01b20000-01b1fce8]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 7C80B683 -> [kernel32 + A683] ? GetModuleFileNameA() + 0x1B4


ID: 4076 [01da0000-01d9fe84]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 7C80B683 -> [kernel32 + A683] ? GetModuleFileNameA() + 0x1B4


ID: 2032 [020f0000-020eff58]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 20B0B9F6 -> [imon + A9F6] ? RegisterLsp() + 0xAD6


ID: 4080 [021f0000-021eff58]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 20B0B9F6 -> [imon + A9F6] ? RegisterLsp() + 0xAD6


ID: 1252 [022f0000-022eff58]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 20B092E7 -> [imon + 82E7] ? NOD32Ioctl() + 0x7507


ID: 304 [023f0000-023eff78]
# 1: 7C91EB94 -> [ntdll + DB94] ? KiFastSystemCallRet() + 0x0
# 2: 7C80B683 -> [kernel32 + A683] ? GetModuleFileNameA() + 0x1B4



-------------------------------------------------------------------------------

i hope to get help here.

thanks

PSA9
12-19-2007, 06:05 AM
these are missing from ioFTPD but if u make the files they do work. dont know if u care to re add them Yil!
ioFTPD\text\ftp\ClientList.Footer
ioFTPD\text\ftp\GroupInfo.Footer
ioFTPD\text\ftp\GroupList.Footer
ioFTPD\text\ftp\UserList.Footer

and maybe ioFTPD\text\ftp\ClientInfo.Footer which i am yet to test
ioFTPD\text\ftp\ClientInfo.Download
ioFTPD\text\ftp\ClientInfo.Idle
ioFTPD\text\ftp\ClientInfo.Login
ioFTPD\text\ftp\ClientInfo.Upload
Are these used? http://www.inicom.net/forum/showthread.php?t=7364&highlight=clientinfo
it talks about it their but the way it show it used is SITE SWHO which is for ClientList text files. are these ClientInfo just examples for ClientList text files or if they are used please tell me SITE COMMAND to make use of them please!

when i do a SITE UINFO nothing turns up for %[admingroups] even if G flag is given, so is this broken, supposed to be changed, or no longer used? WHILE %[ip(1-8)] dont all come up with a answer, using %-60[ip(5)] will still let the -60 spaces work while %[admingroups] do not. can u please fix!

Q: How do I setup ioFTPD logging options ?
A: You can't. You either log everything, or nothing. To log nothing, simply comment the "log_files = [...]" line in your ioFTPD.ini
Would u consider adding what gets logged and what doesn't? while someone like me does not want xferlogs while i do want error and systemerror logs!
ioFTPD\logs\Error.log = 0
ioFTPD\logs\ioFTPD.log = 0
ioFTPD\logs\SysOp.log = 0
ioFTPD\logs\SystemError.log = 0
ioFTPD\logs\xferlog = 0

SSL HELP PLEASE

This is the first time i try SSL since Yil took over, and when i did have SSL setup i was using winXP. i am using winVISTA Ulimate x64. either this dont work with x64 or am i dumb on trying to set it up.

from a master account, i trying to do a raw command site makecert
when i do so nothing shows in status and no sign of a cert.
I wanted to cofirm that when i tried this i was sleepy and made a typo error, it does indeed work very nicely!

Yil
12-19-2007, 06:18 AM
New Version:
ioFTPD-v6.3.4.zip (http://home.comcast.net/~yil/ioFTPD-v6.3.4.zip)

The new feedback in addip code had a bug. This is an important update since 6.3.3 is essentially unusable without the ability to add users without crasing.... Upgrade now :)


v6.3.4 Release Notes:

1) File system\ioFTPD.exe changed. Version 6.3.4.0

2) File system\ioFTPD.pdb changed.

*** Bug Fixes

3) Fixed a bug in "site adduser" and "site gadduser" which resulted in
the server crashing when adding users.

Yil
12-19-2007, 07:00 AM
PSA9: Great questions... here's some answers.

The Footer files are missing since they are empty and it makes no sense to make the server read them. :)

If you do "site swho" you use ClientList.* files which shows you a list of all the people online. If however you pick a client CID in the list like "site swho 0" you use ClientInfo.* which is far more detailed since it's just about one user :)

Using %[admingroups] in UserInfo works for me when admingroups are defined for the user. The G flag doesn't matter for this. Double check you actually have admingroups defined for the user and not just regular groups. There does appear to be a formatting issue with %-58[admingroups] not consuming 58 spaces if no admingroups are defined so I'll fix that. It looks like it does work properly if at least one is defined though.

I can probably enable individual control over logfiles in the future but I found between Hide_Xfer_Host and the new builtin BNC like host/IP masking features the logfiles don't leak information so they're useful to keep around. However if size is an option here's how to disable them right now... Just create the file and make it read-only! ioFTPD can't write to it so no logfile entries are made :)

PSA9
12-19-2007, 08:43 PM
ioFTPD\text\ftp\ClientList.Footer
ioFTPD\text\ftp\GroupInfo.Footer
ioFTPD\text\ftp\GroupList.Footer
ioFTPD\text\ftp\UserList.Footer
After fully testing all text files, these are the only missing ones!
They should not be empty files as they should have exact same text as other footer files.
Either way that is not a big concern as i just needed them to make FTP look right with my ANSI Colored, Terminal Font Required in FlashFXP status, to look fully right.

Their is 2 problems i noticed with the text files.
1. if u could fix the one formatting issue with %[admingroups] which u said u will fix.
2. this may or not be of a concern but i figured i should atleast bring this too attention.
this is my SSL Setup
Require_Encrypted_Auth = !-Look *
Require_Encrypted_Data = !-Look *
Certificate_Name = secret.ftpserver.biz
Explicit_Encryption = True
Encryption_Protocol = TLS
Min_Cipher_Strength = 256
Max_Cipher_Strength = 256

Running as System Service on Win Vista Ultimate x64
Testing with FlashFXP on Win XP Pro x86 Using Secure File Listing and Transfers and Secure Site to Site Transfers
By the way does Secure Site to Site Transfers work?

Using this SSL setup i am still able to find out peeps passwords via the client login text files. while this is for a split second, maybe thats a concern for some and maybe in that certain case instead of showing the command as PASS RealPassword to maybe something like PASS ***** or [hidden]
I can probably enable individual control over logfiles in the future but I found between Hide_Xfer_Host and the new builtin BNC like host/IP masking features the logfiles don't leak information so they're useful to keep around. However if size is an option here's how to disable them right now... Just create the file and make it read-only! ioFTPD can't write to it so no logfile entries are made
I didn't want talk of this yet but to help explain one reason i would want this instead of making the files write only, while the hide_Xfer_Host etc is also nice are:
i been very busy but i did start a project i am just calling a ioFTPD_GUI for now.
while i am not the coding code of Yil i do believe that in a GUI that i could make it very nice looking with the right features for end users that are not so knowledge able like us.
I started writing it in Visual Studio 2005 as a C++ Windows Form app. the Plan is to use it in place of ioGUI, while retainging the use of being able to use on same pc as ioFTPD also be able to use on other pcs not locally, it would be able to edit every thing inside the .ini file, and a few extra things i not ready to talk about. this would make a newbie to ioFTPD feel like he using something easy like ServU! I was going to wait and ask u Yil would u be willing to help me with Coding? i would pretty it up and if u help me with easy coding, i can finish it up, then give it to u and u then make the changes to code u need and add the rest that is not their. this would make less work then u making a GUI from scratch, while come ioFTPD 7 or 8 beta ioFTPD would feel like a FTPD with a GUI. my goal would be to make a newbie end user not know the difference from this GUI not being the real GUI as it will look like it is the Real Gui and later be claimed as real GUI. now saying all that is reason i would want the log file option as newbies would not know how to make file read only.

Yil
12-19-2007, 10:12 PM
Footer's aren't necessary in the default config, but they are available to anyone who needs them such as what you're trying to do with colors and such.

Your SSL setup isn't recommended, but you never said what the problem was... Just for the record specifying an Encryption_Protocol means you must use that one. Probably not a big deal for people who use real FTP clients, but browsers, etc won't like TLS only. Ditto for cypher strength. 256 min keys won't let non-vista browsers or trivial ftp clients connect.

I've played with the thought of writing a GUI myself but never seem to have time so if you want to then I say go for it. Honestly the hardest parts will be getting the GUI controls working properly. If you're using C# (which was my plan because it's way easier to design forms in since it's totally dynamic) it's pretty easy to separate the data source from the GUI itself. Thus you don't have to worry right now about talking to the FTP.

Since you mentioned being able to run it on different computers then you won't be using the shared memory interface which means you're probably thinking of using a TCL script like ioGUI uses. That totally sucks since you have to poll the server all the time, so my plan which I played around with earlier this year, is to enable a special data connection mode which hooks right into the core update code and spits out changes. This makes the GUI event driven and eliminates having to poll the server and thus run a TCL script all the time...

I totally agree that a user friendly, easy to configure GUI would really help. ioGUI is wonderful for editing users/groups/etc, but it lacks server configuration support...

PSA9
12-19-2007, 10:51 PM
I have the FTP SSL setup that way as, the only people that will connect to my FTP will use FlashFXP with Auth TLS, and that works with my setup fine. i have only the Look account right now not set to use SSL so if i want to let someone like u just look, then u can use anything u like! i know its not recommended but in my case i think its good for now!
does Secure Site to Site Transfers work? in flash it says not supported by all servers so i am just wondering!
2. this may or not be of a concern but i figured i should atleast bring this too attention.

The problem i was trying to say was, ok i using the Strongest SSL settings that ioFTPD lets u set right! that being said if something can be done with these settings then it can be done without SSL! If u do a SITE SWHO 0 and that user is login in, it will show u the command the user either doign or last did. in a few testing casing it showed me the command was PASS RealPassword. another words if someone was to watch that, they would get passwords for other user accounts very easy! it may not be a concern but i taught i should just bring that up for incase peeps just never noticed it!

As for GUI no i also dont like that idea of TCL either so maybe it not possible to use on another pc and if that is so then ooh well. your special data connection mode would be perfect and i remember u talking about it! I would rather u make it, but maybe i can try and just get it started! i going to PM u and if nothing comes of it ooh well! me not code god like that master Yil!

ok i did more testing on site and i noticed as u already knew, that in client info it shows the last command done by user. i was able to see the password also on
ClientInfo.Idle and ClientInfo.Login ex,

CLIENT INFO
Login : PSA9
From : *@**.**.**.** on FTP_Service
Online : 00h 05m 40s
Command : PASS ftp00685
Path :
Idle : 00h 00m 00s

Yil
12-20-2007, 03:19 AM
FXP SSL works since v6. It's entirely the reason I got involved. I hated that I couldn't transfer files between 2 ioFTPD servers. ioFTPD supports both SSCN and CPSV for FXPing via SSL. Having said that, I have not verified that you can FXP SSL using your settings. I know it works in the default case, but the other side must support TLS and not just SSLv3 headers, etc...

Password leaking, even for extremely short periods of time, is bad. Expect a blurring to *'s or something. I guess I forgot to include that in the last reply. On the other hand "site swho" is limited to G1M accounts and not normal users so while they couldn't really see the password they could change it, etc already. Use one of the various "site who" scripts and restrict site swho to just M accounts or something until the next release if necessary.

l.d.m
12-20-2007, 11:02 AM
a little bug:
user 'test' is online from 5 hours
I login with ioFTPD account and I give swho site command
I got the online time of user 'ioFTPD'


[R] site swho
[R] 200- CID USER STATUS HOSTNAME
[R] 200- 0 test Idle *@localhost
[R] 200- 1 ioFTPD Idle *@localhost
[R] 200 swho Command successful.
[R] site swho 0
[R] 200-Login : test
[R] 200-From : *@localhost on FTP_Service
[R] 200-Online : 0h 0m 7s
[R] 200-Command : LIST -al
[R] 200-Path : /
[R] 200-Idle : 0h 0m 25s
[R] 200 swho Command successful.

(sorry for my english)

Yil
12-22-2007, 05:26 AM
New Version:
ioFTPD-v6.3.5.zip (http://home.comcast.net/~yil/ioFTPD-v6.3.5.zip)

v6.3.5 Release Notes:

*** File Modifications:

1) File system\ioFTPD.exe changed. Version 6.3.5.0

2) File system\ioFTPD.pdb changed.


*** Functionality changes:

3) The actual PASS command will now be replaced with the generic
"PASS ********" when storing the last command issued by a user.


*** Bug Fixes

5) TCL "!change stats" had an error in the new logging code added for
"site change stats" when I rewrote the shared functionality. Basically
the code would die immediately trying to lookup the name of the admin
issuing the command since TCL commands don't provide that parameter.
Scripts that adjusted stats like site nuke/unnuke/etc would crash.

6) "site change stats" and "!change stats" failed to edit stats correctly in
the rewritten code. +- relative modifiers were ignored, and setting the
value directly chopped off the first digit. Luckily this command is
rarely used interactively and the previous error meant no script could
even get this far...

7) %-NUM[admingroups] is now at least NUM spaces wide. Previously if no
admingroups were defined it didn't honor the min size request.

8) "site swho" now correctly calculates the online time of the user.

Yil
12-22-2007, 08:29 AM
Could someone with a foreign language version of windows take a look at the error messages and see if they look OK? In particular I saw a Russian FTP spit out what appeared to be just xxx's in the error message for a currently uploading file. I'm not sure if that was correct for someone with the right code page loaded, but I'm guessing ioFTPD shouldn't try to localize error messages and just use english, especially since it doesn't know how to encode to UTF-8...

In particular, try to upload a file which is being already being uploaded, or try to download an incoming file, or perhaps abort some files in transit. You need to generate windows error messages and not regular ioFTPD errors and file transfers are the easiest way to do that...

Flow
12-22-2007, 03:14 PM
Merry Christmas Yil!, lets have a break.

* To all others outhare, Merry Christmas to all ya´ll.

Yil
12-22-2007, 11:39 PM
Hehe Flow. I was so happy to fix the bug that was crashing noelek's server every day (the auto-ban bug) that I rushed 6.3.3 out without really testing it... And I've been paying for it with critical bug fixes for the last 2 releases! :(

FYI: If you see a bug report it. At this point the only thing I'm doing is fixing problems so we can finally get a stable version that is working as intended for all existing features.

noelek
12-23-2007, 03:56 AM
Yil, thanks for all you've done, and for all that you will do in the future.

hukker
12-23-2007, 07:59 AM
Merry Christmas - Happy New Year[B] to everyone, espacially our santa coder Yil

Flow
12-27-2007, 08:53 AM
hi Yil!, i hope you have a nice xmas. I was wondering if you please can nail this $user permanately. Check this post please: http://www.inicom.net/forum/showthread.php?t=12745

Thanks

Yil
12-27-2007, 12:10 PM
Flow: I downloaded nxTools and took a really quick look. I believe it's entirely reasonable to not have the $user variable set in some situations and the script should not assume it's always set...

In particular it looks like the problem pasted in that thread is occurring during a call to "nxClose.tcl LOGIN" called from the FTP_Pre-Command_Event set on the PASS command. This is a somewhat special case for two reasons. As a PRE command no checking on the validity of that command has been performed yet since the script is given the first chance at approval, and second it's occurring before the user has actually logged in and thus guaranteeing a valid user account.

Thus there are at least 2 situations where $user cannot be set.

1) Someone specified a username that doesn't exist.

2) The highly improbably, but nevertheless possible, client issuing a PASS command without ever issuing a USER command.

The PRE command on the PASS event, or for that matter a POST event on the LOGIN event, must check before using $user to make sure it's dealing with a valid login attempt...

Flow
12-27-2007, 01:16 PM
Now.....why do I feel like im in the middle of somethin. :). Easiest for me i guess is just ignore the damn .log file.

PSA9
12-28-2007, 05:03 AM
Using my laptop and FlashFXP, i connect to USER 0 and USER 1 on ioFTPD, which is on my desktop! What i am doing is FXPing files that are on the same pc as ioFTPD to that same pc. reason i would do such a thing is to pass all my files through a zipscript. the FXP does well, however if i try to FXP two or more things at once, meaning 2-3 flashFXP open, it does ok but every now and then i get this in status[R] 426 Connection closed: Only one usage of each socket address (protocol/network address/port) is normally permitted.i seen this before and maybe talked about it but probally didn't explain it well. it doesn't happen near as often and not aggravating as it was before. i changed from ioSFV to ioNiNJA and i run no other scripts! my question is, is this a problem caused by ioFTPD by say trying to use the same port, or is this a script problem?

Yil
12-28-2007, 08:49 AM
psa9: It's not a script issue, it's a TCP issue. When you go really fast through a lot of connections you can use up the passive port range before the TCP protocol allows the port to be re-used. Try making the PASV port range larger in ioFTPD.ini. That won't eliminate the problem, but should make it more rare.

You can even setup a second device / ftp service in ioFTPD.ini with a really large port range and connect to that locally for FXPing so as to keep the number of ports forwarded in the firewall small for the remote configuration.

On the other hand, have you considered a recursive site rescan? :) Or perhaps a standalone zipscript? That would save you having to transfer files...

razoor
12-29-2007, 09:41 AM
Got some big problems here.

If i fxpd between drFTPD and ioFTPD with ssl on transfer. i get
Connection closed: Överlappad I/O-åtgärd pågår.

BUT if i transfer to glFTPD, then it works.
So i guess it´s a bug? but where i have no idea. If it´s drFTPD fault or ioFTPD´s =)

daddoso
12-29-2007, 10:47 AM
Got some big problems here.

If i fxpd between drFTPD and ioFTPD with ssl on transfer. i get
Connection closed: Överlappad I/O-åtgärd pågår.

BUT if i transfer to glFTPD, then it works.
So i guess it´s a bug? but where i have no idea. If it´s drFTPD fault or ioFTPD´s =)

same here! but if i set "down (no pasv)" in the fxping options it does not happen anymore..

l.d.m
01-01-2008, 03:42 PM
hi Yil,
I have directory permissions set to 777 because I need different users of different groups to race in the same dir
now I want to deny anyone from having write access to root dir but I got this error:

[R] site chmod 775 /
[R] 500 /: Permission denied.

I try this with ioFTPD account and chmod command works everywhere except in root dir


is it a bug?

Yil
01-01-2008, 05:45 PM
ldm: Nope, works fine for me. Do you mount / on a drive letter instead of a directory? I.e. d:\ ? I could see where that might cause a problem. Is there a .ioFTPD file wherever / is mounted and is it writable?

l.d.m
01-01-2008, 07:07 PM
ldm: Nope, works fine for me. Do you mount / on a drive letter instead of a directory? I.e. d:\ ? I could see where that might cause a problem. Is there a .ioFTPD file wherever / is mounted and is it writable?

thx Yil I just found the error

my default.vfs was:
"E:\site" /

I set:
"E:\site\" /

and now works!!

pointBreak
01-04-2008, 01:04 PM
hi Yil
possible to disable !username? may be useful for shared accounts

Yil
01-04-2008, 06:55 PM
pointBreak: There isn't a way to disable the !username feature. If shared users are fighting it out I'd suggest creating more than one account...

Mave
01-05-2008, 09:49 PM
YIL once again you doing a great job!
Still i,m amazed to about the code you're doing.
Never seen this kind of addiction before :p
Lotsa coders could learn from you, You'r loyal to the ioFTPD users and i really appreciate that :):):)

O ye MERRY X-MAS and a HAPPY NewYear

PSA9
01-11-2008, 02:39 PM
MY [VFS] SECTION is as applies

Default_Directory_Attributes = 777 0:0
Default_File_Attributes = 777 0:0

# Command specific rules
Modify_Stats_On_Delete = False

# FLAG 1 = Super (Can Download Leech, Can Upload Leech, Group Admin)
# FLAG 2 = Normal (Can Download Leech or Ratio, Can Upload Leech or Ratio)
# FLAG 3 = Guest (Can Download Leech or Ratio, Can Upload Files and Folders inside _REQUEST but Can Upload Files only everywhere else Ex. incomplete stuff
# NO FLAG = Look (Can't Download or Upload) but can browse everywhere

Upload = /_INCOMPLETE/* VM
Resume = /_INCOMPLETE/* VM
MakeDir = /_INCOMPLETE/* VM
RemoveDir = /_INCOMPLETE/* VM
RemoveOwnDir = /_INCOMPLETE/* VM
Rename = /_INCOMPLETE/* VM
RenameOwn = /_INCOMPLETE/* VM
Overwrite = /_INCOMPLETE/* VM
Delete = /_INCOMPLETE/* VM
DeleteOwn = /_INCOMPLETE/* VM

Upload = /_REQUEST/* 321VM
Resume = /_REQUEST/* 321VM
MakeDir = /_REQUEST/* 321VM
RemoveDir = /_REQUEST/* 1VM
RemoveOwnDir = /_REQUEST/* 321VM
Rename = /_REQUEST/* 1VM
RenameOwn = /_REQUEST/* 321VM
Overwrite = /_REQUEST/* 1VM
Delete = /_REQUEST/* 1VM
DeleteOwn = /_REQUEST/* 321VM

Upload = /_SORTED/* VM
Resume = /_SORTED/* VM
MakeDir = /_SORTED/* VM
RemoveDir = /_SORTED/* VM
RemoveOwnDir = /_SORTED/* VM
Rename = /_SORTED/* VM
RenameOwn = /_SORTED/* VM
Overwrite = /_SORTED/* VM
Delete = /_SORTED/* VM
DeleteOwn = /_SORTED/* VM

# This defines everything else as Read Only for regular users.
Upload = /* 321VM
Resume = /* 321VM
MakeDir = /* 21VM
RemoveOwnDir = /* 21VM
RemoveDir = /* 1VM
Rename = /* 1VM
RenameOwn = /* 21VM
Delete = /* 1VM
DeleteOwn = /* 21VM

# nobody can overwrite a file, they must delete it and resend
Overwrite = /* !*
NoStats = /* !*

# anybody can download anything except Look account...
Download = /* 321VM


if a user dont have a Flag of M, 1, 2, 3 they cant download. by this if i give a user no flags all he can do is look. my Flag 1 users will never be ratio users. some flag 2 and 3 users i will want to set to ratio. is the [Sections] Default = 0 0 0 * is where i set credits? or do i have to use a tcl script?

say i set a user with flags, 2L he would be exempt from the max logins, is their a way i would add say 2LE where E would be for idle exempt for that user? its a pain to do this Idle_Exempt = -ioFTPD -User1 -User2 each time i want to add a user. if i could set a flag, i could do it when i am not home, and i am hardly home!


[R] SITE SWHO
[R] 200- ÖÖÖÖÖÖÖÖÖÖÖà –Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã– ÖÖÖÖÖÖÖÖÖÖÖÖà –Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã– ÖÖÖÖÖÖÖÖÖÖÖÖà –Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã– ¯
[R] 200- §ê CLIENT LIST ê§
[R] 200- §êššššššššššŠ¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡ Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å ¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡ Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å ¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Ãª §
[R] 200- §ê ê§
[R] 200- §ê CID USER STATUS SPEED HOSTNAME ê§
[R] 200- §ê 1 PSA9 Idle *@22.22.22.22 ê§
[R] 200- §ê ê§
[R] 200- §êššššššššššŠ¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡ Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å ¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡ Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å ¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Å¡Ãª §
[R] 200- ÔÖÖÖÖÖÖÖÖÖÖÖà –Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã– ÖÖÖÖÖÖÖÖÖÖÖÖà –Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã– ÖÖÖÖÖÖÖÖÖÖÖÖà –Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã–Ã– ¬


My ioFTPD/text/ftp files are made in "Block" or "High ASCII" style which requires terminal font only in flashfxp to see them correctly and also done in ANSI Colors. this works fine.
however i tried in ioSFV and ioNiNJA script to make everything match. ANSI colors work fine in the script. the problem is those scripts displays some of the extended char correctly while others it displays weird. is this a bug in ioFTPD for reading "Block" ASCII through TCL code. is this a TCL limitation?

Yil
01-11-2008, 04:18 PM
PSA9: Here's some answers...

1) is the [Sections] Default = 0 0 0 * is where i set credits? No that is where you define what files are in which credit and stat sections. You can set default credits for all new users by editing user/Default.User and specifying a credits line in the file, or add the line to specific groups in groups/ like to set the default for new members of those groups.

DESCRIPTION Group1
SLOTS 5 5
USERS 0
CREDITS 10000 0 0 0 0 0 0 0 0 0

Interestingly enough I don't believe I know of a way to set defaults like this with any builtin site command. To avoid editing the files by hand you will need the help of a script. Luckily group files are rarely locked and the default files I don't believe ever are. Hand editing of individual user files with the server running is usually a bad idea though...

To add credits to existing users by hand you can use ioGUI, or you can use "site change user credits +-value [section]". To add credits to a whole group replace user with =group and it should apply the change to everyone in that group...


2) is their a way i would add say 2LE where E would be for idle exempt for that user? Already supported. Unless otherwise noted "user permission specifiers" (i.e. the -,=,flags) used all over the ioFTPD.ini file fully support user flags. Therefore feel free to use E to mean idle exempt. The only reason I don't setup user flags like S for no-ssl requirement, E for idle exempt, etc is because other sites might already be using those flags for other things and I didn't want to break anything if I didn't have to.

3) is this a bug in ioFTPD for reading "Block" ASCII through TCL code? There was a similar problem very early on in v6 when we were actually using TCL properly and it was converting and outputting UTF-8 which screwed up NFOs being printed from TCL. Double check that you do NOT have a ioftpd\lib\tcl8.4\encoding directory. It's also possible that the FTP client is goofing things up so perhaps try a different one just to see if that makes a difference...

PSA9
01-12-2008, 04:58 AM
i get this from time to time.

Windows could not stop the ioFTPD service on Local Computer.

Error 1053: The service did not respond to the start or control request in a timely fashion.

when i try to restart the service the system service. reason i try and restart the service the service is when ioFTPD is giving me problems. the last problem i remember why i did this was i was gettin a list error and the only way to fix was restart! after failing i then just restart the computer and then ioFTPD is back to normal. the thing is their is no error in logs and no crash dumb is being made! any idea what this can be with the limited info i have given? or any ideas how how i may be able to find what is causing this?


ioftpd\lib\tcl8.4\http1.0, http2.5, msgcat1.3, opt0.4, tcltest2.2
ioftpd\lib\tcl8.4\auto.tcl, history.tcl, init.tcl, ldAout.tcl, package.tcl, parray.tcl, safe.tcl, tclIndex, Word.tcl

these are the files and folders that come in ioFTPD 6.3.5 and all that i have. can u tell me where to get ioftpd\lib\tcl8.4\encoding directory. so i can add it and see in my case if it fixes! the only FTP client i will ever use is FlashFXP, while saying that it displays Block ASCII correctly from the ioFTPD\text\ftp files.


Require_Encrypted_Auth = !-ioFTPD *
Require_Encrypted_Data = !-ioFTPD *
Immune_Users = I
Idle_Exempt = -ioFTPD


these are all default in ioFTPD 6.3.5 while immune users = I that is referring to a flag, are u saying that if i do Idle_Exempt = E would make users with flag E idle exempt, or do i set it as Idle_Exempt = -E * or chang u actually show me. also for SSL auth and Data = !-S * would make only users with flag S not have to use SSL! please show me the proper way!

Yil
01-12-2008, 06:46 PM
PSA9: That lockup issue you found is the only issue I've never been able to find so I can't solve it yet. You don't have to restart though, just kill the process in task manager. Though I don't run ioFTPD as a service if you set it up with the defaults it's possible that the service will auto restart after a minute after you kill it.

You don't want the \encoding directory. I just wanted to make sure you didn't have it left over from the very first v6.0 release so you're fine. Go TCL installed elsewhere on the machine perhaps?

Yup, just do Idle_Exempt = E and then give the E flag to people you want to never get kicked for idling. Require_Encrypted_Data = !S * is probably what you want. That means anyone with the S flag isn't required to use SSL, but everyone else is.

Permission flags return an answer based on the first match. Thus if you had something like "!-ioFTPD !S -Ind !=SiteOps *" this would be interpreted as follows:

1) Is the username ioFTPD? If so then return no (! in front of match).
2) Does the user have the S flag? If so then return no.
3) Is the user in the Ind group? If so then return yes (no ! in front)
4) Is the user in the SiteOps group? If so then return no.
5) * means everybody so automatic match. Return yes. If you wanted the default to be no you would use !* instead.

PSA9
01-13-2008, 07:39 AM
PSA9: That lockup issue you found is the only issue I've never been able to find so I can't solve it yet.

Yil do u ever get that lockup on your pc?

we know u atleast using the newest ioFTPD, hehe
but are u using any scripts?
do u run as a service?
do u use SSL?
do u fxp at fast speeds?
lastly what OS u running?
is it x86 or x64?

my pc runs really well with no problems ever. when the lockup occurs i use Radmin (http://www.radmin.com/) to restart the pc. i can tell u what i am doing when it happens. right now i am out of town for work. i connect to my pc with either ioFTPD or Radmin. i am running ioFTPD as a service and i use TLS 256 bit. it seems to happen from fast fxping over local network with certain folders that have .ioFTPD files in it. u talked of site rescan before, but i had bought some new hardrives so i have to transfer my data anyway. some folders have .ioFTPD files from before 6.0, some have ioFTPD files from 6.0-6.2, and some have no .ioFTPD files. may i ask this what does ioFTPD write to the .ioFTPD files and i assume vfs chattr is for scripts to right to the .ioFTPD files right?

o_dog
01-13-2008, 08:55 AM
add .ioFTPD* to skiplist in whatever ftp client you're using.

Yil
01-13-2008, 10:01 PM
I've never had my local copy of ioFTPD running on XP lockup but it doesn't get abused. On the other hand a quad processor 100mbit w2k3 system does lockup on me from time to time and I've got a few memory snapshots of that happening.

Usually you can tell by users with idents or hostnames in their hostmask not being able to login but *@IP.* can, or the system not giving out directory listings or transferring files. At that point you'd think a thread that attempts to dereference the NULL pointer should crash the whole program and trigger a dump (that's what site chrashnow does), but it is so hosed that doesn't work so that proves to me that an internal windows library lock (my guess is ldr_lock from the dump info) is being corrupted or abandoned but I don't know why...

It doesn't help that the windows socket library creates threads on it's own and tries to load/unload dlls and both of those actions acquire the ldr_lock and get stuck... I'm guessing that's involved in the race condition but debugging that is really tricky.

I don't think there were any changes from 5.8.5r to now regarding .ioFTPD files. In fact, I believe you can take a 6.3.5 executable and run it against a 5.8.5r .ini file and it will still run fine. If you make use of newer features such as shared section credits and stuff like that you won't be able to run 5.8.5r obviously but I've really tried to keep it backward compatible with everything optional... Relative symbolic link evaluation is different now though because it was incorrect before but they weren't widely used...

pion
01-29-2008, 03:48 AM
The groupadmin feature still seems flawed to me.

When gadmin changes ratio to 0 on a user the free leech slot number decrease - ok
When gadmin changes ratio on the same user to 3 or whatever, groupslots does NOT increase
When gadmin changes ratio to 0 on the same user again, leech slot number decrease AGAIN.

when doing 'site change grp groupslots 1 1' log states that it set groupslots to 1 + 1 - but what it really do is to allow for 1 more ratio user to be added, and one more leech user regardless of how many is in the group already.

If gadmin is granted leech under another groupname, he is able to remove the leech on himself, but none of the groupslots for any group will increase the ammount of leech users allowed in the group. Not sure about the intended action when gadmin grants himself leech under another group tho, if his secondary group slots would limit the action or set leechslots to a negative integer.. but that is unlimited leech again?

And finally - if you do 'site ginfo grp' it will state that there's a total of 1 slots availible, and 1 leech which doesn't really match the log entry of 'Set groupslots to 1 + 1' :S It should be either site change grp groupslots TOTALAMMOUT LEECHOFTOTALAMMOUT or site change grp groupslots RATIOaccounts LEECHaccounts

Now the replies state it's both :P

jeza
01-29-2008, 12:58 PM
The groupadmin feature still seems flawed to me.

When gadmin changes ratio to 0 on a user the free leech slot number decrease - ok
When gadmin changes ratio on the same user to 3 or whatever, groupslots does NOT increase
When gadmin changes ratio to 0 on the same user again, leech slot number decrease AGAIN.


this is OK.
because else gadmin can switch leech slots between users.
this means that if group has 3 + 1 slots,
gadmin can give user1 leech for 1 week and other 2 users are waiting.
then next week he can remove leech from user1 and give it to user2.
now he has leech and other 2 usersare waiting...

but like it works now its ok, because onlyone user can have leech slot.

neoxed
01-29-2008, 04:09 PM
Indeed, jeza is correct. This feature was added several years ago (the beta 0.4.x/0.3.x days) to prevent leech slot rotation.

pion
01-30-2008, 09:43 AM
I fail to see the logic where the leechslot decrease again for the same user, that was granted leech in the same group already?

In this case site change ratio 3 should be disabled to avoid losing slots then..
I haven't tested this, but now gadmin can set ratio 99999999999999? (without loosing any leech slot)
I would rather have a time limited leech slots exchange than disabled..

And at last, it should be possible to configure this behaviour as you please :)

Yil
01-30-2008, 06:01 PM
I don't know much about using group slots, but it's nice to know the historical reason for it working the way it does. On the surface I think pion has a good point that it as it stands it doesn't seem intuitive, but perhaps changing the documentation might address this. BTW, I agree that the ratio trick would work with the default setup until someone looks at the log...

The really good news is nothing prevents trivial TCL scripts to adjust things any way you want :)

Flow
01-31-2008, 01:01 PM
Hey Yil, what you up to ? Whtas upcoming?

Yil
01-31-2008, 03:46 PM
The only thing I'm working on when I have time is trying to figure out the lockup issue, but it's hard since it's nearly impossible to reproduce. That, and the long file name problem in the recursive directory routine are really the only two identified major problems right now.

I'm hoping to release v6.4 which fixes just those 2 problems and call that the stable release before making any more changes. I think it's a high priority to get something really stable that people can use with some level of confidence. The good news is I haven't seen a lot of issues with people reporting crashing recently so that must mean I'm doing something right... So double check that there aren't crashlogs lieing around you haven't sent me :)

Mamukata
02-04-2008, 10:29 AM
hi all,

after long time i decide to try ioFTPD.

i have downlaod from this thread the v6.3.5 version. i have unpack the zip and launch the ioFTPD-Start.exe with the default setup.

The gui start but i can't login:

16.28.07 wSock_Connect()
16.28.07 220 FTP Server ready.
16.28.07 > USER ioFTPD
16.28.07 331 Password required for ioFTPD.
16.28.07 > PASS *****
16.28.07 530 Login failed: Invalid password.


I have tried the same from flashfxp with login/pass ioFTPD/ioFTPD but don't work

[L] Connecting to ioftpd ADMIN -> DNS=localhost IP=127.0.0.1 PORT=5420
[L] Connected to ioftpd ADMIN
[L] 220 FTP Server ready.
[L] USER ioFTPD
[L] 331 Password required for ioFTPD.
[L] PASS (hidden)
[L] 530 Login failed: Invalid password.
[L] Connection failed
[L] Delaying for 10 seconds before reconnect attempt #1
[L] Retry attempt Aborted


what i wrong?????:question::question::question::question:

tnx

o_dog
02-04-2008, 10:31 AM
create the rootdir in ioFTPD dir. create a dir called "site"
ex. c:\ioFTPD\site

Mamukata
02-04-2008, 10:53 AM
create the rootdir in ioFTPD dir. create a dir called "site"
ex. c:\ioFTPD\site

tnx o_dog now it works!!!!

i haven't the ioftpd files in c:\ioftpd but in other directory inside my hd.
i have move all to c:\ioftpd and now work.

but if i want to have the file inside c:\programs\ioftpd which conf file i need to modify??

tnx

Yil
02-04-2008, 08:33 PM
etc/default.vfs is the file that you'll need to update to point at the root directory and any other mountpoints.

Remember to check out the various files in the logs/ directory as it will show you why someone couldn't login. I.e. bad home directory, bad password, bad hostmask, etc...

PSA9
02-08-2008, 01:44 AM
I'm hoping to release v6.4 which fixes just those 2 problems and call that the stable release before making any more changes
I think that is a very good idea Yil.
i have had it lockup say only 2 times since i posted about the lockup.
u talked about dual procs may be the cause correct?
i have a AMD dual core 64 bit prc and vista 64 bit.
i been moving mp3 and mvids which seem to not make it lockup like moving DVDR and x264.
however i did notice that on SITE SWHO u still see the CID that are no longer connected. now i did notice that in older releases just i never noticed it with v6.3 and i should also note that it seemed i noticed it when i use idle exempt. if i restart ioFTPD of course it fixes it but i killed each CID which is CID that was closed 1-3 days ago. i have no error logs and no crash dumps. i use as system service. i should also note that when i was doing my dvdr and it was causing ioFTPD to lockup i never noticed this CID issue. so maybe, just maybe its where the problem starts just it lockup before u notice! but now i not putting under that pressure so its staying on much longer and i have not notice a crash and just that CID issue. or maybe what is causing the lockup is causing the CID issue.

anyways if this is useless for u then please ignore as this reply was only to try and maybe help u locate the problem. i do know that when u do find the problem u gone take a break, get some beer, and chill with u women in happyness to know u have finally got a stable release! keep up the good work yil

PopWeasel
02-11-2008, 11:52 AM
Hi Yil, I have a feature request for after the stable release: user/group diskspace quotas. Thanks for all your hard work, you rock like donkey kong!

PSA9
02-12-2008, 08:48 AM
Yil after further testing, ioFTPD is still running fine with no log error or crash dumps.
I talked about on SITE SWHO that users that are no longer online are still in that list even days later. but now i can confirm that its only with the users i have the idle exempt flag for. i made E the idle exempt flag. the users without this flag seem to always not be in the list when i do SITE SWHO once they have logged off.

i havn't been having the lockup issue but if i was to transfer at fast speeds it would lockup.

hukker
02-12-2008, 12:09 PM
I can confirm that its usally at fast speeds which lockups accure. I usally test localy or on 100mbits connections, unfortanally for this test the connections do run at full duplex so its 10mb/s and usally thats when the lockup kicks in. should really try upload / download at slow speeds, Ill setup something and force upload/download to 1mb/s or something, see what happends.

Cause I have one connection its always a lockup on and its vista. Ill defently try this soon.

o_dog
02-12-2008, 04:42 PM
it would be nice with a setting like in gl:
show_diz .message .requests .imdb *
To define what files and in what order ioFTPD should display on entering dirs.
would be a nice feature for scripters.

Yil
02-12-2008, 10:47 PM
o_dog: Currently ioFTPD only attempts to show 2 files when changing directories. ".message" and then ".ioFTPD.message". It's up to the 3rd party scripts to order the information in either of these two files so it displays the way you want it.

I would agree with you that a feature to make it display multiple files in a predetermined order might be useful, but recreating the .message file whenever the info changes isn't that hard for a script to do.

o_dog
02-12-2008, 10:51 PM
well, if you have several scripts by diffrent authors it becomes a little more complicated. There are ways around it it would jsut be easier to have diffrent files.

PopWeasel
02-13-2008, 12:56 AM
Some other ftpd's offer a diskspace quota feature that's based on users (and groups?). In this case it might be better implemented on a directory basis, rather than on a user/group basis. You could limit how much space each section had available as well as how much space group dirs use. Think of it as a way to control that crazy /XXX section that's always getting out of hand.

o_dog
02-13-2008, 01:09 AM
use an autodelete script

PopWeasel
02-13-2008, 02:56 AM
...and delete group files? ;)

Yil
02-13-2008, 08:16 PM
Quotas is a rather interesting technical issue. Here's some thoughts...

1) Most window's based FTP servers I believe run as whatever user started them and account information is kept internally and directory details are usually stored in an extra file in the directory and thus all files are usually owned by one person.

There are many advantages (and disadvantages) to this, but right now the only one I want to focus on is that the FTP must ensure that it's internal information is consistent with the filesystem's. This is an issue because FTP accounts are not OS accounts and thus you just can't ask the file system for usage details.

2) How do you handle external modifications of the filesystem? If I go and delete a bunch of dirs in explorer how does the FTP find out about this and return the quota to the appropriate users? Assuming local drives this can be handled/caught when the FTP is running, but only periodic scans of the filesystem would catch changes made when the FTP isn't running.

Ok, having said all that it is possible to fake quotas right now by overloading the section information stored with accounts and using scripts to control things... You will still have the problem of external manipulation but even that could be solved the same why the FTP would have to do it. Namely, keep a list of files/dirs in a log somewhere and when a periodic scan turns them up missing credit back the quota. If they were just moved the scan would pick up the new entry and things would balance out...

PSA9
02-15-2008, 06:36 AM
look at my reply #136 and u can see my full [VFS] Section
the only thing that has changed is the _SORTED as i pasted below
i took the M flag off as i deleted much shit on my FTP that i had to use data recovery software to recover, long story, lol!

Upload = /_SORTED/* V
Resume = /_SORTED/* V
MakeDir = /_SORTED/* V
RemoveDir = /_SORTED/* V
RemoveOwnDir = /_SORTED/* V
Rename = /_SORTED/* V
RenameOwn = /_SORTED/* V
Overwrite = /_SORTED/* V
Delete = /_SORTED/* V
DeleteOwn = /_SORTED/* V

this is how i have downloads set so only these flags can download. i have a look account with H as the only flag so they can use Firefox or IE to log in.

Download = /* 321VM

i want the LOOK account to be able to download and upload small files though .nfo .sfv .jpg etc
how do i set this? would i set it by the file types, or could i set it by file size like say anything smaller than 1mb?

PopWeasel
02-15-2008, 08:31 PM
Yil, thanks for your well thought-out reply. You've brought up some interesting points. Would it simplify things for now if we're able to assume all file system changes (within site dirs) are made via the FTP itself? Perhaps that's the direction to go in to help simplify this in being implemented more easily/quickly. Later, a crontab-like script could be created, which when run nightly would act not unlike the current nightly spider scripts which thumb through the file system in search of obsolete symlinks, except in this case it would be checking existing files & directories against entries in the log file you mentioned above. Of course, these files and directories in the log file would need to be associated with their respective diskspace usage for it to give us what we're striving towards..

I also envision that (via a script?) this could be tied in to FTP_Pre-Command_Events and FTP_Post-Command_Events, at least for STOR and DELE. On STOR it would need to check if the user has available quota for storing, it would be helpful if ioFTPD has knowledge of the size of the file attempting to be stored at this point so it could more intelligently allow/deny the STOR attempt. On DELE it would add the size of the file(s) deleted back into the user's available disk quota.

Lastly, implemented as a site command to facilitate easier management, it might look something like 'site change billgates diskquota 30g', or 'site change team diskquota 100g'.

At the end of the day, whether this is all handled by scripts or internally, I think some foundation must be laid on the core ftpd side to support it. Thoughts?

FTPServerTools
02-17-2008, 08:16 PM
My thought about this:
If io gets on a dir it hasnt read before it is reading the dir anyway. hence the dir is in the system cache. So running a script that adds the filesize together is very doable and fast. Then for a prent dir it needs to be recounted. Thus I conclude that a dir holds its own sum. For speed it may hold the sum of its children dirs.
Say X does a cwd ABC then a post cwd reads the dir, counts the files and stores it in .size (or better yet in a SQLite database). Any outside dir change can be caught by monitoring dir changes (yes there are api functions for it). But this doesnt work for network drives or ext2/3 drives and such.
So my quicky thought:
(OnPostCWD:count on current dir (actually OnPostLIST is more exact))
OnPostStor:add newfile size to dir of Stor
OnPreDel:mark file size for removal
OnPostDel:remove file from dir size
OnPostAppe:count on current Dir
OnPostList (and OnPostNlist):count files on current dir, grab all subdir sizes and add together
ReadDirectoryChangesW (see also http://www.codeproject.com/KB/files/DirCheck.aspx and other sites) do a recount when changed file is no longer locked, alternatively you can use the change journal of ntfs volumes.
The FILE_NOTIFY_CHANGE_SIZE and the FILE_NOTIFY_CHANGE_LAST_WRITE should give some clues... The ReadDirectoryChangesW tells me in the FILE_NOTIFY_INFORMATION structure if a file was deleted, modified, renamed or added. So that could be used by any external program, connected with for example a simple sqlite database.
I think I'd personally bet on the ReadDirectoryChangesW thingy then the journal system. That would at least work generically (sort of).
Then another alternative is to use the microsoft indexing service. I havent delpved in to it tho and I dont know if it holds all the file changes.
The third alternative which may be not so hard is to use detours or some other hooking library to hook any file create, file close, and file writes in certain preset dirs. Any change in those dirs is very likely to be passed through the main file i/o functions and can thus be hooked. A fileclose can therefore be made into an update, a fileopen can be made into a add new filename or do nothing, a file write can be a trigger to do a recount after the close..
Anyway I see some techy solutions.... Indexing, Journaling and Hooking can all work quite nicely outside of the ftpd. But all three suffer from no reactiveness on networked drives...

PopWeasel
02-17-2008, 11:03 PM
Thanks for your input on this FTPServerTools, and it's good to see you again old friend..! I like what you had to say about caching and the idea of writing a hidden file in the directory which would store the sizes of files & child directories to help speed up checking for available disk quota when users go to upload. I think this approach is more directory-centric; instead of attaching disk quotas to users it attaches them to dirs, am I right? If so, I think this would work equally as well as attaching disk quota to users/groups, possibly even better so, because it would allow more flexibility (user would have a disk quota under his group dir but not necessarily when uploading into section dirs).

An idea for settings could be:
#write which dirs diskquota should apply to
diskquota_dirs: /DIR1 /DIR2...etc.

The site commands would look something like:
site diskquota /DIR1 200g
site diskquota /DIR1/group1 20g
site diskquota /DIR1/group2 50g

So, let's say you have this directory structure-
/DIR1
/DIR1/group1/
/DIR1/group2/
/DIR1/group3/
/DIR1/group4/
/DIR1/group5/
/DIR1/group6/
/DIR1/group7/

...you have some nice flexibility here because you've specified that your main groups section dir will have a limit imposed of 200g (GB). The Group1 dir has been alotted 20GB, the Group2 dir has been alotted 50GB. Group3 through Group7 will share the remainder of the 130GB of diskquota space that's still available underneath /DIR1.

Also, if the site commands I mentioned above wouldn't work for some reason (maybe the script doesn't like slashes :p), then it could be written in a configuration file:

#write your diskquota alottments here
diskquota_dir_size /DIR1 200g
diskquota_dir_size /DIR1/group1 20g
diskquota_dir_size /DIR1/group2 50g
etc...

My thought on Microsoft Indexing Service is that I wonder if it will pose file locking problems. For instance, Google Desktop and MS Indexing Service both used to get in the way when I used to be moving files around in Windows Explorer. I don't know if they've improved to not do that anymore, I stopped using them because it was too annoying..

As for ext2/3, reiserfs, etc., I think we can safely eliminate those from the equation since Windows doesn't read them..that I'm aware of anyways. And I think we can safely assume that anyone wanting these functions will need to be using local disks and that they'll need to accept the network drives limitation. Personally I'm perfectly fine with that.

You guys both know more about the nuts-and-bolts end of it- what's needed from the core ftpd in order to support this?

Anyone else have any thoughts?

Someone may want to split off these 4 posts or so into a new topic for this ;)
Thanks.


Edit: I count 8 posts including this one that could be moved to their own new topic, starting with my post of 02-11-2008, 09:52 AM if anyone is up for it :p

o_dog
02-21-2008, 11:20 PM
just a small request, i would like it to resolve symlinks in newdir log.
/today/ -> /section/today/

if someone creates /today/new it should log /section/today/new
now it just logs /today/new as pwd.

hukker
02-26-2008, 01:10 PM
yil hey, just wondering how its going with the new release, any progress with the psycho bug which locks ioftpd...


anyways have a nice day

Flow
02-29-2008, 04:06 PM
hey Yil, whare you at now? whats status on the 6.4 -stable release?

Yil
02-29-2008, 04:30 PM
No luck on lockup issue as it's nearly impossible to trigger for me and it increasingly look like nothing is being done wrong in the server code itself. Still holding out hope to solve that...

The only other 2 known "bugs" are site adduser and site addip not accepting hostmasks from non-M accounts when in backward compatibility mode (i.e. no Secure_Ip rules are defined). Trivial fix. And the site crashes when dealing with pathnames longer than 260 characters in the recursive routines which I've sorta fixed by ignoring those files, but should fix correctly...

If you know of a "bug" and not a new feature request speak up :)

thomas74
03-16-2008, 05:06 PM
Ah, so I see more users are having the same problem with lockup.

I had this lockup happen twice during 14 days. I can't see no pattern for it. I really hope you're able to locate the bug.

edit: System is Vista.

Yil
03-18-2008, 10:20 PM
Lockup issue survey:

1) Has anyone running ioFTPD without any addons had the server lockup?

2) If addons are involved, are they tcl scripts or external apps?

3) If tcl is involved, does the script make use of sockets? I.e. an imdb script that talks to imdb directly and not through curl.

4) What about 3rd party libraries such as neoxed's share DB or mySQL libs?

When replying include ioFTPD version, addon scripts you are using, and what operating system and how many processors/cores you have.

It's looking increasingly likely that this is some bizarre issue with MS libraries. In particular tcl's use of winsock and/or 3rd party libraries. Since I can confirm the lockups I have information on involve the loader lock it's possible various static runtimes are conflicting or the static runtime is having issues with the dynamic runtime on some operating systems...

I'm looking into recompiling everything against dynamic runtimes and distributing the MS redistributable versions for people to install to see if that fixes things...

Flow
03-19-2008, 01:39 AM
Hmm.... what happens when these lockup occurs?.. im curiuos ... cant connect? cant delete files?

I get WarChive error now and then but that i guess is not ioFTPD fault.

Yil
03-20-2008, 12:23 PM
It depends since you can still do things that don't require you to acquire the loader lock.

Thus you can login (provided you don't have an ident in your hostmask since ident lookup will fail) since the sockets for this were pre-allocated. You can't get directory listings (except via stat -l perhaps) or transfer files though because those require new sockets.

You can't issue any command that ends up creating a process so simple tcl scripts might work, but external processes will just hang.

Site shutdown doesn't work.

Site crashnow amazingly doesn't work either and that's how you can tell you have this problem. It appears that exception handling or simply opening a text file acquires the loader lock ! I specifically wrote the exception handler to not attempt any function in the early part of the routine that is documented to acquire the loader lock. Thus I do no process address lookups, dll loading, etc... All of that was done ahead of time for just this reason and yet I still can't get around this problem.

Basically after a while the process totally locks up, and only killing it from the task manager will cause it to exit.

thomas74
03-20-2008, 01:36 PM
I run the latest build of ioFTPD, latest nxTools and latest ioNinja.

FTPServerTools
03-20-2008, 07:43 PM
Thanks for your view on this Popweasel... And good to see you are still going strong.. :)

costanza
03-22-2008, 05:34 AM
Great script , everything run with no problem.

Great job


ioFTPD-v6.3.5+ioninja v6.3.5.zip+esmnewdir+windows 2003 sp2

thomas74
03-24-2008, 04:56 PM
Any progress on that lockup bug :)?

Yil
04-04-2008, 04:35 AM
Good news: I'm going to go ahead and release a new version soon with a few bugfixes and some new features I've added. Nothing really fancy, but nevertheless useful.

Bad news: Haven't found the lockup bug, though I've got another dumpfile or two to look at, but not expecting anything new...

thomas74
04-07-2008, 06:27 AM
Sweet :-)

I tried the exact same setup(latest ioFTPD, nxTools and ioNinja) on Win XP, for some weeks and have not run into the crashbug yet.

I really hope this pesky bug will get fixed.

Thanks

Yil
04-10-2008, 03:27 PM
:eek: OMG! There is a chance I might have found a solution to the lockup bug! I've got a report from the standalone version of app verifier (which I've never used before) from a remote machine along with a single stack trace showing an error. Because I'm not experienced in how this version of app verifier behaves I can't say anything for sure yet...

Using that info and trying to see how it could have gone wrong I've come up with 2 changes that might fix the problem I think is occurring and it's a race condition that exists in v5.x.x as well. There are no guarantees that this is the lockup bug at all, but it does involve a socket which all the dumps seem to indicate is involved in the problem so I'm hopeful!

Unfortunately I'm still trying to finish up the next release so it will be a bit before we can play with trying to prove this helps...

l.d.m
04-12-2008, 04:54 AM
WOW!! Great news!
Thanks for your hard work Yil :)