Utilisation de variables Creole

ERA[1] a été conçu dans le cadre du projet EOLE et pour le pare-feu Amon. Il peut très bien être utilisé en dehors de ce cadre, mais c'est sur un module Amon qu'il devient vraiment possible de déployer toutes les possibilités du logiciel.

Il est possible, à plusieurs endroits de l'interface, d'insérer des variables Creole[2] (elles commencent par %%) plutôt que des valeurs fixes.

Le fichier XML de description de pare-feu devient alors un template[3] Creole.

Exemple

Dans la fenêtre d'édition d'une zone, entrer une valeur du type %%ip_variable plutôt qu'une valeur IP fixe.

Une adresse IP de zone peut être templatisée (IP en variable Creole)
Une adresse IP de zone peut être templatisée (IP en variable Creole)

Variables multi-valuées

Creole propose un concept de variables multi-valuées qui peuvent également être utilisées dans ERA.

Si une variable %%variable est multi-valuée (au sens de Creole, c'est-à-dire que la variable contient une liste de valeurs), et que cette variable est présente dans une règle iptables, alors la règle sera répétée autant de fois que de valeurs dans %%variable puisque cette fonctionnalité génère du code avec une boucle for :

%for %%v in %%variable /sbin/iptable bla bla %%v bla bla %end for

Limitations de l'intégration entre ERA et Creole

Cette intégration des variables Creole dans ERA a des limites dans le cas des variables multivaluées. Une variable multivaluée au sens de Creole est une variable dont les valeurs sont multiples (c'est une liste d'ips, de networks, etc...).

Il est autorisé d'utiliser des variables multivaluées dans ERA, mais il y a une limitation : si dans une directive donnée plusieurs variables multivaluées sont utilisées (par exemple au niveau d'une extrémité source, d'une extrémité de destination ou d'un service, ou d'un port de redirection...), alors il faut que les autres variables multivaluées utilisées soient déclarées dans le dictionnaire Creole comme esclaves de la première variable multi-valuée, sinon le cas d'utilisation ne sera pas géré.

Le support des groupes de variables multivaluées est très partiel dans ERA, si dans une directive une variable multivaluée est utilisée alors elle doit être déclarée comme maître dans le dictionnaire Creole, et il ne faut pas qu'il y ait dans cette directive une deuxième variable multivaluée indépendante, donc les autres variables impliquées sont soit des variables multivaluées esclaves, soit simplement des variables Creole non-multivaluées.