-i option added - Indexing subject field

This commit is contained in:
Alexandre Dulaunoy 2015-02-04 20:58:59 +01:00
parent 5bfca0f3d9
commit 685b0b5ae9

View file

@ -32,8 +32,22 @@ argParser.add_argument('-v', action='store_true', help='Verbose output')
argParser.add_argument('-k', default=False, action='store_true', help='Add certificate to keystore') argParser.add_argument('-k', default=False, action='store_true', help='Add certificate to keystore')
argParser.add_argument('-d', default=None, help='Certificate directory') argParser.add_argument('-d', default=None, help='Certificate directory')
argParser.add_argument('-r', default='-', help='Read from a file, default is stdin') argParser.add_argument('-r', default='-', help='Read from a file, default is stdin')
argParser.add_argument('-i', default=False, action='store_true', help='Enable full-text indexing (default is disabled)')
args = argParser.parse_args() args = argParser.parse_args()
if args.i:
from whoosh.index import create_in, exists_in, open_dir
from whoosh.fields import *
schema = Schema(path=ID(stored=True,unique=True), content=TEXT)
indexpath = '/tmp/findex'
if not os.path.exists(indexpath):
os.mkdir(indexpath)
if not exists_in(indexpath):
ix = create_in(indexpath, schema)
else:
ix = open_dir(indexpath)
writer = ix.writer()
if args.s: if args.s:
try: try:
#Redis structure Set of (Subject) per FP #Redis structure Set of (Subject) per FP
@ -60,13 +74,13 @@ for cert in fileinput.input(args.r):
p = args.d + "/" + bpath(ha=fp) p = args.d + "/" + bpath(ha=fp)
if not os.path.exists(p): if not os.path.exists(p):
os.makedirs(p) os.makedirs(p)
fn = os.path.join(p,fp) fn = os.path.join(p, fp)
if not os.path.exists(fn): if not os.path.exists(fn):
f = open(fn, 'w+') f = open(fn, 'w+')
f.write(certb) f.write(certb)
f.close() f.close()
if args.v: if args.v:
print "Certificate saved in " +fn print "Certificate saved in "+fn
try: try:
x509 = X509.load_cert_string(certb, X509.FORMAT_DER) x509 = X509.load_cert_string(certb, X509.FORMAT_DER)
@ -74,10 +88,16 @@ for cert in fileinput.input(args.r):
print "At line number "+str(fileinput.lineno())+" parsing error" print "At line number "+str(fileinput.lineno())+" parsing error"
pass pass
subject = x509.get_subject().as_text() subject = x509.get_subject().as_text()
issuer = x509.get_issuer().as_text()
if subject is not None: if subject is not None:
if not args.s: if not args.s:
print fp +","+ subject print fp+","+subject
if args.i:
writer.update_document(path=unicode(fp), content=unicode(subject)+" "+unicode(issuer))
elif args.s: elif args.s:
r.sadd(fp, subject) r.sadd(fp, subject)
else: else:
sys.exit(1) sys.exit(1)
if args.i:
writer.commit()