from sfatables.xmlrule import *
class SFATablesRules:
- sorted_rule_list = []
-
def __init__(self, chain_name):
+ self.sorted_rule_list = []
chain_dir_path = "%s/%s"%(sfatables_config,chain_name)
rule_list = List().get_rule_list(chain_dir_path)
for rule_number in rule_list:
def apply(self, rspec):
intermediate_rspec = rspec
for rule in self.sorted_rule_list:
- intermediate_rspec = rule.apply(intermediate_rspec)
+ intermediate_rspec = rule.apply_interpreted(intermediate_rspec)
return intermediate_rspec
incoming = SFATablesRules('INCOMING')
outgoing = SFATablesRules('OUTGOING')
+ rspec = """
+<rspec>
+ <request-context>
+ <sfa><user><hrn>plc.princeton.sapan</hrn></user></sfa>
+ </request-context>
+
+ <sfatables-rule>
+ <argument>
+ <name>hrn</name>
+ <value>plc</value>
+ </argument>
+ <argument>
+ <name>whitelist</name>
+ <value>plc.princeton</value>
+ </argument>
+ <argument>
+ <name>blacklist</name>
+ <value>plc.tp</value>
+ </argument>
+ </sfatables-rule>
+ <request>
+ <nodespec>
+ <node name="plc.princeton.planetlab-01"/>
+ <node name="plc.princeton.planetlab-02"/>
+ <node name="plc.princeton.planetlab-03"/>
+ <node name="plc.princeton.planetlab-04"/>
+ <node name="plc.tp.planetlab3"/>
+ </nodespec>
+ </request>
+</rspec>
+ """
+
+
print "%d rules loaded for INCOMING chain\n"%len(incoming.sorted_rule_list)
print "%d rules loaded for OUTGOING chain\n"%len(outgoing.sorted_rule_list)
+ newrspec = incoming.apply(rspec)
+ print newrspec
return
if __name__=="__main__":