Esta biblioteca se genera automáticamente; si desea compatibilidad con una versión más reciente, abra una incidencia.
Biblioteca PHP utilizada para interactuar con las API del firewall Fortigate (FortiOS) (CMDB (configuración), registro y monitor). Esta biblioteca puede recuperar, crear, actualizar y eliminar la configuración en el firewall.
Puede encontrar todos los métodos admitidos en el sitio web para desarrolladores de Fortinet; necesitará una cuenta para buscar información.
composer require benclerc/fortinet-fortiosapi
.require 'vendor/autoload.php';
.$configConnection = new FortinetFortiOSAPIConfig('123.123.123.123', 'admin', 'password');
.$firewallConf = new FortinetFortiOSAPIConfiguration($configConnection);
.$staticRoutes = $firewallConf->getAllRouterStatic();
. Puede encontrar una documentación completa aquí.
Esta clase de configuración se utiliza para preparar la información de configuración obligatoria para instanciar y utilizar las clases FortiOSAPI.... En el constructor debes pasar:
Parámetros opcionales:
setTimeout()
para cambiar.setSSLVerifyPeer()
para cambiar.setSSLVerifyHost()
para cambiar.setAPIVersion()
para cambiar. // Basic configuration
$ configConnection = new Fortinet FortiOSAPI Config ( ' 123.123.123.123 ' , ' admin ' , ' password ' );
// Configuration for very slow firewalls/long requests
$ configConnection = new Fortinet FortiOSAPI Config ( ' 123.123.123.123 ' , ' admin ' , ' password ' );
$ configConnection -> setTimeout ( 20000 );
// Unsecure configuration
$ configConnection = new Fortinet FortiOSAPI Config ( ' 123.123.123.123 ' , ' admin ' , ' password ' );
$ configConnection -> setSSLVerifyPeer ( FALSE )-> setSSLVerifyHost ( FALSE );
// Special API version
$ configConnection = new Fortinet FortiOSAPI Config ( ' 123.123.123.123 ' , ' admin ' , ' password ' );
$ configConnection -> setAPIVersion ( 1 );
// The class logins to the firewall when being instanciated hence the try/catch statement.
// Here I use the class Configuration for the example but it the same for Log and Monitor classes.
try {
$ firewallConf = new Fortinet FortiOSAPI Configuration ( $ configConnection );
} catch ( Exception $ e ) {
echo ( ' Handle error : ' . $ e -> getMessage ());
}
Estas clases usan Exception para manejar errores; para una ejecución nominal, debe instanciar y solicitar métodos dentro de las declaraciones try/catch.
// Get one particular static route
try {
$ res = $ firewallConf -> getRouterStatic ( 1 );
echo ( ' Gateway is : ' . $ res -> results [ 0 ]-> gateway );
} catch ( Exception $ e ) {
echo ( ' Handle error : ' . $ e -> getMessage ());
}
// Get routes using filters
try {
// Will return fields dst and status of default gateways
$ res = $ firewallConf -> getAllRouterStatic ( NULL , NULL , NULL , NULL , NULL , NULL , [ ' dst ' , ' status ' ], [ ' dst==0.0.0.0 0.0.0.0 ' ]);
// For obvious reasons, it would be a charm to use the new PHP 8.0 syntax to call the method :
// $firewallConf->getAllRouterStatic(format: ['dst', 'status'], filter: ['dst==0.0.0.0 0.0.0.0'])
} catch ( Exception $ e ) {
echo ( ' Handle error : ' . $ e -> getMessage ());
}
// Set a static route
// Define the route
$ staticRoute = new stdClass ;
$ staticRoute -> status = ' enable ' ;
$ staticRoute -> dst = ' 1.1.1.1 255.255.255.255 ' ;
$ staticRoute -> src = ' 198.168.1.0 255.255.255.0 ' ;
$ staticRoute -> gateway = ' 198.168.1.254 ' ;
$ staticRoute -> device = ' lan ' ;
$ staticRoute -> distance = 20 ;
// Send the request to the firewall
try {
$ res = $ firewallConf -> addRouterStatic ( $ staticRoute );
if ( $ res -> status == ' success ' ) {
echo ( ' Route added ' );
} else {
echo ( ' Route adding failed ' );
}
} catch ( Exception $ e ) {
echo ( ' Handle error : ' . $ e -> getMessage ());
}
Esta biblioteca también admite transacciones: inicie una transacción, cree, actualice, elimine y, según el resultado, confirme o cancele los cambios.
// Start transaction
$ firewallConf -> startTransaction ();
// Create many IP objects
$ error = FALSE ;
for ( $ i = 1 ; $ i < 50 ; $ i ++) {
// Create body object
$ ip = new stdClass ;
$ ip -> name = ' IP ' . $ i ;
$ ip -> type = ' subnet ' ;
$ ip -> subnet = ' 10.1. ' . $ i . ' .0/24 ' ;
// Create object on the firewall
try {
$ firewallConf -> addFirewallAddress ( $ ip );
echo ( " [SUCCESS] Created IP " . $ ip -> name . " . n" );
} catch ( Exception $ e ) {
echo ( " [ERROR] Unable to create IP : " . $ ip -> name . " . Details : " . $ e -> getMessage (). "n" );
$ error = TRUE ;
}
}
// Check error
if ( $ error === FALSE ) {
// No errors, commit
$ firewallConf -> commitTransaction ();
} else {
// Errors, abort and rollback
$ firewallConf -> abortTransaction ();
}