| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- { $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: 17161: FileSYstemTestMain.pas
- {
- { Rev 1.0 3/14/2003 06:59:18 PM JPMugaas
- { FTPFileSystem Test program.
- }
- unit FileSYstemTestMain;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, IdFTPBaseFileSystem, IdFTPFileSystem, IdBaseComponent,
- IdComponent, IdTCPServer, IdCmdTCPServer, IdFTPServer, IdUserAccounts,
- StdCtrls, ComCtrls, IdSync, IdContext, IdTCPConnection,
- IdServerIOHandler, IdSSL, IdSSLOpenSSL;
- type
- TfrmServer = class(TForm)
- IdFTPServer1: TIdFTPServer;
- IdUserManager1: TIdUserManager;
- IdFTPFileSystem1: TIdFTPFileSystem;
- redtLog: TRichEdit;
- IdSSLServer: TIdServerIOHandlerSSLOpenSSL;
- procedure FormDestroy(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure IdFTPServer1Connect(AContext: TIdContext);
- procedure IdFTPServer1BeforeCommandHandler(ASender: TIdTCPServer;
- const AData: String; AContext: TIdContext);
- procedure IdFTPServer1Exception(AContext: TIdContext;
- AException: Exception);
- procedure IdFTPServer1Disconnect(AContext: TIdContext);
- procedure IdSSLServerGetPassword(var Password: String);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- frmServer: TfrmServer;
- implementation
- uses IdIOHandlerStack;
- {$R *.dfm}
- type
- TConnectSync = class(TIdSync)
- protected
- FIPConnect : String;
- FPortConnect : Cardinal;
- procedure DoSynchronize; override;
- public
- class procedure CreateSync(const AIP : String; const APort : Cardinal);
- end;
- TDisconnectSync = class(TConnectSync)
- protected
- procedure DoSynchronize; override;
- end;
- TCmdLoggerSync = class(TIdSync)
- protected
- FIPConnect : String;
- FPortConnect : Cardinal;
- FMsg : String;
- procedure DoSynchronize; override;
- public
- class procedure CreateSync(const AIP : String; const APort : Cardinal; const AMsg : String);
- end;
- TExceptionLoggerSync = class(TIdSync)
- FIPConnect : String;
- FPortConnect : Cardinal;
- FMsg : String;
- FExceptionName : String;
- procedure DoSynchronize; override;
- public
- class procedure CreateSync(const AIP : String; const APort : Cardinal; const AExceptionName, AMsg : String);
- end;
- function MakePathStr(const APath : String): String;
- begin
- {$IFDEF VCL6ORABOVE}
- Result := SysUtils.IncludeTrailingPathDelimiter(APath);
- {$ELSE}
- Result := IncludeTrailingBackSlash(APath);
- {$ENDIF}
- end;
- function GetSSLCertPath : String;
- begin
- Result := MakePathStr(ExtractFilePath(ParamStr(0))+'cert');
- end;
- procedure TfrmServer.FormDestroy(Sender: TObject);
- begin
- IdFTPFileSystem1.SaveFileSystem(ChangeFileExt( ParamStr(0),'.ini'));
- end;
- procedure TfrmServer.FormCreate(Sender: TObject);
- begin
- IdFTPFileSystem1.LoadFileSystem(ChangeFileExt( ParamStr(0),'.ini'));
- IdSSLServer.SSLOptions.RootCertFile := GetSSLCertPath + 'CAcert.crt';
- IdSSLServer.SSLOptions.CertFile := GetSSLCertPath + 'WSScert.pem';
- IdSSLServer.SSLOptions.KeyFile := GetSSLCertPath + 'WSSkey.pem';
- IdSSLServer.SSLOptions.Method :=sslvSSLv23 ;
- IdSSLServer.SSLOptions.Mode:= sslmUnassigned;
- IdFTPServer1.Active := True;
- end;
- { TConnectSync }
- class procedure TConnectSync.CreateSync(const AIP: String;
- const APort: Cardinal);
- var LCon : TConnectSync;
- begin
- LCon := Create;
- LCon.FIPConnect := AIP;
- LCon.FPortConnect := APort;
- LCon.Synchronize;
- end;
- procedure TConnectSync.DoSynchronize;
- begin
- frmServer.redtLog.Lines.Add( Format('Connect: IP - %s Port - %d',[FIPConnect,FPortConnect]));
- end;
- procedure TfrmServer.IdFTPServer1Connect(AContext: TIdContext);
- var LStck : TIdIOHandlerStack;
- begin
- LStck := AContext.Connection.IOHandler as TIdIOHandlerStack;
- TConnectSync.CreateSync(LStck.Binding.PeerIP,LStck.Binding.PeerPort);
- end;
- { TCmdLoggerSync }
- class procedure TCmdLoggerSync.CreateSync(const AIP: String;
- const APort: Cardinal; const AMsg: String);
- var LCon : TCmdLoggerSync;
- begin
- LCon := TCmdLoggerSync.Create;
- LCon.FIPConnect := AIP;
- LCon.FPortConnect := APort;
- LCon.FMsg := AMsg;
- LCon.Synchronize;
- end;
- procedure TCmdLoggerSync.DoSynchronize;
- begin
- frmServer.redtLog.Lines.Add( Format('Command: IP - %s Port - %d : [%s]',[FIPConnect,FPortConnect,FMsg]));
- end;
- procedure TfrmServer.IdFTPServer1BeforeCommandHandler(
- ASender: TIdTCPServer; const AData: String; AContext: TIdContext);
- var LStck : TIdIOHandlerStack;
- begin
- LStck := AContext.Connection.IOHandler as TIdIOHandlerStack;
- TCmdLoggerSync.CreateSync(LStck.Binding.PeerIP,LStck.Binding.PeerPort,AData);
- end;
- { TExceptionLoggerSync }
- class procedure TExceptionLoggerSync.CreateSync(const AIP: String;
- const APort: Cardinal; const AExceptionName, AMsg: String);
- var LCon : TExceptionLoggerSync;
- begin
- LCon := TExceptionLoggerSync.Create;
- LCon.FIPConnect := AIP;
- LCon.FPortConnect := APort;
- LCon.FExceptionName := AExceptionName;
- LCon.FMsg := AMsg;
- LCon.Synchronize;
- end;
- procedure TExceptionLoggerSync.DoSynchronize;
- begin
- frmServer.redtLog.Lines.Add( Format('Exception: IP - %s Port - %d Type [%s]',[FIPConnect,FPortConnect,FExceptionName ]));
- frmServer.redtLog.Lines.Add( Format('Command: IP - %s Port - %d Message [%s]',[FIPConnect,FPortConnect,FMsg]));
- end;
- procedure TfrmServer.IdFTPServer1Exception(AContext: TIdContext;
- AException: Exception);
- var LStck : TIdIOHandlerStack;
- begin
- LStck := AContext.Connection.IOHandler as TIdIOHandlerStack;
- TExceptionLoggerSync.CreateSync(LStck.Binding.PeerIP,LStck.Binding.PeerPort,AException.ClassName,AException.Message );
- end;
- { TDisconnectSync }
- procedure TDisconnectSync.DoSynchronize;
- begin
- frmServer.redtLog.Lines.Add( Format('Disconnect: IP - %s Port - %d',[FIPConnect,FPortConnect]));
- end;
- procedure TfrmServer.IdFTPServer1Disconnect(AContext: TIdContext);
- var LStck : TIdIOHandlerStack;
- begin
- LStck := AContext.Connection.IOHandler as TIdIOHandlerStack;
- if Assigned(LStck) then
- begin
- TDisconnectSync.CreateSync(LStck.Binding.PeerIP,LStck.Binding.PeerPort);
- end;
- end;
- procedure TfrmServer.IdSSLServerGetPassword(var Password: String);
- begin
- Password := 'aaaa';
- end;
- end.
|