.. important:: cette fonctionnalité a été retirée de Era pour l'instant

.. module:: era.backend.nufw_acl_plaintext
   :synopsis: Compilateur de règles plaintext

:mod:`era.backend.nufw_acl_plaintext` -- Génération des règles d'acl
====================================================================

le fichier de règles nufwacl comporte trois piles différentes : 

le :data:`GID_TOUS` est systématiquement positionné en premier, puis une règle correspondant au gid utilisateur est placée après, enfin un comportement par défaut. 

les règles *tous*
-----------------


.. important:: 
    
    :data:`GID_TOUS` et :data:`GID_GUEST` n'est pas modifiable depuis la fenêtre de gestion des groupes d'era de l'interface mais uniquement depuis ce fichier de configuration

::

    if tous==True:
        # on met systematiquement le gid de tous (le domain user) 
        if directive.user_group.id: data['gid'] = GID_TOUS

.. function:: gen_acls(acls_file, model_file)

    contient l'ordonnancement des piles :

    #. politique par défaut
    #. règle tous        
    #. règle normale



    elle contient le code des piles d'ordonnancement des règles

    ::

            # premiere pile de regles (authentifiées)
            # pile de regles authentifiées
            auth = []
            # pile de règles "tous" correspondante
            tous = []
            # les règles "tous" sont à placer après les règles authentifiées
            rules1 = tous + auth
            # regles non authentifiées, policy par defaut, à placer en dernier
            rules2 = list(get_default_policy(model_file))
            # concatenation des piles de regles
            rules = list(rules1) + list(rules2)


.. function:: get_default_policy(model_file)

    - *DROP* en cas de niveaux de sécurité égaux
    - *ACCEPT* pour tout le reste 

    ::

        for zone1 in zones:
            for zone2 in zones:
                if zone1.level == zone2.level:
                    pass
                elif zone1 < zone2:
                    if zone2.strict_eq(zone1):
                        if zone1.name == zone2.name:
                            continue
                    data = {
                        'Decision': '1',
                        'gid': GID_TOUS,
                        'description': "%s-%s" % (str(zone2), str(zone1)),
                        'indev': zone1.interface,
                        'outdev': zone2.interface,
                        }


