def is_condition_met(rule):
if rule['interface'] not in netifaces.interfaces():
return False
if rule['type'] == 'state':
addr = netifaces.ifaddresses(rule['interface'])
if rule['state'] == 'up' and netifaces.AF_INET in addr:
return True
if rule['state'] == 'down' and netifaces.AF_INET not in addr:
return True
elif rule['type'] == 'network':
addresses = netifaces.ifaddresses(rule['interface'])
for addr in addresses[netifaces.AF_INET]:
if addr['addr'] in rule['network']:
return True
return False
评论列表
文章目录