Thread DBI/FTP Anfragen über Proxy leiten (12 answers)
Opened by justme69 at 2008-06-11 17:27

murphy
 2008-06-12 18:45
#110997 #110997
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
In dieser Situation würde ich Dir erstmal empfehlen, Deinen Client von CPAN:Net::FTP auf CPAN:LWP umzustellen. Damit sollten die FTP-Zugriffe auch über den Proxy funktionieren – mit der env_proxy-Option für LWP::UserAgent und korrekt eingestellten Umgebungsvariablen sogar automatisch.

Für den MySQL-Zugriff sehe ich zwei Möglichkeiten:
(1) Bevor man im Client eine Datenbankverbindung aufbaut, schaut man nach, ob ein Proxyzugriff nötig ist. Falls ja, forkt man sich.

Im neuen Prozess erstellt man einen lokalen lauschenden Socket und wartet auf eine Verbindung. Sobald eine lokale Verbindung kommt, verbindet man sich mit dem HTTP-Proxy, authentifiziert sich, weist ihn per CONNECT an, eine Verbindung zum eigentlichen Datenbankserver zu vermitteln, und beginnt dann zwischen der lokalen Verbindung und der Proxyverbindung zum Datenbankserver einfach Daten hin- und herzukopieren. Das Herstellen der Verbindung über den Proxy kann man eventuell mit CPAN:LWP::UserAgent erledigen, aber vielleicht nicht alleine mit der dokumentierten API :-(

Im ursprünglichen Prozess weist man dann CPAN:DBD::mysql an, sich mit dem lokalen Socket zu verbinden, den man für die Proxyverbindung erstellt hat.

(2) Man lässt auf der Serverseite neben dem MySQL-Server noch einen HTTP-Server laufen, der Datenbankabfragen entgegen nimmt und die Resultate zurückschickt. Der Client baut dann keine direkte Verbindung mehr mit der Datenbank auf, sondern verwendet stattdessen die HTTP-Schnittstelle, die sich leichter durch Proxies leiten lässt. Für diesen Zweck würde sich ein Protokoll wie CPAN:XML::RPC eignen.

Sauberer ist wahrscheinlich Lösung (2), insbesondere, da man durch diese Architektur die Datenbankabfragen einschränken kann, die dem Client erlaubt sind. Bei einem Client der sonstwo im Netz sitzen kann und folglich nicht völlig vertrauenswürdig sein kann, ist das im allgemeinen eine gute Idee.
When C++ is your hammer, every problem looks like your thumb.

View full thread DBI/FTP Anfragen über Proxy leiten