Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#4

Re: IDFTP-Server - eigene Replys schreiben

  Alt 5. Jan 2010, 19:06
Zitat von Servi:
Hey, Danke erstmal für die Antwort
Gerne, hat etwas gedauert, aber doch noch gefunden

Zitat von Servi:
Aber beide Möglichkeiten sind nicht ganz das was ich gesucht hatte, wollte es nämlich flexibel halten, denn würde ich das in der entsprechenden Unit ändern, so wäre es nicht mehr änderbar...

Gibt es sonst vll. eine Möglichkeit einfach zu dem Reply etwas hinzuzufügen? Bei den manuel erstellten befehlen, z.b SITE USER, ( procedure TFTPServer.IdFTPServer1SITECommands1Command(ASende r: TIdCommand); ) etc. bekomm ich diesen ASender als Tidcommand übergeben, und ich kann die Antwort ganz einfach mit ASender.Reply.SetReply(200, 'Meine Antwort') wählen, sowas habe ich in den vordefinierten Ereignismethoden leider nicht gefunden, dort gibts zwar auch TIDReply, nur komm ich mit dieser nicht zurecht
Hmm, Du könntest versuchen durch die IdFTPServer.CommandHandlers.Items zu iterieren und NormalReply.Text (bzw. Text.Text) zu ersetzen:

Delphi-Quellcode:
var
  i: Integer;
begin
  ...
  for i := 0 to IdFTPServer1.CommandHandlers.Count - 1 do
  begin
    if IdFTPServer1.CommandHandlers.Items[i].NameIs('CWD') then
      IdFTPServer1.CommandHandlers.Items[i].NormalReply.Text.Text := 'foo';
  end;
end;
Das Problem ist aber, das die BuiltIn-Commands den Default Handler CmdCommandSuccessful aufrufen. Da drin wird immer ein
ASender.Reply.SetReply(AReplyCode, IndyFormat(RSFTPCmdSuccessful, [ASender.CommandHandler.Command])); gemacht.

Also wird die Successful Meldung immer Code + ResourceString sein.

Gerade noch eine Idee: Was auch noch ginge, wäre den ResourceString zu hooken... Für ein Beispiel zum Hooken schau Dir mal den Beitrag von Peter Below in den Delphi Newsgroups dazu an.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat