示例#1
0
    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()
示例#2
0
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)