Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi INDY 10 FTP (https://www.delphipraxis.net/106472-indy-10-ftp.html)

Cosamia 11. Jan 2008 12:40


INDY 10 FTP
 
Hallo zusammen,

ich bin gerade dabei mir einen kleinen FTP Server mit INDY 10 Komponenten zu basten.
Ich habe nur ein Paar kleine Probleme. Evtl. könnt ihr mir ja weiter helfen.

Als 1.

funktioniert u.g. Procedure bei mir nicht. Wenn ich mich connecte, lande ich immer in einem unbestimmten Verzeichnis, in welchem ich keine Rechte oder ähnliches habe. Ein ChangeDirectory funzt auch nicht.


Delphi-Quellcode:
procedure TForm1.IdFTPServer1AfterUserLogin(ASender: TIdFTPServerContext);
begin
   ASender.HomeDir := '\\apollo\daten\edv\_tmp';
   ASender.CurrentDir := '\\apollo\daten\edv\_tmp';
    //ASender.CurrentDir := '/';
    //ASender.HomeDir := '/';
end;
2.

funktioniert bei trotz u.g. der Anonymous Login. Jemand eine Idee?

Delphi-Quellcode:
procedure TForm1.IdFTPServer1UserLogin(ASender: TIdFTPServerContext;
  const AUsername, APassword: string; var AAuthenticated: Boolean);
begin
 if idftpserver1.active = true then
  begin
  AAuthenticated := False;
 if ('test' = AUsername) and ('test' = APassword) then
   begin
   AAuthenticated := True;
   ASender.HomeDir := '\\apollo\daten\edv\_tmp';
   ASender.CurrentDir := '\\apollo\daten\edv\_tmp';

   end;
 end else AAuthenticated := False;
 // We just set AAuthenticated to true so any username / password is accepted
 // You should check them here - AUsername and APassword
  //AAuthenticated := True;
end;
Wäre für jeden Tipp dankbar.

Klaus01 11. Jan 2008 12:52

Re: INDY 10 FTP
 
Hallo,

kann es sein, dass Du bei ASender.HomeDir einen absoluten Pfad
eintragen solltest?

Delphi-Quellcode:
ASender.HomeDir := 'd:\ftproot';
Grüße
Klaus

Cosamia 11. Jan 2008 12:58

Re: INDY 10 FTP
 
Ja Klaus, das wars.
Die Workingdirectory ist jetzt die richtige.

Zum Anonymous auch ne Idee?

Aurelius 11. Jan 2008 13:05

Re: INDY 10 FTP
 
Setzt du AAuthenticated vllcht später nochmal auf TRUE? Kannst ja auch mal testen die dcu zu löschen und das ganze neu zu kompilieren..

Cosamia 11. Jan 2008 15:55

Re: INDY 10 FTP
 
Zitat:

Zitat von xX0815Xx
Setzt du AAuthenticated vllcht später nochmal auf TRUE? Kannst ja auch mal testen die dcu zu löschen und das ganze neu zu kompilieren..

Ne, wird nicht mehr auf true gesetzt.
Seltsam, seltsam

SirThornberry 11. Jan 2008 20:41

Re: INDY 10 FTP
 
Irgendwie kann ich die Logic noch nicht nachvollziehen:
Delphi-Quellcode:
procedure TForm1.IdFTPServer1UserLogin(ASender: TIdFTPServerContext;
  const AUsername, APassword: string; var AAuthenticated: Boolean);
begin
if idftpserver1.active = true then
  begin
  AAuthenticated := False;
if ('test' = AUsername) and ('test' = APassword) then
   begin
   AAuthenticated := True;
   ASender.HomeDir := '\\apollo\daten\edv\_tmp';
   ASender.CurrentDir := '\\apollo\daten\edv\_tmp';

   end;
end else AAuthenticated := False;
// We just set AAuthenticated to true so any username / password is accepted
// You should check them here - AUsername and APassword
  //AAuthenticated := True;
end;
Warum prüfst du ob der ftpserver aktiv ist? Wenn er nicht aktiv ist würde doch dieses Ereignis nicht augelöst werden oder? Und warum vergleichst du active mit der constanten true? Was wäre wenn active 2 ist und somit wahr ist aber eben nicht true aber auch nicht false.
und warum setzt du AAuthenticated auf False vor dem Test anstelle ein "else" zu nehmen und gleichzeitig arbeitest du aber mit Else bei der äußeren Bedingung. Warum machst du es einmal so und einmal anders?

Klaus01 11. Jan 2008 21:56

Re: INDY 10 FTP
 
Vielleicht erscheint es so etwas aufgeräumter.

Delphi-Quellcode:
procedure TForm1.IdFTPServer1UserLogin(ASender: TIdFTPServerContext;
  const AUsername, APassword: string; var AAuthenticated: Boolean);
begin

  AAuthenticated := ('test' = AUsername) and ('test' = APassword);
  if AAuthenticated then
    begin
      ASender.HomeDir := '\\apollo\daten\edv\_tmp';
      ASender.CurrentDir := '\\apollo\daten\edv\_tmp';
    end;

end;
Gute Nacht
Klaus

DeddyH 11. Jan 2008 22:01

Re: INDY 10 FTP
 
Zitat:

Zitat von Klaus01
Hallo,

kann es sein, dass Du bei ASender.HomeDir einen absoluten Pfad
eintragen solltest?
Delphi-Quellcode:
ASender.HomeDir := 'd:\ftproot';
Grüße
Klaus

Zitat:

Zitat von Klaus01
Delphi-Quellcode:
if AAuthenticated then
    begin
      ASender.HomeDir := '\\apollo\daten\edv\_tmp';
      ASender.CurrentDir := '\\apollo\daten\edv\_tmp';
    end;

Bist Du auch schon dem Copy & Paste-Dämon erlegen?

SirThornberry 11. Jan 2008 23:39

Re: INDY 10 FTP
 
an dem Pfad alleine kann es nicht liegen. Schließlich sind beides absolute Pfade und das Handling ist dem Programmierer überlassen, sprich die Pfade müssen nicht real existieren.

Klaus01 12. Jan 2008 09:02

Re: INDY 10 FTP
 
Zitat:

Zitat von DeddyH
Bist Du auch schon dem Copy & Paste-Dämon erlegen?

Ja, bin ich dann wohl, aber das Problem war ja weiter oben schon geklärt.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz