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.