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 »

New method

Just declare files or Perl module that must be loaded:

[all]
require = /path/to/functions.pl, /path/to/func2.pm
# OR
require = My::Func1, My::Func2

Old method

This method is available but unusable by Portal under Apache. So if your rule may be used by the menu, use the new method.
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} )