#!/usr/bin/python3 from __future__ import print_function import sys, re, os, pydoc sys.path.insert(0, '../') sys.path.insert(0, './') import scanners, srv HDR = '''\ == %s ============================== ''' def extend(filename): try: return os.path.join(sys.argv[1],filename) except IndexError: return filename class text_plain: def params(self,cls,filename=''): if filename: self.filename=extend(filename+'.txt') self.f=open(self.filename,'wt') def header(self,s): self.f.write(HDR % s) def help(self,name,scanner): self.f.write( '%s()\n%s\n\n' \ % (s,re.compile(r'^', re.M).sub('| ', pydoc.getdoc(scanner))) ) HTML_HDR='''\ ''' class text_html: def __init__(self): self.i=open(extend('Index.html'),'wt') self.i.write(HTML_HDR+'\n') def __del__(self): self.i.write('
\n') def params(self,cls,filename=''): self.cls=cls if filename: self.filename='%s.html' % filename self.f=open(extend(self.filename),'wt') self.f.write(HTML_HDR) def header(self,s): self.i.write('

%s

\n' \ % (self.cls,s)) #self.i.write('NAME:SHORT DESCRIPTION:\n') self.f.write('

%s

\n\n' % s) def help(self,name,scanner): doc=pydoc.getdoc(scanner) self.i.write( '%s()%s\n' \ % (self.filename,name,name,doc.split('\n')[0]) ) self.f.write('\n' % name) self.f.write('
' % self.cls) self.f.write('

%s()

\n' % (name,name)) self.f.write('
%s
\n' % doc) self.f.write('
\n') for writer in text_plain(),text_html(): writer.params('scanner', 'Scanners') writer.header('Interscanners') for s in dir(scanners): try: scanner = getattr(scanners, s) if scanner.is_interscanner and (not scanner.is_policy_scanner): writer.help(s, scanner) except AttributeError: pass writer.params('scanner') writer.header('Virus scanners') for s in dir(scanners): try: scanner = getattr(scanners, s) if (not scanner.is_interscanner) and (not scanner.is_spamscan) \ and (not scanner.is_policy_scanner): writer.help(s, scanner) except AttributeError: pass writer.params('scanner') writer.header('Antispam scanners') for s in dir(scanners): try: scanner = getattr(scanners, s) if (not scanner.is_interscanner) and (scanner.is_spamscan) \ and (not scanner.is_policy_scanner): writer.help(s, scanner) except AttributeError: pass writer.params('scanner') writer.header('Policy scanners') for s in dir(scanners): try: scanner = getattr(scanners, s) if scanner.is_policy_scanner: writer.help(s, scanner) except AttributeError: pass writer.params('service','Services') writer.header('Services') for s in dir(srv): try: service = getattr(srv, s) if service.is_service: writer.help(s, service) except AttributeError: pass writer.params('other','Databases') writer.header('Database connections') for s in dir(scanners.db): try: dbc = getattr(scanners.db, s) if s.startswith("_"): # ignore python internals continue if ('dbconn'!=s) and dbc.name: writer.help('db.%s' % s, dbc) except AttributeError: pass #writer.params('other','E2I') #writer.header('Email to index generators') #for s in dir(srv): # try: # e2i=getattr(srv, s) # if e2i.is_e2i: # writer.help(s,e2i) # except AttributeError: # pass