Skip to content

Commit

Permalink
Converted list fields to TypedList in snort test mechanism
Browse files Browse the repository at this point in the history
  • Loading branch information
Bryan Worrell committed Mar 2, 2015
1 parent e8da174 commit 7e3725f
Showing 1 changed file with 34 additions and 75 deletions.
109 changes: 34 additions & 75 deletions stix/extensions/test_mechanism/snort_test_mechanism.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,91 +29,43 @@ def rules(self):

@rules.setter
def rules(self, value):
self._rules = []
if not value:
return
elif utils.is_sequence(value):
for v in value:
self.add_rule(v)
else:
self.add_rule(value)
self._rules = EncodedCDATAs(value)

def add_rule(self, rule):
if not rule:
return
elif isinstance(rule, EncodedCDATA):
self.rules.append(rule)
else:
self.rules.append(EncodedCDATA(value=rule))
self.rules.append(rule)

@property
def event_filters(self):
return self._event_filters

@event_filters.setter
def event_filters(self, value):
self._event_filters = []
if not value:
return
elif utils.is_sequence(value):
for v in value:
self.add_event_filter(v)
else:
self.add_event_filter(value)
self._event_filters = EncodedCDATAs(value)

def add_event_filter(self, item):
if not item:
return
elif isinstance(item, EncodedCDATA):
self.event_filters.append(item)
else:
self.rules.append(EncodedCDATA(value=item))
self.event_filters.append(item)

@property
def rate_filters(self):
return self._rate_filters

@rate_filters.setter
def rate_filters(self, value):
self._rate_filters = []
if not value:
return
elif utils.is_sequence(value):
for v in value:
self.add_rate_filter(v)
else:
self.add_rate_filter(value)
self._rate_filters = EncodedCDATAs(value)

def add_rate_filter(self, item):
if not item:
return
elif isinstance(item, EncodedCDATA):
self.rate_filters.append(item)
else:
self.rules.append(EncodedCDATA(value=item))
self.rate_filters.append(item)

@property
def event_suppressions(self):
return self._event_suppressions

@event_suppressions.setter
def event_suppressions(self, value):
self._event_suppressions = []
if not value:
return
elif utils.is_sequence(value):
for v in value:
self.add_event_suppression(v)
else:
self.add_event_suppression(value)
self._event_suppressions = EncodedCDATAs(value)

def add_event_suppression(self, item):
if not item:
return
elif isinstance(item, EncodedCDATA):
self.event_suppressions.append(item)
else:
self.rules.append(EncodedCDATA(value=item))
self.event_suppressions.append(item)

@classmethod
def from_obj(cls, obj, return_obj=None):
Expand All @@ -127,13 +79,13 @@ def from_obj(cls, obj, return_obj=None):
return_obj.version = obj.Version

if obj.Rule:
return_obj.rules = [EncodedCDATA.from_obj(x) for x in obj.Rule]
return_obj.rules = EncodedCDATAs.from_obj(obj.Rule)
if obj.Event_Filter:
return_obj.event_filters = [EncodedCDATA.from_obj(x) for x in obj.Event_Filter]
return_obj.event_filters = EncodedCDATAs.from_obj(obj.Event_Filter)
if obj.Rate_Filter:
return_obj.rate_filters = [EncodedCDATA.from_obj(x) for x in obj.Rate_Filter]
return_obj.rate_filters = EncodedCDATAs.from_obj(obj.Rate_Filter)
if obj.Event_Suppression:
return_obj.event_suppressions = [EncodedCDATA.from_obj(x) for x in obj.Event_Suppression]
return_obj.event_suppressions = EncodedCDATAs.from_obj(obj.Event_Suppression)

return return_obj

Expand All @@ -147,13 +99,13 @@ def to_obj(self, return_obj=None, ns_info=None):
return_obj.Version = self.version

if self.rules:
return_obj.Rule = [x.to_obj(ns_info=ns_info) for x in self.rules]
return_obj.Rule = self.rules.to_obj(ns_info=ns_info)
if self.event_filters:
return_obj.Event_Filter = [x.to_obj(ns_info=ns_info) for x in self.event_filters]
return_obj.Event_Filter = self.event_filters.to_obj(ns_info=ns_info)
if self.rate_filters:
return_obj.Rate_Filter = [x.to_obj(ns_info=ns_info) for x in self.rate_filters]
return_obj.Rate_Filter = self.rate_filters.to_obj(ns_info=ns_info)
if self.event_suppressions:
return_obj.Event_Suppression = [x.to_obj(ns_info=ns_info) for x in self.event_suppressions]
return_obj.Event_Suppression = self.event_suppressions.to_obj(ns_info=ns_info)

return return_obj

Expand All @@ -165,13 +117,15 @@ def from_dict(cls, d, return_obj=None):
return_obj = cls()

super(SnortTestMechanism, cls).from_dict(d, return_obj)

return_obj.product_name = d.get('product_name')
return_obj.version = d.get('version')
return_obj.rules = [EncodedCDATA.from_dict(x) for x in d.get('rules', [])]
return_obj.event_filters = [EncodedCDATA.from_dict(x) for x in d.get('event_filters', [])]
return_obj.rate_filters = [EncodedCDATA.from_dict(x) for x in d.get('rate_filters', [])]
return_obj.event_suppressions = [EncodedCDATA.from_dict(x) for x in d.get('event_suppressions', [])]


get = d.get
return_obj.product_name = get('product_name')
return_obj.version = get('version')
return_obj.rules = EncodedCDATAs.from_dict(get('rules'))
return_obj.event_filters = EncodedCDATAs.from_dict(get('event_filters'))
return_obj.rate_filters = EncodedCDATAs.from_dict(get('rate_filters'))
return_obj.event_suppressions = EncodedCDATAs.from_dict(get('event_suppressions'))

return return_obj

Expand All @@ -184,14 +138,19 @@ def to_dict(self):
if self.version:
d['version'] = self.version
if self.rules:
d['rules'] = [x.to_dict() for x in self.rules]
d['rules'] = self.rules.to_dict()
if self.event_filters:
d['event_filters'] = [x.to_dict() for x in self.event_filters]
d['event_filters'] = self.event_filters.to_dict()
if self.rate_filters:
d['rate_filters'] = [x.to_dict() for x in self.rate_filters]
d['rate_filters'] = self.rate_filters.to_dict()
if self.event_suppressions:
d['event_suppressions'] = [x.to_dict for x in self.event_suppressions]
d['event_suppressions'] = self.event_suppressions.to_dict()

return d


class EncodedCDATAs(stix.TypedList):
_contained_type = EncodedCDATA


stix.indicator.test_mechanism.add_extension(SnortTestMechanism)

0 comments on commit 7e3725f

Please sign in to comment.