示例#1
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": True,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "wireless_controller_ble_profile": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "advertising": {
                    "required": False,
                    "type": "str",
                    "choices": ["ibeacon", "eddystone-uid", "eddystone-url"]
                },
                "beacon_interval": {
                    "required": False,
                    "type": "int"
                },
                "ble_scanning": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "comment": {
                    "required": False,
                    "type": "str"
                },
                "eddystone_instance": {
                    "required": False,
                    "type": "str"
                },
                "eddystone_namespace": {
                    "required": False,
                    "type": "str"
                },
                "eddystone_url": {
                    "required": False,
                    "type": "str"
                },
                "eddystone_url_encode_hex": {
                    "required": False,
                    "type": "str"
                },
                "ibeacon_uuid": {
                    "required": False,
                    "type": "str"
                },
                "major_id": {
                    "required": False,
                    "type": "int"
                },
                "minor_id": {
                    "required": False,
                    "type": "int"
                },
                "name": {
                    "required": True,
                    "type": "str"
                },
                "txpower": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices": [
                        "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
                        "11", "12"
                    ]
                }
            }
        }
    }

    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

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

            is_error, has_changed, result = fortios_wireless_controller(
                module.params, fos)
        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_wireless_controller(
            module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, 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"]
        },
        "vpn_ssl_web_user_group_bookmark": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "bookmarks": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "additional_params": {
                            "required": False,
                            "type": "str"
                        },
                        "apptype": {
                            "required":
                            False,
                            "type":
                            "str",
                            "choices": [
                                "citrix", "ftp", "portforward", "rdp", "smb",
                                "ssh", "telnet", "vnc", "web"
                            ]
                        },
                        "description": {
                            "required": False,
                            "type": "str"
                        },
                        "folder": {
                            "required": False,
                            "type": "str"
                        },
                        "form_data": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "name": {
                                    "required": True,
                                    "type": "str"
                                },
                                "value": {
                                    "required": False,
                                    "type": "str"
                                }
                            }
                        },
                        "host": {
                            "required": False,
                            "type": "str"
                        },
                        "listening_port": {
                            "required": False,
                            "type": "int"
                        },
                        "load_balancing_info": {
                            "required": False,
                            "type": "str"
                        },
                        "logon_password": {
                            "required": False,
                            "type": "str"
                        },
                        "logon_user": {
                            "required": False,
                            "type": "str"
                        },
                        "name": {
                            "required": True,
                            "type": "str"
                        },
                        "port": {
                            "required": False,
                            "type": "int"
                        },
                        "preconnection_blob": {
                            "required": False,
                            "type": "str"
                        },
                        "preconnection_id": {
                            "required": False,
                            "type": "int"
                        },
                        "remote_port": {
                            "required": False,
                            "type": "int"
                        },
                        "security": {
                            "required": False,
                            "type": "str",
                            "choices": ["rdp", "nla", "tls", "any"]
                        },
                        "server_layout": {
                            "required":
                            False,
                            "type":
                            "str",
                            "choices": [
                                "de-de-qwertz", "en-gb-qwerty", "en-us-qwerty",
                                "es-es-qwerty", "fr-fr-azerty", "fr-ch-qwertz",
                                "it-it-qwerty", "ja-jp-qwerty", "pt-br-qwerty",
                                "sv-se-qwerty", "tr-tr-qwerty", "failsafe"
                            ]
                        },
                        "show_status_window": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "sso": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "static", "auto"]
                        },
                        "sso_credential": {
                            "required": False,
                            "type": "str",
                            "choices": ["sslvpn-login", "alternative"]
                        },
                        "sso_credential_sent_once": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "sso_password": {
                            "required": False,
                            "type": "str"
                        },
                        "sso_username": {
                            "required": False,
                            "type": "str"
                        },
                        "url": {
                            "required": False,
                            "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

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

            is_error, has_changed, result = fortios_vpn_ssl_web(
                module.params, fos)
        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_vpn_ssl_web(module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, 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
        },
        "antivirus_heuristic": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "mode": {
                    "required": False,
                    "type": "str",
                    "choices": ["pass", "block", "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_antivirus(
                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_antivirus(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():
    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_addrgrp6": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "state": {"required": False, "type": "str",
                          "choices": ["present", "absent"]},
                "color": {"required": False, "type": "int"},
                "comment": {"required": False, "type": "str"},
                "member": {"required": False, "type": "list",
                           "options": {
                               "name": {"required": True, "type": "str"}
                           }},
                "name": {"required": True, "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"}
                                         }}
                            }},
                "uuid": {"required": False, "type": "str"},
                "visibility": {"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

    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)
        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 not is_error:
        module.exit_json(changed=has_changed, 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_snmp_user": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "auth_proto": {
                    "required": False,
                    "type": "str",
                    "choices": ["md5", "sha"]
                },
                "auth_pwd": {
                    "required": False,
                    "type": "str"
                },
                "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"
                    ]
                },
                "ha_direct": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "name": {
                    "required": True,
                    "type": "str"
                },
                "notify_hosts": {
                    "required": False,
                    "type": "list"
                },
                "notify_hosts6": {
                    "required": False,
                    "type": "list"
                },
                "priv_proto": {
                    "required": False,
                    "type": "str",
                    "choices": ["aes", "des", "aes256", "aes256cisco"]
                },
                "priv_pwd": {
                    "required": False,
                    "type": "str"
                },
                "queries": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "query_port": {
                    "required": False,
                    "type": "int"
                },
                "security_level": {
                    "required": False,
                    "type": "str",
                    "choices":
                    ["no-auth-no-priv", "auth-no-priv", "auth-priv"]
                },
                "source_ip": {
                    "required": False,
                    "type": "str"
                },
                "source_ipv6": {
                    "required": False,
                    "type": "str"
                },
                "status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "trap_lport": {
                    "required": False,
                    "type": "int"
                },
                "trap_rport": {
                    "required": False,
                    "type": "int"
                },
                "trap_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

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

            is_error, has_changed, result = fortios_system_snmp(
                module.params, fos)
        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_snmp(module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, 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
        },
        "ips_settings": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "ips_packet_quota": {
                    "required": False,
                    "type": "int"
                },
                "packet_log_history": {
                    "required": False,
                    "type": "int"
                },
                "packet_log_memory": {
                    "required": False,
                    "type": "int"
                },
                "packet_log_post_attack": {
                    "required": False,
                    "type": "int"
                }
            }
        }
    }

    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

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

            is_error, has_changed, result = fortios_ips(module.params, fos)
        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_ips(module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, meta=result)
    else:
        module.fail_json(msg="Error in repo", meta=result)
