Heute: Loktonium, Ansichten eines Web-Freaks
Lesen Sie sich bitte die folgende Passage durch und sagen Sie uns dann, worüber der junge Mensch spricht (bzw. postet) – wir haben nämlich echt nicht die leiseste Ahnung. Aber den Blog an sich, den finden wir hochinteressant…
***
UPDATE: Ein aufmerksamer Leser hat einen Technik-Experten seiner Wahl befragt – und das ist dabei herausgekommen:
Hier ein Patch, um irclib.py SSL benutzen zu lassen.
irclib.py ist offenbar ein in der Sprache Python geschriebenes
Modul, das vermutlich IRC-Funktionen enthält, wobei diese aber
nicht SSL verwenden. Anscheinend bietet er einen Patch dafür an,
damit man damit über SSL-Verbindungen Chatten kann.
Leider sind die Klassen
Python ist objektorientiert 😉
(insbesondere die Benutzung des Sockets) nicht so gut gekapselt,
dass sich einfach eine Abgeleitete Klasse erstellen ließe.
Offenbar ist die Library trotzdem etwas schwierig zu erweitern gewesen,
weil von der Objektorientierung kein guter Gebrauch gemacht wurde.
Richtige Sockets unterscheiden sich von den SSL-Objekten
Ich weiß, daß man “normale” und “secure” Sockets verwenden kann,
aber nicht, warum die einen keine “richtigen” sein sollen.
auch durch die unterschiedliche Benennung der read/recv bzw. write/send Funktionen.
Aha: Vermutlich bezieht er sich auf seine eigene SSL-Patchlösung: Anstatt eine Subklasse der normalen Socketklasse zu erstellen (das ging ja angeblich nicht) hat er wohl eine Klasse für SSL-Kommunikation erstellt, die eben nicht von normalen Sockets erbt und – für Python schlimmer – für die entsprechenden Funktionen nicht mal dieselben Namen verwendet.
Man kann diese also nicht ohne Codeänderung überall dort in einem Programm ersatzweise einsetzen, wo bisher normale Socketklassen verwendet wurden. Es wird also aufwendiger, ein Programm, das nur normale Socketkommunikation
verwendet, auf SSL umzustellen. Da eine Library (irclib.py) kein Programm ist, meint er wohl, er hat mit dem Patch “SLL-Kommunikationsobjekte” zur Verfügung gestellt, sodaß jedes Programm, das irclib.py verwendet, nun auch über SLL
kommunizieren kann, jedoch so umgeschrieben werden muß, daß es diese neuen Objekte verwendet, weil diese anders heißen und sogar aufgerufen werden müssen als die bisherigen Socketobjekte.
Python IRClib 0.4.6 SSL Patch
Der ServerConnection-Klasse wird beim Connecten ein SSL-Objekt self.sslsocket gesetzt.
Ob er die Connectionklasse auch angepaßt hat, weiß ich nun nicht, glaube es aber. Wahrscheinlich war das zwingend nötig, damit diese nun die SSL-Objekte verwenden kann.
Die Funktionen, die bisher direkt auf self.socket.recv() und self.socket.send() zugegriffen
haben, benutzen nun self.sslsocket.read() und self.sslsocket.write().”
Offenbar heißt das Pendant der Socketfunktion “recv” nunmehr “read” und “send” ist “write” (und Raider heißt jetzt Twix 😉 aber da die anscheinend doch angepaßte Connectionklasse diese auch aufruft, halten sich die Änderungen an Programmen, die die Library benutzen, in Grenzen, sofern sie nicht direkt an den Sockets herumspielen: Sie verwenden dann bloß eine Connection und müssen nur dafür sorgen, daß diese für die Kommunikation ein SSL-Objekt anstelle eines gewöhnlichen Sockets erhält; den Rest erledigt (vermutlich) die Connection und das Programm kommuniziert dann über SSL, also verschlüsselt, was die Library früher offenbar gar nicht unterstützte.
***
Mit Dank an den Experten und unseren eifrigen Leser W.B.
Jetzt ist ja alles klar, oder?
Noch Fragen?
2 Antworten auf „Blogs aus aller Welt, Folge 1“
> […] Vermutlich bezieht er sich auf seine eigene SSL-Patchlösung […]
Das bezieht sich darauf, dass die Python-SSL-Objekte die Methoden write/read implementieren (http://docs.python.org/lib/ssl-objects.html) wohingegen das bei Sockets recv/write heißt (http://docs.python.org/lib/socket-objects.html). Ich sehe diese SSL-Objekte nicht als “richtige” Sockets an, weil sie nicht die Funktionalitäten von Sockets implementieren; sie ein ganz anderes Interface haben. Sie sind einfach keine.
> […] jedes Programm, das irclib.py verwendet […]
Die Programme, die irclib.py verwenden, greifen auf die Sockets bzw. SSL-Objekte nicht zu. Die Sockets werden in der irclib.py angelegt. Daher sollte eine Anpassung dieser Programme nicht notwendig sein – sie müssen nur die entsprechend gepatchte irclib.py verwenden.
Hier ist es etwas schöner mit einem Wrapper-Objekt gemacht. Aber die irclib.py muss dennoch angepasst werden.
http://pong.polio.be/gamo/browser/branch/python/python-irclib-ssl_patch/irclib-ssl.patch