Source code for templatespider


import sys
import collections

from twisted.plugin import IPlugin
from zope.interface import implementer

from pathspider.base import Spider
from pathspider.base import ISpider
from pathspider.base import NO_FLOW

from pathspider.observer import Observer
from pathspider.observer import basic_flow
from pathspider.observer import basic_count

Connection = collections.namedtuple("Connection", ["host", "state"])
SpiderRecord = collections.namedtuple("SpiderRecord", ["ip", "rport", "port",
                                                       "host", "config",
                                                       "connstate"])

@implementer(ISpider, IPlugin)
[docs]class TemplateSpider(Spider): """ A template PATHspider plugin. """ def config_zero(self): print("Configuration zero") def config_one(self): print("Configuration one") def connect(self, job, pcs, config): sock = "Hello" return Connection(sock, 1) def post_connect(self, job, conn, pcs, config): rec = SpiderRecord(job[0], job[1], job[2], config, True) return rec def create_observer(self): try: return Observer(self.libtrace_uri, new_flow_chain=[basic_flow], ip4_chain=[basic_count], ip6_chain=[basic_count]) except: print("Observer would not start") sys.exit(-1) def merge(self, flow, res): if flow == NO_FLOW: flow = {"dip": res.ip, "sp": res.port, "dp": res.rport, "observed": False} else: flow['observed'] = True self.outqueue.put(flow)
templatespider = TemplateSpider()