Einzelnen Beitrag anzeigen

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, 00: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