def main():
    mkeyname = 'id'
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "state": {
            "required": True,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "system_snmp_community": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "events": {
                    "required":
                    False,
                    "type":
                    "list",
                    "choices": [
                        "cpu-high", "mem-low", "log-full", "intf-ip",
                        "vpn-tun-up", "vpn-tun-down", "ha-switch",
                        "ha-hb-failure", "ips-signature", "ips-anomaly",
                        "av-virus", "av-oversize", "av-pattern",
                        "av-fragmented", "fm-if-change", "fm-conf-change",
                        "bgp-established", "bgp-backward-transition",
                        "ha-member-up", "ha-member-down", "ent-conf-change",
                        "av-conserve", "av-bypass", "av-oversize-passed",
                        "av-oversize-blocked", "ips-pkg-update",
                        "ips-fail-open", "faz-disconnect", "wc-ap-up",
                        "wc-ap-down", "fswctl-session-up",
                        "fswctl-session-down", "load-balance-real-server-down",
                        "device-new", "per-cpu-high"
                    ]
                },
                "hosts": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "ha_direct": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "host_type": {
                            "required": False,
                            "type": "str",
                            "choices": ["any", "query", "trap"]
                        },
                        "id": {
                            "required": True,
                            "type": "int"
                        },
                        "ip": {
                            "required": False,
                            "type": "str"
                        },
                        "source_ip": {
                            "required": False,
                            "type": "str"
                        }
                    }
                },
                "hosts6": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "ha_direct": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "host_type": {
                            "required": False,
                            "type": "str",
                            "choices": ["any", "query", "trap"]
                        },
                        "id": {
                            "required": True,
                            "type": "int"
                        },
                        "ipv6": {
                            "required": False,
                            "type": "str"
                        },
                        "source_ipv6": {
                            "required": False,
                            "type": "str"
                        }
                    }
                },
                "id": {
                    "required": True,
                    "type": "int"
                },
                "name": {
                    "required": False,
                    "type": "str"
                },
                "query_v1_port": {
                    "required": False,
                    "type": "int"
                },
                "query_v1_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "query_v2c_port": {
                    "required": False,
                    "type": "int"
                },
                "query_v2c_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "trap_v1_lport": {
                    "required": False,
                    "type": "int"
                },
                "trap_v1_rport": {
                    "required": False,
                    "type": "int"
                },
                "trap_v1_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "trap_v2c_lport": {
                    "required": False,
                    "type": "int"
                },
                "trap_v2c_rport": {
                    "required": False,
                    "type": "int"
                },
                "trap_v2c_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_system_snmp(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 2
