{"id":19129676,"url":"https://github.com/coopsdev/forti-api","last_synced_at":"2025-06-12T13:07:57.087Z","repository":{"id":255076537,"uuid":"847473357","full_name":"coopsdev/forti-api","owner":"coopsdev","description":"FortiGate API (for FortiOS API v2) library wrapper for DNS Filtering and External ThreatFeed Connector integration.","archived":false,"fork":false,"pushed_at":"2025-03-20T20:50:26.000Z","size":90,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-20T22:04:51.943Z","etag":null,"topics":["cpp23","dns-blocking","firewall","firewall-management","firewall-manager","fortigate","fortigate-api","fortigate-firewall","fortinet","fortios","fortiosapi-library","threat-intelliegence","threat-response"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coopsdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-25T23:07:50.000Z","updated_at":"2025-03-20T20:50:29.000Z","dependencies_parsed_at":"2024-09-11T23:43:25.828Z","dependency_job_id":null,"html_url":"https://github.com/coopsdev/forti-api","commit_stats":null,"previous_names":["coopsdev/forti-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/coopsdev/forti-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coopsdev%2Fforti-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coopsdev%2Fforti-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coopsdev%2Fforti-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coopsdev%2Fforti-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coopsdev","download_url":"https://codeload.github.com/coopsdev/forti-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coopsdev%2Fforti-api/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259470949,"owners_count":22862998,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp23","dns-blocking","firewall","firewall-management","firewall-manager","fortigate","fortigate-api","fortigate-firewall","fortinet","fortios","fortiosapi-library","threat-intelliegence","threat-response"],"created_at":"2024-11-09T06:08:07.956Z","updated_at":"2025-06-12T13:07:57.041Z","avatar_url":"https://github.com/coopsdev.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **Forti-API**\n\n## **Streamlined API Access for FortiGate**\n\nWelcome to Forti-API, an open-source project crafted to simplify and enhance your interaction with FortiGate's powerful APIs. Designed with network security professionals in mind, Forti-API transforms complex API tasks into streamlined operations, empowering you to unlock the full potential of your FortiGate systems.\n\n*Documentation coming soon...*\n\n## 🌟 **Early Access** 🌟\n\nGet started with **Forti-API** effortlessly using Conan for dependency management. Whether you're using **Meson** or **CMake**, integrating Forti-API into your project is straightforward!\n\n### 📦 **Add the Forti-API Remote**\n\nFirst, add the Forti-API remote to your Conan configuration:\n\n```bash\nconan remote add forti-api https://repo.cooperhlarson.com/artifactory/api/conan/fortigate\n```\n\n### **Add the Dependency to Conan**\n\nThere are several ways to do this\n\n**conanfile.py**: The more modern way with v2+ syntax\n\n```python\nclass Pkg(ConanFile):\n  name = \"my_project\"\n  requires = ['forti-api/0.1.11']  # This is option 1\n\n  def requirements(self):\n    self.requires('forti-api/0.1.11')  # This is option 2, do not define requirements twice\n    self.test_requires('gtest/1.14.0')  # 'test-requires' support makes this a best practice\n```\n\n**conanfile.txt**: while simpler, conanfile.py is preferred for more extensability\n\n```bash\n[requires]\nforti-api/0.1.11\n```\n\n### 🚀 **Build System Integration**\nIntegrates Easily with Meson or CMake\n\n**Meson**\n\n```meson\nforti_api_dep = dependency('forti-api', required: true)\n```\n\n**CMake**\n\n```cmake\n# Add Forti-API as a dependency\nfind_package(forti-api REQUIRED)\n\n# Link Forti-API to your target\ntarget_link_libraries(your_project_name PRIVATE forti-api::forti-api)\n```\n\n**Include**\n```\n#include \u003cforti_api.hpp\u003e  # universal import\n#include \u003cforti_api/*.hpp\u003e  [api, threat_feed, dns_filter, system, firewall] + more planned in near future\n```\n\n### 🛠️ **Including Headers**\nAfter setting up the dependency, you can include the necessary headers in your source files:\n\n```cpp\n#include \u003cforti_api.hpp\u003e          // Universal import for all API components\n#include \u003cforti_api/api.hpp\u003e      // Specific imports for individual components\n#include \u003cforti_api/threat_feed.hpp\u003e\n#include \u003cforti_api/dns_filter.hpp\u003e\n#include \u003cforti_api/system.hpp\u003e\n#include \u003cforti_api/firewall.hpp\u003e\n// ... more modules coming soon!\n```\n\n\n## Project Vision\n\n\n### Simplifying FortiGate Management\n\n**forti-api** is designed to turn the intricate world of FortiGate firewall management into something straightforward and accessible. By providing a clean interface that integrates seamlessly with your existing setup, this tool simplifies complex configurations, making advanced network management more approachable for everyone.\n\n### Real-World Impact\n\nWith tools like **forti-hole** and **forti2ban**, **forti-api** integrates Pi-hole and Fail2Ban directly into the FortiGate ecosystem. These integrations have been proven to significantly enhance network security, achieving a 97% block-rate against ad traffic with the advanced DNS filter—transforming ad-heavy sites into cleaner, faster-loading pages, and reducing unnecessary network traffic by up to 20%.\n\n\n## Engagement and Contributions\n\n### Open to Collaboration\n\n**Forti-API** is a community-driven project, but contributing comes with important responsibilities:\n\n- **Physical Device or FortiVM Requirement**: Contributors must own either a physical FortiGate device or a FortiVM subscription. FortiVM users, given the significant investment (approximately 10 times the cost of a 1-year UTM subscription on a physical FortiGate or the initial base price of hardware), are highly valued. If you're a FortiVM user, consider this your red carpet invitation—you're a big fish in a small market.\n\n- **Rigorous Pull Request Process**: All pull requests undergo thorough scrutiny. Whether you’re testing on a physical device or a FortiVM, your contributions will be subject to rigorous code reviews. Tests will be meticulously vetted for any potential harm before they reach my personal testing environment, ensuring that no changes will compromise the integrity of users' FortiGate setups.\n\n- **Prioritizing Software Integrity**: The integrity of the software is paramount. Every stage of development prioritizes security, understanding the immense trust involved in granting API access to a security device with super admin privileges.\n\nThis ensures that whether you're a FortiVM subscriber or a physical device owner, you understand the importance of your role in contributing to **Forti-API** and the shared commitment to maintaining a robust and secure codebase.\n\n---\n\n**Forti-API** is part of a broader effort to create reliable, efficient tools for network security management.\n\nJoin the community and help us simplify and enhance the FortiGate experience while upholding the highest standards of security and integrity.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoopsdev%2Fforti-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoopsdev%2Fforti-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoopsdev%2Fforti-api/lists"}