Einzelnen Beitrag anzeigen

Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#74

Re: Desktop Widget Engine (v0.41)

  Alt 24. Sep 2008, 14:28
Zitat von Larsi:
Also ich finde das Programm echt super
Danke für die Blumen *freu*

Zitat von Larsi:
Ich finde nur, das es einfach zu wenig Komponenten gibt zum Beispiel eine Progressbar fehlt mir! Kansnt du mir eventuell den code für diese "Firewall" geben wenn ein Widget Zugang zum Internet braucht? Ich versuch mich schon so lange an einer Firewall aber irgendwie krieg ich das nicht hin. Ist die Firewall überhaupt von dir, ja oder?
Naja, die "Firewall" ist nur für das Programm und keine wirkliche Firewall.

Der Zugriff zum Internet ist so geregelt:
Das Programm an sich bietet jedem Widget die Möglichkeit an, bestimmte Anfragen anfragen ins Internet/Netzwerk zu senden und zu empfangen. Diese Methoden werden von der ScriptEngine nicht direkt aufgerufen - stattdessen wird eine vorgeschaltete Dummy-Methode aufgerufen, die ungefähr so aussieht (mal für IdHTTP):
Delphi-Quellcode:
function TIdHTTP_Get(Sender: TidHTTP; Url: string): string;
begin
  // hier der Security-Layer bzw. die "Firewall"
  if AllowInternetConnection(Url) then
     result := Sender.Get(Url)
  else
     result := '';
end;
Das ganze ist natürlich noch etwas erweitert, aber der Grundaufbau ist so relativ einfach zu beschreiben. Die Funktion AllowInternetConnection schaut dabei ungefähr so aus:
Delphi-Quellcode:
function AllowInternetConnection(Url: string): boolean;
begin
  // Grundlegende Abfrage, ob das Widget überhaupt ins Internet darf
  result := CurrentWidget.Security.NetworkAllowed;
  if result then
  begin
    // Wenn ich hier angekommen bin, darf das Widget ins Internet.
    // Nun muss ich noch überprüfen, ob das Widget ohne Nachrage beim
    // Benutzer ins Internet darf
    if not CurrentWidget.Security.NetworkWithoutUserConfirmation then
    begin
      // Jetzt frag ich den Benutzer ob er das auch erlaubt
      case MessageDlg('Das Widget blablabla will sich zu '+URL+' verbinden.', mtWarning,
                      [mbYes, mbNo], 0) of
      // Benutzer sagt ja
      ID_YES : result := True;
      ID_NO : result := False;
      end;
    end else
    begin
      // Wenn ich hier her komme, dann darf das Widget immer ins Internet
      // - auch ohne den Benutzer zu fragen.
      // Dieser Teil ist zwar nicht im eigendlichen Quelltext und dient hier
      // nur als Verdeutlichung, da result ja schon True ist
      result := True;
    end;
  end;
end;
Wenn du wirklich mal eine in Delphi geschriebene Firewall die anschauen willst (sammt Quelltext), solltest du mal bei SourceForge.net vorbeischauen. Das Ding ist jedoch realtiv komplex und wirklich nicht einfach zu verstehen. Das Programm auf SourceForge benutzt übrigens MadCodeHook (glaub so heißt das), was NICHT OpenSource ist und kostet mit Quelltext ca. 900 USD - ohne Quelltext ca. 200 USD. Wenn du wirklich mal ne Firewall programmieren willst, solltest du dich entweder sehr viel mit CodeInjection oder gleich mit Treiberprogrammierung (zusammen mit einem C/C++ Lehrgang) beschäftigen. Ich denke nicht, dass du das eben innerhalb von 2 Wochen oder gar Monaten schaffen wirst.
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat