Seite 1 von 1

UDP Proxy Server mit Python?

Verfasst: Freitag 6. Oktober 2006, 11:09
von antaeus
Hallo zusammen,

ist jemandem von euch zufällig ein Code Beispiel für einen UDP Proxy Server über den Weg gelaufen?

Ich muss in den nächsten Wochen einen SIP Proxy Server entwickeln und stehe gerade etwas hilflos vor der Aufgabe...

___

Falls es keine Code-Beispiele für UDP Proxies gibt, dann wäre mir mit einem sehr einfach zu verstehenden HTTP Proxy schon mal geholfen um zu sehen, wie man generell eine Proxy aufbaut. Ich habe gesehen, dass es diverse HTTP Proxy Implementierungen in Python gibt. Die sind aber meist ziemlich umfangreich und aufgebläht. Ich brauche sozusagen den einfachst möglichen Proxy!

Grüße

Verfasst: Freitag 6. Oktober 2006, 12:03
von BlackJack
Einen "UDP Proxy" gibt's nicht, weil das kein Anwendungsprotokoll sondern ein Transportprotokoll ist. Das heisst Du brauchst Informationen über das Protokoll, das die Anwendung in die UDP Pakete hineinsteckt.

Ganz grundsätzlich ist so ein Proxy ein "Man in the middle".

Mal ganz einfach gesprochen (ich kenne das SIP Protokoll nicht im Detail) kommt bei Deinem Proxy ein Paket von einer Anwendung mit einer Telefonnummer an, der Proxy schickt dieses Paket an ein "echtes" SIP Gateway, bekommt eine Antwort, z.B. "besetzt", und muss diese Antwort dann an die Anwendung senden.

Die meisten Proxies bieten nicht nur einfach so eine Weiterleitung, sondern noch zusätzlich Funktionalität. Bei SIP werden zum Beispiel am Anfang Parameter wie Audiocodecs ausgehandelt. Da könnte ein Proxy eine Umkodierung anbieten oder eine Möglichkeit die Audiodaten nicht nur weiterzuleiten sondern auch mitzuschneiden. Oder wenn auf beiden "Seiten" ein Proxy steht, dann könnten diese beiden die Pakete zusätzlich verschlüsseln etc.

Der erste Schritt ist also das SIP Protokoll zu verstehen.

Re: UDP Proxy Server mit Python?

Verfasst: Freitag 6. Oktober 2006, 13:34
von dev
Hi,
antaeus hat geschrieben: Ich muss in den nächsten Wochen einen SIP Proxy Server entwickeln
na dann viel Spaß. ;-) scnr

In welchem Zusammenhang brauchst Du das?

Wie BlackJack ja schon angedeutet hat wäre die korrekte abstrakte Bezeichnung "Application Level Gateway".

Und ein SIP Proxy und folgende hat spezielle Aufgaben, für die er das Protokoll kennen muß.

Die klassische Aufgabe ist z.B. die, stellvertretend für SIP UAs (Telefone), welche private Adressen haben, über eine public IP erreichbar zu sein.

In Perl geschrieben findest Du etwas in der Art hier.

Für Python würde ich Dir empfehlen Shtoom (svn) und eventuell Sine anzuschauen.

Und natürlich das RFC 3261 durchzulesen.

Ciao,
dev