示例#7
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
        },
        "log_fortianalyzer2_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"]
                }
            }
        }
    }

    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

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

            is_error, has_changed, result = fortios_log_fortianalyzer2(
                module.params, fos)
        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_log_fortianalyzer2(
            module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, 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
        },
        "system_password_policy_guest_admin": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "apply_to": {
                    "required": False,
                    "type": "str",
                    "choices": ["guest-admin-password"]
                },
                "change_4_characters": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "expire_day": {
                    "required": False,
                    "type": "int"
                },
                "expire_status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "min_lower_case_letter": {
                    "required": False,
                    "type": "int"
                },
                "min_non_alphanumeric": {
                    "required": False,
                    "type": "int"
                },
                "min_number": {
                    "required": False,
                    "type": "int"
                },
                "min_upper_case_letter": {
                    "required": False,
                    "type": "int"
                },
                "minimum_length": {
                    "required": False,
                    "type": "int"
                },
                "reuse_password": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "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

    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)
        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 not is_error:
        module.exit_json(changed=has_changed, meta=result)
    else:
        module.fail_json(msg="Error in repo", meta=result)
示例#9
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_ssh_host_key": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "state": {"required": False, "type": "str",
                          "choices": ["present", "absent"]},
                "hostname": {"required": False, "type": "str"},
                "ip": {"required": False, "type": "str"},
                "name": {"required": True, "type": "str"},
                "nid": {"required": False, "type": "str",
                        "choices": ["256", "384", "521"]},
                "port": {"required": False, "type": "int"},
                "public_key": {"required": False, "type": "str"},
                "status": {"required": False, "type": "str",
                           "choices": ["trusted", "revoked"]},
                "type": {"required": False, "type": "str",
                         "choices": ["RSA", "DSA", "ECDSA",
                                     "ED25519", "RSA-CA", "DSA-CA",
                                     "ECDSA-CA", "ED25519-CA"]}

            }
        }
    }

    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

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

            is_error, has_changed, result = fortios_firewall_ssh(module.params, fos)
        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_ssh(module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, meta=result)
    else:
        module.fail_json(msg="Error in repo", meta=result)
示例#10
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": True,
            "type": "str",
            "choices": ["present", "absent"]
        },
        "switch_controller_qos_ip_dscp_map": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "description": {
                    "required": False,
                    "type": "str"
                },
                "map": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "cos_queue": {
                            "required": False,
                            "type": "int"
                        },
                        "diffserv": {
                            "required":
                            False,
                            "type":
                            "str",
                            "choices": [
                                "CS0", "CS1", "AF11", "AF12", "AF13", "CS2",
                                "AF21", "AF22", "AF23", "CS3", "AF31", "AF32",
                                "AF33", "CS4", "AF41", "AF42", "AF43", "CS5",
                                "EF", "CS6", "CS7"
                            ]
                        },
                        "ip_precedence": {
                            "required":
                            False,
                            "type":
                            "str",
                            "choices": [
                                "network-control", "internetwork-control",
                                "critic-ecp", "flashoverride", "flash",
                                "immediate", "priority", "routine"
                            ]
                        },
                        "name": {
                            "required": True,
                            "type": "str"
                        },
                        "value": {
                            "required": False,
                            "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_switch_controller_qos(
                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_switch_controller_qos(
            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():
    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"]},
        "dnsfilter_profile": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "state": {"required": False, "type": "str",
                          "choices": ["present", "absent"]},
                "block_action": {"required": False, "type": "str",
                                 "choices": ["block", "redirect"]},
                "block_botnet": {"required": False, "type": "str",
                                 "choices": ["disable", "enable"]},
                "comment": {"required": False, "type": "str"},
                "domain_filter": {"required": False, "type": "dict",
                                  "options": {
                                      "domain_filter_table": {"required": False, "type": "int"}
                                  }},
                "external_ip_blocklist": {"required": False, "type": "list",
                                          "options": {
                                              "name": {"required": True, "type": "str"}
                                          }},
                "ftgd_dns": {"required": False, "type": "dict",
                             "options": {
                                 "filters": {"required": False, "type": "list",
                                             "options": {
                                                 "action": {"required": False, "type": "str",
                                                            "choices": ["block", "monitor"]},
                                                 "category": {"required": False, "type": "int"},
                                                 "id": {"required": True, "type": "int"},
                                                 "log": {"required": False, "type": "str",
                                                         "choices": ["enable", "disable"]}
                                             }},
                                 "options": {"required": False, "type": "str",
                                             "choices": ["error-allow", "ftgd-disable"]}
                             }},
                "log_all_domain": {"required": False, "type": "str",
                                   "choices": ["enable", "disable"]},
                "name": {"required": True, "type": "str"},
                "redirect_portal": {"required": False, "type": "str"},
                "safe_search": {"required": False, "type": "str",
                                "choices": ["disable", "enable"]},
                "sdns_domain_log": {"required": False, "type": "str",
                                    "choices": ["enable", "disable"]},
                "sdns_ftgd_err_log": {"required": False, "type": "str",
                                      "choices": ["enable", "disable"]},
                "youtube_restrict": {"required": False, "type": "str",
                                     "choices": ["strict", "moderate"]}

            }
        }
    }

    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

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

            is_error, has_changed, result = fortios_dnsfilter(module.params, fos)
        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_dnsfilter(module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, meta=result)
    else:
        module.fail_json(msg="Error in repo", meta=result)
