def handle_args(self, args): if self.opts.nodelist is None: nodelist = self.get_data_path('fidonet', 'nodelist') self.opts.nodelist = '%s.idx' % nodelist self.log.debug('using nodelist = %s' % self.opts.nodelist) if self.opts.routes is None: self.opts.routes = self.get_cfg_path( 'fidonet', 'routes') self.log.info('using nodelist %s' % self.opts.nodelist) if self.opts.routes: self.log.info('using routes from %s' % self.opts.routes) nl = Nodelist('sqlite:///%s' % self.opts.nodelist) nl.setup() session = nl.broker() router = Router(nl, self.opts.routes) nodes = session.query(Node).join('flags') if self.opts.output: sys.stdout = open(self.opts.output, 'w') for node in nodes: addr = fidonet.Address(node.address) rspec = router[addr] if not self.opts.quiet: print '# %s -> %s [%s]' % (addr, rspec[0], ' '.join([str(x) for x in rspec[1]])) print '%s\t%s:%s' % (addr.rfc, self.opts.transport, rspec[0].rfc)
def handle_args(self, args): if self.opts.nodelist is None: nodelist = self.get_data_path('fidonet', 'nodelist') self.opts.nodelist = '%s.idx' % nodelist self.log.debug('using nodelist = %s' % self.opts.nodelist) if self.opts.routes is None: self.opts.routes = self.get_cfg_path('fidonet', 'routes') self.log.info('using nodelist %s' % self.opts.nodelist) if self.opts.routes: self.log.info('using routes from %s' % self.opts.routes) nl = Nodelist('sqlite:///%s' % self.opts.nodelist) nl.setup() session = nl.broker() router = Router(nl, self.opts.routes) nodes = session.query(Node).join('flags') if self.opts.output: sys.stdout = open(self.opts.output, 'w') for node in nodes: addr = fidonet.Address(node.address) rspec = router[addr] if not self.opts.quiet: print '# %s -> %s [%s]' % (addr, rspec[0], ' '.join( [str(x) for x in rspec[1]])) print '%s\t%s:%s' % (addr.rfc, self.opts.transport, rspec[0].rfc)
def handle_args(self, args): if self.opts.nodelist is None: nodelist = self.get_data_path('fidonet', 'nodelist') self.opts.nodelist = '%s.idx' % nodelist nl = Nodelist('sqlite:///%s' % self.opts.nodelist) nl.setup() session = nl.broker() nodes = session.query(Node).join('flags').filter( Flag.flag_name == 'IBN') for n in nodes: inet = n.inet('IBN') if inet is None: continue print 'Node %-20s %s' % ( ('%s@%s' % (n.address, self.opts.domain)), inet )
def build_index(self, nodelists): tmp = tempfile.NamedTemporaryFile( dir=os.path.dirname(self.opts.output)) self.log.debug('output file is %s' % self.opts.output) self.log.debug('tmp file is %s' % tmp.name) nl = Nodelist('sqlite:///%s' % tmp.name) nl.setup(create=True) session = nl.broker() for nodelist in nodelists: self.index_one_nodelist(session, nodelist) self.log.info('creating nodelist index %s' % self.opts.output) os.rename(tmp.name, self.opts.output) try: tmp.close() except OSError, detail: if detail.errno == errno.ENOENT: pass else: raise
def handle_args(self, args): if self.opts.nodelist is None: nodelist = self.get_data_path('fidonet', 'nodelist') self.opts.nodelist = '%s.idx' % nodelist nl = Nodelist('sqlite:///%s' % self.opts.nodelist) nl.setup() session = nl.broker() nodes = session.query(Node).join('flags') if self.opts.address: if '%' in self.opts.address or '*' in self.opts.address: nodes = nodes.filter( Node.address.like(self.opts.address.replace('*', '%'))) else: nodes = nodes.filter(Node.address == self.opts.address) if self.opts.sysop: if '%' in self.opts.sysop or '*' in self.opts.sysop: nodes = nodes.filter( Node.sysop.like(self.opts.sysop.replace('*', '%'))) else: nodes = nodes.filter(Node.sysop == self.opts.sysop) if self.opts.name: if '%' in self.opts.name or '*' in self.opts.name: nodes = nodes.filter( Node.name.like(self.opts.name.replace('*', '%'))) else: nodes = nodes.filter(Node.name == self.opts.name) for flag in self.opts.flag: if flag.startswith('!'): pass else: nodes = nodes.filter(Flag.flag_name == flag) if self.opts.debug: print nodes.as_scalar() for n in nodes: if self.opts.verbose: print '%10s: %s' % ('Address', n.address) print '%10s: %s' % ('Name', n.name) print '%10s: %s' % ('SysOp', n.sysop) print '%10s: %s' % ('Phone', n.phone) if [x for x in n.flags if x.flag_name == 'IBN']: print '%10s: %s' % ('BinkD', n.inet('IBN')) if [x for x in n.flags if x.flag_name == 'ITN']: print '%10s: %s' % ('Telnet', n.inet('ITN')) print '%10s:' % ('Flags', ), for flag in n.flags: if flag.flag_val is not None: print '%s:%s' % (flag.flag_name, flag.flag_val), else: print flag.flag_name, print if self.opts.raw: print '%10s: %s' % ('Raw', n.raw[0].entry) print else: print '%12s : %s' % (n.address, n.name)
def handle_args(self, args): if self.opts.nodelist is None: nodelist = self.get_data_path('fidonet', 'nodelist') self.opts.nodelist = '%s.idx' % nodelist nl = Nodelist('sqlite:///%s' % self.opts.nodelist) nl.setup() session = nl.broker() nodes = session.query(Node).join('flags') if self.opts.address: if '%' in self.opts.address or '*' in self.opts.address: nodes = nodes.filter( Node.address.like(self.opts.address.replace('*', '%'))) else: nodes = nodes.filter(Node.address == self.opts.address) if self.opts.sysop: if '%' in self.opts.sysop or '*' in self.opts.sysop: nodes = nodes.filter( Node.sysop.like(self.opts.sysop.replace('*', '%'))) else: nodes = nodes.filter(Node.sysop == self.opts.sysop) if self.opts.name: if '%' in self.opts.name or '*' in self.opts.name: nodes = nodes.filter( Node.name.like(self.opts.name.replace('*', '%'))) else: nodes = nodes.filter(Node.name == self.opts.name) for flag in self.opts.flag: if flag.startswith('!'): pass else: nodes = nodes.filter(Flag.flag_name == flag) if self.opts.debug: print nodes.as_scalar() for n in nodes: if self.opts.verbose: print '%10s: %s' % ('Address', n.address) print '%10s: %s' % ('Name', n.name) print '%10s: %s' % ('SysOp', n.sysop) print '%10s: %s' % ('Phone', n.phone) if [x for x in n.flags if x.flag_name == 'IBN']: print '%10s: %s' % ('BinkD', n.inet('IBN')) if [x for x in n.flags if x.flag_name == 'ITN']: print '%10s: %s' % ('Telnet', n.inet('ITN')) print '%10s:' % ('Flags',), for flag in n.flags: if flag.flag_val is not None: print '%s:%s' % (flag.flag_name, flag.flag_val), else: print flag.flag_name, print if self.opts.raw: print '%10s: %s' % ('Raw', n.raw[0].entry) print else: print '%12s : %s' % (n.address, n.name)