NAME
Net::Fortinet::FortiManager - Fortinet FortiManager REST API client library
VERSION
version 0.004000
SYNOPSIS
use strict;
use warnings;
use Net::Fortinet::FortiManager;
my $fortimanager = Net::Fortinet::FortiManager->new(
server => 'https://fortimanager.example.com',
user => 'username',
passwd => '$password',
clientattrs => {
timeout => 10,
},
);
$fortimanager->login;
$fortimanager->adom('adomname');
DESCRIPTION
This module is a client library for the Fortigate FortiManager JSONRPC-like API. Currently it is developed and tested against version 6.4.6. All requests have the verbose parameter set to 1 to ensure that enums return their strings instead of undocumented ids.
ATTRIBUTES
adoms
Returns a list of hashrefs containing name and uuid of all ADOMs which gets populated by "login".
adom
The name of the ADOM which is used by all methods. Defaults to 'root'.
METHODS
exec_method
Executes a method with the specified parameters.
Returns its response.
This is the lowest level method which can be used to execute every API action that's available. It does the http and JSONRPC error handling and extraction of the result from the JSONRPC response.
exec_method_multi
Executes a method with multiple specified parameters.
Returns its responses.
This is also a low level method which can be used to execute multiple API actions in a single JSONRPC call. The only restriction of the JSONRPC API is that all actions need to use the same method. It does the http and JSONRPC error handling and extraction of the results from the JSONRPC response.
login
Logs into the Fortinet FortiManager and switches to the first available ADOM if the currently set adom isn't available, for example because the user is limited to one or more ADOMs.
logout
Logs out of the Fortinet FortiManager.
get_sys_status
Returns /sys/status.
list_adoms
Takes an optional parameter hashref.
Returns an arrayref of ADOMs.
list_adoms_by_name
Returns an arrayref of ADOMs sorted by name.
list_firewall_addresses
Returns an arrayref of firewall addresses.
get_firewall_address
Takes a firewall address name and an optional parameter hashref.
Returns its data as a hashref.
create_firewall_address
Takes a firewall address name and a hashref of address config.
Returns true on success.
Throws an exception on error.
update_firewall_address
Takes a firewall address name and a hashref of address config.
Returns true on success.
Throws an exception on error.
delete_firewall_address
Takes a firewall address name.
Returns true on success.
Throws an exception on error.
list_firewall_address_groups
Returns an arrayref of firewall address groups.
get_firewall_address_group
Takes a firewall address group name and an optional parameter hashref.
Returns its data as a hashref.
create_firewall_address_group
Takes a firewall address group name and a hashref of address group config.
Returns true on success.
Throws an exception on error.
update_firewall_address_group
Takes a firewall address group name and a hashref of address group config.
Returns true on success.
Throws an exception on error.
delete_firewall_address_group
Takes a firewall address group name.
Returns true on success.
Throws an exception on error.
list_firewall_ipv6_addresses
Returns an arrayref of firewall IPv6 addresses.
get_firewall_ipv6_address
Takes a firewall IPv6 address name and an optional parameter hashref.
Returns its data as a hashref.
create_firewall_ipv6_address
Takes a firewall IPv6 address name and a hashref of address config.
Returns true on success.
Throws an exception on error.
update_firewall_ipv6_address
Takes a firewall IPv6 address name and a hashref of address config.
Returns true on success.
Throws an exception on error.
delete_firewall_ipv6_address
Takes a firewall IPv6 address name.
Returns true on success.
Throws an exception on error.
list_firewall_ipv6_address_groups
Returns an arrayref of firewall IPv6 address groups.
get_firewall_ipv6_address_group
Takes a firewall IPv6 address group name and an optional parameter hashref.
Returns its data as a hashref.
create_firewall_ipv6_address_group
Takes a firewall IPv6 address group name and a hashref of address group config.
Returns true on success.
Throws an exception on error.
update_firewall_ipv6_address_group
Takes a firewall IPv6 address group name and a hashref of address group config.
Returns true on success.
Throws an exception on error.
delete_firewall_ipv6_address_group
Takes a firewall IPv6 address group name.
Returns true on success.
Throws an exception on error.
list_firewall_wildcard_fqdns
Returns an arrayref of firewall wildcard FQDN objects.
get_firewall_wildcard_fqdn
Takes a firewall wildcard FQDN name and an optional parameter hashref.
Returns its data as a hashref.
create_firewall_wildcard_fqdn
Takes a firewall wildcard FQDN name and a hashref of wildcard FQDN config.
Returns true on success.
Throws an exception on error.
update_firewall_wildcard_fqdn
Takes a firewall wildcard FQDN name and a hashref of wildcard FQDN config.
Returns true on success.
Throws an exception on error.
delete_firewall_wildcard_fqdn
Takes a firewall wildcard FQDN name.
Returns true on success.
Throws an exception on error.
list_firewall_services
Returns an arrayref of firewall services.
get_firewall_service
Takes a firewall service name and an optional parameter hashref.
Returns its data as a hashref.
create_firewall_service
Takes a firewall service name and a hashref of service config.
Returns true on success.
Throws an exception on error.
update_firewall_service
Takes a firewall service name and a hashref of service config.
Returns true on success.
Throws an exception on error.
delete_firewall_service
Takes a firewall service name.
Returns true on success.
Throws an exception on error.
list_firewall_service_groups
Returns an arrayref of firewall service groups.
get_firewall_service_group
Takes a firewall service group name and an optional parameter hashref.
Returns its data as a hashref.
create_firewall_service_group
Takes a firewall service group name and a hashref of service group config.
Returns true on success.
Throws an exception on error.
update_firewall_service_group
Takes a firewall service group name and a hashref of service group config.
Returns true on success.
Throws an exception on error.
delete_firewall_service_group
Takes a firewall service group name.
Returns true on success.
Throws an exception on error.
list_policy_packages
Takes optional parameters.
Returns an arrayref of policy packages.
get_policy_package
Takes a policy package name and an optional parameter hashref.
Returns its data as a hashref.
create_policy_package
Takes a policy package name and a hashref of attributes.
Returns true on success.
Throws an exception on error.
The firewall policies are configured depending on the 'ngfw-mode'. For profile-based policy packages you have to use the 'policy' methods, for policy-based the 'security_policy' methods.
update_policy_package
Takes a policy package name and a hashref of attributes.
Returns true on success.
Throws an exception on error.
delete_policy_package
Takes a policy package name.
Returns true on success.
Throws an exception on error.
install_policy_package
Takes a policy package name and a hashref of parameters.
Returns the task id on success.
Throws an exception on error.
list_tasks
Takes optional parameters.
Returns an arrayref of tasks.
get_task
Takes a task id and an optional parameter hashref.
Returns its data as a hashref.
wait_for_task
Takes a task id and checks its status every second until its percent have reached 100 and return the status. Takes an optional callback coderef which is called for every check with the task as argument.
list_firewall_policies
Takes a package name and optional parameters.
Returns an arrayref of firewall policies.
get_firewall_policy
Takes a policy package name, a firewall policy id and an optional parameter hashref.
Returns its data as a hashref.
create_firewall_policy
Takes a policy package name and a hashref of firewall policy attributes.
Returns the response data from the API on success which is a hashref containing only the policyid.
Throws an exception on error.
update_firewall_policy
Takes a policy package name, a firewall policy id and a hashref of firewall policy attributes.
Returns the response data from the API on success which is a hashref containing only the policyid.
Throws an exception on error.
delete_firewall_policy
Takes a policy package name and a firewall policy id.
Returns true on success.
Throws an exception on error.
list_firewall_security_policies
Takes a package name and optional parameters.
Returns an arrayref of firewall security policies.
get_firewall_security_policy
Takes a policy package name, a firewall security policy id and an optional parameter hashref.
Returns its data as a hashref.
create_firewall_security_policy
Takes a policy package name and a hashref of firewall security policy attributes.
Returns the response data from the API on success which is a hashref containing only the policyid.
Throws an exception on error.
update_firewall_security_policy
Takes a policy package name, a firewall security policy id and a hashref of firewall security policy attributes.
Returns the response data from the API on success which is a hashref containing only the policyid.
Throws an exception on error.
delete_firewall_security_policy
Takes a policy package name and a firewall security policy id.
Returns true on success.
Throws an exception on error.
TESTS
To run the live API tests the following environment variables need to be set:
- NET_FORTINET_FORTIMANAGER_HOSTNAME
- NET_FORTINET_FORTIMANAGER_USERNAME
- NET_FORTINET_FORTIMANAGER_PASSWORD
- NET_FORTINET_FORTIMANAGER_POLICY
Several network objects are created as well as a policy package named by the NET_FORTINET_FORTIMANAGER_POLICY environment variable.
The test aborts if any of the objects can't be created, most likely if it already exists. All objects are deleted at the end of the test run, even when it aborts.
AUTHOR
Alexander Hartmaier <abraxxa@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2023 by Alexander Hartmaier.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.