AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Indy HTTPProxyServer nur bestimmte IP-Adresse zulassen
Thema durchsuchen
Ansicht
Themen-Optionen

Indy HTTPProxyServer nur bestimmte IP-Adresse zulassen

Ein Thema von kuba · begonnen am 5. Sep 2015 · letzter Beitrag vom 7. Sep 2015
Antwort Antwort
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#1

Indy HTTPProxyServer nur bestimmte IP-Adresse zulassen

  Alt 5. Sep 2015, 01:24
Hallo,

ich hab mir mal die Indy HTTPProxyServer Komponente angesehen. Die funktioniert wunderbar und ich kann damit alle Webseiten erreichen, sogar Videos funktionieren ruckelfrei. Aus dem Internet habe ich ein Codebeispiel zur Filterung einer bestimmten IP-Adresse. Leider ist der Code nicht ganz vollständig, die Frage wie die Filterung funktioniert bleibt offen...

Mit dem Proxy würde ich gern alle Webseiten sperren und nur eine IP-Adresse zulassen, am besten wenn alle anderen Webseiten umgeleitet werden. Vielleicht kann mir jemand ein Tip geben. Im Anhang habe ich mal das Beispiel ohne Exe-Datei.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdContext, IdBaseComponent, IdComponent,
  IdCustomTCPServer, IdTCPServer, IdCmdTCPServer, IdHTTPProxyServer,
  IdTCPConnection, IdTCPClient, Vcl.StdCtrls, IdMappedPortTCP;

type
  TForm1 = class(TForm)
    IdHTTPProxyServer1: TIdHTTPProxyServer;
    Memo1: TMemo;
    IdMappedPortTCP1: TIdMappedPortTCP;
    procedure IdHTTPProxyServer1BeforeCommandHandler(ASender: TIdCmdTCPServer;
      var AData: string; AContext: TIdContext);
    procedure IdHTTPProxyServer1Connect(AContext: TIdContext);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure IdMappedPortTCP1OutboundConnect(AContext: TIdContext);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  PeerIP, OtherIP : String;


implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
  //if IdHTTPProxyServer1.Active then
  //IdHTTPProxyServer1.Active := False
   //else
    //IdHTTPProxyServer1.Active := True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if IdMappedPortTCP1.Active then
   IdMappedPortTCP1.Active := False
   else
    IDMappedPortTCP1.Active := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  IdHTTPProxyServer1.Active := True;
end;

procedure TForm1.IdHTTPProxyServer1BeforeCommandHandler(
  ASender: TIdCmdTCPServer; var AData: string; AContext: TIdContext);
begin
  Memo1.Lines.Add(PeerIP + ' ' + AData);
end;

procedure TForm1.IdHTTPProxyServer1Connect(AContext: TIdContext);
begin
  PeerIP := AContext.Connection.Socket.Binding.PeerIP;
end;

procedure TForm1.IdMappedPortTCP1OutboundConnect(AContext: TIdContext);
begin
  PeerIP := AContext.Connection.Socket.Binding.PeerIP;
end;


end.
KUBA
Angehängte Dateien
Dateityp: zip proxy.zip (1,7 KB, 11x aufgerufen)
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Indy HTTPProxyServer nur bestimmte IP-Adresse zulassen

  Alt 5. Sep 2015, 19:07
Hallo,

ich bin minimal weitergekommen für eine Blacklist funktioniert folgender Code:

Delphi-Quellcode:
procedure TForm1.IdHTTPProxyServer1BeforeCommandHandler(
  ASender: TIdCmdTCPServer; var AData: string; AContext: TIdContext);
begin
  Memo1.Lines.Add(PeerIP + ' ' + AData);
  if pos('www.google.de',AData) > 0 then raise Exception.Create('');
end;
Kann mir jemand einen Tip geben, wie die Whitelist aussehen könnte ??

KUBA
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Indy HTTPProxyServer nur bestimmte IP-Adresse zulassen

  Alt 5. Sep 2015, 19:14
Manchmal ist man einfach zu blöd

if pos('www.google.de',AData) > 0 then exit else raise Exception.Create(''); KUBA
Stefan Kubatzki
E=mc2

Geändert von kuba ( 5. Sep 2015 um 19:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Indy HTTPProxyServer nur bestimmte IP-Adresse zulassen

  Alt 5. Sep 2015, 23:53
Schade, daß noch niemand einen Tip geben konnte. Die Info's zur IdHTTPProxyServer Komponente sind sehr rar.
Oben genannte Zeilen zur Freigabe/Sperrung von Webseiten funktioniert auf meinem PC recht gut.
Wenn ich das Projekt jedoch in einer virtuellen Maschine starte gibt's Probleme.

Ich vermute, daß da etwas nicht ganz synchron läuft. Manche Webseiten laden von anderen URL's und ich vermute, daß durch die ausgelöste Exception der Stream abreisst..

Ein Redirect wäre übrigens auch nicht schlecht ...

Keiner eine Idee ?

KUBA
Stefan Kubatzki
E=mc2

Geändert von kuba ( 5. Sep 2015 um 23:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Indy HTTPProxyServer nur bestimmte IP-Adresse zulassen

  Alt 6. Sep 2015, 00:13
Vielleicht wäre es gescheit einen Proxy Cache anzulegen und die gültigen Inhalte daraus zu entnehmen.

Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.779 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Indy HTTPProxyServer nur bestimmte IP-Adresse zulassen

  Alt 6. Sep 2015, 07:45
.. ist das filtern von IP-Adressen nicht eine Aufgabe für eine Firewall?
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:46 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 by Thomas Breitkreuz