0
def main():
    fields = {
        "host": {"required": False, "type": "str"},
        "username": {"required": False, "type": "str"},
        "password": {"required": False, "type": "str", "default": "", "no_log": True},
        "vdom": {"required": False, "type": "str", "default": "root"},
        "https": {"required": False, "type": "bool", "default": True},
        "ssl_verify": {"required": False, "type": "bool", "default": True},
        "state": {"required": False, "type": "str",
                  "choices": ["present", "absent"]},
        "firewall_schedule_group": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "state": {"required": False, "type": "str",
                          "choices": ["present", "absent"]},
                "color": {"required": False, "type": "int"},
                "member": {"required": False, "type": "list",
                           "options": {
                               "name": {"required": True, "type": "str"}
                           }},
                "name": {"required": True, "type": "str"}

            }
        }
    }

    module = AnsibleModule(argument_spec=fields,
                           supports_check_mode=False)

    # legacy_mode refers to using fortiosapi instead of HTTPAPI
    legacy_mode = 'host' in module.params and module.params['host'] is not None and \
                  'username' in module.params and module.params['username'] is not None and \
                  'password' in module.params and module.params['password'] is not None

    versions_check_result = None
    if not legacy_mode:
        if module._socket_path:
            connection = Connection(module._socket_path)
            fos = FortiOSHandler(connection)

            is_error, has_changed, result = fortios_firewall_schedule(module.params, fos)
            versions_check_result = connection.get_system_version()
        else:
            module.fail_json(**FAIL_SOCKET_MSG)
    else:
        try:
            from fortiosapi import FortiOSAPI
        except ImportError:
            module.fail_json(msg="fortiosapi module is required")

        fos = FortiOSAPI()

        login(module.params, fos)
        is_error, has_changed, result = fortios_firewall_schedule(module.params, fos)
        fos.logout()

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn("Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv")

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 3
0
def main():
    mkeyname = 'name'
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "state": {
            "required": False,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "firewall_address": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "state": {
                    "required": False,
                    "type": "str",
                    "choices": ["present", "absent"]
                },
                "allow_routing": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "associated_interface": {
                    "required": False,
                    "type": "str"
                },
                "cache_ttl": {
                    "required": False,
                    "type": "int"
                },
                "color": {
                    "required": False,
                    "type": "int"
                },
                "comment": {
                    "required": False,
                    "type": "str"
                },
                "country": {
                    "required": False,
                    "type": "str"
                },
                "end_ip": {
                    "required": False,
                    "type": "str"
                },
                "epg_name": {
                    "required": False,
                    "type": "str"
                },
                "filter": {
                    "required": False,
                    "type": "str"
                },
                "fqdn": {
                    "required": False,
                    "type": "str"
                },
                "list": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "ip": {
                            "required": True,
                            "type": "str"
                        }
                    }
                },
                "name": {
                    "required": True,
                    "type": "str"
                },
                "obj_id": {
                    "required": False,
                    "type": "int"
                },
                "organization": {
                    "required": False,
                    "type": "str"
                },
                "policy_group": {
                    "required": False,
                    "type": "str"
                },
                "sdn": {
                    "required": False,
                    "type": "str",
                    "choices": ["aci", "aws", "azure", "nsx", "nuage"]
                },
                "sdn_tag": {
                    "required": False,
                    "type": "str"
                },
                "start_ip": {
                    "required": False,
                    "type": "str"
                },
                "subnet": {
                    "required": False,
                    "type": "str"
                },
                "subnet_name": {
                    "required": False,
                    "type": "str"
                },
                "tagging": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "category": {
                            "required": False,
                            "type": "str"
                        },
                        "name": {
                            "required": True,
                            "type": "str"
                        },
                        "tags": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "name": {
                                    "required": True,
                                    "type": "str"
                                }
                            }
                        }
                    }
                },
                "tenant": {
                    "required": False,
                    "type": "str"
                },
                "type": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices": [
                        "ipmask", "iprange", "fqdn", "geography", "wildcard",
                        "wildcard-fqdn", "dynamic"
                    ]
                },
                "uuid": {
                    "required": False,
                    "type": "str"
                },
                "visibility": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "wildcard": {
                    "required": False,
                    "type": "str"
                },
                "wildcard_fqdn": {
                    "required": False,
                    "type": "str"
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_firewall(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 4
0
def main():
    mkeyname = None
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "log_gui_display": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "fortiview_unscanned_apps": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "resolve_apps": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "resolve_hosts": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_log(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
def main():
    mkeyname = 'name'
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "state": {
            "required": True,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "system_lldp_network_policy": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "comment": {
                    "required": False,
                    "type": "str"
                },
                "guest": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "dscp": {
                            "required": False,
                            "type": "int"
                        },
                        "priority": {
                            "required": False,
                            "type": "int"
                        },
                        "status": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "tag": {
                            "required": False,
                            "type": "str",
                            "choices": ["none", "dot1q", "dot1p"]
                        },
                        "vlan": {
                            "required": False,
                            "type": "int"
                        }
                    }
                },
                "guest_voice_signaling": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "dscp": {
                            "required": False,
                            "type": "int"
                        },
                        "priority": {
                            "required": False,
                            "type": "int"
                        },
                        "status": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "tag": {
                            "required": False,
                            "type": "str",
                            "choices": ["none", "dot1q", "dot1p"]
                        },
                        "vlan": {
                            "required": False,
                            "type": "int"
                        }
                    }
                },
                "name": {
                    "required": True,
                    "type": "str"
                },
                "softphone": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "dscp": {
                            "required": False,
                            "type": "int"
                        },
                        "priority": {
                            "required": False,
                            "type": "int"
                        },
                        "status": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "tag": {
                            "required": False,
                            "type": "str",
                            "choices": ["none", "dot1q", "dot1p"]
                        },
                        "vlan": {
                            "required": False,
                            "type": "int"
                        }
                    }
                },
                "streaming_video": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "dscp": {
                            "required": False,
                            "type": "int"
                        },
                        "priority": {
                            "required": False,
                            "type": "int"
                        },
                        "status": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "tag": {
                            "required": False,
                            "type": "str",
                            "choices": ["none", "dot1q", "dot1p"]
                        },
                        "vlan": {
                            "required": False,
                            "type": "int"
                        }
                    }
                },
                "video_conferencing": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "dscp": {
                            "required": False,
                            "type": "int"
                        },
                        "priority": {
                            "required": False,
                            "type": "int"
                        },
                        "status": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "tag": {
                            "required": False,
                            "type": "str",
                            "choices": ["none", "dot1q", "dot1p"]
                        },
                        "vlan": {
                            "required": False,
                            "type": "int"
                        }
                    }
                },
                "video_signaling": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "dscp": {
                            "required": False,
                            "type": "int"
                        },
                        "priority": {
                            "required": False,
                            "type": "int"
                        },
                        "status": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "tag": {
                            "required": False,
                            "type": "str",
                            "choices": ["none", "dot1q", "dot1p"]
                        },
                        "vlan": {
                            "required": False,
                            "type": "int"
                        }
                    }
                },
                "voice": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "dscp": {
                            "required": False,
                            "type": "int"
                        },
                        "priority": {
                            "required": False,
                            "type": "int"
                        },
                        "status": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "tag": {
                            "required": False,
                            "type": "str",
                            "choices": ["none", "dot1q", "dot1p"]
                        },
                        "vlan": {
                            "required": False,
                            "type": "int"
                        }
                    }
                },
                "voice_signaling": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "dscp": {
                            "required": False,
                            "type": "int"
                        },
                        "priority": {
                            "required": False,
                            "type": "int"
                        },
                        "status": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "tag": {
                            "required": False,
                            "type": "str",
                            "choices": ["none", "dot1q", "dot1p"]
                        },
                        "vlan": {
                            "required": False,
                            "type": "int"
                        }
                    }
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_system_lldp(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 6
0
def main():
    mkeyname = 'seq-num'
    fields = {
        "access_token": {"required": False, "type": "str", "no_log": True},
        "vdom": {"required": False, "type": "str", "default": "root"},
        "state": {"required": False, "type": "str",
                  "choices": ["present", "absent"]},
        "router_policy": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "state": {"required": False, "type": "str",
                          "choices": ["present", "absent"]},
                "action": {"required": False, "type": "str",
                           "choices": ["deny",
                                       "permit"]},
                "comments": {"required": False, "type": "str"},
                "dst": {"required": False, "type": "list",
                        "options": {
                            "subnet": {"required": True, "type": "str"}
                        }},
                "dst_negate": {"required": False, "type": "str",
                               "choices": ["enable",
                                           "disable"]},
                "dstaddr": {"required": False, "type": "list",
                            "options": {
                                "name": {"required": True, "type": "str"}
                            }},
                "end_port": {"required": False, "type": "int"},
                "end_source_port": {"required": False, "type": "int"},
                "gateway": {"required": False, "type": "str"},
                "input_device": {"required": False, "type": "list",
                                 "options": {
                                     "name": {"required": True, "type": "str"}
                                 }},
                "internet_service_custom": {"required": False, "type": "list",
                                            "options": {
                                                "name": {"required": True, "type": "str"}
                                            }},
                "internet_service_id": {"required": False, "type": "list",
                                        "options": {
                                            "id": {"required": True, "type": "int"}
                                        }},
                "output_device": {"required": False, "type": "str"},
                "protocol": {"required": False, "type": "int"},
                "seq_num": {"required": False, "type": "int"},
                "src": {"required": False, "type": "list",
                        "options": {
                            "subnet": {"required": True, "type": "str"}
                        }},
                "src_negate": {"required": False, "type": "str",
                               "choices": ["enable",
                                           "disable"]},
                "srcaddr": {"required": False, "type": "list",
                            "options": {
                                "name": {"required": True, "type": "str"}
                            }},
                "start_port": {"required": False, "type": "int"},
                "start_source_port": {"required": False, "type": "int"},
                "status": {"required": False, "type": "str",
                           "choices": ["enable",
                                       "disable"]},
                "tos": {"required": False, "type": "str"},
                "tos_mask": {"required": False, "type": "str"}

            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields,
                           supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token', module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_router(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn("Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv")

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 7
0
def main():
    mkeyname = 'name'
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "state": {
            "required": True,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "router_route_map": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "comments": {
                    "required": False,
                    "type": "str"
                },
                "name": {
                    "required": True,
                    "type": "str"
                },
                "rule": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "action": {
                            "required": False,
                            "type": "str",
                            "choices": ["permit", "deny"]
                        },
                        "id": {
                            "required": True,
                            "type": "int"
                        },
                        "match_as_path": {
                            "required": False,
                            "type": "str"
                        },
                        "match_community": {
                            "required": False,
                            "type": "str"
                        },
                        "match_community_exact": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "match_flags": {
                            "required": False,
                            "type": "int"
                        },
                        "match_interface": {
                            "required": False,
                            "type": "str"
                        },
                        "match_ip_address": {
                            "required": False,
                            "type": "str"
                        },
                        "match_ip_nexthop": {
                            "required": False,
                            "type": "str"
                        },
                        "match_ip6_address": {
                            "required": False,
                            "type": "str"
                        },
                        "match_ip6_nexthop": {
                            "required": False,
                            "type": "str"
                        },
                        "match_metric": {
                            "required": False,
                            "type": "int"
                        },
                        "match_origin": {
                            "required": False,
                            "type": "str",
                            "choices": ["none", "egp", "igp", "incomplete"]
                        },
                        "match_route_type": {
                            "required": False,
                            "type": "str",
                            "choices": ["1", "2", "none"]
                        },
                        "match_tag": {
                            "required": False,
                            "type": "int"
                        },
                        "set_aggregator_as": {
                            "required": False,
                            "type": "int"
                        },
                        "set_aggregator_ip": {
                            "required": False,
                            "type": "str"
                        },
                        "set_aspath": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "as": {
                                    "required": True,
                                    "type": "str"
                                }
                            }
                        },
                        "set_aspath_action": {
                            "required": False,
                            "type": "str",
                            "choices": ["prepend", "replace"]
                        },
                        "set_atomic_aggregate": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "set_community": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "community": {
                                    "required": True,
                                    "type": "str"
                                }
                            }
                        },
                        "set_community_additive": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "set_community_delete": {
                            "required": False,
                            "type": "str"
                        },
                        "set_dampening_max_suppress": {
                            "required": False,
                            "type": "int"
                        },
                        "set_dampening_reachability_half_life": {
                            "required": False,
                            "type": "int"
                        },
                        "set_dampening_reuse": {
                            "required": False,
                            "type": "int"
                        },
                        "set_dampening_suppress": {
                            "required": False,
                            "type": "int"
                        },
                        "set_dampening_unreachability_half_life": {
                            "required": False,
                            "type": "int"
                        },
                        "set_extcommunity_rt": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "community": {
                                    "required": True,
                                    "type": "str"
                                }
                            }
                        },
                        "set_extcommunity_soo": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "community": {
                                    "required": True,
                                    "type": "str"
                                }
                            }
                        },
                        "set_flags": {
                            "required": False,
                            "type": "int"
                        },
                        "set_ip_nexthop": {
                            "required": False,
                            "type": "str"
                        },
                        "set_ip6_nexthop": {
                            "required": False,
                            "type": "str"
                        },
                        "set_ip6_nexthop_local": {
                            "required": False,
                            "type": "str"
                        },
                        "set_local_preference": {
                            "required": False,
                            "type": "int"
                        },
                        "set_metric": {
                            "required": False,
                            "type": "int"
                        },
                        "set_metric_type": {
                            "required": False,
                            "type": "str",
                            "choices": ["1", "2", "none"]
                        },
                        "set_origin": {
                            "required": False,
                            "type": "str",
                            "choices": ["none", "egp", "igp", "incomplete"]
                        },
                        "set_originator_id": {
                            "required": False,
                            "type": "str"
                        },
                        "set_route_tag": {
                            "required": False,
                            "type": "int"
                        },
                        "set_tag": {
                            "required": False,
                            "type": "int"
                        },
                        "set_weight": {
                            "required": False,
                            "type": "int"
                        }
                    }
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_router(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 8
0
def main():
    mkeyname = 'name'
    fields = {
        "access_token": {"required": False, "type": "str", "no_log": True},
        "vdom": {"required": False, "type": "str", "default": "root"},
        "state": {"required": True, "type": "str",
                  "choices": ["present", "absent"]},
        "wireless_controller_bonjour_profile": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "comment": {"required": False, "type": "str"},
                "name": {"required": True, "type": "str"},
                "policy_list": {"required": False, "type": "list",
                                "options": {
                                    "description": {"required": False, "type": "str"},
                                    "from_vlan": {"required": False, "type": "str"},
                                    "policy_id": {"required": False, "type": "int"},
                                    "services": {"required": False, "type": "str",
                                                 "choices": ["all",
                                                             "airplay",
                                                             "afp",
                                                             "bit-torrent",
                                                             "ftp",
                                                             "ichat",
                                                             "itunes",
                                                             "printers",
                                                             "samba",
                                                             "scanners",
                                                             "ssh",
                                                             "chromecast"]},
                                    "to_vlan": {"required": False, "type": "str"}
                                }}

            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields,
                           supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token', module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_wireless_controller(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn("Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv")

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
def main():
    mkeyname = 'name'
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "state": {
            "required": True,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "wanopt_content_delivery_network_rule": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "category": {
                    "required": False,
                    "type": "str",
                    "choices": ["vcache", "youtube"]
                },
                "comment": {
                    "required": False,
                    "type": "str"
                },
                "host_domain_name_suffix": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "name": {
                            "required": True,
                            "type": "str"
                        }
                    }
                },
                "name": {
                    "required": True,
                    "type": "str"
                },
                "request_cache_control": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "response_cache_control": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "response_expires": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "rules": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "content_id": {
                            "required": False,
                            "type": "dict",
                            "options": {
                                "end_direction": {
                                    "required": False,
                                    "type": "str",
                                    "choices": ["forward", "backward"]
                                },
                                "end_skip": {
                                    "required": False,
                                    "type": "int"
                                },
                                "end_str": {
                                    "required": False,
                                    "type": "str"
                                },
                                "range_str": {
                                    "required": False,
                                    "type": "str"
                                },
                                "start_direction": {
                                    "required": False,
                                    "type": "str",
                                    "choices": ["forward", "backward"]
                                },
                                "start_skip": {
                                    "required": False,
                                    "type": "int"
                                },
                                "start_str": {
                                    "required": False,
                                    "type": "str"
                                },
                                "target": {
                                    "required":
                                    False,
                                    "type":
                                    "str",
                                    "choices": [
                                        "path", "parameter", "referrer",
                                        "youtube-map", "youtube-id",
                                        "youku-id", "hls-manifest",
                                        "dash-manifest", "hls-fragment",
                                        "dash-fragment"
                                    ]
                                }
                            }
                        },
                        "match_entries": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "id": {
                                    "required": True,
                                    "type": "int"
                                },
                                "pattern": {
                                    "required": False,
                                    "type": "list",
                                    "options": {
                                        "string": {
                                            "required": True,
                                            "type": "str"
                                        }
                                    }
                                },
                                "target": {
                                    "required":
                                    False,
                                    "type":
                                    "str",
                                    "choices": [
                                        "path", "parameter", "referrer",
                                        "youtube-map", "youtube-id", "youku-id"
                                    ]
                                }
                            }
                        },
                        "match_mode": {
                            "required": False,
                            "type": "str",
                            "choices": ["all", "any"]
                        },
                        "name": {
                            "required": True,
                            "type": "str"
                        },
                        "skip_entries": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "id": {
                                    "required": True,
                                    "type": "int"
                                },
                                "pattern": {
                                    "required": False,
                                    "type": "list",
                                    "options": {
                                        "string": {
                                            "required": True,
                                            "type": "str"
                                        }
                                    }
                                },
                                "target": {
                                    "required":
                                    False,
                                    "type":
                                    "str",
                                    "choices": [
                                        "path", "parameter", "referrer",
                                        "youtube-map", "youtube-id", "youku-id"
                                    ]
                                }
                            }
                        },
                        "skip_rule_mode": {
                            "required": False,
                            "type": "str",
                            "choices": ["all", "any"]
                        }
                    }
                },
                "status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "text_response_vcache": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "updateserver": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_wanopt(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 10
