in kif.py [0:0]
def checkTriggers(id, info, triggers, dead=False):
# if len(triggers) > 0:
# print(" - Checking triggers:")
for trigger, value in triggers.items():
# print(f" - Checking against trigger {trigger}")
# maxmemory: Process can max use N amount of memory or it triggers
if trigger == 'maxmemory':
if isinstance(value, str):
value = value.lower()
if value.find("%") != -1: # percentage check
maxmem = float(value.replace('%', ''))
cmem = info.mempct
cvar = '%'
elif value.find('kb') != -1: # kb check
maxmem = int(value.replace('kb', '')) * KB
cmem = info.mem
cvar = ' bytes'
elif value.find('mb') != -1: # mb check
maxmem = int(value.replace('mb', '')) * MB
cmem = info.mem
cvar = ' bytes'
elif value.find('gb') != -1: # gb check
maxmem = int(value.replace('gb', '')) * GB
cmem = info.mem
cvar = ' bytes'
elif value.find('tb') != -1: # tb check
maxmem = int(value.replace('tb', '')) * TB
cmem = info.mem
cvar = ' bytes'
elif isinstance(value, int):
maxmem = value
cmem = info.mem
cvar = ' bytes'
lstr = f" - {id}: '{info.command}' is using {cmem + 0.5}{cvar} memory, max allowed is {maxmem + 0.5}{cvar}"
print(lstr)
if cmem > maxmem:
print(" - Trigger fired!")
return lstr
# maxfds: maximum number of file descriptors
if trigger == 'maxfds':
maxfds = int(value)
cfds = info.fds
lstr = f" - {id}: '{info.command}' is using {cfds} FDs, max allowed is {value}"
print(lstr)
if cfds > maxfds:
print(" - Trigger fired!")
return lstr
# maxconns: maximum number of open connections
if trigger == 'maxconns':
maxconns = int(value)
ccons = info.conns
lstr = f" - {id}: '{info.command}' is using {ccons} connections, max allowed is {value}"
print(lstr)
if ccons > maxconns:
print(" - Trigger fired!")
return lstr
# maxlocalconns: maximum number of open connections in local network
if trigger == 'maxlocalconns':
maxconns = int(value)
ccons = info.conns_local
lstr = f" - {id}: '{info.command}' is using {ccons} LAN connections, max allowed is {value}"
print(lstr)
if ccons > maxconns:
print(" - Trigger fired!")
return lstr
# maxage: maximum age of a process (NOT cpu time)
if trigger == 'maxage':
if value.find('s') != -1: # seconds
maxage = int(value.replace('s', ''))
cage = info.age
cvar = ' seconds'
elif value.find('m') != -1: # minutes
maxage = int(value.replace('m', '')) * 60
cage = info.age
cvar = ' minutes'
elif value.find('h') != -1: # hours
maxage = int(value.replace('h', '')) * 3600
cage = info.age
cvar = ' hours'
elif value.find('d') != -1: # days
maxage = int(value.replace('d', '')) * 86400
cage = info.age
cvar = ' days'
else:
maxage = int(value)
cage = info.age
lstr = f" - {id}: '{info.command}' is {cage} seconds old, max allowed is {maxage}"
print(lstr)
if cage > maxage:
print(" - Trigger fired!")
return lstr
# state: kill processes in a specific state (zombie etc)
if trigger == 'state':
cstate = info.state
lstr = f" - {id}: '{info.command}' is in state '{cstate}'"
print(lstr)
if cstate == value:
print(" - Trigger fired!")
return lstr
return None