def do_setup_watchers(self): for name, virt_dir in self._named_profiles.items(): local_dir = virt_dir.localize(self._local) safe_mkdirs(local_dir, "monitored", self._pathAttr) watcher = DirectoryWatcher(self, local_dir, timeout=self._scanPeriod) watcher.connect('file-added', self._file_added, virt_dir, name) watcher.connect('file-completed', self._file_completed, virt_dir, name) watcher.connect('file-removed', self._file_removed, virt_dir, name) watcher.start() self.watchers.append(watcher)
def do_setup(self): try: properties = self.config['properties'] # setup the passive profiles if self.http_profiles: root = Resource() for p in self.http_profiles: vdir = self.profiles_virtualbase[p] root.putChild(p, RequestHandler(self, vdir, callback=self._file_added_http, profile_name=p)) local_dir = vdir.localize(self._local) safe_mkdirs(local_dir, "monitored") factory = Site(root) self.port = properties.get("port", 7680) self._listener = IReactorTCP(reactor).listenTCP(self.port, factory) if not self.port: # setting port to 0 means random port, read and store. self.port = self._listener.getHost().port # setup the active profiles self._scanPeriod = properties.get("scan-period", 10) for p in self.active_profiles: vdir = self.profiles_virtualbase[p] local_dir = vdir.localize(self._local) safe_mkdirs(local_dir, "monitored", self._pathAttr) watcher = DirectoryWatcher(self, local_dir, p, timeout=self._scanPeriod) watcher.connect('file-added', self._file_added, vdir, p) watcher.connect('file-completed', self._file_completed, vdir, p) watcher.connect('file-removed', self._file_removed, vdir, p) watcher.start() self.watchers.append(watcher) setup_callback = properties.get('setup-callback') if setup_callback: data = {'hostname': gethostname(), 'port': self.port} url = setup_callback % data getPage(url, method='POST') # htpp://sdfsdkfjlsdjfklsdf/?host=%(host)s&myport=%(port)s # htpp://sdfsdkfjlsdjfklsdf/?myip=123.123.123.123&myport=1234 # TODO: make the http call to register. except: return fail(self._unexpected_error(task="component setup"))