0
def main():
    mkeyname = None
    fields = {
        "access_token": {"required": False, "type": "str", "no_log": True},
        "vdom": {"required": False, "type": "str", "default": "root"},
        "log_fortianalyzer3_setting": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "__change_ip": {"required": False, "type": "int"},
                "certificate": {"required": False, "type": "str"},
                "conn_timeout": {"required": False, "type": "int"},
                "enc_algorithm": {"required": False, "type": "str",
                                  "choices": ["high-medium",
                                              "high",
                                              "low",
                                              "disable"]},
                "faz_type": {"required": False, "type": "int"},
                "hmac_algorithm": {"required": False, "type": "str",
                                   "choices": ["sha256",
                                               "sha1"]},
                "ips_archive": {"required": False, "type": "str",
                                "choices": ["enable",
                                            "disable"]},
                "mgmt_name": {"required": False, "type": "str"},
                "monitor_failure_retry_period": {"required": False, "type": "int"},
                "monitor_keepalive_period": {"required": False, "type": "int"},
                "reliable": {"required": False, "type": "str",
                             "choices": ["enable",
                                         "disable"]},
                "server": {"required": False, "type": "str"},
                "source_ip": {"required": False, "type": "str"},
                "status": {"required": False, "type": "str",
                           "choices": ["enable",
                                       "disable"]},
                "upload_day": {"required": False, "type": "str"},
                "upload_interval": {"required": False, "type": "str",
                                    "choices": ["daily",
                                                "weekly",
                                                "monthly"]},
                "upload_option": {"required": False, "type": "str",
                                  "choices": ["store-and-upload",
                                              "realtime",
                                              "1-minute",
                                              "5-minute"]},
                "upload_time": {"required": False, "type": "str"}

            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields,
                           supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token', module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_log_fortianalyzer3(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn("Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv")

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
def main():
    fields = {
        "host": {
            "required": False,
            "type": "str"
        },
        "username": {
            "required": False,
            "type": "str"
        },
        "password": {
            "required": False,
            "type": "str",
            "default": "",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "https": {
            "required": False,
            "type": "bool",
            "default": True
        },
        "ssl_verify": {
            "required": False,
            "type": "bool",
            "default": True
        },
        "state": {
            "required": False,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "firewall_interface_policy6": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "state": {
                    "required": False,
                    "type": "str",
                    "choices": ["present", "absent"]
                },
                "address_type": {
                    "required": False,
                    "type": "str",
                    "choices": ["ipv4", "ipv6"]
                },
                "application_list": {
                    "required": False,
                    "type": "str"
                },
                "application_list_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "av_profile": {
                    "required": False,
                    "type": "str"
                },
                "av_profile_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "comments": {
                    "required": False,
                    "type": "str"
                },
                "dlp_sensor": {
                    "required": False,
                    "type": "str"
                },
                "dlp_sensor_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "dsri": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "dstaddr6": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "name": {
                            "required": True,
                            "type": "str"
                        }
                    }
                },
                "interface": {
                    "required": False,
                    "type": "str"
                },
                "ips_sensor": {
                    "required": False,
                    "type": "str"
                },
                "ips_sensor_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "label": {
                    "required": False,
                    "type": "str"
                },
                "logtraffic": {
                    "required": False,
                    "type": "str",
                    "choices": ["all", "utm", "disable"]
                },
                "policyid": {
                    "required": True,
                    "type": "int"
                },
                "scan_botnet_connections": {
                    "required": False,
                    "type": "str",
                    "choices": ["disable", "block", "monitor"]
                },
                "service6": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "name": {
                            "required": True,
                            "type": "str"
                        }
                    }
                },
                "spamfilter_profile": {
                    "required": False,
                    "type": "str"
                },
                "spamfilter_profile_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "srcaddr6": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "name": {
                            "required": True,
                            "type": "str"
                        }
                    }
                },
                "status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "webfilter_profile": {
                    "required": False,
                    "type": "str"
                },
                "webfilter_profile_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                }
            }
        }
    }

    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    # legacy_mode refers to using fortiosapi instead of HTTPAPI
    legacy_mode = 'host' in module.params and module.params['host'] is not None and \
                  'username' in module.params and module.params['username'] is not None and \
                  'password' in module.params and module.params['password'] is not None

    versions_check_result = None
    if not legacy_mode:
        if module._socket_path:
            connection = Connection(module._socket_path)
            fos = FortiOSHandler(connection)

            is_error, has_changed, result = fortios_firewall(
                module.params, fos)
            versions_check_result = connection.get_system_version()
        else:
            module.fail_json(**FAIL_SOCKET_MSG)
    else:
        try:
            from fortiosapi import FortiOSAPI
        except ImportError:
            module.fail_json(msg="fortiosapi module is required")

        fos = FortiOSAPI()

        login(module.params, fos)
        is_error, has_changed, result = fortios_firewall(module.params, fos)
        fos.logout()

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
def main():
    mkeyname = 'id'
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "state": {
            "required": True,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "system_dhcp6_server": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "dns_search_list": {
                    "required": False,
                    "type": "str",
                    "choices": ["delegated", "specify"]
                },
                "dns_server1": {
                    "required": False,
                    "type": "str"
                },
                "dns_server2": {
                    "required": False,
                    "type": "str"
                },
                "dns_server3": {
                    "required": False,
                    "type": "str"
                },
                "dns_service": {
                    "required": False,
                    "type": "str",
                    "choices": ["delegated", "default", "specify"]
                },
                "domain": {
                    "required": False,
                    "type": "str"
                },
                "id": {
                    "required": True,
                    "type": "int"
                },
                "interface": {
                    "required": False,
                    "type": "str"
                },
                "ip_mode": {
                    "required": False,
                    "type": "str",
                    "choices": ["range", "delegated"]
                },
                "ip_range": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "end_ip": {
                            "required": False,
                            "type": "str"
                        },
                        "id": {
                            "required": True,
                            "type": "int"
                        },
                        "start_ip": {
                            "required": False,
                            "type": "str"
                        }
                    }
                },
                "lease_time": {
                    "required": False,
                    "type": "int"
                },
                "option1": {
                    "required": False,
                    "type": "str"
                },
                "option2": {
                    "required": False,
                    "type": "str"
                },
                "option3": {
                    "required": False,
                    "type": "str"
                },
                "prefix_range": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "end_prefix": {
                            "required": False,
                            "type": "str"
                        },
                        "id": {
                            "required": True,
                            "type": "int"
                        },
                        "prefix_length": {
                            "required": False,
                            "type": "int"
                        },
                        "start_prefix": {
                            "required": False,
                            "type": "str"
                        }
                    }
                },
                "rapid_commit": {
                    "required": False,
                    "type": "str",
                    "choices": ["disable", "enable"]
                },
                "status": {
                    "required": False,
                    "type": "str",
                    "choices": ["disable", "enable"]
                },
                "subnet": {
                    "required": False,
                    "type": "str"
                },
                "upstream_interface": {
                    "required": False,
                    "type": "str"
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_system_dhcp6(
            module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 13
0
def main():
    mkeyname = None
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "router_multicast": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "interface": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "bfd": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "cisco_exclude_genid": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "dr_priority": {
                            "required": False,
                            "type": "int"
                        },
                        "hello_holdtime": {
                            "required": False,
                            "type": "int"
                        },
                        "hello_interval": {
                            "required": False,
                            "type": "int"
                        },
                        "igmp": {
                            "required": False,
                            "type": "dict",
                            "options": {
                                "access_group": {
                                    "required": False,
                                    "type": "str"
                                },
                                "immediate_leave_group": {
                                    "required": False,
                                    "type": "str"
                                },
                                "last_member_query_count": {
                                    "required": False,
                                    "type": "int"
                                },
                                "last_member_query_interval": {
                                    "required": False,
                                    "type": "int"
                                },
                                "query_interval": {
                                    "required": False,
                                    "type": "int"
                                },
                                "query_max_response_time": {
                                    "required": False,
                                    "type": "int"
                                },
                                "query_timeout": {
                                    "required": False,
                                    "type": "int"
                                },
                                "router_alert_check": {
                                    "required": False,
                                    "type": "str",
                                    "choices": ["enable", "disable"]
                                },
                                "version": {
                                    "required": False,
                                    "type": "str",
                                    "choices": ["3", "2", "1"]
                                }
                            }
                        },
                        "join_group": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "address": {
                                    "required": True,
                                    "type": "str"
                                }
                            }
                        },
                        "multicast_flow": {
                            "required": False,
                            "type": "str"
                        },
                        "name": {
                            "required": True,
                            "type": "str"
                        },
                        "neighbour_filter": {
                            "required": False,
                            "type": "str"
                        },
                        "passive": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "pim_mode": {
                            "required": False,
                            "type": "str",
                            "choices": ["sparse-mode", "dense-mode"]
                        },
                        "propagation_delay": {
                            "required": False,
                            "type": "int"
                        },
                        "rp_candidate": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "rp_candidate_group": {
                            "required": False,
                            "type": "str"
                        },
                        "rp_candidate_interval": {
                            "required": False,
                            "type": "int"
                        },
                        "rp_candidate_priority": {
                            "required": False,
                            "type": "int"
                        },
                        "state_refresh_interval": {
                            "required": False,
                            "type": "int"
                        },
                        "static_group": {
                            "required": False,
                            "type": "str"
                        },
                        "ttl_threshold": {
                            "required": False,
                            "type": "int"
                        }
                    }
                },
                "multicast_routing": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "pim_sm_global": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "accept_register_list": {
                            "required": False,
                            "type": "str"
                        },
                        "accept_source_list": {
                            "required": False,
                            "type": "str"
                        },
                        "bsr_allow_quick_refresh": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "bsr_candidate": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "bsr_hash": {
                            "required": False,
                            "type": "int"
                        },
                        "bsr_interface": {
                            "required": False,
                            "type": "str"
                        },
                        "bsr_priority": {
                            "required": False,
                            "type": "int"
                        },
                        "cisco_crp_prefix": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "cisco_ignore_rp_set_priority": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "cisco_register_checksum": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "cisco_register_checksum_group": {
                            "required": False,
                            "type": "str"
                        },
                        "join_prune_holdtime": {
                            "required": False,
                            "type": "int"
                        },
                        "message_interval": {
                            "required": False,
                            "type": "int"
                        },
                        "null_register_retries": {
                            "required": False,
                            "type": "int"
                        },
                        "register_rate_limit": {
                            "required": False,
                            "type": "int"
                        },
                        "register_rp_reachability": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "register_source": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "interface", "ip-address"]
                        },
                        "register_source_interface": {
                            "required": False,
                            "type": "str"
                        },
                        "register_source_ip": {
                            "required": False,
                            "type": "str"
                        },
                        "register_supression": {
                            "required": False,
                            "type": "int"
                        },
                        "rp_address": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "group": {
                                    "required": False,
                                    "type": "str"
                                },
                                "id": {
                                    "required": True,
                                    "type": "int"
                                },
                                "ip_address": {
                                    "required": False,
                                    "type": "str"
                                }
                            }
                        },
                        "rp_register_keepalive": {
                            "required": False,
                            "type": "int"
                        },
                        "spt_threshold": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "spt_threshold_group": {
                            "required": False,
                            "type": "str"
                        },
                        "ssm": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "ssm_range": {
                            "required": False,
                            "type": "str"
                        }
                    }
                },
                "route_limit": {
                    "required": False,
                    "type": "int"
                },
                "route_threshold": {
                    "required": False,
                    "type": "int"
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_router(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 14
0
def main():
    mkeyname = 'name'
    fields = {
        "access_token": {"required": False, "type": "str", "no_log": True},
        "vdom": {"required": False, "type": "str", "default": "root"},
        "state": {"required": True, "type": "str",
                  "choices": ["present", "absent"]},
        "vpn_certificate_ca": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "auto_update_days": {"required": False, "type": "int"},
                "auto_update_days_warning": {"required": False, "type": "int"},
                "ca": {"required": False, "type": "str"},
                "last_updated": {"required": False, "type": "int"},
                "name": {"required": True, "type": "str"},
                "range": {"required": False, "type": "str",
                          "choices": ["global",
                                      "vdom"]},
                "scep_url": {"required": False, "type": "str"},
                "source": {"required": False, "type": "str",
                           "choices": ["factory",
                                       "user",
                                       "bundle"]},
                "source_ip": {"required": False, "type": "str"},
                "ssl_inspection_trusted": {"required": False, "type": "str",
                                           "choices": ["enable",
                                                       "disable"]}

            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields,
                           supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token', module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_vpn_certificate(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn("Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv")

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 15
0
def main():
    mkeyname = None
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "system_stp": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "config_revision": {
                    "required": False,
                    "type": "int"
                },
                "forward_delay": {
                    "required": False,
                    "type": "int"
                },
                "hello_time": {
                    "required": False,
                    "type": "int"
                },
                "max_age": {
                    "required": False,
                    "type": "int"
                },
                "max_hops": {
                    "required": False,
                    "type": "int"
                },
                "region_name": {
                    "required": False,
                    "type": "str"
                },
                "status": {
                    "required": False,
                    "type": "str"
                },
                "switch_priority": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices": [
                        "0", "4096", "8192", "12288", "16384", "20480",
                        "24576", "28672", "32768", "36864", "40960", "45056",
                        "49152", "53248", "57344"
                    ]
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_system(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 16
0
def main():
    mkeyname = None
    fields = {
        "access_token": {"required": False, "type": "str", "no_log": True},
        "vdom": {"required": False, "type": "str", "default": "root"},
        "wireless_controller_inter_controller": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "fast_failover_max": {"required": False, "type": "int"},
                "fast_failover_wait": {"required": False, "type": "int"},
                "inter_controller_key": {"required": False, "type": "str"},
                "inter_controller_mode": {"required": False, "type": "str",
                                          "choices": ["disable",
                                                      "l2-roaming",
                                                      "1+1"]},
                "inter_controller_peer": {"required": False, "type": "list",
                                          "options": {
                                              "id": {"required": True, "type": "int"},
                                              "peer_ip": {"required": False, "type": "str"},
                                              "peer_port": {"required": False, "type": "int"},
                                              "peer_priority": {"required": False, "type": "str",
                                                                "choices": ["primary",
                                                                            "secondary"]}
                                          }},
                "inter_controller_pri": {"required": False, "type": "str",
                                         "choices": ["primary",
                                                     "secondary"]}

            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields,
                           supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token', module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_wireless_controller(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn("Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv")

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 17
0
def main():
    mkeyname = 'policyid'
    fields = {
        "access_token": {"required": False, "type": "str", "no_log": True},
        "vdom": {"required": False, "type": "str", "default": "root"},
        "state": {"required": False, "type": "str",
                  "choices": ["present", "absent"]},
        "firewall_policy46": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "state": {"required": False, "type": "str",
                          "choices": ["present", "absent"]},
                "action": {"required": False, "type": "str",
                           "choices": ["accept",
                                       "deny"]},
                "comments": {"required": False, "type": "str"},
                "dstaddr": {"required": False, "type": "list",
                            "options": {
                                "name": {"required": True, "type": "str"}
                            }},
                "dstintf": {"required": False, "type": "str"},
                "fixedport": {"required": False, "type": "str",
                              "choices": ["enable",
                                          "disable"]},
                "ippool": {"required": False, "type": "str",
                           "choices": ["enable",
                                       "disable"]},
                "logtraffic": {"required": False, "type": "str",
                               "choices": ["enable",
                                           "disable"]},
                "logtraffic_start": {"required": False, "type": "str",
                                     "choices": ["enable",
                                                 "disable"]},
                "per_ip_shaper": {"required": False, "type": "str"},
                "permit_any_host": {"required": False, "type": "str",
                                    "choices": ["enable",
                                                "disable"]},
                "policyid": {"required": True, "type": "int"},
                "poolname": {"required": False, "type": "list",
                             "options": {
                                 "name": {"required": True, "type": "str"}
                             }},
                "schedule": {"required": False, "type": "str"},
                "service": {"required": False, "type": "list",
                            "options": {
                                "name": {"required": True, "type": "str"}
                            }},
                "srcaddr": {"required": False, "type": "list",
                            "options": {
                                "name": {"required": True, "type": "str"}
                            }},
                "srcintf": {"required": False, "type": "str"},
                "status": {"required": False, "type": "str",
                           "choices": ["enable",
                                       "disable"]},
                "tcp_mss_receiver": {"required": False, "type": "int"},
                "tcp_mss_sender": {"required": False, "type": "int"},
                "traffic_shaper": {"required": False, "type": "str"},
                "traffic_shaper_reverse": {"required": False, "type": "str"},
                "uuid": {"required": False, "type": "str"}

            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields,
                           supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token', module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_firewall(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn("Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv")

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
def main():
    mkeyname = 'name'
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "state": {
            "required": True,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "switch_controller_vlan": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "auth": {
                    "required": False,
                    "type": "str",
                    "choices": ["radius", "usergroup"]
                },
                "color": {
                    "required": False,
                    "type": "int"
                },
                "comments": {
                    "required": False,
                    "type": "str"
                },
                "name": {
                    "required": True,
                    "type": "str"
                },
                "portal_message_override_group": {
                    "required": False,
                    "type": "str"
                },
                "portal_message_overrides": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "auth_disclaimer_page": {
                            "required": False,
                            "type": "str"
                        },
                        "auth_login_failed_page": {
                            "required": False,
                            "type": "str"
                        },
                        "auth_login_page": {
                            "required": False,
                            "type": "str"
                        },
                        "auth_reject_page": {
                            "required": False,
                            "type": "str"
                        }
                    }
                },
                "radius_server": {
                    "required": False,
                    "type": "str"
                },
                "security": {
                    "required": False,
                    "type": "str",
                    "choices": ["open", "captive-portal", "8021x"]
                },
                "selected_usergroups": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "name": {
                            "required": True,
                            "type": "str"
                        }
                    }
                },
                "usergroup": {
                    "required": False,
                    "type": "str"
                },
                "vdom": {
                    "required": False,
                    "type": "str"
                },
                "vlanid": {
                    "required": False,
                    "type": "int"
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_switch_controller(
            module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 19
0
def main():
    mkeyname = 'name'
    fields = {
        "access_token": {"required": False, "type": "str", "no_log": True},
        "vdom": {"required": False, "type": "str", "default": "root"},
        "state": {"required": False, "type": "str",
                  "choices": ["present", "absent"]},
        "dlp_fp_doc_source": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "state": {"required": False, "type": "str",
                          "choices": ["present", "absent"]},
                "date": {"required": False, "type": "int"},
                "file_path": {"required": False, "type": "str"},
                "file_pattern": {"required": False, "type": "str"},
                "keep_modified": {"required": False, "type": "str",
                                  "choices": ["enable",
                                              "disable"]},
                "name": {"required": True, "type": "str"},
                "password": {"required": False, "type": "str"},
                "period": {"required": False, "type": "str",
                           "choices": ["none",
                                       "daily",
                                       "weekly",
                                       "monthly"]},
                "remove_deleted": {"required": False, "type": "str",
                                   "choices": ["enable",
                                               "disable"]},
                "scan_on_creation": {"required": False, "type": "str",
                                     "choices": ["enable",
                                                 "disable"]},
                "scan_subdirectories": {"required": False, "type": "str",
                                        "choices": ["enable",
                                                    "disable"]},
                "sensitivity": {"required": False, "type": "str"},
                "server": {"required": False, "type": "str"},
                "server_type": {"required": False, "type": "str",
                                "choices": ["samba"]},
                "tod_hour": {"required": False, "type": "int"},
                "tod_min": {"required": False, "type": "int"},
                "username": {"required": False, "type": "str"},
                "vdom": {"required": False, "type": "str",
                         "choices": ["mgmt",
                                     "current"]},
                "weekday": {"required": False, "type": "str",
                            "choices": ["sunday",
                                        "monday",
                                        "tuesday",
                                        "wednesday",
                                        "thursday",
                                        "friday",
                                        "saturday"]}

            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields,
                           supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token', module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_dlp(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn("Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv")

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 20
0
def main():
    mkeyname = 'name'
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "state": {
            "required": False,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "user_radius": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "state": {
                    "required": False,
                    "type": "str",
                    "choices": ["present", "absent"]
                },
                "accounting_server": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "id": {
                            "required": True,
                            "type": "int"
                        },
                        "port": {
                            "required": False,
                            "type": "int"
                        },
                        "secret": {
                            "required": False,
                            "type": "str"
                        },
                        "server": {
                            "required": False,
                            "type": "str"
                        },
                        "source_ip": {
                            "required": False,
                            "type": "str"
                        },
                        "status": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        }
                    }
                },
                "acct_all_servers": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "acct_interim_interval": {
                    "required": False,
                    "type": "int"
                },
                "all_usergroup": {
                    "required": False,
                    "type": "str",
                    "choices": ["disable", "enable"]
                },
                "auth_type": {
                    "required": False,
                    "type": "str",
                    "choices":
                    ["auto", "ms_chap_v2", "ms_chap", "chap", "pap"]
                },
                "class": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "name": {
                            "required": True,
                            "type": "str"
                        }
                    }
                },
                "h3c_compatibility": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "name": {
                    "required": True,
                    "type": "str"
                },
                "nas_ip": {
                    "required": False,
                    "type": "str"
                },
                "password_encoding": {
                    "required": False,
                    "type": "str",
                    "choices": ["auto", "ISO-8859-1"]
                },
                "password_renewal": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "radius_coa": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "radius_port": {
                    "required": False,
                    "type": "int"
                },
                "rsso": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "rsso_context_timeout": {
                    "required": False,
                    "type": "int"
                },
                "rsso_endpoint_attribute": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices": [
                        "User-Name", "NAS-IP-Address", "Framed-IP-Address",
                        "Framed-IP-Netmask", "Filter-Id", "Login-IP-Host",
                        "Reply-Message", "Callback-Number", "Callback-Id",
                        "Framed-Route", "Framed-IPX-Network", "Class",
                        "Called-Station-Id", "Calling-Station-Id",
                        "NAS-Identifier", "Proxy-State", "Login-LAT-Service",
                        "Login-LAT-Node", "Login-LAT-Group",
                        "Framed-AppleTalk-Zone", "Acct-Session-Id",
                        "Acct-Multi-Session-Id"
                    ]
                },
                "rsso_endpoint_block_attribute": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices": [
                        "User-Name", "NAS-IP-Address", "Framed-IP-Address",
                        "Framed-IP-Netmask", "Filter-Id", "Login-IP-Host",
                        "Reply-Message", "Callback-Number", "Callback-Id",
                        "Framed-Route", "Framed-IPX-Network", "Class",
                        "Called-Station-Id", "Calling-Station-Id",
                        "NAS-Identifier", "Proxy-State", "Login-LAT-Service",
                        "Login-LAT-Node", "Login-LAT-Group",
                        "Framed-AppleTalk-Zone", "Acct-Session-Id",
                        "Acct-Multi-Session-Id"
                    ]
                },
                "rsso_ep_one_ip_only": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "rsso_flush_ip_session": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "rsso_log_flags": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices": [
                        "protocol-error", "profile-missing",
                        "accounting-stop-missed", "accounting-event",
                        "endpoint-block", "radiusd-other", "none"
                    ]
                },
                "rsso_log_period": {
                    "required": False,
                    "type": "int"
                },
                "rsso_radius_response": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "rsso_radius_server_port": {
                    "required": False,
                    "type": "int"
                },
                "rsso_secret": {
                    "required": False,
                    "type": "str"
                },
                "rsso_validate_request_secret": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "secondary_secret": {
                    "required": False,
                    "type": "str"
                },
                "secondary_server": {
                    "required": False,
                    "type": "str"
                },
                "secret": {
                    "required": False,
                    "type": "str"
                },
                "server": {
                    "required": False,
                    "type": "str"
                },
                "source_ip": {
                    "required": False,
                    "type": "str"
                },
                "sso_attribute": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices": [
                        "User-Name", "NAS-IP-Address", "Framed-IP-Address",
                        "Framed-IP-Netmask", "Filter-Id", "Login-IP-Host",
                        "Reply-Message", "Callback-Number", "Callback-Id",
                        "Framed-Route", "Framed-IPX-Network", "Class",
                        "Called-Station-Id", "Calling-Station-Id",
                        "NAS-Identifier", "Proxy-State", "Login-LAT-Service",
                        "Login-LAT-Node", "Login-LAT-Group",
                        "Framed-AppleTalk-Zone", "Acct-Session-Id",
                        "Acct-Multi-Session-Id"
                    ]
                },
                "sso_attribute_key": {
                    "required": False,
                    "type": "str"
                },
                "sso_attribute_value_override": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "tertiary_secret": {
                    "required": False,
                    "type": "str"
                },
                "tertiary_server": {
                    "required": False,
                    "type": "str"
                },
                "timeout": {
                    "required": False,
                    "type": "int"
                },
                "use_management_vdom": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "username_case_sensitive": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_user(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
def main():
    mkeyname = None
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "log_fortianalyzer_override_filter": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "anomaly": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "dlp_archive": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "dns": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "filter": {
                    "required": False,
                    "type": "str"
                },
                "filter_type": {
                    "required": False,
                    "type": "str",
                    "choices": ["include", "exclude"]
                },
                "forward_traffic": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "gtp": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "local_traffic": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "multicast_traffic": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "netscan_discovery": {
                    "required": False,
                    "type": "str"
                },
                "netscan_vulnerability": {
                    "required": False,
                    "type": "str"
                },
                "severity": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices": [
                        "emergency", "alert", "critical", "error", "warning",
                        "notification", "information", "debug"
                    ]
                },
                "sniffer_traffic": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "ssh": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "voip": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_log_fortianalyzer(
            module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
def main():
    mkeyname = 'name'
    fields = {
        "access_token": {"required": False, "type": "str", "no_log": True},
        "vdom": {"required": False, "type": "str", "default": "root"},
        "state": {"required": True, "type": "str",
                  "choices": ["present", "absent"]},
        "wireless_controller_hotspot20_anqp_nai_realm": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "nai_list": {"required": False, "type": "list",
                             "options": {
                                 "eap_method": {"required": False, "type": "list",
                                                "options": {
                                                    "auth_param": {"required": False, "type": "str",
                                                                   "options": {
                                                                       "id": {"required": False, "type": "str",
                                                                              "choices": ["non-eap-inner-auth",
                                                                                          "inner-auth-eap",
                                                                                          "credential",
                                                                                          "tunneled-credential"]},
                                                                       "index": {"required": True, "type": "int"},
                                                                       "val": {"required": False, "type": "str",
                                                                               "choices": ["eap-identity",
                                                                                           "eap-md5",
                                                                                           "eap-tls",
                                                                                           "eap-ttls",
                                                                                           "eap-peap",
                                                                                           "eap-sim",
                                                                                           "eap-aka",
                                                                                           "eap-aka-prime",
                                                                                           "non-eap-pap",
                                                                                           "non-eap-chap",
                                                                                           "non-eap-mschap",
                                                                                           "non-eap-mschapv2",
                                                                                           "cred-sim",
                                                                                           "cred-usim",
                                                                                           "cred-nfc",
                                                                                           "cred-hardware-token",
                                                                                           "cred-softoken",
                                                                                           "cred-certificate",
                                                                                           "cred-user-pwd",
                                                                                           "cred-none",
                                                                                           "cred-vendor-specific",
                                                                                           "tun-cred-sim",
                                                                                           "tun-cred-usim",
                                                                                           "tun-cred-nfc",
                                                                                           "tun-cred-hardware-token",
                                                                                           "tun-cred-softoken",
                                                                                           "tun-cred-certificate",
                                                                                           "tun-cred-user-pwd",
                                                                                           "tun-cred-anonymous",
                                                                                           "tun-cred-vendor-specific"]}
                                                                   }},
                                                    "index": {"required": True, "type": "int"},
                                                    "method": {"required": False, "type": "str",
                                                               "choices": ["eap-identity",
                                                                           "eap-md5",
                                                                           "eap-tls",
                                                                           "eap-ttls",
                                                                           "eap-peap",
                                                                           "eap-sim",
                                                                           "eap-aka",
                                                                           "eap-aka-prime"]}
                                                }},
                                 "encoding": {"required": False, "type": "str",
                                              "choices": ["disable",
                                                          "enable"]},
                                 "nai_realm": {"required": False, "type": "str"},
                                 "name": {"required": True, "type": "str"}
                             }},
                "name": {"required": True, "type": "str"}

            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields,
                           supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token', module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_wireless_controller_hotspot20(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn("Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv")

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
def main():
    mkeyname = 'name'
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "state": {
            "required": False,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "firewall_ssl_server": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "state": {
                    "required": False,
                    "type": "str",
                    "choices": ["present", "absent"]
                },
                "add_header_x_forwarded_proto": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "ip": {
                    "required": False,
                    "type": "str"
                },
                "mapped_port": {
                    "required": False,
                    "type": "int"
                },
                "name": {
                    "required": True,
                    "type": "str"
                },
                "port": {
                    "required": False,
                    "type": "int"
                },
                "ssl_algorithm": {
                    "required": False,
                    "type": "str",
                    "choices": ["high", "medium", "low"]
                },
                "ssl_cert": {
                    "required": False,
                    "type": "str"
                },
                "ssl_client_renegotiation": {
                    "required": False,
                    "type": "str",
                    "choices": ["allow", "deny", "secure"]
                },
                "ssl_dh_bits": {
                    "required": False,
                    "type": "str",
                    "choices": ["768", "1024", "1536", "2048"]
                },
                "ssl_max_version": {
                    "required": False,
                    "type": "str",
                    "choices": ["tls-1.0", "tls-1.1", "tls-1.2"]
                },
                "ssl_min_version": {
                    "required": False,
                    "type": "str",
                    "choices": ["tls-1.0", "tls-1.1", "tls-1.2"]
                },
                "ssl_mode": {
                    "required": False,
                    "type": "str",
                    "choices": ["half", "full"]
                },
                "ssl_send_empty_frags": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "url_rewrite": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_firewall(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 24
0
def main():
    mkeyname = None
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "router_multicast6": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "interface": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "hello_holdtime": {
                            "required": False,
                            "type": "int"
                        },
                        "hello_interval": {
                            "required": False,
                            "type": "int"
                        },
                        "name": {
                            "required": True,
                            "type": "str"
                        }
                    }
                },
                "multicast_pmtu": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "multicast_routing": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "pim_sm_global": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "register_rate_limit": {
                            "required": False,
                            "type": "int"
                        },
                        "rp_address": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "id": {
                                    "required": True,
                                    "type": "int"
                                },
                                "ip6_address": {
                                    "required": False,
                                    "type": "str"
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_router(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 25
0
def main():
    mkeyname = 'name'
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "state": {
            "required": False,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "firewall_internet_service_group": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "state": {
                    "required": False,
                    "type": "str",
                    "choices": ["present", "absent"]
                },
                "comment": {
                    "required": False,
                    "type": "str"
                },
                "member": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "id": {
                            "required": True,
                            "type": "int"
                        }
                    }
                },
                "name": {
                    "required": True,
                    "type": "str"
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_firewall(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
def main():
    mkeyname = 'id'
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "state": {
            "required": False,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "extender_controller_extender": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "state": {
                    "required": False,
                    "type": "str",
                    "choices": ["present", "absent"]
                },
                "aaa_shared_secret": {
                    "required": False,
                    "type": "str"
                },
                "access_point_name": {
                    "required": False,
                    "type": "str"
                },
                "admin": {
                    "required": False,
                    "type": "str",
                    "choices": ["disable", "discovered", "enable"]
                },
                "at_dial_script": {
                    "required": False,
                    "type": "str"
                },
                "billing_start_day": {
                    "required": False,
                    "type": "int"
                },
                "cdma_aaa_spi": {
                    "required": False,
                    "type": "str"
                },
                "cdma_ha_spi": {
                    "required": False,
                    "type": "str"
                },
                "cdma_nai": {
                    "required": False,
                    "type": "str"
                },
                "conn_status": {
                    "required": False,
                    "type": "int"
                },
                "description": {
                    "required": False,
                    "type": "str"
                },
                "dial_mode": {
                    "required": False,
                    "type": "str",
                    "choices": ["dial-on-demand", "always-connect"]
                },
                "dial_status": {
                    "required": False,
                    "type": "int"
                },
                "ext_name": {
                    "required": False,
                    "type": "str"
                },
                "ha_shared_secret": {
                    "required": False,
                    "type": "str"
                },
                "id": {
                    "required": True,
                    "type": "str"
                },
                "ifname": {
                    "required": False,
                    "type": "str"
                },
                "initiated_update": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "mode": {
                    "required": False,
                    "type": "str",
                    "choices": ["standalone", "redundant"]
                },
                "modem_passwd": {
                    "required": False,
                    "type": "str"
                },
                "modem_type": {
                    "required": False,
                    "type": "str",
                    "choices": ["cdma", "gsm/lte", "wimax"]
                },
                "multi_mode": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices":
                    ["auto", "auto-3g", "force-lte", "force-3g", "force-2g"]
                },
                "ppp_auth_protocol": {
                    "required": False,
                    "type": "str",
                    "choices": ["auto", "pap", "chap"]
                },
                "ppp_echo_request": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "ppp_password": {
                    "required": False,
                    "type": "str"
                },
                "ppp_username": {
                    "required": False,
                    "type": "str"
                },
                "primary_ha": {
                    "required": False,
                    "type": "str"
                },
                "quota_limit_mb": {
                    "required": False,
                    "type": "int"
                },
                "redial": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices": [
                        "none", "1", "2", "3", "4", "5", "6", "7", "8", "9",
                        "10"
                    ]
                },
                "redundant_intf": {
                    "required": False,
                    "type": "str"
                },
                "roaming": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "role": {
                    "required": False,
                    "type": "str",
                    "choices": ["none", "primary", "secondary"]
                },
                "secondary_ha": {
                    "required": False,
                    "type": "str"
                },
                "sim_pin": {
                    "required": False,
                    "type": "str"
                },
                "vdom": {
                    "required": False,
                    "type": "int"
                },
                "wimax_auth_protocol": {
                    "required": False,
                    "type": "str",
                    "choices": ["tls", "ttls"]
                },
                "wimax_carrier": {
                    "required": False,
                    "type": "str"
                },
                "wimax_realm": {
                    "required": False,
                    "type": "str"
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_extender_controller(
            module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
Ejemplo n.º 27
0
def main():
    mkeyname = None
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "log_syslogd_override_setting": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "certificate": {
                    "required": False,
                    "type": "str"
                },
                "custom_field_name": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "custom": {
                            "required": False,
                            "type": "str"
                        },
                        "id": {
                            "required": True,
                            "type": "int"
                        },
                        "name": {
                            "required": False,
                            "type": "str"
                        }
                    }
                },
                "enc_algorithm": {
                    "required": False,
                    "type": "str",
                    "choices": ["high-medium", "high", "low", "disable"]
                },
                "facility": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices": [
                        "kernel", "user", "mail", "daemon", "auth", "syslog",
                        "lpr", "news", "uucp", "cron", "authpriv", "ftp",
                        "ntp", "audit", "alert", "clock", "local0", "local1",
                        "local2", "local3", "local4", "local5", "local6",
                        "local7"
                    ]
                },
                "format": {
                    "required": False,
                    "type": "str",
                    "choices": ["default", "csv", "cef"]
                },
                "mode": {
                    "required": False,
                    "type": "str",
                    "choices": ["udp", "legacy-reliable", "reliable"]
                },
                "override": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "port": {
                    "required": False,
                    "type": "int"
                },
                "server": {
                    "required": False,
                    "type": "str"
                },
                "source_ip": {
                    "required": False,
                    "type": "str"
                },
                "status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_log_syslogd(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
def main():
    mkeyname = 'policyid'
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "state": {
            "required": False,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "firewall_interface_policy6": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "state": {
                    "required": False,
                    "type": "str",
                    "choices": ["present", "absent"]
                },
                "address_type": {
                    "required": False,
                    "type": "str",
                    "choices": ["ipv4", "ipv6"]
                },
                "application_list": {
                    "required": False,
                    "type": "str"
                },
                "application_list_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "av_profile": {
                    "required": False,
                    "type": "str"
                },
                "av_profile_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "comments": {
                    "required": False,
                    "type": "str"
                },
                "dlp_sensor": {
                    "required": False,
                    "type": "str"
                },
                "dlp_sensor_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "dsri": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "dstaddr6": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "name": {
                            "required": True,
                            "type": "str"
                        }
                    }
                },
                "emailfilter_profile": {
                    "required": False,
                    "type": "str"
                },
                "emailfilter_profile_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "interface": {
                    "required": False,
                    "type": "str"
                },
                "ips_sensor": {
                    "required": False,
                    "type": "str"
                },
                "ips_sensor_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "label": {
                    "required": False,
                    "type": "str"
                },
                "logtraffic": {
                    "required": False,
                    "type": "str",
                    "choices": ["all", "utm", "disable"]
                },
                "policyid": {
                    "required": True,
                    "type": "int"
                },
                "service6": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "name": {
                            "required": True,
                            "type": "str"
                        }
                    }
                },
                "srcaddr6": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "name": {
                            "required": True,
                            "type": "str"
                        }
                    }
                },
                "status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "webfilter_profile": {
                    "required": False,
                    "type": "str"
                },
                "webfilter_profile_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_firewall(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
