john pfeiffer
  • Home
  • Categories
  • Tags
  • Archives

server echo

# 2013-05-12 johnpfeiffer simple variation on an echo server
from twisted.protocols import basic
from twisted.internet import protocol, reactor

class HTTPEchoProtocol( basic.LineReceiver ):

  def __init__(self):
    self.lines = []
    self.simple_password = 'echo'
    self.approved = False

  def lineReceived( self, line ):
    if self.simple_password in line:
      self.approved = True
    self.lines.append( line )
    if not line:
      if self.approved:
        self.sendResponse()
      else:
        self.transport.loseConnection()


  def sendResponse( self ):
    self.sendLine( "HTTP/1.1 200 OK" )
    self.sendLine( "" )
    responseBody = "You said:\r\n\r\n" + "\r\n".join( self.lines )
    self.transport.write( responseBody )
    self.transport.loseConnection()

class HTTPEchoFactory(protocol.ServerFactory):
  def buildProtocol( self, addr ):
    return HTTPEchoProtocol()

reactor.listenTCP( 8888, HTTPEchoFactory() )
reactor.run()

  • « google app engine cost and performance optimization
  • Password crack John the Ripper »

Published

May 13, 2013

Category

python-twisted

~75 words

Tags

  • echo 8
  • python 180
  • server 66
  • twisted 20