= Developer's Guide
////

    This file is part of the PacketFence project.

    See includes/global-attributes.asciidoc
    for authors, copyright and license information.

////
include::includes/global-attributes.asciidoc[]

== About this Guide

This guide will help you modify PacketFence to your specific needs and contains information on how to add support for new switches.

The latest version of this guide is available at https://packetfence.org/documentation/.

=== Other sources of information

<<PacketFence_Clustering_Guide.asciidoc#,Clustering Guide>>::
  Covers installation in a clustered environment.
<<PacketFence_Installation_Guide.asciidoc#,Installation Guide>>::
  Covers installation and configuration of PacketFence.
<<PacketFence_Network_Devices_Configuration_Guide.asciidoc#,Network Devices Configuration Guide>>::
  Covers switches, WiFi controllers and access points configuration.
<<PacketFence_Upgrade_Guide.asciidoc#,Upgrade Guide>>::
  Covers compatibility related changes, manual instructions and general notes
  about upgrading.
https://packetfence.org/news.html[PacketFence News]::
  Covers noteworthy features, improvements and bug fixes by release.

These files are included in the package and release tarballs.

== Creating a new Switch via a Template

include::developer/template_switches.asciidoc[]

== Documentation

include::developer/documentation_info.asciidoc[]

== Development environment setup

include::developer/dev_env_setup.asciidoc[]

== Administration GUI development setup

include::developer/admin_gui.asciidoc[]

== Golang environment

include::developer/go/README.asciidoc[]

== Code conventions

include::developer/code_conventions.asciidoc[]

== HTTP JSON API

include::developer/http_json_api.asciidoc[]

== Customizing PacketFence

include::developer/customizing_packetfence.asciidoc[]

== SNMP

include::developer/snmp.asciidoc[]

== Supporting new network hardware

include::developer/supporting_new_network_hardware.asciidoc[]

== PacketFence builds

include::developer/packer/README.asciidoc[]

== Developer recipes

include::developer/developer_recipes.asciidoc[]

== Containers recipes

include::developer/containers_recipes.asciidoc[]

== Running tests

include::developer/tests/README.asciidoc[]

include::developer/integration_tests/README.asciidoc[]

== Contributing

include::developer/contributing.asciidoc[]

//TODO: process the rest. I found quickest way to be:
// paste from docbook then use vim(:1,9s#<\_.\{-1,}>##g) and reformat by hand

// INCLUDES

include::includes/additional-info.asciidoc[]

include::includes/commercial-support.asciidoc[]

include::includes/license.asciidoc[]

// vim: set syntax=asciidoc tabstop=2 shiftwidth=2 expandtab:
