def __init__(self, consumer=None): super(HushPacketProducer, self).__init__() self.packets = [] self.producer = None self.nflogProducer = NFLogPacketProducer(consumer=self) consumer.registerProducer(self, streaming=True) self.consumer = consumer self.start_reading()
class HushPacketProducer(object): implements(interfaces.IPushProducer, interfaces.IConsumer) def __init__(self, consumer=None): super(HushPacketProducer, self).__init__() self.packets = [] self.producer = None self.nflogProducer = NFLogPacketProducer(consumer=self) consumer.registerProducer(self, streaming=True) self.consumer = consumer self.start_reading() # IPushProducer section def pauseProducing(self): self.nflogProducer.stop_reading() def resumeProducing(self): self.nflogProducer.start_reading() def stopProducing(self): connDone = failure.Failure(main.CONNECTION_DONE) self.connectionLost(connDone) return connDone def start_reading(self): self.nflogProducer.start_reading() # IConsumer section def registerProducer(self, producer, streaming): assert self.producer is None assert streaming is True self.producer = producer self.producer.start_reading() def unregisterProducer(self): assert self.producer is not None self.producer.stop_reading() def write(self, packet): # BUG: this line f***s shit up for some reason!? packet = self.decodeHushPacket(packet) self.consumer.write(packet) def decodeHushPacket(self, packet): return str(IP(packet)[ICMP].payload)