[Twisted-Python] Telnet MCCP Transport
Vermeersch Simon
simonvermeersch at gmail.com
Sat Sep 4 09:19:47 EDT 2010
Hello everyone,
I couldn't find an implementation of MCCP (Mud Client Compression
Protocol) using Twisted so I made my own, which I'm sharing if anyone
else has a use for it.
You can find a description of MCCP here:
http://www.mudstandards.org/MCCP_Specification
Since I'm fairly new to Twisted I would appreciate any input about how
to improve this if you find a better/cleaner way to do it.
import zlib
from twisted.conch.telnet import TelnetTransport
from twisted.conch.telnet import DO, DONT
COMPRESS2 = chr(86)
class MCCPTelnetTransport(TelnetTransport):
def connectionMade(self):
self.zlib = None
TelnetTransport.connectionMade(self)
self.will(COMPRESS2)
def commandReceived(self, command, argument):
if argument == COMPRESS2:
if command == DO:
self.requestNegotiation(COMPRESS2, "")
self.zlib = zlib.compressobj()
elif command == DONT:
pass
else:
TelnetTransport.commandReceived(self, command, argument)
def write(self, data):
data = data.replace('\n', '\r\n')
if self.zlib:
data = self.zlib.compress(data)
data += self.zlib.flush(zlib.Z_SYNC_FLUSH)
self.transport.write(data)
--
Simon Vermeersch
More information about the Twisted-Python
mailing list