📄 idftp.pas
字号:
{ $HDR$}
{**********************************************************************}
{ Unit archived using Team Coherence }
{ Team Coherence is Copyright 2002 by Quality Software Components }
{ }
{ For further information / comments, visit our WEB site at }
{ http://www.TeamCoherence.com }
{**********************************************************************}
{}
{ $Log: 13828: IdFTP.pas
{
{ Rev 1.102 11/5/2004 1:54:42 AM JPMugaas
{ Minor adjustment - should not detect TitanFTPD better (tested at:
{ ftp.southrivertech.com).
{
{ If MLSD is being used, SITE ZONE will not be issued. It's not needed because
{ the MLSD spec indicates the time is based on GMT.
}
{
{ Rev 1.101 10/27/2004 12:58:08 AM JPMugaas
{ Improvement from Tobias Giesen http://www.superflexible.com
{ His notation is below:
{
{ "here's a fix for TIdFTP.IndexOfFeatLine. It does not work the
{ way it is used in TIdFTP.SetModTime, because it only
{ compares the first word of the FeatLine."
}
{
{ Rev 1.100 10/26/2004 9:19:10 PM JPMugaas
{ Fixed references.
}
{
{ Rev 1.99 9/16/2004 3:24:04 AM JPMugaas
{ TIdFTP now compresses to the IOHandler and decompresses from the IOHandler.
{
{ Noted some that the ZLib code is based was taken from ZLibEx.
}
{
{ Rev 1.98 9/13/2004 12:15:42 AM JPMugaas
{ Now should be able to handle some values better as suggested by Michael J.
{ Leave.
}
{
{ Rev 1.97 9/11/2004 10:58:06 AM JPMugaas
{ FTP now decompresses output directly to the IOHandler.
}
{
{ Rev 1.96 9/10/2004 7:37:42 PM JPMugaas
{ Fixed a bug. We needed to set Passthrough instead of calling StartSSL. This
{ was causing a SSL problem with upload.
}
{
{ Rev 1.95 8/2/04 5:56:16 PM RLebeau
{ Tweaks to TIdFTP.InitDataChannel()
}
{
Rev 1.94 7/30/2004 1:55:04 AM DSiders
Corrected DoOnRetrievedDir naming.
}
{
Rev 1.93 7/30/2004 12:36:32 AM DSiders
Corrected spelling in OnRetrievedDir, DoOnRetrievedDir declarations.
}
{
{ Rev 1.92 7/29/2004 2:15:28 AM JPMugaas
{ New property for controlling what AUTH command is sent. Fixed some minor
{ issues with FTP properties. Some were not set to defaults causing
{ unpredictable results -- OOPS!!!
}
{
{ Rev 1.91 7/29/2004 12:04:40 AM JPMugaas
{ New events for Get and Put as suggested by Don Sides and to complement an
{ event done by APR.
}
{
{ Rev 1.90 7/28/2004 10:16:14 AM JPMugaas
{ New events for determining when a listing is finished and when the dir
{ parsing begins and ends. Dir parsing is done sometimes when DirectoryListing
{ is referenced.
}
{
{ Rev 1.89 7/27/2004 2:03:54 AM JPMugaas
{ New property:
{
{ ExternalIP - used to specify an IP address for the PORT and EPRT commands.
{ This should be blank unless you are behind a NAT and you need to use PORT
{ transfers with SSL. You would set ExternalIP to the NAT's IP address on the
{ Internet.
{
{ The idea is this:
{
{ 1) You set up your NAT to forward a range ports ports to your computer behind
{ the NAT.
{ 2) You specify that a port range with the DataPortMin and DataPortMin
{ properties.
{ 3) You set ExternalIP to the NAT's Internet IP address.
{
{ I have verified this with Indy and WS FTP Pro behind a NAT router.
}
{
{ Rev 1.88 7/23/04 7:09:50 PM RLebeau
{ Bug fix for TFileStream access rights in Get()
}
{
Rev 1.87 7/18/2004 3:00:12 PM DSiders
Added localization comments.
}
{
{ Rev 1.86 7/16/2004 4:28:40 AM JPMugaas
{ CCC Support in TIdFTP to complement that capability in TIdFTPServer.
}
{
{ Rev 1.85 7/13/04 6:48:14 PM RLebeau
{ Added support for new DataPort and DataPortMin/Max properties
}
{
Rev 1.84 7/6/2004 4:51:46 PM DSiders
Corrected spelling of Challenge in properties, methods, types.
}
{
{ Rev 1.83 7/3/2004 3:15:50 AM JPMugaas
{ Checked in so everyone else can work on stuff while I'm away.
}
{
{ Rev 1.82 6/27/2004 1:45:38 AM JPMugaas
{ Can now optionally support LastAccessTime like Smartftp's FTP Server could.
{ I also made the MLST listing object and parser support this as well.
}
{
{ Rev 1.81 6/20/2004 8:31:58 PM JPMugaas
{ New events for reporting greeting and after login banners during the login
{ sequence.
}
{
{ Rev 1.80 6/20/2004 6:56:42 PM JPMugaas
{ Start oin attempt to support FXP with Deflate compression. More work will
{ need to be done.
}
{
{ Rev 1.79 6/17/2004 3:42:32 PM JPMugaas
{ Adjusted code for removal of dmBlock and dmCompressed. Made TransferMode a
{ property. Note that the Set method is odd because I am trying to keep
{ compatibility with older Indy versions.
}
{
{ Rev 1.78 6/14/2004 6:19:02 PM JPMugaas
{ This now refers to TIdStreamVCL when downloading isntead of directly to a
{ memory stream when compressing data.
}
{
{ Rev 1.77 6/14/2004 8:34:52 AM JPMugaas
{ Fix for AV on Put with Passive := True.
}
{
Rev 1.76 6/11/2004 9:34:12 AM DSiders
Added "Do not Localize" comments.
}
{
{ Rev 1.75 2004.05.20 11:37:16 AM czhower
{ IdStreamVCL
}
{
{ Rev 1.74 5/6/2004 6:54:26 PM JPMugaas
{ FTP Port transfers with TransparentProxies is enabled. This only works if
{ the TransparentProxy supports a "bind" request.
}
{
{ Rev 1.73 5/4/2004 11:16:28 AM JPMugaas
{ TransferTimeout property added and enabled (Bug 96).
}
{
{ Rev 1.72 5/4/2004 11:07:12 AM JPMugaas
{ Timeouts should now be reenabled in TIdFTP.
}
{
{ Rev 1.71 4/19/2004 5:05:02 PM JPMugaas
{ Class rework Kudzu wanted.
}
{
{ Rev 1.70 2004.04.16 9:31:42 PM czhower
{ Remove unnecessary duplicate string parsing and replaced with .assign.
}
{
{ Rev 1.69 2004.04.15 7:09:04 PM czhower
{ .NET overloads
}
{
{ Rev 1.68 4/15/2004 9:46:48 AM JPMugaas
{ List no longer requires a TStrings. It turns out that it was an optional
{ parameter.
}
{
{ Rev 1.67 2004.04.15 2:03:28 PM czhower
{ Removed login param from connect and made it a prop like POP3.
}
{
{ Rev 1.66 3/3/2004 5:57:40 AM JPMugaas
{ Some IFDEF excluses were removed because the functionality is now in DotNET.
}
{
{ Rev 1.65 2004.03.03 11:54:26 AM czhower
{ IdStream change
}
{
{ Rev 1.64 2/20/2004 1:01:06 PM JPMugaas
{ Preliminary FTP PRET command support for using PASV with a distributed FTP
{ server (Distributed PASV -
{ http://drftpd.org/wiki/wiki.phtml?title=Distributed_PASV).
}
{
{ Rev 1.63 2/17/2004 12:25:52 PM JPMugaas
{ The client now supports MODE Z (deflate) uploads and downloads as specified
{ by http://www.ietf.org/internet-drafts/draft-preston-ftpext-deflate-00.txt
}
{
{ Rev 1.62 2004.02.03 5:45:10 PM czhower
{ Name changes
}
{
{ Rev 1.61 2004.02.03 2:12:06 PM czhower
{ $I path change
}
{
{ Rev 1.60 1/27/2004 10:17:10 PM JPMugaas
{ Fix from Steve Loft for a server that sends something like this:
{ "227 Passive mode OK (195,92,195,164,4,99 )"
}
{
{ Rev 1.59 1/27/2004 3:59:28 PM SPerry
{ StringStream ->IdStringStream
}
{
{ Rev 1.58 24/01/2004 19:13:58 CCostelloe
{ Cleaned up warnings
}
{
{ Rev 1.57 1/21/2004 2:27:50 PM JPMugaas
{ Bullete Proof FTPD and Titan FTP support SITE ZONE. Saw this in a command
{ database in StaffFTP.
{ InitComponent.
}
{
{ Rev 1.56 1/19/2004 9:05:38 PM JPMugaas
{ Fixes to FTP Set Date functionality.
{ Introduced properties for Time Zone information from the server. The way it
{ works is this, if TIdFTP detects you are using "Serv-U" or SITE ZONE is
{ listed in the FEAT reply, Indy obtains the time zone information with the
{ SITE ZONE command and makes the appropriate calculation. Indy then uses this
{ information to calculate a timestamp to send to the server with the MDTM
{ command. You can also use the Time Zone information yourself to convert the
{ FTP directory listing item timestamps into GMT and than convert that to your
{ local time.
{ FTP Voyager uses SITE ZONE as I've described.
}
{
{ Rev 1.55 1/19/2004 4:39:08 AM JPMugaas
{ You can now set the time for a file on the server. Note that these methods
{ try to treat the time as relative to GMT.
}
{
{ Rev 1.54 1/17/2004 9:09:30 PM JPMugaas
{ Should now compile.
}
{
{ Rev 1.53 1/17/2004 7:48:02 PM JPMugaas
{ FXP site to site transfer code was redone for improvements with FXP with TLS.
{ It actually works and I verified with RaidenFTPD
{ (http://www.raidenftpd.com/) and the Indy FTP server components. I also
{ lowered the requirements for TLS FXP transfers. The requirements now are:
{ 1) Only server (either the recipient or the sendor) has to support SSCN
{
{ or
{
{ 2) The server receiving a PASV must support CPSV and the transfer is done
{ with IPv4.
}
{
{ Rev 1.52 1/9/2004 2:51:26 PM JPMugaas
{ Started IPv6 support.
}
{
{ Rev 1.51 11/27/2003 4:55:28 AM JPMugaas
{ Made STOU functionality separate from PUT functionality. Put now requires a
{ destination filename except where a source-file name is given. In that case,
{ the default is the filename from the source string.
}
{
{ Rev 1.50 10/26/2003 04:28:50 PM JPMugaas
{ Reworked Status.
{
{ The old one was problematic because it assumed that STAT was a request to
{ send a directory listing through the control channel. This assumption is not
{ correct. It provides a way to get a freeform status report from a server.
{ With a Path parameter, it should work like a LIST command except that the
{ control connection is used. We don't support that feature and you should use
{ our LIst method to get the directory listing anyway, IMAO.
}
{
{ Rev 1.49 10/26/2003 9:17:46 PM BGooijen
{ Compiles in DotNet, and partially works there
}
{
{ Rev 1.48 10/24/2003 12:43:48 PM JPMugaas
{ Should work again.
}
{
{ Rev 1.47 2003.10.24 10:43:04 AM czhower
{ TIdSTream to dos
}
{
{ Rev 1.46 10/20/2003 03:06:10 PM JPMugaas
{ SHould now work.
}
{
{ Rev 1.45 10/20/2003 01:00:38 PM JPMugaas
{ EIdException no longer raised. Some things were being gutted needlessly.
}
{
Rev 1.44 10/19/2003 12:58:20 PM DSiders
Added localization comments.
}
{
{ Rev 1.43 2003.10.14 9:56:50 PM czhower
{ Compile todos
}
{
{ Rev 1.42 2003.10.12 3:50:40 PM czhower
{ Compile todos
}
{
{ Rev 1.41 10/10/2003 11:32:26 PM SPerry
{ -
}
{
{ Rev 1.40 10/9/2003 10:17:02 AM JPMugaas
{ Added overload for GetLoginPassword for providing a challanage string which
{ doesn't have to the last command reply.
{ Added CLNT support.
}
{
{ Rev 1.39 10/7/2003 05:46:20 AM JPMugaas
{ SSCN Support added.
}
{
{ Rev 1.38 10/6/2003 08:56:44 PM JPMugaas
{ Reworked the FTP list parsing framework so that the user can obtain the list
{ of capabilities from a parser class with TIdFTP. This should permit the user
{ to present a directory listing differently for each parser (some FTP list
{ parsers do have different capabilities).
}
{
{ Rev 1.37 10/1/2003 12:51:18 AM JPMugaas
{ SSL with active (PORT) transfers now should work again.
}
{
{ Rev 1.36 9/30/2003 09:50:38 PM JPMugaas
{ FTP with TLS should work better. It turned out that we were negotiating it
{ several times causing a hang. I also made sure that we send PBSZ 0 and PROT
{ P for both implicit and explicit TLS. Data ports should work in PASV again.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -