mirror of
https://github.com/searxng/searxng
synced 2024-01-01 19:24:07 +01:00
c
This commit is contained in:
parent
321093ed6a
commit
435e8a482d
2 changed files with 0 additions and 118 deletions
|
@ -2079,65 +2079,6 @@ class DFA:
|
||||||
ss += _str[i]
|
ss += _str[i]
|
||||||
pos_list.append(i)
|
pos_list.append(i)
|
||||||
return ss
|
return ss
|
||||||
def __init__(self):
|
|
||||||
self.keyword_chains = {}
|
|
||||||
self.delimit = '\x00'
|
|
||||||
|
|
||||||
def add(self, keyword):
|
|
||||||
if not isinstance(keyword, str):
|
|
||||||
keyword = keyword.decode('utf-8')
|
|
||||||
keyword = keyword.lower()
|
|
||||||
chars = keyword.strip()
|
|
||||||
if not chars:
|
|
||||||
return
|
|
||||||
level = self.keyword_chains
|
|
||||||
for i in range(len(chars)):
|
|
||||||
if chars[i] in level:
|
|
||||||
level = level[chars[i]]
|
|
||||||
else:
|
|
||||||
if not isinstance(level, dict):
|
|
||||||
break
|
|
||||||
for j in range(i, len(chars)):
|
|
||||||
level[chars[j]] = {}
|
|
||||||
last_level, last_char = level, chars[j]
|
|
||||||
level = level[chars[j]]
|
|
||||||
last_level[last_char] = {self.delimit: 0}
|
|
||||||
break
|
|
||||||
if i == len(chars) - 1:
|
|
||||||
level[self.delimit] = 0
|
|
||||||
|
|
||||||
def parse(self, path):
|
|
||||||
with open(path) as f:
|
|
||||||
for keyword in f:
|
|
||||||
self.add(keyword.strip())
|
|
||||||
|
|
||||||
def filter(self, message, repl="*"):
|
|
||||||
if not isinstance(message, str):
|
|
||||||
message = message.decode('utf-8')
|
|
||||||
message = message.lower()
|
|
||||||
ret = []
|
|
||||||
start = 0
|
|
||||||
while start < len(message):
|
|
||||||
level = self.keyword_chains
|
|
||||||
step_ins = 0
|
|
||||||
for char in message[start:]:
|
|
||||||
if char in level:
|
|
||||||
step_ins += 1
|
|
||||||
if self.delimit not in level[char]:
|
|
||||||
level = level[char]
|
|
||||||
else:
|
|
||||||
return True
|
|
||||||
ret.append(repl * step_ins)
|
|
||||||
start += step_ins - 1
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
ret.append(message[start])
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
ret.append(message[start])
|
|
||||||
start += 1
|
|
||||||
|
|
||||||
return False
|
|
||||||
gfw = DFA()
|
gfw = DFA()
|
||||||
def run():
|
def run():
|
||||||
logger.debug('starting webserver on %s:%s', settings['server']['bind_address'], settings['server']['port'])
|
logger.debug('starting webserver on %s:%s', settings['server']['bind_address'], settings['server']['port'])
|
||||||
|
|
|
@ -3126,65 +3126,6 @@ class DFA:
|
||||||
ss += _str[i]
|
ss += _str[i]
|
||||||
pos_list.append(i)
|
pos_list.append(i)
|
||||||
return ss
|
return ss
|
||||||
def __init__(self):
|
|
||||||
self.keyword_chains = {}
|
|
||||||
self.delimit = '\x00'
|
|
||||||
|
|
||||||
def add(self, keyword):
|
|
||||||
if not isinstance(keyword, str):
|
|
||||||
keyword = keyword.decode('utf-8')
|
|
||||||
keyword = keyword.lower()
|
|
||||||
chars = keyword.strip()
|
|
||||||
if not chars:
|
|
||||||
return
|
|
||||||
level = self.keyword_chains
|
|
||||||
for i in range(len(chars)):
|
|
||||||
if chars[i] in level:
|
|
||||||
level = level[chars[i]]
|
|
||||||
else:
|
|
||||||
if not isinstance(level, dict):
|
|
||||||
break
|
|
||||||
for j in range(i, len(chars)):
|
|
||||||
level[chars[j]] = {}
|
|
||||||
last_level, last_char = level, chars[j]
|
|
||||||
level = level[chars[j]]
|
|
||||||
last_level[last_char] = {self.delimit: 0}
|
|
||||||
break
|
|
||||||
if i == len(chars) - 1:
|
|
||||||
level[self.delimit] = 0
|
|
||||||
|
|
||||||
def parse(self, path):
|
|
||||||
with open(path) as f:
|
|
||||||
for keyword in f:
|
|
||||||
self.add(keyword.strip())
|
|
||||||
|
|
||||||
def filter(self, message, repl="*"):
|
|
||||||
if not isinstance(message, str):
|
|
||||||
message = message.decode('utf-8')
|
|
||||||
message = message.lower()
|
|
||||||
ret = []
|
|
||||||
start = 0
|
|
||||||
while start < len(message):
|
|
||||||
level = self.keyword_chains
|
|
||||||
step_ins = 0
|
|
||||||
for char in message[start:]:
|
|
||||||
if char in level:
|
|
||||||
step_ins += 1
|
|
||||||
if self.delimit not in level[char]:
|
|
||||||
level = level[char]
|
|
||||||
else:
|
|
||||||
return True
|
|
||||||
ret.append(repl * step_ins)
|
|
||||||
start += step_ins - 1
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
ret.append(message[start])
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
ret.append(message[start])
|
|
||||||
start += 1
|
|
||||||
|
|
||||||
return False
|
|
||||||
gfw = DFA()
|
gfw = DFA()
|
||||||
def run():
|
def run():
|
||||||
logger.debug('starting webserver on %s:%s', settings['server']['bind_address'], settings['server']['port'])
|
logger.debug('starting webserver on %s:%s', settings['server']['bind_address'], settings['server']['port'])
|
||||||
|
|
Loading…
Add table
Reference in a new issue