Table of Contents

Fonctions personnalisées

Custom functions allow one to extend LL::NG, they can be used in headers, rules or form replay data.

Écrire une librairie de fonctions personnalisées

Créer un module Perl avec des fonctions personnalisées. Le module peut être appelé à la diligence du rédacteur, par exemple SSOExtensions.pm :

vi /root/SSOExtensions.pm
package SSOExtensions;
 
sub function1 {
  my (@args) = @_;
 
  # Your nice code here
  return $result;
}
 
1;

Importer les fonctions personnalisées dans LemonLDAP::NG

Declarer le module dans le serveur « handler »

Apache

Le module doit être chargé par Apache (par exemple après le chargement de l'agent) :

# Perl environment
PerlRequire Lemonldap::NG::Handler
PerlRequire /root/SSOExtensions.pm
PerlOptions +GlobalRequest

Serveur FastCGI (Nginx)

Il faut indiquer au serveur FastCGI de LLNG le fichier à lire en utilisant l'option -f ou la variable d'environnement CUSTOM_FUNCTIONS_FILE. En utilisant les packages, il suffit de modifier le fichier /etc/default/llng-fastcgi-server (ou /etc/default/lemonldap-ng-fastcgi-server) :

# Nombre de processus (défaut : 7)
#NPROC = 7
 
# Socket Unix d'écoute
SOCKET=/var/run/llng-fastcgi-server/llng-fastcgi.sock
 
# Fichier identifiant de processus (PID)
PID=/var/run/llng-fastcgi-server/llng-fastcgi-server.pid
 
# Utilisateur et groupe
USER=www-data
GROUP=www-data
 
# Fichier éventuel de fonctions personnalisées
CUSTOM_FUNCTIONS_FILE=/root/SSOExtensions.pm

Declarer les fonctions personnalisées

Aller dans le manager, Paramètres généraux » Paramètres avancés » Fonctions personnalisées et indiquer :

SSOExtensions::function1
Si la fonction n'est pas compatible avec la cage saine, il faut désactiver la mise en cage.

Les utiliser

Les fonctions peuvent être utilisées dans une macro, un en-tête ou une règle d'accès, par exemple:

Custom-Header => function1( $uid, $ENV{REMOTE_ADDR} )