Firewall/alias, increase resolve() performance, see https://forum.opnsense.org/index.php?topic=10164.msg46639

This commit is contained in:
Ad Schellevis 2018-11-08 13:42:32 +01:00
parent db94fb410a
commit 08bd6c7177

View File

@ -58,7 +58,7 @@ class Alias(object):
self._type = None
self._proto = None
self._items = list()
self._resolve_content = list()
self._resolve_content = set()
for subelem in elem:
if subelem.tag == 'type':
self._type = subelem.text
@ -240,18 +240,18 @@ class Alias(object):
f_out.write('%s\n' % address)
f_out.flush()
# preserve addresses
self._resolve_content.append(address)
self._resolve_content.add(address)
except IOError:
# parse issue, keep data as-is, flush previous content to disk
with open(self._filename_alias_content, 'w') as f_out:
f_out.write(undo_content)
self._resolve_content = undo_content.split("\n")
self._resolve_content = set(undo_content.split("\n"))
# flush md5 hash to disk
open(self._filename_alias_hash, 'w').write(self.uniqueid())
else:
self._resolve_content = open(self._filename_alias_content).read().split()
self._resolve_content = set(open(self._filename_alias_content).read().split())
# return the addresses and networks of this alias
return self._resolve_content
return list(self._resolve_content)
def get_parser(self):
""" fetch address parser to use, None if alias type is not handled here