Beispiel #1
0
def create_nat_rule(**kwargs):
    nat_rule = NatRule(name=kwargs['rule_name'],
                       description=kwargs['description'],
                       fromzone=kwargs['source_zone'],
                       source=kwargs['source_ip'],
                       tozone=kwargs['destination_zone'],
                       destination=kwargs['destination_ip'],
                       service=kwargs['service'],
                       to_interface=kwargs['to_interface'],
                       nat_type=kwargs['nat_type'])

    # Source translation: Static IP
    if kwargs['snat_type'] in ['static-ip'] and kwargs['snat_static_address']:
        nat_rule.source_translation_type = kwargs['snat_type']
        nat_rule.source_translation_static_translated_address = kwargs[
            'snat_static_address']
        # Bi-directional flag set?
        if kwargs['snat_bidirectional']:
            nat_rule.source_translation_static_bi_directional = kwargs[
                'snat_bidirectional']

    # Source translation: Dynamic IP and port
    elif kwargs['snat_type'] in ['dynamic-ip-and-port']:
        nat_rule.source_translation_type = kwargs['snat_type']
        nat_rule.source_translation_address_type = kwargs['snat_address_type']
        # Interface address?
        if kwargs['snat_interface']:
            nat_rule.source_translation_interface = kwargs['snat_interface']
            # Interface IP?
            if kwargs['snat_interface_address']:
                nat_rule.source_translation_ip_address = kwargs[
                    'snat_interface_address']
        else:
            nat_rule.source_translation_translated_addresses = kwargs[
                'snat_dynamic_address']

    # Source translation: Dynamic IP
    elif kwargs['snat_type'] in ['dynamic-ip']:
        if kwargs['snat_dynamic_address']:
            nat_rule.source_translation_type = kwargs['snat_type']
            nat_rule.source_translation_translated_addresses = kwargs[
                'snat_dynamic_address']
        else:
            return False

    # Destination translation
    if kwargs['dnat_address']:
        nat_rule.destination_translated_address = kwargs['dnat_address']
        if kwargs['dnat_port']:
            nat_rule.destination_translated_port = kwargs['dnat_port']

    # Any tags?
    if 'tag_val' in kwargs:
        nat_rule.tag = kwargs['tag_val']

    return nat_rule
Beispiel #2
0
def create_nat_rule(**kwargs):
    nat_rule = NatRule(
        name=kwargs["rule_name"],
        description=kwargs["description"],
        fromzone=kwargs["source_zone"],
        source=kwargs["source_ip"],
        tozone=kwargs["destination_zone"],
        destination=kwargs["destination_ip"],
        service=kwargs["service"],
        to_interface=kwargs["to_interface"],
        nat_type=kwargs["nat_type"],
    )

    # Source translation: Static IP
    if kwargs["snat_type"] in ["static-ip"] and kwargs["snat_static_address"]:
        nat_rule.source_translation_type = kwargs["snat_type"]
        nat_rule.source_translation_static_translated_address = kwargs[
            "snat_static_address"]
        # Bi-directional flag set?
        if kwargs["snat_bidirectional"]:
            nat_rule.source_translation_static_bi_directional = kwargs[
                "snat_bidirectional"]

    # Source translation: Dynamic IP and port
    elif kwargs["snat_type"] in ["dynamic-ip-and-port"]:
        nat_rule.source_translation_type = kwargs["snat_type"]
        nat_rule.source_translation_address_type = kwargs["snat_address_type"]
        # Interface address?
        if kwargs["snat_interface"]:
            nat_rule.source_translation_interface = kwargs["snat_interface"]
            # Interface IP?
            if kwargs["snat_interface_address"]:
                nat_rule.source_translation_ip_address = kwargs[
                    "snat_interface_address"]
        else:
            nat_rule.source_translation_translated_addresses = kwargs[
                "snat_dynamic_address"]

    # Source translation: Dynamic IP
    elif kwargs["snat_type"] in ["dynamic-ip"]:
        if kwargs["snat_dynamic_address"]:
            nat_rule.source_translation_type = kwargs["snat_type"]
            nat_rule.source_translation_translated_addresses = kwargs[
                "snat_dynamic_address"]
        else:
            return False

    # Destination translation
    if kwargs["dnat_address"]:
        nat_rule.destination_translated_address = kwargs["dnat_address"]
        if kwargs["dnat_port"]:
            nat_rule.destination_translated_port = kwargs["dnat_port"]

    # Any tags?
    if "tag_val" in kwargs:
        nat_rule.tag = kwargs["tag_val"]

    nat_rule.target = kwargs["target"]
    nat_rule.negate_target = kwargs["negate_target"]

    return nat_rule