IdFingerServer.pas 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. { $HDR$}
  2. {**********************************************************************}
  3. { Unit archived using Team Coherence }
  4. { Team Coherence is Copyright 2002 by Quality Software Components }
  5. { }
  6. { For further information / comments, visit our WEB site at }
  7. { http://www.TeamCoherence.com }
  8. {**********************************************************************}
  9. {}
  10. { $Log: 10159: IdFingerServer.pas
  11. {
  12. { Rev 1.0 2002.11.12 10:38:16 PM czhower
  13. }
  14. unit IdFingerServer;
  15. interface
  16. {
  17. 2000-May-15 J. Peter Mugaas
  18. -Added verbose querry event to complement TIdFinger
  19. 2000-Apr-22 J Peter Mugass
  20. -Ported to Indy
  21. 2000-Jan-13 MTL
  22. -Moved to new Palette Scheme (Winshoes Servers)
  23. 1999-Apr-13
  24. -Final Version
  25. Original Author: Ozz Nixon
  26. }
  27. uses
  28. Classes,
  29. IdAssignedNumbers,
  30. IdTCPServer;
  31. Type
  32. TIdFingerGetEvent = procedure (AThread: TIdPeerThread; const AUserName: String) of object;
  33. TIdFingerServer = class ( TIdTCPServer )
  34. protected
  35. FOnCommandFinger : TIdFingerGetEvent;
  36. FOnCommandVerboseFinger : TIdFingerGetEvent;
  37. //
  38. function DoExecute(AThread: TIdPeerThread): boolean; override;
  39. public
  40. constructor Create(AOwner: TComponent); override;
  41. published
  42. {This event fires when you make a regular querry}
  43. property OnCommandFinger: TIdFingerGetEvent read FOnCommandFinger
  44. write FOnCommandFinger;
  45. { This event fires when you receive a VERBOSE finger request}
  46. property OnCommandVerboseFinger : TIdFingerGetEvent
  47. read FOnCommandVerboseFinger write FOnCommandVerboseFinger;
  48. property DefaultPort default IDPORT_Finger;
  49. end;
  50. implementation
  51. uses
  52. SysUtils;
  53. constructor TIdFingerServer.Create(AOwner: TComponent);
  54. begin
  55. inherited;
  56. DefaultPort := IdPORT_FINGER;
  57. end;
  58. function TIdFingerServer.DoExecute(AThread: TIdPeerThread): boolean;
  59. Var
  60. s: String;
  61. begin
  62. result := true;
  63. {We use TrimRight in case there are spaces ending the query which are problematic
  64. for verbose queries. CyberKit puts a space after the /W parameter}
  65. s := TrimRight(AThread.Connection.Readln);
  66. If assigned ( FOnCommandVerboseFinger ) and
  67. ( UpperCase( Copy ( s, Length ( s ) -1, 2 ) ) = '/W' ) then {Do not Localize}
  68. begin
  69. {we remove the /W switch before calling the event}
  70. s := Copy(s, 1, Length ( s ) - 2);
  71. OnCommandVerboseFinger ( AThread, s );
  72. end //if assigned ( FOnCommandVerboseFinger ) and
  73. else
  74. begin
  75. if assigned ( OnCommandFinger ) then begin
  76. OnCommandFinger ( AThread, s );
  77. end; //if assigned(OnCommandFinger) then
  78. end; //else .. if assigned ( FOnCommandVerboseFinger ) and
  79. AThread.Connection.Disconnect;
  80. end;
  81. end.