示例#12
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"]},
        "authentication_scheme": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "state": {"required": False, "type": "str",
                          "choices": ["present", "absent"]},
                "domain_controller": {"required": False, "type": "str"},
                "fsso_agent_for_ntlm": {"required": False, "type": "str"},
                "fsso_guest": {"required": False, "type": "str",
                               "choices": ["enable", "disable"]},
                "kerberos_keytab": {"required": False, "type": "str"},
                "method": {"required": False, "type": "str",
                           "choices": ["ntlm", "basic", "digest",
                                       "form", "negotiate", "fsso",
                                       "rsso", "ssh-publickey"]},
                "name": {"required": True, "type": "str"},
                "negotiate_ntlm": {"required": False, "type": "str",
                                   "choices": ["enable", "disable"]},
                "require_tfa": {"required": False, "type": "str",
                                "choices": ["enable", "disable"]},
                "ssh_ca": {"required": False, "type": "str"},
                "user_database": {"required": False, "type": "list",
                                  "options": {
                                      "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

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

            is_error, has_changed, result = fortios_authentication(module.params, fos)
        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_authentication(module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, 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"]
        },
        "user_local": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "auth_concurrent_override": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "auth_concurrent_value": {
                    "required": False,
                    "type": "int"
                },
                "authtimeout": {
                    "required": False,
                    "type": "int"
                },
                "email_to": {
                    "required": False,
                    "type": "str"
                },
                "fortitoken": {
                    "required": False,
                    "type": "str"
                },
                "id": {
                    "required": False,
                    "type": "int"
                },
                "ldap_server": {
                    "required": False,
                    "type": "str"
                },
                "name": {
                    "required": True,
                    "type": "str"
                },
                "passwd": {
                    "required": False,
                    "type": "str"
                },
                "passwd_policy": {
                    "required": False,
                    "type": "str"
                },
                "passwd_time": {
                    "required": False,
                    "type": "str"
                },
                "ppk_identity": {
                    "required": False,
                    "type": "str"
                },
                "ppk_secret": {
                    "required": False,
                    "type": "str"
                },
                "radius_server": {
                    "required": False,
                    "type": "str"
                },
                "sms_custom_server": {
                    "required": False,
                    "type": "str"
                },
                "sms_phone": {
                    "required": False,
                    "type": "str"
                },
                "sms_server": {
                    "required": False,
                    "type": "str",
                    "choices": ["fortiguard", "custom"]
                },
                "status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "two_factor": {
                    "required": False,
                    "type": "str",
                    "choices": ["disable", "fortitoken", "email", "sms"]
                },
                "type": {
                    "required": False,
                    "type": "str",
                    "choices": ["password", "radius", "tacacs+", "ldap"]
                },
                "workstation": {
                    "required": False,
                    "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

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

            is_error, has_changed, result = fortios_user(module.params, fos)
        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_user(module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, 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"]
        },
        "report_chart": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "state": {
                    "required": False,
                    "type": "str",
                    "choices": ["present", "absent"]
                },
                "background": {
                    "required": False,
                    "type": "str"
                },
                "category": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices": [
                        "misc", "traffic", "event", "virus", "webfilter",
                        "attack", "spam", "dlp", "app-ctrl", "vulnerability"
                    ]
                },
                "category_series": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "databind": {
                            "required": False,
                            "type": "str"
                        },
                        "font_size": {
                            "required": False,
                            "type": "int"
                        }
                    }
                },
                "color_palette": {
                    "required": False,
                    "type": "str"
                },
                "column": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "detail_unit": {
                            "required": False,
                            "type": "str"
                        },
                        "detail_value": {
                            "required": False,
                            "type": "str"
                        },
                        "footer_unit": {
                            "required": False,
                            "type": "str"
                        },
                        "footer_value": {
                            "required": False,
                            "type": "str"
                        },
                        "header_value": {
                            "required": False,
                            "type": "str"
                        },
                        "id": {
                            "required": True,
                            "type": "int"
                        },
                        "mapping": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "displayname": {
                                    "required": False,
                                    "type": "str"
                                },
                                "id": {
                                    "required": True,
                                    "type": "int"
                                },
                                "op": {
                                    "required":
                                    False,
                                    "type":
                                    "str",
                                    "choices": [
                                        "none", "greater", "greater-equal",
                                        "less", "less-equal", "equal",
                                        "between"
                                    ]
                                },
                                "value_type": {
                                    "required": False,
                                    "type": "str",
                                    "choices": ["integer", "string"]
                                },
                                "value1": {
                                    "required": False,
                                    "type": "str"
                                },
                                "value2": {
                                    "required": False,
                                    "type": "str"
                                }
                            }
                        }
                    }
                },
                "comments": {
                    "required": False,
                    "type": "str"
                },
                "dataset": {
                    "required": False,
                    "type": "str"
                },
                "dimension": {
                    "required": False,
                    "type": "str",
                    "choices": ["2D", "3D"]
                },
                "drill_down_charts": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "chart_name": {
                            "required": False,
                            "type": "str"
                        },
                        "id": {
                            "required": True,
                            "type": "int"
                        },
                        "status": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        }
                    }
                },
                "favorite": {
                    "required": False,
                    "type": "str",
                    "choices": ["no", "yes"]
                },
                "graph_type": {
                    "required": False,
                    "type": "str",
                    "choices": ["none", "bar", "pie", "line", "flow"]
                },
                "legend": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "legend_font_size": {
                    "required": False,
                    "type": "int"
                },
                "name": {
                    "required": True,
                    "type": "str"
                },
                "period": {
                    "required": False,
                    "type": "str",
                    "choices": ["last24h", "last7d"]
                },
                "policy": {
                    "required": False,
                    "type": "int"
                },
                "style": {
                    "required": False,
                    "type": "str",
                    "choices": ["auto", "manual"]
                },
                "title": {
                    "required": False,
                    "type": "str"
                },
                "title_font_size": {
                    "required": False,
                    "type": "int"
                },
                "type": {
                    "required": False,
                    "type": "str",
                    "choices": ["graph", "table"]
                },
                "value_series": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "databind": {
                            "required": False,
                            "type": "str"
                        }
                    }
                },
                "x_series": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "caption": {
                            "required": False,
                            "type": "str"
                        },
                        "caption_font_size": {
                            "required": False,
                            "type": "int"
                        },
                        "databind": {
                            "required": False,
                            "type": "str"
                        },
                        "font_size": {
                            "required": False,
                            "type": "int"
                        },
                        "is_category": {
                            "required": False,
                            "type": "str",
                            "choices": ["yes", "no"]
                        },
                        "label_angle": {
                            "required": False,
                            "type": "str",
                            "choices": ["45-degree", "vertical", "horizontal"]
                        },
                        "scale_direction": {
                            "required": False,
                            "type": "str",
                            "choices": ["decrease", "increase"]
                        },
                        "scale_format": {
                            "required":
                            False,
                            "type":
                            "str",
                            "choices": [
                                "YYYY-MM-DD-HH-MM", "YYYY-MM-DD HH",
                                "YYYY-MM-DD", "YYYY-MM", "YYYY", "HH-MM",
                                "MM-DD"
                            ]
                        },
                        "scale_step": {
                            "required": False,
                            "type": "int"
                        },
                        "scale_unit": {
                            "required": False,
                            "type": "str",
                            "choices":
                            ["minute", "hour", "day", "month", "year"]
                        },
                        "unit": {
                            "required": False,
                            "type": "str"
                        }
                    }
                },
                "y_series": {
                    "required": False,
                    "type": "dict",
                    "options": {
                        "caption": {
                            "required": False,
                            "type": "str"
                        },
                        "caption_font_size": {
                            "required": False,
                            "type": "int"
                        },
                        "databind": {
                            "required": False,
                            "type": "str"
                        },
                        "extra_databind": {
                            "required": False,
                            "type": "str"
                        },
                        "extra_y": {
                            "required": False,
                            "type": "str",
                            "choices": ["enable", "disable"]
                        },
                        "extra_y_legend": {
                            "required": False,
                            "type": "str"
                        },
                        "font_size": {
                            "required": False,
                            "type": "int"
                        },
                        "group": {
                            "required": False,
                            "type": "str"
                        },
                        "label_angle": {
                            "required": False,
                            "type": "str",
                            "choices": ["45-degree", "vertical", "horizontal"]
                        },
                        "unit": {
                            "required": False,
                            "type": "str"
                        },
                        "y_legend": {
                            "required": False,
                            "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_report(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_report(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():
    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"]
        },
        "ips_sensor": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "state": {
                    "required": False,
                    "type": "str",
                    "choices": ["present", "absent"]
                },
                "block_malicious_url": {
                    "required": False,
                    "type": "str",
                    "choices": ["disable", "enable"]
                },
                "comment": {
                    "required": False,
                    "type": "str"
                },
                "entries": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "action": {
                            "required": False,
                            "type": "str",
                            "choices": ["pass", "block", "reset", "default"]
                        },
                        "application": {
                            "required": False,
                            "type": "str"
                        },
                        "exempt_ip": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "dst_ip": {
                                    "required": False,
                                    "type": "str"
                                },
                                "id": {
                                    "required": True,
                                    "type": "int"
                                },
                                "src_ip": {
                                    "required": False,
                                    "type": "str"
                                }
                            }
                        },
                        "id": {
                            "required": True,
                            "type": "int"
                        },
                        "location": {
                            "required": False,
                            "type": "str"
                        },
                        "log": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "log_attack_context": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "log_packet": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "os": {
                            "required": False,
                            "type": "str"
                        },
                        "protocol": {
                            "required": False,
                            "type": "str"
                        },
                        "quarantine": {
                            "required": False,
                            "type": "str",
                            "choices": ["none", "attacker"]
                        },
                        "quarantine_expiry": {
                            "required": False,
                            "type": "str"
                        },
                        "quarantine_log": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "rate_count": {
                            "required": False,
                            "type": "int"
                        },
                        "rate_duration": {
                            "required": False,
                            "type": "int"
                        },
                        "rate_mode": {
                            "required": False,
                            "type": "str",
                            "choices": ["periodical", "continuous"]
                        },
                        "rate_track": {
                            "required":
                            False,
                            "type":
                            "str",
                            "choices": [
                                "none", "src-ip", "dest-ip", "dhcp-client-mac",
                                "dns-domain"
                            ]
                        },
                        "rule": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "id": {
                                    "required": True,
                                    "type": "int"
                                }
                            }
                        },
                        "severity": {
                            "required": False,
                            "type": "str"
                        },
                        "status": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable", "default"]
                        }
                    }
                },
                "extended_log": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "filter": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "action": {
                            "required": False,
                            "type": "str",
                            "choices": ["pass", "block", "reset", "default"]
                        },
                        "application": {
                            "required": False,
                            "type": "str"
                        },
                        "location": {
                            "required": False,
                            "type": "str"
                        },
                        "log": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "log_packet": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "name": {
                            "required": True,
                            "type": "str"
                        },
                        "os": {
                            "required": False,
                            "type": "str"
                        },
                        "protocol": {
                            "required": False,
                            "type": "str"
                        },
                        "quarantine": {
                            "required": False,
                            "type": "str",
                            "choices": ["none", "attacker"]
                        },
                        "quarantine_expiry": {
                            "required": False,
                            "type": "int"
                        },
                        "quarantine_log": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "severity": {
                            "required": False,
                            "type": "str"
                        },
                        "status": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable", "default"]
                        }
                    }
                },
                "name": {
                    "required": True,
                    "type": "str"
                },
                "override": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "action": {
                            "required": False,
                            "type": "str",
                            "choices": ["pass", "block", "reset"]
                        },
                        "exempt_ip": {
                            "required": False,
                            "type": "list",
                            "options": {
                                "dst_ip": {
                                    "required": False,
                                    "type": "str"
                                },
                                "id": {
                                    "required": True,
                                    "type": "int"
                                },
                                "src_ip": {
                                    "required": False,
                                    "type": "str"
                                }
                            }
                        },
                        "log": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "log_packet": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "quarantine": {
                            "required": False,
                            "type": "str",
                            "choices": ["none", "attacker"]
                        },
                        "quarantine_expiry": {
                            "required": False,
                            "type": "int"
                        },
                        "quarantine_log": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        },
                        "rule_id": {
                            "required": False,
                            "type": "int"
                        },
                        "status": {
                            "required": False,
                            "type": "str",
                            "choices": ["disable", "enable"]
                        }
                    }
                },
                "replacemsg_group": {
                    "required": False,
                    "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_ips(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_ips(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():
    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"]
        },
        "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"
                }
            }
        }
    }

    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

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

            is_error, has_changed, result = fortios_wireless_controller_hotspot20(
                module.params, fos)
        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_wireless_controller_hotspot20(
            module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, 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
        },
        "log_fortiguard_setting": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "enc_algorithm": {
                    "required": False,
                    "type": "str",
                    "choices": ["high-medium", "high", "low"]
                },
                "source_ip": {
                    "required": False,
                    "type": "str"
                },
                "ssl_min_proto_version": {
                    "required": False,
                    "type": "str",
                    "choices":
                    ["default", "SSLv3", "TLSv1", "TLSv1-1", "TLSv1-2"]
                },
                "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"
                }
            }
        }
    }

    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

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

            is_error, has_changed, result = fortios_log_fortiguard(
                module.params, fos)
        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_log_fortiguard(
            module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, 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"]},
        "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"]}

            }
        }
    }

    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_wanopt(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_wanopt(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)
示例#19
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": 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"}

            }
        }
    }

    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_dhcp6(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_dhcp6(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():
    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
        },
        "switch_controller_lldp_settings": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "fast_start_interval": {
                    "required": False,
                    "type": "int"
                },
                "management_interface": {
                    "required": False,
                    "type": "str",
                    "choices": ["internal", "mgmt"]
                },
                "status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "tx_hold": {
                    "required": False,
                    "type": "int"
                },
                "tx_interval": {
                    "required": False,
                    "type": "int"
                }
            }
        }
    }

    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

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

            is_error, has_changed, result = fortios_switch_controller(
                module.params, fos)
        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_switch_controller(
            module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, 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"]},
        "system_admin": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "state": {"required": False, "type": "str",
                          "choices": ["present", "absent"]},
                "accprofile": {"required": False, "type": "str"},
                "accprofile_override": {"required": False, "type": "str",
                                        "choices": ["enable", "disable"]},
                "allow_remove_admin_session": {"required": False, "type": "str",
                                               "choices": ["enable", "disable"]},
                "comments": {"required": False, "type": "str"},
                "email_to": {"required": False, "type": "str"},
                "force_password_change": {"required": False, "type": "str",
                                          "choices": ["enable", "disable"]},
                "fortitoken": {"required": False, "type": "str"},
                "guest_auth": {"required": False, "type": "str",
                               "choices": ["disable", "enable"]},
                "guest_lang": {"required": False, "type": "str"},
                "guest_usergroups": {"required": False, "type": "list",
                                     "options": {
                                         "name": {"required": True, "type": "str"}
                                     }},
                "gui_dashboard": {"required": False, "type": "list",
                                  "options": {
                                      "columns": {"required": False, "type": "int"},
                                      "id": {"required": True, "type": "int"},
                                      "layout_type": {"required": False, "type": "str",
                                                      "choices": ["responsive", "fixed"]},
                                      "name": {"required": False, "type": "str"},
                                      "scope": {"required": False, "type": "str",
                                                "choices": ["global", "vdom"]},
                                      "widget": {"required": False, "type": "list",
                                                 "options": {
                                                     "fabric_device": {"required": False, "type": "str"},
                                                     "fortiview_filters": {"required": False, "type": "list",
                                                                           "options": {
                                                                               "id": {"required": True, "type": "int"},
                                                                               "key": {"required": False, "type": "str"},
                                                                               "value": {"required": False, "type": "str"}
                                                                           }},
                                                     "fortiview_sort_by": {"required": False, "type": "str"},
                                                     "fortiview_timeframe": {"required": False, "type": "str"},
                                                     "fortiview_type": {"required": False, "type": "str"},
                                                     "fortiview_visualization": {"required": False, "type": "str"},
                                                     "height": {"required": False, "type": "int"},
                                                     "id": {"required": True, "type": "int"},
                                                     "industry": {"required": False, "type": "str",
                                                                  "choices": ["default", "custom"]},
                                                     "interface": {"required": False, "type": "str"},
                                                     "region": {"required": False, "type": "str",
                                                                "choices": ["default", "custom"]},
                                                     "title": {"required": False, "type": "str"},
                                                     "type": {"required": False, "type": "str",
                                                              "choices": ["sysinfo", "licinfo", "vminfo",
                                                                          "forticloud", "cpu-usage", "memory-usage",
                                                                          "disk-usage", "log-rate", "sessions",
                                                                          "session-rate", "tr-history", "analytics",
                                                                          "usb-modem", "admins", "security-fabric",
                                                                          "security-fabric-ranking", "ha-status", "vulnerability-summary",
                                                                          "host-scan-summary", "fortiview", "botnet-activity",
                                                                          "fortimail"]},
                                                     "width": {"required": False, "type": "int"},
                                                     "x_pos": {"required": False, "type": "int"},
                                                     "y_pos": {"required": False, "type": "int"}
                                                 }}
                                  }},
                "gui_global_menu_favorites": {"required": False, "type": "list",
                                              "options": {
                                                  "id": {"required": True, "type": "str"}
                                              }},
                "gui_vdom_menu_favorites": {"required": False, "type": "list",
                                            "options": {
                                                "id": {"required": True, "type": "str"}
                                            }},
                "hidden": {"required": False, "type": "int"},
                "history0": {"required": False, "type": "str"},
                "history1": {"required": False, "type": "str"},
                "ip6_trusthost1": {"required": False, "type": "str"},
                "ip6_trusthost10": {"required": False, "type": "str"},
                "ip6_trusthost2": {"required": False, "type": "str"},
                "ip6_trusthost3": {"required": False, "type": "str"},
                "ip6_trusthost4": {"required": False, "type": "str"},
                "ip6_trusthost5": {"required": False, "type": "str"},
                "ip6_trusthost6": {"required": False, "type": "str"},
                "ip6_trusthost7": {"required": False, "type": "str"},
                "ip6_trusthost8": {"required": False, "type": "str"},
                "ip6_trusthost9": {"required": False, "type": "str"},
                "login_time": {"required": False, "type": "list",
                               "options": {
                                   "last_failed_login": {"required": False, "type": "str"},
                                   "last_login": {"required": False, "type": "str"},
                                   "usr_name": {"required": False, "type": "str"}
                               }},
                "name": {"required": True, "type": "str"},
                "password": {"required": False, "type": "str"},
                "password_expire": {"required": False, "type": "str"},
                "peer_auth": {"required": False, "type": "str",
                              "choices": ["enable", "disable"]},
                "peer_group": {"required": False, "type": "str"},
                "radius_vdom_override": {"required": False, "type": "str",
                                         "choices": ["enable", "disable"]},
                "remote_auth": {"required": False, "type": "str",
                                "choices": ["enable", "disable"]},
                "remote_group": {"required": False, "type": "str"},
                "schedule": {"required": False, "type": "str"},
                "sms_custom_server": {"required": False, "type": "str"},
                "sms_phone": {"required": False, "type": "str"},
                "sms_server": {"required": False, "type": "str",
                               "choices": ["fortiguard", "custom"]},
                "ssh_certificate": {"required": False, "type": "str"},
                "ssh_public_key1": {"required": False, "type": "str"},
                "ssh_public_key2": {"required": False, "type": "str"},
                "ssh_public_key3": {"required": False, "type": "str"},
                "trusthost1": {"required": False, "type": "str"},
                "trusthost10": {"required": False, "type": "str"},
                "trusthost2": {"required": False, "type": "str"},
                "trusthost3": {"required": False, "type": "str"},
                "trusthost4": {"required": False, "type": "str"},
                "trusthost5": {"required": False, "type": "str"},
                "trusthost6": {"required": False, "type": "str"},
                "trusthost7": {"required": False, "type": "str"},
                "trusthost8": {"required": False, "type": "str"},
                "trusthost9": {"required": False, "type": "str"},
                "two_factor": {"required": False, "type": "str",
                               "choices": ["disable", "fortitoken", "email",
                                           "sms"]},
                "vdom": {"required": False, "type": "list",
                         "options": {
                             "name": {"required": True, "type": "str"}
                         }},
                "wildcard": {"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

    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)
        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 not is_error:
        module.exit_json(changed=has_changed, 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
        },
        "wireless_controller_global": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "ap_log_server": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "ap_log_server_ip": {
                    "required": False,
                    "type": "str"
                },
                "ap_log_server_port": {
                    "required": False,
                    "type": "int"
                },
                "control_message_offload": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices": [
                        "ebp-frame", "aeroscout-tag", "ap-list", "sta-list",
                        "sta-cap-list", "stats", "aeroscout-mu"
                    ]
                },
                "data_ethernet_II": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "discovery_mc_addr": {
                    "required": False,
                    "type": "str"
                },
                "fiapp_eth_type": {
                    "required": False,
                    "type": "int"
                },
                "image_download": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "ipsec_base_ip": {
                    "required": False,
                    "type": "str"
                },
                "link_aggregation": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "location": {
                    "required": False,
                    "type": "str"
                },
                "max_clients": {
                    "required": False,
                    "type": "int"
                },
                "max_retransmit": {
                    "required": False,
                    "type": "int"
                },
                "mesh_eth_type": {
                    "required": False,
                    "type": "int"
                },
                "name": {
                    "required": False,
                    "type": "str"
                },
                "rogue_scan_mac_adjacency": {
                    "required": False,
                    "type": "int"
                },
                "wtp_share": {
                    "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

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

            is_error, has_changed, result = fortios_wireless_controller(
                module.params, fos)
        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_wireless_controller(
            module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, 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():
    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
        },
        "alertemail_setting": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "admin_login_logs": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "alert_interval": {
                    "required": False,
                    "type": "int"
                },
                "amc_interface_bypass_mode": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "antivirus_logs": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "configuration_changes_logs": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "critical_interval": {
                    "required": False,
                    "type": "int"
                },
                "debug_interval": {
                    "required": False,
                    "type": "int"
                },
                "email_interval": {
                    "required": False,
                    "type": "int"
                },
                "emergency_interval": {
                    "required": False,
                    "type": "int"
                },
                "error_interval": {
                    "required": False,
                    "type": "int"
                },
                "FDS_license_expiring_days": {
                    "required": False,
                    "type": "int"
                },
                "FDS_license_expiring_warning": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "FDS_update_logs": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "filter_mode": {
                    "required": False,
                    "type": "str",
                    "choices": ["category", "threshold"]
                },
                "FIPS_CC_errors": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "firewall_authentication_failure_logs": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "fortiguard_log_quota_warning": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "FSSO_disconnect_logs": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "HA_logs": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "information_interval": {
                    "required": False,
                    "type": "int"
                },
                "IPS_logs": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "IPsec_errors_logs": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "local_disk_usage": {
                    "required": False,
                    "type": "int"
                },
                "log_disk_usage_warning": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "mailto1": {
                    "required": False,
                    "type": "str"
                },
                "mailto2": {
                    "required": False,
                    "type": "str"
                },
                "mailto3": {
                    "required": False,
                    "type": "str"
                },
                "notification_interval": {
                    "required": False,
                    "type": "int"
                },
                "PPP_errors_logs": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "severity": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices": [
                        "emergency", "alert", "critical", "error", "warning",
                        "notification", "information", "debug"
                    ]
                },
                "ssh_logs": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "sslvpn_authentication_errors_logs": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "username": {
                    "required": False,
                    "type": "str"
                },
                "violation_traffic_logs": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "warning_interval": {
                    "required": False,
                    "type": "int"
                },
                "webfilter_logs": {
                    "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_alertemail(
                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_alertemail(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)
示例#25
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_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"]
                },
                "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"
                }
            }
        }
    }

    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():
    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
        },
        "system_autoupdate_schedule": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "day": {
                    "required":
                    False,
                    "type":
                    "str",
                    "choices": [
                        "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
                        "Friday", "Saturday"
                    ]
                },
                "frequency": {
                    "required": False,
                    "type": "str",
                    "choices": ["every", "daily", "weekly"]
                },
                "status": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "time": {
                    "required": False,
                    "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

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

            is_error, has_changed, result = fortios_system_autoupdate(
                module.params, fos)
        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_autoupdate(
            module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, 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
        },
        "system_central_management": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "allow_monitor": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "allow_push_configuration": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "allow_push_firmware": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "allow_remote_firmware_upgrade": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "enc_algorithm": {
                    "required": False,
                    "type": "str",
                    "choices": ["default", "high", "low"]
                },
                "fmg": {
                    "required": False,
                    "type": "str"
                },
                "fmg_source_ip": {
                    "required": False,
                    "type": "str"
                },
                "fmg_source_ip6": {
                    "required": False,
                    "type": "str"
                },
                "include_default_servers": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "mode": {
                    "required": False,
                    "type": "str",
                    "choices": ["normal", "backup"]
                },
                "schedule_config_restore": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "schedule_script_restore": {
                    "required": False,
                    "type": "str",
                    "choices": ["enable", "disable"]
                },
                "serial_number": {
                    "required": False,
                    "type": "str"
                },
                "server_list": {
                    "required": False,
                    "type": "list",
                    "options": {
                        "addr_type": {
                            "required": False,
                            "type": "str",
                            "choices": ["ipv4", "ipv6", "fqdn"]
                        },
                        "fqdn": {
                            "required": False,
                            "type": "str"
                        },
                        "id": {
                            "required": True,
                            "type": "int"
                        },
                        "server_address": {
                            "required": False,
                            "type": "str"
                        },
                        "server_address6": {
                            "required": False,
                            "type": "str"
                        },
                        "server_type": {
                            "required": False,
                            "type": "str",
                            "choices": ["update", "rating"]
                        }
                    }
                },
                "type": {
                    "required": False,
                    "type": "str",
                    "choices": ["fortimanager", "fortiguard", "none"]
                },
                "vdom": {
                    "required": False,
                    "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

    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)
        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 not is_error:
        module.exit_json(changed=has_changed, 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"]},
        "report_layout": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "state": {"required": False, "type": "str",
                          "choices": ["present", "absent"]},
                "body_item": {"required": False, "type": "list",
                              "options": {
                                  "chart": {"required": False, "type": "str"},
                                  "chart_options": {"required": False, "type": "str",
                                                    "choices": ["include-no-data",
                                                                "hide-title",
                                                                "show-caption"]},
                                  "column": {"required": False, "type": "int"},
                                  "content": {"required": False, "type": "str"},
                                  "description": {"required": False, "type": "str"},
                                  "drill_down_items": {"required": False, "type": "str"},
                                  "drill_down_types": {"required": False, "type": "str"},
                                  "hide": {"required": False, "type": "str",
                                           "choices": ["enable",
                                                       "disable"]},
                                  "id": {"required": True, "type": "int"},
                                  "img_src": {"required": False, "type": "str"},
                                  "list": {"required": False, "type": "list",
                                           "options": {
                                               "content": {"required": False, "type": "str"},
                                               "id": {"required": True, "type": "int"}
                                           }},
                                  "list_component": {"required": False, "type": "str",
                                                     "choices": ["bullet",
                                                                 "numbered"]},
                                  "misc_component": {"required": False, "type": "str",
                                                     "choices": ["hline",
                                                                 "page-break",
                                                                 "column-break",
                                                                 "section-start"]},
                                  "parameters": {"required": False, "type": "list",
                                                 "options": {
                                                     "id": {"required": True, "type": "int"},
                                                     "name": {"required": False, "type": "str"},
                                                     "value": {"required": False, "type": "str"}
                                                 }},
                                  "style": {"required": False, "type": "str"},
                                  "table_caption_style": {"required": False, "type": "str"},
                                  "table_column_widths": {"required": False, "type": "str"},
                                  "table_even_row_style": {"required": False, "type": "str"},
                                  "table_head_style": {"required": False, "type": "str"},
                                  "table_odd_row_style": {"required": False, "type": "str"},
                                  "text_component": {"required": False, "type": "str",
                                                     "choices": ["text",
                                                                 "heading1",
                                                                 "heading2",
                                                                 "heading3"]},
                                  "title": {"required": False, "type": "str"},
                                  "top_n": {"required": False, "type": "int"},
                                  "type": {"required": False, "type": "str",
                                           "choices": ["text",
                                                       "image",
                                                       "chart",
                                                       "misc"]}
                              }},
                "cutoff_option": {"required": False, "type": "str",
                                  "choices": ["run-time",
                                              "custom"]},
                "cutoff_time": {"required": False, "type": "str"},
                "day": {"required": False, "type": "str",
                        "choices": ["sunday",
                                    "monday",
                                    "tuesday",
                                    "wednesday",
                                    "thursday",
                                    "friday",
                                    "saturday"]},
                "description": {"required": False, "type": "str"},
                "email_recipients": {"required": False, "type": "str"},
                "email_send": {"required": False, "type": "str",
                               "choices": ["enable",
                                           "disable"]},
                "format": {"required": False, "type": "str",
                           "choices": ["pdf"]},
                "max_pdf_report": {"required": False, "type": "int"},
                "name": {"required": True, "type": "str"},
                "options": {"required": False, "type": "str",
                            "choices": ["include-table-of-content",
                                        "auto-numbering-heading",
                                        "view-chart-as-heading",
                                        "show-html-navbar-before-heading",
                                        "dummy-option"]},
                "page": {"required": False, "type": "dict",
                         "options": {
                             "column_break_before": {"required": False, "type": "str",
                                                     "choices": ["heading1",
                                                                 "heading2",
                                                                 "heading3"]},
                             "footer": {"required": False, "type": "dict",
                                        "options": {
                                            "footer_item": {"required": False, "type": "list",
                                                            "options": {
                                                                "content": {"required": False, "type": "str"},
                                                                "description": {"required": False, "type": "str"},
                                                                "id": {"required": True, "type": "int"},
                                                                "img_src": {"required": False, "type": "str"},
                                                                "style": {"required": False, "type": "str"},
                                                                "type": {"required": False, "type": "str",
                                                                         "choices": ["text",
                                                                                     "image"]}
                                                            }},
                                            "style": {"required": False, "type": "str"}
                                        }},
                             "header": {"required": False, "type": "dict",
                                        "options": {
                                            "header_item": {"required": False, "type": "list",
                                                            "options": {
                                                                "content": {"required": False, "type": "str"},
                                                                "description": {"required": False, "type": "str"},
                                                                "id": {"required": True, "type": "int"},
                                                                "img_src": {"required": False, "type": "str"},
                                                                "style": {"required": False, "type": "str"},
                                                                "type": {"required": False, "type": "str",
                                                                         "choices": ["text",
                                                                                     "image"]}
                                                            }},
                                            "style": {"required": False, "type": "str"}
                                        }},
                             "options": {"required": False, "type": "str",
                                         "choices": ["header-on-first-page",
                                                     "footer-on-first-page"]},
                             "page_break_before": {"required": False, "type": "str",
                                                   "choices": ["heading1",
                                                               "heading2",
                                                               "heading3"]},
                             "paper": {"required": False, "type": "str",
                                       "choices": ["a4",
                                                   "letter"]}
                         }},
                "schedule_type": {"required": False, "type": "str",
                                  "choices": ["demand",
                                              "daily",
                                              "weekly"]},
                "style_theme": {"required": False, "type": "str"},
                "subtitle": {"required": False, "type": "str"},
                "time": {"required": False, "type": "str"},
                "title": {"required": False, "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_report(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_report(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():
    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_replacemsg_nntp": {
            "required": False,
            "type": "dict",
            "default": None,
            "options": {
                "buffer": {
                    "required": False,
                    "type": "str"
                },
                "format": {
                    "required": False,
                    "type": "str",
                    "choices": ["none", "text", "html", "wml"]
                },
                "header": {
                    "required": False,
                    "type": "str",
                    "choices": ["none", "http", "8bit"]
                },
                "msg_type": {
                    "required": False,
                    "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

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

            is_error, has_changed, result = fortios_system_replacemsg(
                module.params, fos)
        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_replacemsg(
            module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, 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},
        "router_ospf": {
            "required": False, "type": "dict", "default": None,
            "options": {
                "abr_type": {"required": False, "type": "str",
                             "choices": ["cisco", "ibm", "shortcut",
                                         "standard"]},
                "area": {"required": False, "type": "list",
                         "options": {
                             "authentication": {"required": False, "type": "str",
                                                "choices": ["none", "text", "md5"]},
                             "default_cost": {"required": False, "type": "int"},
                             "filter_list": {"required": False, "type": "list",
                                             "options": {
                                                 "direction": {"required": False, "type": "str",
                                                               "choices": ["in", "out"]},
                                                 "id": {"required": True, "type": "int"},
                                                 "list": {"required": False, "type": "str"}
                                             }},
                             "id": {"required": True, "type": "str"},
                             "nssa_default_information_originate": {"required": False, "type": "str",
                                                                    "choices": ["enable", "always", "disable"]},
                             "nssa_default_information_originate_metric": {"required": False, "type": "int"},
                             "nssa_default_information_originate_metric_type": {"required": False, "type": "str",
                                                                                "choices": ["1", "2"]},
                             "nssa_redistribution": {"required": False, "type": "str",
                                                     "choices": ["enable", "disable"]},
                             "nssa_translator_role": {"required": False, "type": "str",
                                                      "choices": ["candidate", "never", "always"]},
                             "range": {"required": False, "type": "list",
                                       "options": {
                                           "advertise": {"required": False, "type": "str",
                                                         "choices": ["disable", "enable"]},
                                           "id": {"required": True, "type": "int"},
                                           "prefix": {"required": False, "type": "str"},
                                           "substitute": {"required": False, "type": "str"},
                                           "substitute_status": {"required": False, "type": "str",
                                                                 "choices": ["enable", "disable"]}
                                       }},
                             "shortcut": {"required": False, "type": "str",
                                          "choices": ["disable", "enable", "default"]},
                             "stub_type": {"required": False, "type": "str",
                                           "choices": ["no-summary", "summary"]},
                             "type": {"required": False, "type": "str",
                                      "choices": ["regular", "nssa", "stub"]},
                             "virtual_link": {"required": False, "type": "list",
                                              "options": {
                                                  "authentication": {"required": False, "type": "str",
                                                                     "choices": ["none", "text", "md5"]},
                                                  "authentication_key": {"required": False, "type": "str"},
                                                  "dead_interval": {"required": False, "type": "int"},
                                                  "hello_interval": {"required": False, "type": "int"},
                                                  "md5_key": {"required": False, "type": "str"},
                                                  "name": {"required": True, "type": "str"},
                                                  "peer": {"required": False, "type": "str"},
                                                  "retransmit_interval": {"required": False, "type": "int"},
                                                  "transmit_delay": {"required": False, "type": "int"}
                                              }}
                         }},
                "auto_cost_ref_bandwidth": {"required": False, "type": "int"},
                "bfd": {"required": False, "type": "str",
                        "choices": ["enable", "disable"]},
                "database_overflow": {"required": False, "type": "str",
                                      "choices": ["enable", "disable"]},
                "database_overflow_max_lsas": {"required": False, "type": "int"},
                "database_overflow_time_to_recover": {"required": False, "type": "int"},
                "default_information_metric": {"required": False, "type": "int"},
                "default_information_metric_type": {"required": False, "type": "str",
                                                    "choices": ["1", "2"]},
                "default_information_originate": {"required": False, "type": "str",
                                                  "choices": ["enable", "always", "disable"]},
                "default_information_route_map": {"required": False, "type": "str"},
                "default_metric": {"required": False, "type": "int"},
                "distance": {"required": False, "type": "int"},
                "distance_external": {"required": False, "type": "int"},
                "distance_inter_area": {"required": False, "type": "int"},
                "distance_intra_area": {"required": False, "type": "int"},
                "distribute_list": {"required": False, "type": "list",
                                    "options": {
                                        "access_list": {"required": False, "type": "str"},
                                        "id": {"required": True, "type": "int"},
                                        "protocol": {"required": False, "type": "str",
                                                     "choices": ["connected", "static", "rip"]}
                                    }},
                "distribute_list_in": {"required": False, "type": "str"},
                "distribute_route_map_in": {"required": False, "type": "str"},
                "log_neighbour_changes": {"required": False, "type": "str",
                                          "choices": ["enable", "disable"]},
                "neighbor": {"required": False, "type": "list",
                             "options": {
                                 "cost": {"required": False, "type": "int"},
                                 "id": {"required": True, "type": "int"},
                                 "ip": {"required": False, "type": "str"},
                                 "poll_interval": {"required": False, "type": "int"},
                                 "priority": {"required": False, "type": "int"}
                             }},
                "network": {"required": False, "type": "list",
                            "options": {
                                "area": {"required": False, "type": "str"},
                                "id": {"required": True, "type": "int"},
                                "prefix": {"required": False, "type": "str"}
                            }},
                "ospf_interface": {"required": False, "type": "list",
                                   "options": {
                                       "authentication": {"required": False, "type": "str",
                                                          "choices": ["none", "text", "md5"]},
                                       "authentication_key": {"required": False, "type": "str"},
                                       "bfd": {"required": False, "type": "str",
                                               "choices": ["global", "enable", "disable"]},
                                       "cost": {"required": False, "type": "int"},
                                       "database_filter_out": {"required": False, "type": "str",
                                                               "choices": ["enable", "disable"]},
                                       "dead_interval": {"required": False, "type": "int"},
                                       "hello_interval": {"required": False, "type": "int"},
                                       "hello_multiplier": {"required": False, "type": "int"},
                                       "interface": {"required": False, "type": "str"},
                                       "ip": {"required": False, "type": "str"},
                                       "md5_key": {"required": False, "type": "str"},
                                       "mtu": {"required": False, "type": "int"},
                                       "mtu_ignore": {"required": False, "type": "str",
                                                      "choices": ["enable", "disable"]},
                                       "name": {"required": True, "type": "str"},
                                       "network_type": {"required": False, "type": "str",
                                                        "choices": ["broadcast", "non-broadcast", "point-to-point",
                                                                    "point-to-multipoint", "point-to-multipoint-non-broadcast"]},
                                       "prefix_length": {"required": False, "type": "int"},
                                       "priority": {"required": False, "type": "int"},
                                       "resync_timeout": {"required": False, "type": "int"},
                                       "retransmit_interval": {"required": False, "type": "int"},
                                       "status": {"required": False, "type": "str",
                                                  "choices": ["disable", "enable"]},
                                       "transmit_delay": {"required": False, "type": "int"}
                                   }},
                "passive_interface": {"required": False, "type": "list",
                                      "options": {
                                          "name": {"required": True, "type": "str"}
                                      }},
                "redistribute": {"required": False, "type": "list",
                                 "options": {
                                     "metric": {"required": False, "type": "int"},
                                     "metric_type": {"required": False, "type": "str",
                                                     "choices": ["1", "2"]},
                                     "name": {"required": True, "type": "str"},
                                     "routemap": {"required": False, "type": "str"},
                                     "status": {"required": False, "type": "str",
                                                "choices": ["enable", "disable"]},
                                     "tag": {"required": False, "type": "int"}
                                 }},
                "restart_mode": {"required": False, "type": "str",
                                 "choices": ["none", "lls", "graceful-restart"]},
                "restart_period": {"required": False, "type": "int"},
                "rfc1583_compatible": {"required": False, "type": "str",
                                       "choices": ["enable", "disable"]},
                "router_id": {"required": False, "type": "str"},
                "spf_timers": {"required": False, "type": "str"},
                "summary_address": {"required": False, "type": "list",
                                    "options": {
                                        "advertise": {"required": False, "type": "str",
                                                      "choices": ["disable", "enable"]},
                                        "id": {"required": True, "type": "int"},
                                        "prefix": {"required": False, "type": "str"},
                                        "tag": {"required": False, "type": "int"}
                                    }}

            }
        }
    }

    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

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

            is_error, has_changed, result = fortios_router(module.params, fos)
        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_router(module.params, fos)
        fos.logout()

    if not is_error:
        module.exit_json(changed=has_changed, meta=result)
    else:
        module.fail_json(msg="Error in repo", meta=result)