Table of Contents

Fonctions personnalisées

Les fonctions personnalisées permettent d'étendre LL::NG, elles peuvent être utilisées dans les règles, les en-têtes et les données à rejouer dans les formulaires.

É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 $url = shift;
  my $param = shift;
 
  # Le joli code ici :
 
  return $param;
}
 
1;
Le premier paramètre passé à la fonction personnalisée est l'URL demandée, c'est à dire
  • l'URL complète du portail si la fonction personnalisée est appelée par le portail (i.e. https://auth.example.com/)
  • l'URL absolue si elle est appelée par un agent (e.g. /admin/index.php?param=foo).

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)