AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Clientverwaltung mit idFTPServer
Thema durchsuchen
Ansicht
Themen-Optionen

Clientverwaltung mit idFTPServer

Ein Thema von Gentleman · begonnen am 25. Jul 2006 · letzter Beitrag vom 28. Jul 2006
Antwort Antwort
Seite 2 von 2     12   
Gentleman

Registriert seit: 29. Sep 2004
302 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Clientverwaltung mit idFTPServer

  Alt 27. Jul 2006, 13:34
Zitat:
also wenn das so ist, haben wir da grad versionshölle... bei den im BDS 2006 (Pro SSL) mitgelieferten Indys handelt es sich afaik um Indy 10. und da siehts so aus:
Delphi-Quellcode: markieren
procedure TForm1.IdFTPServer1Connect(APeerThread: TIdPeerThread);
begin

end;




Das hab ich jetzt mal aus dem Gedächnis getippt.
Also ich habe mir unter Delphi 2005 PE die Indys nachinstalliert. Ich habe mir Indy 10 runtergeladen und auch nochmal überpruft, es wurde auch als Indy 10 in in Delphi eingertragen.

Wie es aussieht scheint die nachinstallierte Version aber überall so zu sein, wie bei mir, denn ich habe sie nach der Installationsanleitung von Matze installiert, und dort wird auch von dem TidContext gesprochen. Das ganze scheint bei mir also keine Ausnahme zu sein.

Ist das jetzt ein reines Versionsproblem oder liegt es vielleicht an den unterschiedlichen Delphiversionen?


Gruß,
Lennard
Lennard
Der Vorteil der Klugheit besteht darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger. (Kurt Tucholsky)
  Mit Zitat antworten Zitat
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#12

Re: Clientverwaltung mit idFTPServer

  Alt 27. Jul 2006, 15:52
Also ich hab' Delphi 2006 Prof. mit den vorinstallierten bzw. mitgelieferten Indys.
Und auch dort habe ich nur AContext : TIdContext
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Clientverwaltung mit idFTPServer

  Alt 27. Jul 2006, 16:03
Kannst du mit dem Context nicht auch arbeiten?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#14

Re: Clientverwaltung mit idFTPServer

  Alt 27. Jul 2006, 16:16
Nee, nicht wirklich.
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Clientverwaltung mit idFTPServer

  Alt 27. Jul 2006, 16:23
kannst du da nicht was verbindungs-persistentes rausdestillieren? du kannst username und passwort ja extra speichern
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Gentleman

Registriert seit: 29. Sep 2004
302 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Clientverwaltung mit idFTPServer

  Alt 27. Jul 2006, 22:09
Erst einmal vielen Dank für die Antworten!

Ich habe jetzt eine Lösung gefunden. Ich erstellte im OnConnect das TUserConnectioen Objekt und speichere dort den idContext ab dieses Objekt wird in eine TObjectList gespeichert. Da nach dem OnConnect Ereignis vom Client immer das OnUserLogin ausgelöst wird speichere ich dort dann Benutzernamen und Passwort und ein TUser Objekt, das wird dann zum Letzen Item der Liste hinzugefügt. Nun habe ich also alle Informationen zusammen.

Bin mir allerdings nicht ganz sicher, ob diese Lösung so ganz wasserdicht ist.


Gruß,
Lennard
Lennard
Der Vorteil der Klugheit besteht darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger. (Kurt Tucholsky)
  Mit Zitat antworten Zitat
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#17

Re: Clientverwaltung mit idFTPServer

  Alt 27. Jul 2006, 22:48
Es währe sehr schön, wenn Du den entsprechenden Code hier posten könntest, dann brauch' ich mich auch nicht weiter damit rumärgern...
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
Gentleman

Registriert seit: 29. Sep 2004
302 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Clientverwaltung mit idFTPServer

  Alt 28. Jul 2006, 01:50
Jopp klar, kann ich machen:

