Skip to content

Commit

Permalink
Fixes #1 并减少函数的调用支出和避免filter与关键字重名
Browse files Browse the repository at this point in the history
  • Loading branch information
neargle committed Sep 29, 2017
1 parent 9b3d3fc commit 6d478e6
Showing 1 changed file with 25 additions and 25 deletions.
50 changes: 25 additions & 25 deletions views/lib/QueryLogic.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,39 +16,39 @@ def querylogic(list):
if len(list) > 1 or len(list[0].split(':')) > 1:
for _ in list:
if _.find(':') > -1:
if _.split(':')[0] == 'port':
query['port'] = int(_.split(':')[1])
elif _.split(':')[0] == 'banner':
q_key, q_value = _.split(':', 1)
if q_key == 'port':
query['port'] = int(q_value)
elif q_key == 'banner':
zhPattern = re.compile(u'[\u4e00-\u9fa5]+')
contents = _.split(':')[1]
contents = q_value
match = zhPattern.search(contents)
# 如果没有中文用全文索引
if match:
query['banner'] = {"$regex": _.split(':')[1], '$options': 'i'}
query['banner'] = {"$regex": q_value, '$options': 'i'}
else:
text_query = mgo_text_split(_.split(':')[1])
text_query = mgo_text_split(q_value)
query['$text'] = {'$search': text_query, '$caseSensitive':True}
elif _.split(':')[0] == 'ip':
ip = _.split(':')[1]
query['ip'] = {"$regex": ip}
elif _.split(':')[0] == 'server':
query['server'] = _.split(':')[1].lower()
elif _.split(':')[0] == 'title':
query['webinfo.title'] = {"$regex": _.split(':')[1], '$options': 'i'}
elif _.split(':')[0] == 'tag':
query['webinfo.tag'] = _.split(':')[1].lower()
elif _.split(':')[0] == 'hostname':
query['hostname'] = {"$regex": _.split(':')[1], '$options': 'i'}
elif _.split(':')[0] == 'all':
filter = []
elif q_key == 'ip':
query['ip'] = {"$regex": q_value}
elif q_key == 'server':
query['server'] = q_value.lower()
elif q_key == 'title':
query['webinfo.title'] = {"$regex": q_value, '$options': 'i'}
elif q_key == 'tag':
query['webinfo.tag'] = q_value.lower()
elif q_key == 'hostname':
query['hostname'] = {"$regex": q_value, '$options': 'i'}
elif q_key == 'all':
filter_lst = []
for i in ('ip', 'banner', 'port', 'time', 'webinfo.tag', 'webinfo.title', 'server', 'hostname'):
filter.append({i: {"$regex": _.split(':')[1], '$options': 'i'}})
query['$or'] = filter
filter_lst.append({i: {"$regex": q_value, '$options': 'i'}})
query['$or'] = filter_lst
else:
query[_.split(':')[0]] = _.split(':')[1]
query[q_key] = q_value
else:
filter = []
filter_lst = []
for i in ('ip', 'banner', 'port', 'time', 'webinfo.tag', 'webinfo.title', 'server', 'hostname'):
filter.append({i: {"$regex": list[0], '$options': 'i'}})
query['$or'] = filter
filter_lst.append({i: {"$regex": list[0], '$options': 'i'}})
query['$or'] = filter_lst
return query

0 comments on commit 6d478e6

Please sign in to comment.