 |
BorlandTalk.com Borland discussion newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Huhtaman Guest
|
Posted: Fri Dec 17, 2004 5:30 am Post subject: How To Reinstall Indy 9.00.03 |
|
|
Hello All:
I use Delphi 5 and Indy 9.00.03.
My systemboard croaked on my laptop but my hard drive survived.
My re-installation instructions call for me to run a file
IndyNet9_00_03.EXE and have an internet connection available.
However, when I run the file, I get an error that it cant connect to the
server (Indy ???).
1) Is this because only the latest version is supported ???
2) Can I simply copy over all of my Indy subdirectories and register the
..dpk files ???
3) Am I required to upgrade to the latest version ??? If so, does it
support D5 ???
Thank you.
Neil Huhta
|
|
| Back to top |
|
 |
Remy Lebeau (TeamB) Guest
|
Posted: Fri Dec 17, 2004 7:45 am Post subject: Re: How To Reinstall Indy 9.00.03 |
|
|
"Huhtaman" <nhuhta (AT) digital (DOT) net> wrote
| Quote: | I use Delphi 5 and Indy 9.00.03.
|
That is a VERY old version of Indy 9.
| Quote: | My re-installation instructions call for me to run a file
IndyNet9_00_03.EXE and have an internet connection
available.
|
Indy doesn't use internet-based installations.
| Quote: | 3) Am I required to upgrade to the latest version ???
|
I strongly recommend that you do that. If you don't want to upgrade to Indy
10, at least upgrade to the latest snapshot of Indy 9 (which is version
9.00.50).
| Quote: | If so, does it support D5 ???
|
Yes.
Gambit
|
|
| Back to top |
|
 |
Huhtaman Guest
|
Posted: Fri Dec 17, 2004 3:07 pm Post subject: Re: How To Reinstall Indy 9.00.03 |
|
|
Remy:
I use the FTP Client alot in my application. Was the TidFTP client
changed in version 10 ??? Where can I find documentation on the changes ???
Thank you
Neil Huhta
|
|
| Back to top |
|
 |
Remy Lebeau (TeamB) Guest
|
Posted: Fri Dec 17, 2004 6:42 pm Post subject: Re: How To Reinstall Indy 9.00.03 |
|
|
"Huhtaman" <nhuhta (AT) digital (DOT) net> wrote
| Quote: | I use the FTP Client alot in my application. Was
the TidFTP client changed in version 10 ???
|
Yes, considerably. Asside from adding support for more extensions to the
FTP protocol itself, the DirectoryListing parsing engine was also completely
re-written. Indy 9 TIdFTP only supported a few formats. Now, TIdFTP uses a
plugin system to implement parsing of different listing formats, and as such
now supports several dozen formats, and the number of supported formats is
still growing.
Gambit
|
|
| Back to top |
|
 |