Also zum Anfang die beiden benötigten Objekte. Sind so ähnlich wie schon oben gepostet und die TObjectList (ConTnrs).
Delphi-Quellcode:
{ ... }
private
  ClientList: TObjectList;

{ ... }

type
  TUser = class(TObject)
    UserName, Password: String;
    Verzeichnis: String;
  end;

  TUserConnection = class(TObject)
    User: TUser;
    Context: TIdContext;
  end;
Als nächstes kommt dann das OnConnect Event dran:
Delphi-Quellcode:
procedure TForm1.IdFTPServer1Connect(AContext: TIdContext);
var
  UserConnection: TUserConnection;
begin
  UserConnection:= TUserConnection.Create;
  UserConnection.User:= nil;
  UserConnection.Context:= AContext;

  ClientList.Add(UserConnection);
end;
Hier wird also einfach nur das UserConnection Objekt erstellt und idContext gepeichert. der Wert User bleibt erstmal leer, denn die Informationen werden erst im OnUserLogin übergeben. Zum Schluss wird das neue Objekt dann noch in die Liste (ClientList) eingetragen, damit man weiterhin drauf zugreifen kann.

Nun haben wir den Client schon mal erfasst und brauchen jetzt noch die Benutzerinformationen, die im OnUserLogin Event übergeben werden:
Delphi-Quellcode:
procedure TForm1.IdFTPServer1UserLogin(ASender: TIdFTPServerContext;
  const AUsername, APassword: string; var AAuthenticated: Boolean);
var
  User: TUser;
begin
  if UserInList(AUsername, APassword) then
    begin
      AAuthenticated:= true;

      User:= TUser.Create;
      User.UserName:= AUsername;
      User.Password:= APassword;
      User.Verzeichnis:= 'C:\Test';

      (ClientList.Items[ClientList.Count - 1] as TUserConnection).User:= User;
    end
  else
    begin
      AAuthenticated:= false;
      ClientList.Delete(ClientList.Count - 1);
    end;
end;
UserInList ist einfach eine Funtion, die überprüft, ob der Benutzer sich überhaupt einloggen darf. Gibt sie true zurück, wird der Benutzer zugelassen (AAuthenticated:= true; ) und das UserObjekt, welches noch fehlt erstellt. Da das OnUserLogin immer nach dem OnConnect aufgerufen wird wissen wir ja, dass der neue Client, der sich jetzt anmelden will der letzte ist, der in der Liste eingetragen ist. Also rufen wir den letzten Eintrag der Liste als TUserConnection auf und geben ihm den gerade angelegten User. Somit haben wir alle Informationen für den User zusammen und können ihn über den Username oder idContext verwalten. Wenn der Benutzer nicht bekannt ist wird ihm der Login einfach verweigert, und er wird aus der Liste gelöscht.

Als letztes dann noch das OnDisconnect Event:
Delphi-Quellcode:
procedure TForm1.IdFTPServer1Disconnect(AContext: TIdContext);
var
  scan: Integer;
begin
  for scan:= ClientList.Count - 1 downto 0 do
    begin
      if (ClientList.Items[0] as TUserConnection).Context = AContext then
        begin
          ClientList.Delete(scan);
        end;
    end;
end;
Tja, hier wird einfach nur die Liste der Clients durchgegangen und nachgeschaut welcher Client sich gerade verabschiedet hat, der wird dann einfach gelöscht. Der Client wird über den idContext gefunden, da es hier ja den Benutzernamen nicht gibt.

So, das ist mein Grundgerüst der Clientverwaltung. Ist eigentlich nichts besonderes, und wie gesagt ich bin mir nicht ganz sicher, ob das so ganz wasserdicht ist, denn da die Informationen in in 2 verschiedenen Events gesammelt werden könnte es sein, dass dort mal falsche Informationen eingetragen werden, wenn mehrere Clients auf einmal zum Server verbinden und sich die Events überschneiden sollten.

Gruß,
Lennard
Lennard
Der Vorteil der Klugheit besteht darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger. (Kurt Tucholsky)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz