Fortinet FortiOSAPI
v6.4.5
이 라이브러리는 자동으로 생성됩니다. 최신 버전에 대한 지원을 원하시면 이슈를 열어주세요.
Fortigate 방화벽(FortiOS) API(CMDB(구성), 로그 및 모니터)와 상호작용하는 데 사용되는 PHP 라이브러리입니다. 이 라이브러리는 방화벽에서 구성을 검색, 생성, 업데이트 및 삭제할 수 있습니다.
Fortinet 개발자 웹사이트에서 지원되는 모든 방법을 찾을 수 있으며, 정보를 검색하려면 계정이 필요합니다.
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();
. 여기에서 전체 문서를 찾을 수 있습니다.
이 Config 클래스는 FortiOSAPI... 클래스를 인스턴스화하고 사용하기 위한 필수 구성 정보를 준비하는 데 사용됩니다. 생성자에서 다음을 전달해야 합니다.
선택적 매개변수:
setTimeout()
사용하세요.setSSLVerifyPeer()
사용하세요.setSSLVerifyHost()
사용하여 변경합니다.setAPIVersion()
사용하여 변경합니다. // 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 ());
}
이러한 클래스는 Exception을 사용하여 오류를 처리합니다. 명목 실행의 경우 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 ());
}
이 라이브러리는 또한 트랜잭션을 지원합니다. 즉, 트랜잭션 시작, 생성, 업데이트, 삭제 및 결과에 따라 변경 사항을 커밋하거나 중단합니다.
// 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 ();
}