def main():
    fields = {
        "host": {"required": False, "type": "str"},
        "username": {"required": False, "type": "str"},
        "password": {"required": False, "type": "str", "default": "", "no_log": True},
        "vdom": {"required": False, "type": "str", "default": "root"},
        "https": {"required": False, "type": "bool", "default": True},
        "ssl_verify": {"required": False, "type": "bool", "default": True},
        "state": {"required": True, "type": "str",
                  "choices": ["present", "absent"]},
        "system_ddns": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "bound_ip": {"required": False, "type": "str"},
                "clear_text": {"required": False, "type": "str",
                               "choices": ["disable",
                                           "enable"]},
                "ddns_auth": {"required": False, "type": "str",
                              "choices": ["disable",
                                          "tsig"]},
                "ddns_domain": {"required": False, "type": "str"},
                "ddns_key": {"required": False, "type": "str"},
                "ddns_keyname": {"required": False, "type": "str"},
                "ddns_password": {"required": False, "type": "str"},
                "ddns_server": {"required": False, "type": "str",
                                "choices": ["dyndns.org",
                                            "dyns.net",
                                            "tzo.com",
                                            "vavic.com",
                                            "dipdns.net",
                                            "now.net.cn",
                                            "dhs.org",
                                            "easydns.com",
                                            "genericDDNS",
                                            "FortiGuardDDNS",
                                            "noip.com"]},
                "ddns_server_ip": {"required": False, "type": "str"},
                "ddns_sn": {"required": False, "type": "str"},
                "ddns_ttl": {"required": False, "type": "int"},
                "ddns_username": {"required": False, "type": "str"},
                "ddns_zone": {"required": False, "type": "str"},
                "ddnsid": {"required": True, "type": "int"},
                "monitor_interface": {"required": False, "type": "list",
                                      "options": {
                                          "interface_name": {"required": False, "type": "str"}
                                      }},
                "ssl_certificate": {"required": False, "type": "str"},
                "update_interval": {"required": False, "type": "int"},
                "use_public_ip": {"required": False, "type": "str",
                                  "choices": ["disable",
                                              "enable"]}

            }
        }
    }

    module = AnsibleModule(argument_spec=fields,
                           supports_check_mode=False)

    # legacy_mode refers to using fortiosapi instead of HTTPAPI
    legacy_mode = 'host' in module.params and module.params['host'] is not None and \
                  'username' in module.params and module.params['username'] is not None and \
                  'password' in module.params and module.params['password'] is not None

    versions_check_result = None
    if not legacy_mode:
        if module._socket_path:
            connection = Connection(module._socket_path)
            fos = FortiOSHandler(connection)

            is_error, has_changed, result = fortios_system(module.params, fos)
            versions_check_result = connection.get_system_version()
        else:
            module.fail_json(**FAIL_SOCKET_MSG)
    else:
        try:
            from fortiosapi import FortiOSAPI
        except ImportError:
            module.fail_json(msg="fortiosapi module is required")

        fos = FortiOSAPI()

        login(module.params, fos)
        is_error, has_changed, result = fortios_system(module.params, fos)
        fos.logout()

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn("Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv")

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)
def main():
    mkeyname = 'name'
    fields = {
        "access_token": {
            "required": False,
            "type": "str",
            "no_log": True
        },
        "vdom": {
            "required": False,
            "type": "str",
            "default": "root"
        },
        "state": {
            "required": True,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "system_dns_database": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "allow_transfer": {
                    "required": False,
                    "type": "str"
                },
                "authoritative": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "contact": {
                    "required": False,
                    "type": "str"
                },
                "dns_entry": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "canonical_name": {
                            "required": False,
                            "type": "str"
                        },
                        "hostname": {
                            "required": False,
                            "type": "str"
                        },
                        "id": {
                            "required": True,
                            "type": "int"
                        },
                        "ip": {
                            "required": False,
                            "type": "str"
                        },
                        "ipv6": {
                            "required": False,
                            "type": "str"
                        },
                        "preference": {
                            "required": False,
                            "type": "int"
                        },
                        "status": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "ttl": {
                            "required": False,
                            "type": "int"
                        },
                        "type": {
                            "required":
                            False,
                            "type":
                            "str",
                            "choices": [
                                "A", "NS", "CNAME", "MX", "AAAA", "PTR",
                                "PTR_V6"
                            ]
                        }
                    }
                },
                "domain": {
                    "required": False,
                    "type": "str"
                },
                "forwarder": {
                    "required": False,
                    "type": "str"
                },
                "ip_master": {
                    "required": False,
                    "type": "str"
                },
                "name": {
                    "required": True,
                    "type": "str"
                },
                "primary_name": {
                    "required": False,
                    "type": "str"
                },
                "source_ip": {
                    "required": False,
                    "type": "str"
                },
                "status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "ttl": {
                    "required": False,
                    "type": "int"
                },
                "type": {
                    "required": False,
                    "type": "str",
                    "choices": ["master", "slave"]
                },
                "view": {
                    "required": False,
                    "type": "str",
                    "choices": ["shadow", "public"]
                }
            }
        }
    }

    check_legacy_fortiosapi()
    module = AnsibleModule(argument_spec=fields, supports_check_mode=False)

    versions_check_result = None
    if module._socket_path:
        connection = Connection(module._socket_path)
        if 'access_token' in module.params:
            connection.set_option('access_token',
                                  module.params['access_token'])

        fos = FortiOSHandler(connection, module, mkeyname)

        is_error, has_changed, result = fortios_system(module.params, fos)
        versions_check_result = connection.get_system_version()
    else:
        module.fail_json(**FAIL_SOCKET_MSG)

    if versions_check_result and versions_check_result['matched'] is False:
        module.warn(
            "Ansible has detected version mismatch between FortOS system and galaxy, see more details by specifying option -vvv"
        )

    if not is_error:
        if versions_check_result and versions_check_result['matched'] is False:
            module.exit_json(changed=has_changed,
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.exit_json(changed=has_changed, meta=result)
    else:
        if versions_check_result and versions_check_result['matched'] is False:
            module.fail_json(msg="Error in repo",
                             version_check_warning=versions_check_result,
                             meta=result)
        else:
            module.fail_json(msg="Error in repo", meta=result)