/usr/lib/python2.7/dist-packages/carbon/regexlist.py is in graphite-carbon 0.9.15-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | import time
import re
import os.path
from carbon import log
from twisted.internet.task import LoopingCall
class RegexList:
""" Maintain a list of regex for matching whitelist and blacklist """
def __init__(self):
self.regex_list = []
self.list_file = None
self.read_task = LoopingCall(self.read_list)
self.rules_last_read = 0.0
def read_from(self, list_file):
self.list_file = list_file
self.read_list()
self.read_task.start(10, now=False)
def read_list(self):
# Clear rules and move on if file isn't there
if not os.path.exists(self.list_file):
self.regex_list = []
return
try:
mtime = os.path.getmtime(self.list_file)
except OSError:
log.err("Failed to get mtime of %s" % self.list_file)
return
if mtime <= self.rules_last_read:
return
# Begin read
new_regex_list = []
for line in open(self.list_file):
pattern = line.strip()
if line.startswith('#') or not pattern:
continue
try:
new_regex_list.append(re.compile(pattern))
except re.error:
log.err("Failed to parse '%s' in '%s'. Ignoring line" % (pattern, self.list_file))
self.regex_list = new_regex_list
self.rules_last_read = mtime
def __contains__(self, value):
for regex in self.regex_list:
if regex.search(value):
return True
return False
def __nonzero__(self):
return bool(self.regex_list)
WhiteList = RegexList()
BlackList = RegexList()
|