.. Reminder for header structure:        
  Parts (H1)          : #################### with overline
  Chapters (H2)       : ******************** with overline
  Sections (H3)       : ====================
  Subsections (H4)    : --------------------
  Subsubsections (H5) : ^^^^^^^^^^^^^^^^^^^^
  Paragraphs (H6)     : """""""""""""""""""""

.. meta::
  :description: WAPT Serveur Post-configuration script
  :keywords: waptserver, WAPT, preferences, post-configuration, documentation, security, the WAPT Server

        

.. note::

  For the CSPN security certification mode, please :ref:`visit this documentation <wapt_postconf_cspn>`.

.. _wapt_postconf:

.. attention::

  For post-configuration to work properly:

    * The *hostname* of the WAPT Server **MUST** be properly configured.
      To check, use the command :command:`echo $(hostname)` which **MUST** return the DNS address that will be used by WAPT Agents on client computers.
  
    * The DNS resolver **MUST** be correctly configured.
    
    * The WAPT Server **MUST** be able to contact a Domain Controller in write mode for Kerberos authentication mode.

  The post-configuration script rewrites the nginx configuration.
  A backup file is created when running the postconf in the same directory.

  This post-configuration script **MUST** be run as **root**.

|

.. hint::

  If the post-configuration script has already been executed, the previously defined values will be retained. 
  
  To save time, you can simply validate each prompt by pressing the Enter key to keep the existing settings.


* Run the script.

.. code-block:: bash

  /opt/wapt/waptserver/scripts/postconf.sh


* Choose a password (**if not defined**) for the :term:`SuperAdmin` account of the WAPT Server (minimum length is 10 characters).

.. tab-set::

  .. tab-item:: First launch of the post-configuration script

      .. code-block:: bash

        Please enter the wapt server password (min. 10): 

        Please enter the wapt server password again:

  .. tab-item:: Keep the existing administrator password

      .. code-block:: bash

        Do you want to reset main admin (user: admin) password ? [y/N]: 
      
      .. hint::

        You can skip this step by using Enter keyboard key.

  .. tab-item:: Reset the administrator password

      .. code-block::

        Do you want to reset main admin (user: admin) password ? [y/N]: y

        Please enter the wapt server password (min. 10): 
        
        Please enter the wapt server password again: 

* Choose the authentication mode for the initial registering of the WAPT Agents:

.. code-block::

  WaptAgent Authentication type ?
    1) Allow unauthenticated registration
    2) Enable kerberos authentication required for machines registration
    3) Disable Kerberos but registration require strong authentication
  Select (1-3) [your previous choice was * ]:

.. tab-set::

  .. tab-item:: Choice 1: Open Registration

    .. note::

      The WAPT Server registers all computers that ask to be registered.

      Without a certificate, it is not possible to download WAPT Packages and query some WAPT Server endpoints.
    
      **This method is recommended if you are installing WAPT for the first time.**

  .. tab-item:: Choice 2: Kerberos-Based Registration

    .. note::

      Activates the initial registration based on Kerberos (you can activate it later).

      If you experience some problems while upgrading **or** if you use a reverse proxy, this method is recommended while upgrading.
      
      If your Kerberos keytab does not exist, the :file:`postconf.sh` script will create it, after you valid option 2.

    .. blue_toggle::
      :titleen: Creating your Keytab, after select enable kerberos option for the first time.
      :titlefr: Création de votre Keytab, après selection de l'activation kerberos pour la première fois.

      .. code-block:: bash

        Enter a new Kerberos REALM (e.g., MYDOMAIN.LAN) or press Enter to keep [ * ]:
      
      .. code-block:: bash

        Enter a new Domain Controller name (e.g., DC01.MYDOMAIN.LAN) or press Enter to keep [ * ]: 
      
      .. code-block:: bash

        Enter a username authorized to join machines (e.g., ADMINISTRATEUR) or press Enter to keep [ * ]: 

      .. code-block:: bash

        Enter password for administrator: 
      
      .. code-block:: bash
        
        Enter a new computer name for the WAPT server (e.g., SRV-WAPT) or press Enter to keep [ * ]:

  .. tab-item:: Choice 3: Credential-Based Registration

    .. note::
      
      Does not activate the Kerberos authentication mechanism for the initial registering of hosts equipped with WAPT.

      The WAPT Server will require a login and a password for each host registering with it.

.. warning::

  If you are upgrading from WAPT 2.X to 2.5, verify the current configuration of the WAPT Agents and more specifically the :code:`verify_cert` option.

  If in your current configuration :code:`verify_cert` is set to True or a set to a file path (certificate pinning), then choose option #1 below.

  If in your current configuration :code:`verify_cert` is set to False, then choose option #2 below.

* Choose if you want to use WAPT for OS Deployment.

.. code-block::
  
  Do you want to activate OS deployment (WADS)? [currently is * ] [Y/n]: 

.. tab-set::

  .. tab-item:: Activate WADS

    .. note::

      If you have chosen **Yes** to activate os deployment, the post-configuration will ask whether to use a secure authentication to deploy OS images.

      It will ask a user / password when you will deploy OS images using WADS.
      
    .. code-block:: bash

      Do you want to activate WADS secure authentication? [currently is * ] [y/N]: 

  .. tab-item:: Disable WADS

    .. note::
    
      If you have chosen **No** to confirm to disable the OS deployment (WADS) , Nginx will not enable WADS API endpoints for WAPT Agents.

* If you activate WADS, you can activate the WADS secure authentification.

  .. tab-set::

    .. tab-item:: Enable WADS secure authentication
      
      .. note::

        Choose **Yes**, and mention subnets.

        You can mention subnet ip exempt from wads authentication, for the other secure authentification will be required.

      .. code-block:: bash
        
        Mention here the subnets ex: 192.168.1.0/24 [ * ]: 
    
    .. tab-item:: Disable WADS secure authentication

      .. note:: 
        
        Choose **No**.

        WADS secure authentification will stay disable.

  
* Choose if you want to use WAPT WUA for Windows Update.

.. code-block::
  
  Do you want to activate Windows Update by WAPT (WUA)? [currently is * ] [Y/n]: 

.. note::

  If you choose **Yes**, Nginx will enable WUA API endpoints for the WAPT Agents.

* Indicate the :term:`FQDN` for the WAPT server.

.. code-block::
  
  FQDN for the WAPT server (eg. wapt.acme.com) [Currently your FQDN is * ]: 

* Wait few seconds and the post-configuration is now finished.

.. code-block::

  [*] Postconfiguration completed.
  Please connect to https://yourservername/ to access the server.

.. versionadded:: 2.5

  The access to the WAPT web interface is now password protected.

Finally, the postconf show somes informations about the WAPT Server SSL certificate and the URL to download WaptSetup and install on the WAPT Administrator's computer.

.. list-table:: List of post-configuration script options
  :header-rows: 1
  :widths: 40 60
  :align: center

  * - Options
    - Description
  * - ``-c`` or ``--config``
    - Specifies a configuration file path (default: :file:`/opt/wapt/conf/waptserver.ini`).
  * - ``-s`` or ``--force-https``
    - Configures :program:`Nginx` so that *port 80 is permanently redirected to 443*
  * - ``-q`` or ``--quiet``
    - Runs the post-configuration in quiet mode.
  * - ``-n`` or ``--nginx``
    - Runs nginx configuration if the post-configuration is set in quiet mode.
  * - ``--dhparam-key-size=NUMBER``
    - Defines the size for dhparam key (default: 2048).
  * - ``-p`` or ``--admin-password``
    - Defines the admininistrator password for the WAPT Server if the post-configuration is set in quiet mode.
  * - ``--server-names=SERVER_NAMES``
    - Defines the WAPT Server name and ip for certificate CN and SubjectAltNames.
      The separator is a comma (default: fqdn and IP address).
  * - ``--cspn-toe``
    - Defines settings for CSPN TOE mode (default: False). This enable more strict security default values, and disable all the features that are not included in the TOE of the CSPN certification