Don Siders Guest
|
Posted: Fri Dec 17, 2004 7:08 pm Post subject: Re: How To Reinstall Indy 9.00.03 |
|
|
| Quote: | I use the FTP Client alot in my application. Was the TidFTP client
changed in version 10 ??? Where can I find documentation on the changes ???
|
It requires the same changes as TCPClient where methods from the client to the IOHandler.
In addition, a lot of new directory listing parsers were added and the directory listing hierarchy was modified.
The change log in IdFTP.pas gives some clues as to the scope of the effort:
<quote>
Support for another FTP Proxy type.
Fixed a TODO item about FTP Proxy support with a "Transparent" proxy. I think
you connect to the regular host and the firewall will intercept its login
information.
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.
TIdFTP now compresses to the IOHandler and decompresses from the IOHandler.
Noted some that the ZLib code is based was taken from ZLibEx.
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.
CCC Support in TIdFTP to complement that capability in TIdFTPServer. Added
support for new DataPort and DataPortMin/Max properties
I also made the MLST listing object and parser support this as well.
New events for reporting greeting and after login banners during the login
sequence.
Start oin attempt to support FXP with Deflate compression. More work will need
to be done.
FTP Port transfers with TransparentProxies is enabled. This only works if the
TransparentProxy supports a "bind" request.
TransferTimeout property added and enabled (Bug 96).
Timeouts should now be reenabled in TIdFTP.
..NET overloads
List no longer requires a TStrings. It turns out that it was an optional
parameter.
Removed login param from connect and made it a prop like POP3.
IdStream change
Preliminary FTP PRET command support for using PASV with a distributed FTP
server (Distributed PASV -
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
StringStream ->IdStringStream
Cleaned up warnings
Bullete Proof FTPD and Titan FTP support SITE ZONE. Saw this in a command
database in StaffFTP. InitComponent.
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.
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.
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
2) The server receiving a PASV must support CPSV and the transfer is done with
IPv4.
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.
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.
Added overload for GetLoginPassword for providing a challanage string which
doesn't have to the last command reply. Added CLNT support.
SSCN Support added.
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).
SSL with active (PORT) transfers now should work again.
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.
Reworked Eldos's proposed FTP fix as suggested by Henrick Hellström by moving
all of the IOHandler creation code to InitDataChannel. This should reduce the
likelihood of error.
Removed a temporary workaround for an OnWork bug that was in the Indy Core.
That bug was fixed so there's no sense in keeping a workaround here.
A temporary fix for OnWork events not firing. The bug is that OnWork events
aren't used in IOHandler where ReadStream really is located.
OnCustomFTPProxy added to allow Indy to support custom FTP proxies. When using
this event, you are responsible for programming the FTP Proxy and FTP Server
login sequence. GetLoginPassword method function for returning the password
used when logging into a FTP server which handles OTP calculation. This way,
custom firewall support can handle One-Time-Password system transparently. You
do have to send the User ID before calling this function because the OTP
challenge is part of the reply.
Made comments about our loop that tries several AUTH command variations. Some
servers may only accept AUTH SSL while other servers only accept AUTH TLS.
Moved feature negoation properties down to the ExplicitTLSClient level as
feature negotiation goes hand in hand with explicit TLS support.
TLS handshake itself can now be handled.
Changed because some properties are moved to IOHandler
Updated framework with an event if the TLS negotiation command fails. Cleaned
up some duplicate code in the clients.
Cleaned-up some code and illiminated some duplicate things.
A typecast was incorrect and could cause a potential source of instability if a
TIdIOHandlerStack was not used.
Added 2 events to give the user more control to the dataconnection, moved
SendTransferType, enabled ssl
Now uses an abstract SSL base class instead of OpenSSL so 3rd-party vendors can
plug-in their products.
Fixed a writeln bug and an IOError issue.
FFreeIOHandlerOnDisconnect to FreeIOHandlerOnDisconnect at Bas's instruction
The FTP list processing has been restructured so that Directory output is not
done by IdFTPList. This now also uses the IdFTPListParserBase for parsing so
that the code is more scalable.
Now temporarily change the transfer mode to ASCII when requesting a DIR. TOPS20
does not like transfering dirs in binary mode and it might be a good idea to do
it anyway.
Removed the Data Connection assurance stuff. We figure things out from the
draft specificaiton, the only servers we found would not send any data after
the new commands were sent, and there were only 2 server types that supported
it anyway.
- added XCRC support - specified by "GlobalSCAPE Secure FTP Server User's
Guide"
which is available at http://www.globalscape.com and also explained at
http://www.southrivertech.com/support/titanftp/webhelp/titanftp.htm
- added COMB support - specified by "GlobalSCAPE Secure FTP Server User's
Guide" which is available at http://www.globalscape.com and also explained at
http://www.southrivertech.com/support/titanftp/webhelp/titanftp.htm
- now supports RFC 2640 - FTP Internalization
_ added AFromBeginning parameter to InternalPut to correctly honor the AAppend
parameter of Put
- now complies with RFC 2389 - Feature negotiation mechanism for the File
Transfer Protocol
- now complies with RFC 2428 - FTP Extensions for IPv6 and NATs
- proxy support fix (non-standard ftp port's)
</quote>
A simple diff of the interface for client reveals the following:
<diff>
97a617,619
| Quote: | TIdOnDataChannelCreate = procedure (ASender: TObject; ADataChannel: TIdTCPConnection) of object;
TIdOnDataChannelDestroy = procedure (ASender: TObject; ADataChannel: TIdTCPConnection) of object;
|
101a624,626
| Quote: | Id_TIdFTP_UseNATFastTrack = False;
Id_TIdFTP_HostPortDelimiter = ':';
Id_TIdFTP_DataConAssurance = False;
|
112a641,651
| Quote: | TAuthCmd = (tAuto, tAuthTLS, tAuthSSL, tAuthTLSC, tAuthTLSP);
const
Id_TIdFTP_DataPortProtection = ftpdpsClear;
DEF_Id_TIdFTP_Implicit = False;
DEF_Id_FTP_UseExtendedDataPort = False;
DEF_Id_TIdFTP_UseExtendedData = False;
DEF_Id_TIdFTP_UseMIS = False;
DEF_Id_FTP_UseCCC = False;
DEF_Id_FTP_AUTH_CMD = tAuto;
|
113a653,671
| Quote: | type
TIdFTPBannerEvent = procedure (ASender: TObject; const AMsg : String) of object;
TIdFTPClientIdentifier = class (TPersistent)
protected
FClientName : String;
FClientVersion : String;
FPlatformDescription : String;
procedure SetClientName(const AValue: String);
procedure SetClientVersion(const AValue: String);
procedure SetPlatformDescription(const AValue: String);
function GetClntOutput: String;
public
procedure Assign(Source: TPersistent); override;
property ClntOutput : String read GetClntOutput;
published
property ClientName : String read FClientName write SetClientName;
property ClientVersion : String read FClientVersion write SetClientVersion;
property PlatformDescription : String read FPlatformDescription write SetPlatformDescription;
end;
|
Added
| Quote: | TIdFTPTZInfo = class(TPersistent)
protected
FGMTOffset : TDateTime;
FGMTOffsetAvailable : Boolean;
public
procedure Assign(Source: TPersistent); override;
published
property GMTOffset : TDateTime read FGMTOffset write FGMTOffset;
property GMTOffsetAvailable : Boolean read FGMTOffsetAvailable write FGMTOffsetAvailable;
end;
|
Changed
| Quote: | TIdFTP = class(TIdExplicitTLSClient)
|
Added
| Quote: | procedure DoOnRetrievedDir;
procedure DoOnDirParseStart;
procedure DoOnDirParseEnd;
procedure SetTZInfo(const Value: TIdFTPTZInfo);
function IsSiteZONESupported : Boolean;
function IndexOfFeatLine(const AFeatLine : String):Integer;
procedure ClearSSCN;
function SetSSCNToOn : Boolean;
procedure SendInternalPassive(const ACmd : String; var VIP: string; var VPort: integer);
procedure SendCPassive(var VIP: string; var VPort: integer);
function FindAuthCmd : String;
function GetReplyClass:TIdReplyClass; override;
function EPRTParams(const AIP : String; const APort : Integer; const AIPVersion : TIdIPVersion): String;
procedure ParseFTPList(AData : TIdStrings);
procedure SetPassive(const AValue : Boolean);
procedure SetTryNATFastTrack(const AValue: Boolean);
procedure DoTryNATFastTrack;
procedure SetUseExtensionDataPort(const AValue: Boolean);
procedure SetIPVersion(const AValue: TIdIPVersion); override;
procedure SetIOHandler(AValue: TIdIOHandler); override;
function GetSupportsTLS: Boolean; override;
procedure DoCustomFTPProxy;
procedure DoOnBannerAfterLogin(AText : TIdStrings);
procedure DoOnBannerBeforeLogin(AText : TIdStrings);
procedure SendPBSZ; //protection buffer size
procedure SendPROT; //data port protection
procedure SendDataSettings; //this is for the extensions only;
|
156,158c806,812
< procedure InternalGet(const ACommand: string; ADest: TStream; AResume: Boolean = false);
< procedure InternalPut(const ACommand: string; ASource: TStream; AFromBeginning: Boolean = true);
< procedure SetOnParseCustomListFormat(const AValue: TIdOnParseCustomListFormat);
---
| Quote: | //PRET is to help distributed FTP systems by letting them know what you will do
//before issuing a PASV. See: http://drftpd.mog.se/wiki/wiki.phtml?title=Distributed_PASV#PRE_Transfer_Command_for_Distributed_PASV_Transfers
//for a discussion.
procedure SendPret(const ACommand : String);
procedure InternalGet(const ACommand: string; ADest: TIdStreamVCL; AResume: Boolean = false);
procedure InternalPut(const ACommand: string; ASource: TIdStreamVCL; AFromBeginning: Boolean = true);
// procedure SetOnParseCustomListFormat(const AValue: TIdOnParseCustomListFormat);
|
Added
| Quote: | procedure SendPort(AHandle: TIdSocketHandle); overload;
procedure SendPort(const AIP : String; const APort : Integer); overload;
procedure ParseEPSV(const AReply : String; var VIP : String; VPort : Integer);
//These two are for RFC 2428.txt
procedure SendEPort(AHandle: TIdSocketHandle); overload;
procedure SendEPort(const AIP : String; const APort : Integer; const AIPVersion : TIdIPVersion); overload;
procedure SendEPassive(var VIP: string; var VPort: integer);
procedure SetClientInfo(const AValue: TIdFTPClientIdentifier);
procedure DoBeforeGet; virtual;
procedure DoBeforePut (AStream: TStream); virtual;
procedure DoAfterPut; virtual;
function IsValidOTPString(const AResponse:string):boolean;
function GenerateOTP(const AResponse:string; const APassword:string):string;
procedure FXPSetTransferPorts(AFromSite, AToSite: TIdFTP;
const ATargetUsesPasv : Boolean);
procedure FXPSendFile(AFromSite, AToSite: TIdFTP;
const ASourceFile, ADestFile: String);
function InternalEncryptedTLSFXP(AFromSite, AToSite: TIdFTP; const ASourceFile,
ADestFile: String; const ATargetUsesPasv : Boolean) : Boolean;
function InternalUnencryptedFXP(AFromSite, AToSite: TIdFTP; const ASourceFile,
ADestFile: String; const ATargetUsesPasv : Boolean): Boolean;
function ValidateInternalIsTLSFXP(AFromSite, AToSite: TIdFTP; const ATargetUsesPasv : Boolean): Boolean;
procedure InitComponent; override;
procedure SetUseTLS(AValue : TIdUseTLS); override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure SetDataPortProtection(AValue : TIdFTPDataPortSecurity);
procedure SetAUTHCmd(const AValue : TAuthCmd);
procedure SetUseCCC(const AValue: Boolean);
function IsExtSupported(const ACmd : String):Boolean;
procedure ExtractFeatFacts(const ACmd : String; AResults : TIdStrings);
//this function transparantly handles OTP based on the Last command response
//so it needs to be called only after the USER command or equivilent.
function GetLoginPassword : String; overload;
function GetLoginPassword(const APrompt : String) : String; overload;
|
171,172c859
< procedure Connect(AAutoLogin: boolean = True; const ATimeout: Integer = IdTimeoutDefault); reintroduce;
---
| Quote: | procedure Connect; override;
|
175a863
| Quote: | procedure Get(const ASourceFile: string; ADest: TIdStreamVCL; AResume: Boolean = false); overload;
|
180c868,881
< procedure List(ADest: TStrings; const ASpecifier: string = ''; const ADetails: boolean = true);
---
| Quote: | procedure List; overload; //.NET Overload
procedure List( //.NET Overload
const ASpecifier: string;
ADetails: Boolean = True); overload;
procedure List(
ADest: TIdStrings;
const ASpecifier: string = '';
ADetails: Boolean = True); overload;
procedure ExtListDir(const ADest: TIdStrings=nil; const ADirectory: string = '');
procedure ExtListItem(ADest: TIdStrings; AFList : TIdFTPListItems; const AItem: string=''); overload;
procedure ExtListItem(ADest: TIdStrings; const AItem: string = ''); overload;
procedure ExtListItem(AFList : TIdFTPListItems; const AItem : String= ''); overload;
function FileDate(const AFileName : String; const AsGMT : Boolean = False): TDateTime;
|
Added
| Quote: | procedure SetCMDOpt(const ACMD, AOptions : String);
procedure StoreUnique(const ASource: TIdStreamVCL); overload;
procedure StoreUnique(const ASource: TStream); overload;
procedure StoreUnique(const ASourceFile: string); overload;
procedure SiteToSiteUpload(const AToSite : TIdFTP; const ASourceFile : String; const ADestFile : String = '');
procedure SiteToSiteDownload(const AFromSite: TIdFTP; const ASourceFile : String; const ADestFile : String = '');
|
199a912,924
| Quote: | procedure SetLang(const ALangTag : String);
function CRC(const AFIleName : String; const AStartPoint : Cardinal = 0; const AEndPoint : Cardinal=0) : Int64;
//file parts must be in order in TIdStrings parameter
//GlobalScape FTP Pro uses this for multipart simultanious file uploading
procedure CombineFiles(const ATargetFile : String; AFileParts : TIdStrings);
//Set modified file time.
procedure SetModTime(const AFileName: String; const ALocalTime: TDateTime);
procedure SetModTimeGMT(const AFileName : String; const AGMTTime: TDateTime);
// servers that support MDTM yyyymmddhhmmss[+-xxx] and also support LIST -T
//This is true for servers that are known to support these even if they aren't
//listed in the FEAT reply.
function IsServerMDTZAndListTForm : Boolean;
202,203c927,932
property DirFormat : String read FDirFormat;
property LangsSupported : TIdStrings read FLangsSupported;
property ListParserClass : TIdFTPListParseClass read FListParserClass write FListParserClass;
property LoginMsg: TIdReplyFTP read FLoginMsg;
property TZInfo : TIdFTPTZInfo read FTZInfo write SetTZInfo;
property UsingExtDataPort : Boolean read FUsingExtDataPort;
property UsingNATFastTrack : Boolean read FUsingNATFastTrack;
property UsingSFTP : Boolean read FUsingSFTP;
property CurrentTransferMode : TIdFTPTransferMode read FCurrentTransferMode write TransferMode;
|
206a940,947
| Quote: | property AutoLogin: Boolean read FAutoLogin write FAutoLogin;
// This is an object that can compress and decompress HTTP Deflate encoding
property Compressor : TIdZLibCompressorBase read FCompressor write FCompressor;
property Host;
property UseCCC : Boolean read FUseCCC write SetUseCCC default DEF_Id_FTP_UseCCC;
property Passive: boolean read FPassive write SetPassive default Id_TIdFTP_Passive;
property DataPortProtection : TIdFTPDataPortSecurity read FDataPortProtection write SetDataPortProtection default Id_TIdFTP_DataPortProtection;
property AUTHCmd : TAuthCmd read FAUTHCmd write SetAUTHCmd default DEF_Id_FTP_AUTH_CMD;
property ExternalIP : String read FExternalIP write FExternalIP;
property TransferTimeout: Integer read FTransferTimeout write FTransferTimeout default IdDefTimeout;
property Port default IDPORT_FTP;
property UseExtensionDataPort : Boolean read FUseExtensionDataPort write SetUseExtensionDataPort default DEF_Id_TIdFTP_UseExtendedData;
property UseMLIS : Boolean read FUseMLIS write FUseMLIS default DEF_Id_TIdFTP_UseMIS;
property TryNATFastTrack : Boolean read FTryNATFastTrack write SetTryNATFastTrack default Id_TIdFTP_UseNATFastTrack;
property ProxySettings: TIdFtpProxySettings read FProxySettings write SetProxySettings;
property ClientInfo : TIdFTPClientIdentifier read FClientInfo write SetClientInfo;
property UseTLS;
property OnTLSNotAvailable;
property OnBannerBeforeLogin : TIdFTPBannerEvent read FOnBannerBeforeLogin write FOnBannerBeforeLogin;
property OnBannerAfterLogin : TIdFTPBannerEvent read FOnBannerAfterLogin write FOnBannerAfterLogin;
|
218d968
< property OnCheckListFormat: TIdCheckListFormat read FOnCheckListFormat write FOnCheckListFormat;
220,221d969
< property OnParseCustomListFormat: TIdOnParseCustomListFormat read FOnParseCustomListFormat
< write SetOnParseCustomListFormat;
Added
| Quote: | property OnCustomFTPProxy : TNotifyEvent read FOnCustomFTPProxy write FOnCustomFTPProxy;
property OnDataChannelCreate:TIdOnDataChannelCreate read FOnDataChannelCreate write FOnDataChannelCreate;
property OnDataChannelDestroy:TIdOnDataChannelDestroy read FOnDataChannelDestroy write FOnDataChannelDestroy;
//The directory was Retrieved from the FTP server.
property OnRetrievedDir : TNotifyEvent read FOnRetrievedDir write FOnRetrievedDir;
//parsing is done only when DirectoryLiusting is referenced
property OnDirParseStart : TNotifyEvent read FOnDirParseStart write FOnDirParseStart;
property OnDirParseEnd : TNotifyEvent read FOnDirParseEnd write FOnDirParseEnd;
|
hth...
|
|
| Back to top |
|
 |
Huhtaman Guest
|
Posted: Sat Dec 18, 2004 12:00 am Post subject: Re: How To Reinstall Indy 9.00.03 |
|
|
Remy & Don:
Thank you guys for your response and for providing such an awesome
component !!! Indy has allowed me to surpass all of my competitors. We
really appreciate the great job you guys have done.
Neil Huhta
Profit Monster Data Systems LLC
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|