Skip to content

Commit f5bc2dc

Browse files
committed
third part of filter code from cli submodule isolated
1 parent 1eda0d0 commit f5bc2dc

File tree

2 files changed

+51
-31
lines changed

2 files changed

+51
-31
lines changed

src/loggedfs/cli.py

Lines changed: 8 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,10 @@
2929
# IMPORT
3030
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3131

32-
from collections import OrderedDict
32+
import click
3333

3434
from .core import loggedfs_factory
35-
36-
import click
37-
import xmltodict
35+
from .filter import parse_filters
3836

3937

4038
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -96,36 +94,15 @@ def __process_config__(
9694
fuse_allowother_bool
9795
):
9896

99-
def proc_filter_item(in_item):
100-
return {
101-
'extension': in_item['@extension'],
102-
'uid': in_item['@uid'],
103-
'action': in_item['@action'],
104-
'retname': in_item['@retname']
105-
}
106-
107-
def proc_filter_list(in_list):
108-
if in_list is None:
109-
return []
110-
if not isinstance(in_list, list):
111-
return [proc_filter_item(in_list)]
112-
return [proc_filter_item(item) for item in in_list]
113-
114-
config_dict = OrderedDict({
115-
'@logEnabled': True,
116-
'@printProcessName': True,
117-
'includes': {},
118-
'excludes': {}
119-
})
120-
121-
config_file = None
12297
if config_fh is not None:
123-
config_file = config_fh.name
124-
config_dict.update(xmltodict.parse(config_fh.read())['loggedFS'])
98+
config_xml_str = config_fh.read()
12599
config_fh.close()
100+
config_file = config_fh.name
101+
else:
102+
config_file = '[None]'
103+
config_xml_str = None
126104

127-
for f_type in ['includes', 'excludes']:
128-
config_dict[f_type] = proc_filter_list(config_dict[f_type].get(f_type[:-1], None))
105+
config_dict = parse_filters(config_xml_str)
129106

130107
return {
131108
'log_includes': config_dict['includes'],

src/loggedfs/filter.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,56 @@
2929
# IMPORT
3030
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3131

32+
from collections import OrderedDict
3233
import re
3334

35+
import xmltodict
36+
3437

3538
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3639
# ROUTINES
3740
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3841

42+
def new_filter():
43+
44+
return {
45+
'@logEnabled': True,
46+
'@printProcessName': True,
47+
'includes': {},
48+
'excludes': {}
49+
}
50+
51+
52+
def parse_filters(config_xml_str = None):
53+
54+
config_dict = new_filter()
55+
56+
if config_xml_str is not None:
57+
config_dict.update(xmltodict.parse(config_xml_str)['loggedFS'])
58+
59+
for f_type in ['includes', 'excludes']:
60+
config_dict[f_type] = _parse_filter_list_(config_dict[f_type].get(f_type[:-1], None))
61+
62+
return config_dict
63+
64+
65+
def _parse_filter_item_(in_item):
66+
return {
67+
'extension': in_item['@extension'],
68+
'uid': in_item['@uid'],
69+
'action': in_item['@action'],
70+
'retname': in_item['@retname']
71+
}
72+
73+
74+
def _parse_filter_list_(in_list):
75+
if in_list is None:
76+
return []
77+
if not isinstance(in_list, list):
78+
return [_parse_filter_item_(in_list)]
79+
return [_parse_filter_item_(item) for item in in_list]
80+
81+
3982
def compile_filters(include_list, exclude_list):
4083

4184
if len(include_list) == 0:

0 commit comments

Comments
 (0)