Pustaka ini dibuat secara otomatis, jika Anda menginginkan dukungan untuk versi yang lebih baru, silakan buka terbitan.
Pustaka PHP yang digunakan untuk berinteraksi dengan API Fortigate firewall (FortiOS) (CMDB (Konfigurasi), Log dan Monitor). Library ini dapat mengambil, membuat, memperbarui dan menghapus konfigurasi pada firewall.
Anda dapat menemukan semua metode yang didukung di situs web pengembang Fortinet, Anda memerlukan akun untuk menelusuri informasi.
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();
. Anda dapat menemukan dokumentasi lengkapnya di sini.
Kelas Config ini digunakan untuk menyiapkan informasi konfigurasi wajib untuk membuat instance dan menggunakan kelas FortiOSAPI.... Di konstruktor Anda harus melewati:
Parameter opsional:
setTimeout()
untuk mengubah.setSSLVerifyPeer()
untuk mengubah.setSSLVerifyHost()
untuk mengubahnya.setAPIVersion()
untuk mengubah. // 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 ());
}
Kelas-kelas ini menggunakan Exception untuk menangani kesalahan, untuk eksekusi nominal Anda harus membuat instance dan meminta metode di dalam pernyataan 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 ());
}
Pustaka ini juga mendukung transaksi : memulai transaksi, membuat, memperbarui, menghapus, dan bergantung pada hasilnya, lakukan atau batalkan perubahan Anda.
// 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 ();
}