From: Sapan Bhatia Date: Tue, 15 Sep 2009 17:48:47 +0000 (+0000) Subject: (no commit message) X-Git-Tag: sfa-0.9-2~13 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;ds=sidebyside;h=87a26ab8c886fe2fb856b1ebdf035577260b2898;p=sfa.git --- diff --git a/sfatables/exec.py b/sfatables/exec.py index 0423850b..303723ee 100644 --- a/sfatables/exec.py +++ b/sfatables/exec.py @@ -34,15 +34,23 @@ def main(): rspec = """ + + plc.princeton.sapan + + + + hrn + plc + whitelist plc.princeton blacklist - plc.princeton.planetlab-04 + plc.tp @@ -52,7 +60,7 @@ def main(): - + @@ -63,8 +71,7 @@ def main(): print "%d rules loaded for OUTGOING chain\n"%len(outgoing.sorted_rule_list) newrspec = incoming.apply(rspec) - import pdb - pdb.set_trace() + print newrspec return if __name__=="__main__": diff --git a/sfatables/globals.py b/sfatables/globals.py new file mode 100644 index 00000000..676722b5 --- /dev/null +++ b/sfatables/globals.py @@ -0,0 +1,3 @@ +sfatables_config = '/etc/sfatables' +match_dir = 'matches' +target_dir = 'targets' diff --git a/sfatables/processors/hrn.xsl b/sfatables/processors/hrn.xsl index 29988a5c..65e85c60 100644 --- a/sfatables/processors/hrn.xsl +++ b/sfatables/processors/hrn.xsl @@ -2,16 +2,22 @@ + + + + + + + - True + - False + - diff --git a/sfatables/xmlrule.py b/sfatables/xmlrule.py index b0f6fdef..9c43e0f8 100644 --- a/sfatables/xmlrule.py +++ b/sfatables/xmlrule.py @@ -12,7 +12,7 @@ class XMLRule: processors = {'match':None,'target':None} context = {'match':None,'target':None} - def apply_processor(self, type, rspec): + def apply_processor(self, type, rspec, output_xpath_filter=None): processor = self.processors[type] # XXX TO CLEAN UP @@ -23,19 +23,31 @@ class XMLRule: style = libxslt.parseStylesheetDoc(styledoc) doc = libxml2.parseDoc(rspec) result = style.applyStylesheet(doc, None) - stylesheet_result = style.saveResultToString(result) + if (output_xpath_filter): + p = result.xpathNewContext() + xpath_result = p.xpathEval(output_xpath_filter) + if (xpath_result == []): + raise Exception("Could not apply processor %s."%processor) + + stylesheet_result = xpath_result[0].content + p.xpathFreeContext() + else: + stylesheet_result = style.saveResultToString(result) style.freeStylesheet() doc.freeDoc() result.freeDoc() + return stylesheet_result def match(self, rspec): - match_result = self.apply_processor('match',rspec) + import pdb + pdb.set_trace() + match_result = self.apply_processor('match',rspec,"//result/@verdict") return (match_result=='True') def target(self, rspec): - target_result = self.apply_processor('target',rspec) + target_result = self.apply_processor('target',rspec,None) return target_result def apply_interpreted(self, rspec):