#!/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